Lines Matching refs:skb

33 static int batadv_route_unicast_packet(struct sk_buff *skb,
149 bool batadv_check_management_packet(struct sk_buff *skb, in batadv_check_management_packet() argument
156 if (unlikely(!pskb_may_pull(skb, header_len))) in batadv_check_management_packet()
159 ethhdr = eth_hdr(skb); in batadv_check_management_packet()
170 if (skb_cow(skb, 0) < 0) in batadv_check_management_packet()
174 if (skb_linearize(skb) < 0) in batadv_check_management_packet()
189 struct sk_buff *skb) in batadv_recv_my_icmp_packet() argument
196 icmph = (struct batadv_icmp_header *)skb->data; in batadv_recv_my_icmp_packet()
203 if (skb_linearize(skb) < 0) in batadv_recv_my_icmp_packet()
206 batadv_socket_receive_packet(icmph, skb->len); in batadv_recv_my_icmp_packet()
220 if (skb_cow(skb, ETH_HLEN) < 0) in batadv_recv_my_icmp_packet()
223 icmph = (struct batadv_icmp_header *)skb->data; in batadv_recv_my_icmp_packet()
230 res = batadv_send_skb_to_orig(skb, orig_node, NULL); in batadv_recv_my_icmp_packet()
248 struct sk_buff *skb) in batadv_recv_icmp_ttl_exceeded() argument
255 icmp_packet = (struct batadv_icmp_packet *)skb->data; in batadv_recv_icmp_ttl_exceeded()
274 if (skb_cow(skb, ETH_HLEN) < 0) in batadv_recv_icmp_ttl_exceeded()
277 icmp_packet = (struct batadv_icmp_packet *)skb->data; in batadv_recv_icmp_ttl_exceeded()
284 if (batadv_send_skb_to_orig(skb, orig_node, NULL) != NET_XMIT_DROP) in batadv_recv_icmp_ttl_exceeded()
295 int batadv_recv_icmp_packet(struct sk_buff *skb, in batadv_recv_icmp_packet() argument
307 if (unlikely(!pskb_may_pull(skb, hdr_size))) in batadv_recv_icmp_packet()
310 ethhdr = eth_hdr(skb); in batadv_recv_icmp_packet()
324 icmph = (struct batadv_icmp_header *)skb->data; in batadv_recv_icmp_packet()
329 (skb->len >= sizeof(struct batadv_icmp_packet_rr))) { in batadv_recv_icmp_packet()
330 if (skb_linearize(skb) < 0) in batadv_recv_icmp_packet()
334 if (skb_cow(skb, ETH_HLEN) < 0) in batadv_recv_icmp_packet()
337 icmph = (struct batadv_icmp_header *)skb->data; in batadv_recv_icmp_packet()
349 return batadv_recv_my_icmp_packet(bat_priv, skb); in batadv_recv_icmp_packet()
353 return batadv_recv_icmp_ttl_exceeded(bat_priv, skb); in batadv_recv_icmp_packet()
361 if (skb_cow(skb, ETH_HLEN) < 0) in batadv_recv_icmp_packet()
364 icmph = (struct batadv_icmp_header *)skb->data; in batadv_recv_icmp_packet()
370 if (batadv_send_skb_to_orig(skb, orig_node, recv_if) != NET_XMIT_DROP) in batadv_recv_icmp_packet()
391 struct sk_buff *skb, int hdr_size) in batadv_check_unicast_packet() argument
396 if (unlikely(!pskb_may_pull(skb, hdr_size))) in batadv_check_unicast_packet()
399 ethhdr = eth_hdr(skb); in batadv_check_unicast_packet()
555 static int batadv_route_unicast_packet(struct sk_buff *skb, in batadv_route_unicast_packet() argument
561 struct ethhdr *ethhdr = eth_hdr(skb); in batadv_route_unicast_packet()
564 unicast_packet = (struct batadv_unicast_packet *)skb->data; in batadv_route_unicast_packet()
580 if (skb_cow(skb, ETH_HLEN) < 0) in batadv_route_unicast_packet()
584 unicast_packet = (struct batadv_unicast_packet *)skb->data; in batadv_route_unicast_packet()
601 batadv_skb_set_priority(skb, hdr_len); in batadv_route_unicast_packet()
603 res = batadv_send_skb_to_orig(skb, orig_node, recv_if); in batadv_route_unicast_packet()
610 skb->len + ETH_HLEN); in batadv_route_unicast_packet()
681 struct sk_buff *skb, int hdr_len) { in batadv_check_unicast_ttvn() argument
691 if (!pskb_may_pull(skb, hdr_len + ETH_HLEN)) in batadv_check_unicast_ttvn()
695 if (skb_cow(skb, sizeof(*unicast_packet)) < 0) in batadv_check_unicast_ttvn()
698 unicast_packet = (struct batadv_unicast_packet *)skb->data; in batadv_check_unicast_ttvn()
699 vid = batadv_get_vid(skb, hdr_len); in batadv_check_unicast_ttvn()
700 ethhdr = (struct ethhdr *)(skb->data + hdr_len); in batadv_check_unicast_ttvn()
795 int batadv_recv_unhandled_unicast_packet(struct sk_buff *skb, in batadv_recv_unhandled_unicast_packet() argument
802 check = batadv_check_unicast_packet(bat_priv, skb, hdr_size); in batadv_recv_unhandled_unicast_packet()
807 unicast_packet = (struct batadv_unicast_packet *)skb->data; in batadv_recv_unhandled_unicast_packet()
811 return batadv_route_unicast_packet(skb, recv_if); in batadv_recv_unhandled_unicast_packet()
814 int batadv_recv_unicast_packet(struct sk_buff *skb, in batadv_recv_unicast_packet() argument
825 unicast_packet = (struct batadv_unicast_packet *)skb->data; in batadv_recv_unicast_packet()
826 unicast_4addr_packet = (struct batadv_unicast_4addr_packet *)skb->data; in batadv_recv_unicast_packet()
834 check = batadv_check_unicast_packet(bat_priv, skb, hdr_size); in batadv_recv_unicast_packet()
840 batadv_nc_skb_store_sniffed_unicast(bat_priv, skb); in batadv_recv_unicast_packet()
844 if (!batadv_check_unicast_ttvn(bat_priv, skb, hdr_size)) in batadv_recv_unicast_packet()
856 if (batadv_dat_snoop_incoming_arp_request(bat_priv, skb, in batadv_recv_unicast_packet()
859 if (batadv_dat_snoop_incoming_arp_reply(bat_priv, skb, in batadv_recv_unicast_packet()
863 batadv_interface_rx(recv_if->soft_iface, skb, recv_if, hdr_size, in batadv_recv_unicast_packet()
873 return batadv_route_unicast_packet(skb, recv_if); in batadv_recv_unicast_packet()
885 int batadv_recv_unicast_tvlv(struct sk_buff *skb, in batadv_recv_unicast_tvlv() argument
895 if (batadv_check_unicast_packet(bat_priv, skb, hdr_size) < 0) in batadv_recv_unicast_tvlv()
899 if (skb_cow(skb, hdr_size) < 0) in batadv_recv_unicast_tvlv()
903 if (skb_linearize(skb) < 0) in batadv_recv_unicast_tvlv()
906 unicast_tvlv_packet = (struct batadv_unicast_tvlv_packet *)skb->data; in batadv_recv_unicast_tvlv()
908 tvlv_buff = (unsigned char *)(skb->data + hdr_size); in batadv_recv_unicast_tvlv()
911 if (tvlv_buff_len > skb->len - hdr_size) in batadv_recv_unicast_tvlv()
920 ret = batadv_route_unicast_packet(skb, recv_if); in batadv_recv_unicast_tvlv()
922 consume_skb(skb); in batadv_recv_unicast_tvlv()
938 int batadv_recv_frag_packet(struct sk_buff *skb, in batadv_recv_frag_packet() argument
946 if (batadv_check_unicast_packet(bat_priv, skb, in batadv_recv_frag_packet()
950 frag_packet = (struct batadv_frag_packet *)skb->data; in batadv_recv_frag_packet()
957 batadv_frag_skb_fwd(skb, recv_if, orig_node_src)) { in batadv_recv_frag_packet()
963 batadv_add_counter(bat_priv, BATADV_CNT_FRAG_RX_BYTES, skb->len); in batadv_recv_frag_packet()
966 if (!batadv_frag_skb_buffer(&skb, orig_node_src)) in batadv_recv_frag_packet()
972 if (skb) in batadv_recv_frag_packet()
973 batadv_batman_skb_recv(skb, recv_if->net_dev, in batadv_recv_frag_packet()
985 int batadv_recv_bcast_packet(struct sk_buff *skb, in batadv_recv_bcast_packet() argument
998 if (unlikely(!pskb_may_pull(skb, hdr_size))) in batadv_recv_bcast_packet()
1001 ethhdr = eth_hdr(skb); in batadv_recv_bcast_packet()
1015 bcast_packet = (struct batadv_bcast_packet *)skb->data; in batadv_recv_bcast_packet()
1053 if (batadv_bla_check_bcast_duplist(bat_priv, skb)) in batadv_recv_bcast_packet()
1056 batadv_skb_set_priority(skb, sizeof(struct batadv_bcast_packet)); in batadv_recv_bcast_packet()
1059 batadv_add_bcast_packet_to_list(bat_priv, skb, 1); in batadv_recv_bcast_packet()
1064 if (batadv_bla_is_backbone_gw(skb, orig_node, hdr_size)) in batadv_recv_bcast_packet()
1067 if (batadv_dat_snoop_incoming_arp_request(bat_priv, skb, hdr_size)) in batadv_recv_bcast_packet()
1069 if (batadv_dat_snoop_incoming_arp_reply(bat_priv, skb, hdr_size)) in batadv_recv_bcast_packet()
1073 batadv_interface_rx(recv_if->soft_iface, skb, recv_if, hdr_size, in batadv_recv_bcast_packet()