Lines Matching refs:skb

49 static int batadv_route_unicast_packet(struct sk_buff *skb,
174 bool batadv_check_management_packet(struct sk_buff *skb, in batadv_check_management_packet() argument
181 if (unlikely(!pskb_may_pull(skb, header_len))) in batadv_check_management_packet()
184 ethhdr = eth_hdr(skb); in batadv_check_management_packet()
195 if (skb_cow(skb, 0) < 0) in batadv_check_management_packet()
199 if (skb_linearize(skb) < 0) in batadv_check_management_packet()
214 struct sk_buff *skb) in batadv_recv_my_icmp_packet() argument
221 icmph = (struct batadv_icmp_header *)skb->data; in batadv_recv_my_icmp_packet()
228 if (skb_linearize(skb) < 0) in batadv_recv_my_icmp_packet()
231 batadv_socket_receive_packet(icmph, skb->len); in batadv_recv_my_icmp_packet()
245 if (skb_cow(skb, ETH_HLEN) < 0) in batadv_recv_my_icmp_packet()
248 icmph = (struct batadv_icmp_header *)skb->data; in batadv_recv_my_icmp_packet()
255 res = batadv_send_skb_to_orig(skb, orig_node, NULL); in batadv_recv_my_icmp_packet()
273 struct sk_buff *skb) in batadv_recv_icmp_ttl_exceeded() argument
280 icmp_packet = (struct batadv_icmp_packet *)skb->data; in batadv_recv_icmp_ttl_exceeded()
299 if (skb_cow(skb, ETH_HLEN) < 0) in batadv_recv_icmp_ttl_exceeded()
302 icmp_packet = (struct batadv_icmp_packet *)skb->data; in batadv_recv_icmp_ttl_exceeded()
309 if (batadv_send_skb_to_orig(skb, orig_node, NULL) != NET_XMIT_DROP) in batadv_recv_icmp_ttl_exceeded()
320 int batadv_recv_icmp_packet(struct sk_buff *skb, in batadv_recv_icmp_packet() argument
332 if (unlikely(!pskb_may_pull(skb, hdr_size))) in batadv_recv_icmp_packet()
335 ethhdr = eth_hdr(skb); in batadv_recv_icmp_packet()
349 icmph = (struct batadv_icmp_header *)skb->data; in batadv_recv_icmp_packet()
354 (skb->len >= sizeof(struct batadv_icmp_packet_rr))) { in batadv_recv_icmp_packet()
355 if (skb_linearize(skb) < 0) in batadv_recv_icmp_packet()
359 if (skb_cow(skb, ETH_HLEN) < 0) in batadv_recv_icmp_packet()
362 icmph = (struct batadv_icmp_header *)skb->data; in batadv_recv_icmp_packet()
374 return batadv_recv_my_icmp_packet(bat_priv, skb); in batadv_recv_icmp_packet()
378 return batadv_recv_icmp_ttl_exceeded(bat_priv, skb); in batadv_recv_icmp_packet()
386 if (skb_cow(skb, ETH_HLEN) < 0) in batadv_recv_icmp_packet()
389 icmph = (struct batadv_icmp_header *)skb->data; in batadv_recv_icmp_packet()
395 if (batadv_send_skb_to_orig(skb, orig_node, recv_if) != NET_XMIT_DROP) in batadv_recv_icmp_packet()
416 struct sk_buff *skb, int hdr_size) in batadv_check_unicast_packet() argument
421 if (unlikely(!pskb_may_pull(skb, hdr_size))) in batadv_check_unicast_packet()
424 ethhdr = eth_hdr(skb); in batadv_check_unicast_packet()
580 static int batadv_route_unicast_packet(struct sk_buff *skb, in batadv_route_unicast_packet() argument
586 struct ethhdr *ethhdr = eth_hdr(skb); in batadv_route_unicast_packet()
589 unicast_packet = (struct batadv_unicast_packet *)skb->data; in batadv_route_unicast_packet()
605 if (skb_cow(skb, ETH_HLEN) < 0) in batadv_route_unicast_packet()
609 unicast_packet = (struct batadv_unicast_packet *)skb->data; in batadv_route_unicast_packet()
626 batadv_skb_set_priority(skb, hdr_len); in batadv_route_unicast_packet()
628 res = batadv_send_skb_to_orig(skb, orig_node, recv_if); in batadv_route_unicast_packet()
635 skb->len + ETH_HLEN); in batadv_route_unicast_packet()
706 struct sk_buff *skb, int hdr_len) { in batadv_check_unicast_ttvn() argument
716 if (!pskb_may_pull(skb, hdr_len + ETH_HLEN)) in batadv_check_unicast_ttvn()
720 if (skb_cow(skb, sizeof(*unicast_packet)) < 0) in batadv_check_unicast_ttvn()
723 unicast_packet = (struct batadv_unicast_packet *)skb->data; in batadv_check_unicast_ttvn()
724 vid = batadv_get_vid(skb, hdr_len); in batadv_check_unicast_ttvn()
725 ethhdr = (struct ethhdr *)(skb->data + hdr_len); in batadv_check_unicast_ttvn()
820 int batadv_recv_unhandled_unicast_packet(struct sk_buff *skb, in batadv_recv_unhandled_unicast_packet() argument
827 check = batadv_check_unicast_packet(bat_priv, skb, hdr_size); in batadv_recv_unhandled_unicast_packet()
832 unicast_packet = (struct batadv_unicast_packet *)skb->data; in batadv_recv_unhandled_unicast_packet()
836 return batadv_route_unicast_packet(skb, recv_if); in batadv_recv_unhandled_unicast_packet()
839 int batadv_recv_unicast_packet(struct sk_buff *skb, in batadv_recv_unicast_packet() argument
851 unicast_packet = (struct batadv_unicast_packet *)skb->data; in batadv_recv_unicast_packet()
852 unicast_4addr_packet = (struct batadv_unicast_4addr_packet *)skb->data; in batadv_recv_unicast_packet()
860 check = batadv_check_unicast_packet(bat_priv, skb, hdr_size); in batadv_recv_unicast_packet()
866 batadv_nc_skb_store_sniffed_unicast(bat_priv, skb); in batadv_recv_unicast_packet()
870 if (!batadv_check_unicast_ttvn(bat_priv, skb, hdr_size)) in batadv_recv_unicast_packet()
892 if (batadv_dat_snoop_incoming_arp_request(bat_priv, skb, in batadv_recv_unicast_packet()
895 if (batadv_dat_snoop_incoming_arp_reply(bat_priv, skb, in batadv_recv_unicast_packet()
899 batadv_interface_rx(recv_if->soft_iface, skb, recv_if, hdr_size, in batadv_recv_unicast_packet()
909 return batadv_route_unicast_packet(skb, recv_if); in batadv_recv_unicast_packet()
921 int batadv_recv_unicast_tvlv(struct sk_buff *skb, in batadv_recv_unicast_tvlv() argument
931 if (batadv_check_unicast_packet(bat_priv, skb, hdr_size) < 0) in batadv_recv_unicast_tvlv()
935 if (skb_cow(skb, hdr_size) < 0) in batadv_recv_unicast_tvlv()
939 if (skb_linearize(skb) < 0) in batadv_recv_unicast_tvlv()
942 unicast_tvlv_packet = (struct batadv_unicast_tvlv_packet *)skb->data; in batadv_recv_unicast_tvlv()
944 tvlv_buff = (unsigned char *)(skb->data + hdr_size); in batadv_recv_unicast_tvlv()
947 if (tvlv_buff_len > skb->len - hdr_size) in batadv_recv_unicast_tvlv()
956 ret = batadv_route_unicast_packet(skb, recv_if); in batadv_recv_unicast_tvlv()
958 consume_skb(skb); in batadv_recv_unicast_tvlv()
974 int batadv_recv_frag_packet(struct sk_buff *skb, in batadv_recv_frag_packet() argument
982 if (batadv_check_unicast_packet(bat_priv, skb, in batadv_recv_frag_packet()
986 frag_packet = (struct batadv_frag_packet *)skb->data; in batadv_recv_frag_packet()
993 batadv_frag_skb_fwd(skb, recv_if, orig_node_src)) { in batadv_recv_frag_packet()
999 batadv_add_counter(bat_priv, BATADV_CNT_FRAG_RX_BYTES, skb->len); in batadv_recv_frag_packet()
1002 if (!batadv_frag_skb_buffer(&skb, orig_node_src)) in batadv_recv_frag_packet()
1008 if (skb) in batadv_recv_frag_packet()
1009 batadv_batman_skb_recv(skb, recv_if->net_dev, in batadv_recv_frag_packet()
1021 int batadv_recv_bcast_packet(struct sk_buff *skb, in batadv_recv_bcast_packet() argument
1034 if (unlikely(!pskb_may_pull(skb, hdr_size))) in batadv_recv_bcast_packet()
1037 ethhdr = eth_hdr(skb); in batadv_recv_bcast_packet()
1051 bcast_packet = (struct batadv_bcast_packet *)skb->data; in batadv_recv_bcast_packet()
1089 if (batadv_bla_check_bcast_duplist(bat_priv, skb)) in batadv_recv_bcast_packet()
1092 batadv_skb_set_priority(skb, sizeof(struct batadv_bcast_packet)); in batadv_recv_bcast_packet()
1095 batadv_add_bcast_packet_to_list(bat_priv, skb, 1); in batadv_recv_bcast_packet()
1100 if (batadv_bla_is_backbone_gw(skb, orig_node, hdr_size)) in batadv_recv_bcast_packet()
1103 if (batadv_dat_snoop_incoming_arp_request(bat_priv, skb, hdr_size)) in batadv_recv_bcast_packet()
1105 if (batadv_dat_snoop_incoming_arp_reply(bat_priv, skb, hdr_size)) in batadv_recv_bcast_packet()
1109 batadv_interface_rx(recv_if->soft_iface, skb, recv_if, hdr_size, in batadv_recv_bcast_packet()