Lines Matching refs:skb
52 struct sk_buff *skb) in dccp_parse_options() argument
55 const struct dccp_hdr *dh = dccp_hdr(skb); in dccp_parse_options()
56 const u8 pkt_type = DCCP_SKB_CB(skb)->dccpd_type; in dccp_parse_options()
57 unsigned char *options = (unsigned char *)dh + dccp_hdr_len(skb); in dccp_parse_options()
158 DCCP_SKB_CB(skb)->dccpd_ack_seq); in dccp_parse_options()
174 DCCP_SKB_CB(skb)->dccpd_ack_seq); in dccp_parse_options()
198 if (dccp_packet_without_ack(skb)) /* RFC 4340, 13.2 */ in dccp_parse_options()
224 if (dccp_packet_without_ack(skb)) /* RFC 4340, 11.4 */ in dccp_parse_options()
260 DCCP_SKB_CB(skb)->dccpd_reset_code = rc; in dccp_parse_options()
261 DCCP_SKB_CB(skb)->dccpd_reset_data[0] = opt; in dccp_parse_options()
262 DCCP_SKB_CB(skb)->dccpd_reset_data[1] = len > 0 ? value[0] : 0; in dccp_parse_options()
263 DCCP_SKB_CB(skb)->dccpd_reset_data[2] = len > 1 ? value[1] : 0; in dccp_parse_options()
292 int dccp_insert_option(struct sk_buff *skb, const unsigned char option, in dccp_insert_option() argument
297 if (DCCP_SKB_CB(skb)->dccpd_opt_len + len + 2 > DCCP_MAX_OPT_LEN) in dccp_insert_option()
300 DCCP_SKB_CB(skb)->dccpd_opt_len += len + 2; in dccp_insert_option()
302 to = skb_push(skb, len + 2); in dccp_insert_option()
312 static int dccp_insert_option_ndp(struct sock *sk, struct sk_buff *skb) in dccp_insert_option_ndp() argument
317 if (dccp_non_data_packet(skb)) in dccp_insert_option_ndp()
327 if (DCCP_SKB_CB(skb)->dccpd_opt_len + len > DCCP_MAX_OPT_LEN) in dccp_insert_option_ndp()
330 DCCP_SKB_CB(skb)->dccpd_opt_len += len; in dccp_insert_option_ndp()
332 ptr = skb_push(skb, len); in dccp_insert_option_ndp()
346 static int dccp_insert_option_timestamp(struct sk_buff *skb) in dccp_insert_option_timestamp() argument
352 return dccp_insert_option(skb, DCCPO_TIMESTAMP, &now, sizeof(now)); in dccp_insert_option_timestamp()
357 struct sk_buff *skb) in dccp_insert_option_timestamp_echo() argument
376 if (DCCP_SKB_CB(skb)->dccpd_opt_len + len > DCCP_MAX_OPT_LEN) in dccp_insert_option_timestamp_echo()
379 DCCP_SKB_CB(skb)->dccpd_opt_len += len; in dccp_insert_option_timestamp_echo()
381 to = skb_push(skb, len); in dccp_insert_option_timestamp_echo()
399 static int dccp_insert_option_ackvec(struct sock *sk, struct sk_buff *skb) in dccp_insert_option_ackvec() argument
403 struct dccp_skb_cb *dcb = DCCP_SKB_CB(skb); in dccp_insert_option_ackvec()
423 len + dcb->dccpd_opt_len + skb->len > dp->dccps_mss_cache) { in dccp_insert_option_ackvec()
425 "MPS=%u ==> reduce payload size?\n", len, skb->len, in dccp_insert_option_ackvec()
432 to = skb_push(skb, len); in dccp_insert_option_ackvec()
481 int dccp_insert_option_mandatory(struct sk_buff *skb) in dccp_insert_option_mandatory() argument
483 if (DCCP_SKB_CB(skb)->dccpd_opt_len >= DCCP_MAX_OPT_LEN) in dccp_insert_option_mandatory()
486 DCCP_SKB_CB(skb)->dccpd_opt_len++; in dccp_insert_option_mandatory()
487 *skb_push(skb, 1) = DCCPO_MANDATORY; in dccp_insert_option_mandatory()
504 int dccp_insert_fn_opt(struct sk_buff *skb, u8 type, u8 feat, in dccp_insert_fn_opt() argument
519 if (DCCP_SKB_CB(skb)->dccpd_opt_len + tot_len > DCCP_MAX_OPT_LEN) { in dccp_insert_fn_opt()
523 DCCP_SKB_CB(skb)->dccpd_opt_len += tot_len; in dccp_insert_fn_opt()
525 to = skb_push(skb, tot_len); in dccp_insert_fn_opt()
538 static void dccp_insert_option_padding(struct sk_buff *skb) in dccp_insert_option_padding() argument
540 int padding = DCCP_SKB_CB(skb)->dccpd_opt_len % 4; in dccp_insert_option_padding()
544 memset(skb_push(skb, padding), 0, padding); in dccp_insert_option_padding()
545 DCCP_SKB_CB(skb)->dccpd_opt_len += padding; in dccp_insert_option_padding()
549 int dccp_insert_options(struct sock *sk, struct sk_buff *skb) in dccp_insert_options() argument
553 DCCP_SKB_CB(skb)->dccpd_opt_len = 0; in dccp_insert_options()
555 if (dp->dccps_send_ndp_count && dccp_insert_option_ndp(sk, skb)) in dccp_insert_options()
558 if (DCCP_SKB_CB(skb)->dccpd_type != DCCP_PKT_DATA) { in dccp_insert_options()
561 if (dccp_feat_insert_opts(dp, NULL, skb)) in dccp_insert_options()
564 if (DCCP_SKB_CB(skb)->dccpd_type == DCCP_PKT_REQUEST) { in dccp_insert_options()
569 if (dccp_insert_option_timestamp(skb)) in dccp_insert_options()
573 dccp_insert_option_ackvec(sk, skb)) { in dccp_insert_options()
579 if (ccid_hc_rx_insert_options(dp->dccps_hc_rx_ccid, sk, skb)) in dccp_insert_options()
585 dccp_insert_option_timestamp_echo(dp, NULL, skb)) in dccp_insert_options()
588 dccp_insert_option_padding(skb); in dccp_insert_options()
592 int dccp_insert_options_rsk(struct dccp_request_sock *dreq, struct sk_buff *skb) in dccp_insert_options_rsk() argument
594 DCCP_SKB_CB(skb)->dccpd_opt_len = 0; in dccp_insert_options_rsk()
596 if (dccp_feat_insert_opts(NULL, dreq, skb)) in dccp_insert_options_rsk()
600 if (dccp_insert_option_timestamp(skb)) in dccp_insert_options_rsk()
604 dccp_insert_option_timestamp_echo(NULL, dreq, skb)) in dccp_insert_options_rsk()
607 dccp_insert_option_padding(skb); in dccp_insert_options_rsk()