Lines Matching refs:skb

30 br_netif_receive_skb(struct net *net, struct sock *sk, struct sk_buff *skb)  in br_netif_receive_skb()  argument
32 return netif_receive_skb(skb); in br_netif_receive_skb()
35 static int br_pass_frame_up(struct sk_buff *skb) in br_pass_frame_up() argument
37 struct net_device *indev, *brdev = BR_INPUT_SKB_CB(skb)->brdev; in br_pass_frame_up()
44 brstats->rx_bytes += skb->len; in br_pass_frame_up()
53 !br_allowed_egress(vg, skb)) { in br_pass_frame_up()
54 kfree_skb(skb); in br_pass_frame_up()
58 indev = skb->dev; in br_pass_frame_up()
59 skb->dev = brdev; in br_pass_frame_up()
60 skb = br_handle_vlan(br, vg, skb); in br_pass_frame_up()
61 if (!skb) in br_pass_frame_up()
65 dev_net(indev), NULL, skb, indev, NULL, in br_pass_frame_up()
69 static void br_do_proxy_arp(struct sk_buff *skb, struct net_bridge *br, in br_do_proxy_arp() argument
78 BR_INPUT_SKB_CB(skb)->proxyarp_replied = false; in br_do_proxy_arp()
83 if (!pskb_may_pull(skb, arp_hdr_len(dev))) { in br_do_proxy_arp()
87 parp = arp_hdr(skb); in br_do_proxy_arp()
119 arp_send(ARPOP_REPLY, ETH_P_ARP, sip, skb->dev, tip, in br_do_proxy_arp()
121 BR_INPUT_SKB_CB(skb)->proxyarp_replied = true; in br_do_proxy_arp()
129 int br_handle_frame_finish(struct net *net, struct sock *sk, struct sk_buff *skb) in br_handle_frame_finish() argument
131 const unsigned char *dest = eth_hdr(skb)->h_dest; in br_handle_frame_finish()
132 struct net_bridge_port *p = br_port_get_rcu(skb->dev); in br_handle_frame_finish()
143 if (!br_allowed_ingress(p->br, nbp_vlan_group_rcu(p), skb, &vid)) in br_handle_frame_finish()
149 br_fdb_update(br, p, eth_hdr(skb)->h_source, vid, false); in br_handle_frame_finish()
152 br_multicast_rcv(br, p, skb, vid)) in br_handle_frame_finish()
158 BR_INPUT_SKB_CB(skb)->brdev = br->dev; in br_handle_frame_finish()
164 skb2 = skb; in br_handle_frame_finish()
168 if (IS_ENABLED(CONFIG_INET) && skb->protocol == htons(ETH_P_ARP)) in br_handle_frame_finish()
169 br_do_proxy_arp(skb, br, vid, p); in br_handle_frame_finish()
172 skb2 = skb; in br_handle_frame_finish()
175 mdst = br_mdb_get(br, skb, vid); in br_handle_frame_finish()
176 if ((mdst || BR_INPUT_SKB_CB_MROUTERS_ONLY(skb)) && in br_handle_frame_finish()
177 br_multicast_querier_exists(br, eth_hdr(skb))) { in br_handle_frame_finish()
180 skb2 = skb; in br_handle_frame_finish()
181 br_multicast_forward(mdst, skb, skb2); in br_handle_frame_finish()
182 skb = NULL; in br_handle_frame_finish()
186 skb2 = skb; in br_handle_frame_finish()
192 skb2 = skb; in br_handle_frame_finish()
194 skb = NULL; in br_handle_frame_finish()
197 if (skb) { in br_handle_frame_finish()
200 br_forward(dst->dst, skb, skb2); in br_handle_frame_finish()
202 br_flood_forward(br, skb, skb2, unicast); in br_handle_frame_finish()
211 kfree_skb(skb); in br_handle_frame_finish()
217 static int br_handle_local_finish(struct net *net, struct sock *sk, struct sk_buff *skb) in br_handle_local_finish() argument
219 struct net_bridge_port *p = br_port_get_rcu(skb->dev); in br_handle_local_finish()
223 if (p->flags & BR_LEARNING && br_should_learn(p, skb, &vid)) in br_handle_local_finish()
224 br_fdb_update(p->br, p, eth_hdr(skb)->h_source, vid, false); in br_handle_local_finish()
235 struct sk_buff *skb = *pskb; in br_handle_frame() local
236 const unsigned char *dest = eth_hdr(skb)->h_dest; in br_handle_frame()
239 if (unlikely(skb->pkt_type == PACKET_LOOPBACK)) in br_handle_frame()
242 if (!is_valid_ether_addr(eth_hdr(skb)->h_source)) in br_handle_frame()
245 skb = skb_share_check(skb, GFP_ATOMIC); in br_handle_frame()
246 if (!skb) in br_handle_frame()
249 p = br_port_get_rcu(skb->dev); in br_handle_frame()
288 dev_net(skb->dev), NULL, skb, skb->dev, NULL, in br_handle_frame()
292 *pskb = skb; in br_handle_frame()
302 if ((*rhook)(skb)) { in br_handle_frame()
303 *pskb = skb; in br_handle_frame()
306 dest = eth_hdr(skb)->h_dest; in br_handle_frame()
311 skb->pkt_type = PACKET_HOST; in br_handle_frame()
314 dev_net(skb->dev), NULL, skb, skb->dev, NULL, in br_handle_frame()
319 kfree_skb(skb); in br_handle_frame()