Lines Matching refs:skb

31 br_netif_receive_skb(struct net *net, struct sock *sk, struct sk_buff *skb)  in br_netif_receive_skb()  argument
33 br_drop_fake_rtable(skb); in br_netif_receive_skb()
34 return netif_receive_skb(skb); in br_netif_receive_skb()
37 static int br_pass_frame_up(struct sk_buff *skb) in br_pass_frame_up() argument
39 struct net_device *indev, *brdev = BR_INPUT_SKB_CB(skb)->brdev; in br_pass_frame_up()
46 brstats->rx_bytes += skb->len; in br_pass_frame_up()
55 !br_allowed_egress(vg, skb)) { in br_pass_frame_up()
56 kfree_skb(skb); in br_pass_frame_up()
60 indev = skb->dev; in br_pass_frame_up()
61 skb->dev = brdev; in br_pass_frame_up()
62 skb = br_handle_vlan(br, NULL, vg, skb); in br_pass_frame_up()
63 if (!skb) in br_pass_frame_up()
66 br_multicast_count(br, NULL, skb, br_multicast_igmp_type(skb), in br_pass_frame_up()
70 dev_net(indev), NULL, skb, indev, NULL, in br_pass_frame_up()
75 int br_handle_frame_finish(struct net *net, struct sock *sk, struct sk_buff *skb) in br_handle_frame_finish() argument
77 struct net_bridge_port *p = br_port_get_rcu(skb->dev); in br_handle_frame_finish()
89 if (!br_allowed_ingress(p->br, nbp_vlan_group_rcu(p), skb, &vid)) in br_handle_frame_finish()
92 nbp_switchdev_frame_mark(p, skb); in br_handle_frame_finish()
97 br_fdb_update(br, p, eth_hdr(skb)->h_source, vid, false); in br_handle_frame_finish()
100 dest = eth_hdr(skb)->h_dest; in br_handle_frame_finish()
108 if (br_multicast_rcv(br, p, skb, vid)) in br_handle_frame_finish()
116 BR_INPUT_SKB_CB(skb)->brdev = br->dev; in br_handle_frame_finish()
117 BR_INPUT_SKB_CB(skb)->src_port_isolated = !!(p->flags & BR_ISOLATED); in br_handle_frame_finish()
120 (skb->protocol == htons(ETH_P_ARP) || in br_handle_frame_finish()
121 skb->protocol == htons(ETH_P_RARP))) { in br_handle_frame_finish()
122 br_do_proxy_suppress_arp(skb, br, vid, p); in br_handle_frame_finish()
124 skb->protocol == htons(ETH_P_IPV6) && in br_handle_frame_finish()
126 pskb_may_pull(skb, sizeof(struct ipv6hdr) + in br_handle_frame_finish()
128 ipv6_hdr(skb)->nexthdr == IPPROTO_ICMPV6) { in br_handle_frame_finish()
131 msg = br_is_nd_neigh_msg(skb, &_msg); in br_handle_frame_finish()
133 br_do_suppress_nd(skb, br, vid, p, msg); in br_handle_frame_finish()
138 mdst = br_mdb_get(br, skb, vid); in br_handle_frame_finish()
139 if ((mdst || BR_INPUT_SKB_CB_MROUTERS_ONLY(skb)) && in br_handle_frame_finish()
140 br_multicast_querier_exists(br, eth_hdr(skb))) { in br_handle_frame_finish()
162 return br_pass_frame_up(skb); in br_handle_frame_finish()
166 br_forward(dst->dst, skb, local_rcv, false); in br_handle_frame_finish()
169 br_flood(br, skb, pkt_type, local_rcv, false); in br_handle_frame_finish()
171 br_multicast_flood(mdst, skb, local_rcv, false); in br_handle_frame_finish()
175 return br_pass_frame_up(skb); in br_handle_frame_finish()
180 kfree_skb(skb); in br_handle_frame_finish()
185 static void __br_handle_local_finish(struct sk_buff *skb) in __br_handle_local_finish() argument
187 struct net_bridge_port *p = br_port_get_rcu(skb->dev); in __br_handle_local_finish()
191 if (p->flags & BR_LEARNING && br_should_learn(p, skb, &vid)) in __br_handle_local_finish()
192 br_fdb_update(p->br, p, eth_hdr(skb)->h_source, vid, false); in __br_handle_local_finish()
196 static int br_handle_local_finish(struct net *net, struct sock *sk, struct sk_buff *skb) in br_handle_local_finish() argument
198 struct net_bridge_port *p = br_port_get_rcu(skb->dev); in br_handle_local_finish()
200 __br_handle_local_finish(skb); in br_handle_local_finish()
202 BR_INPUT_SKB_CB(skb)->brdev = p->br->dev; in br_handle_local_finish()
203 br_pass_frame_up(skb); in br_handle_local_finish()
214 struct sk_buff *skb = *pskb; in br_handle_frame() local
215 const unsigned char *dest = eth_hdr(skb)->h_dest; in br_handle_frame()
218 if (unlikely(skb->pkt_type == PACKET_LOOPBACK)) in br_handle_frame()
221 if (!is_valid_ether_addr(eth_hdr(skb)->h_source)) in br_handle_frame()
224 skb = skb_share_check(skb, GFP_ATOMIC); in br_handle_frame()
225 if (!skb) in br_handle_frame()
228 p = br_port_get_rcu(skb->dev); in br_handle_frame()
230 if (br_handle_ingress_vlan_tunnel(skb, p, in br_handle_frame()
259 *pskb = skb; in br_handle_frame()
260 __br_handle_local_finish(skb); in br_handle_frame()
270 *pskb = skb; in br_handle_frame()
271 __br_handle_local_finish(skb); in br_handle_frame()
282 NF_HOOK(NFPROTO_BRIDGE, NF_BR_LOCAL_IN, dev_net(skb->dev), in br_handle_frame()
283 NULL, skb, skb->dev, NULL, br_handle_local_finish); in br_handle_frame()
292 if ((*rhook)(skb)) { in br_handle_frame()
293 *pskb = skb; in br_handle_frame()
296 dest = eth_hdr(skb)->h_dest; in br_handle_frame()
301 skb->pkt_type = PACKET_HOST; in br_handle_frame()
304 dev_net(skb->dev), NULL, skb, skb->dev, NULL, in br_handle_frame()
309 kfree_skb(skb); in br_handle_frame()