Lines Matching refs:skb
27 static int br_pass_frame_up(struct sk_buff *skb) in br_pass_frame_up() argument
29 struct net_device *indev, *brdev = BR_INPUT_SKB_CB(skb)->brdev; in br_pass_frame_up()
36 brstats->rx_bytes += skb->len; in br_pass_frame_up()
45 !br_allowed_egress(br, pv, skb)) { in br_pass_frame_up()
46 kfree_skb(skb); in br_pass_frame_up()
50 indev = skb->dev; in br_pass_frame_up()
51 skb->dev = brdev; in br_pass_frame_up()
52 skb = br_handle_vlan(br, pv, skb); in br_pass_frame_up()
53 if (!skb) in br_pass_frame_up()
56 return NF_HOOK(NFPROTO_BRIDGE, NF_BR_LOCAL_IN, skb, indev, NULL, in br_pass_frame_up()
61 int br_handle_frame_finish(struct sk_buff *skb) in br_handle_frame_finish() argument
63 const unsigned char *dest = eth_hdr(skb)->h_dest; in br_handle_frame_finish()
64 struct net_bridge_port *p = br_port_get_rcu(skb->dev); in br_handle_frame_finish()
75 if (!br_allowed_ingress(p->br, nbp_get_vlan_info(p), skb, &vid)) in br_handle_frame_finish()
81 br_fdb_update(br, p, eth_hdr(skb)->h_source, vid, false); in br_handle_frame_finish()
84 br_multicast_rcv(br, p, skb, vid)) in br_handle_frame_finish()
90 BR_INPUT_SKB_CB(skb)->brdev = br->dev; in br_handle_frame_finish()
96 skb2 = skb; in br_handle_frame_finish()
101 skb2 = skb; in br_handle_frame_finish()
104 mdst = br_mdb_get(br, skb, vid); in br_handle_frame_finish()
105 if ((mdst || BR_INPUT_SKB_CB_MROUTERS_ONLY(skb)) && in br_handle_frame_finish()
106 br_multicast_querier_exists(br, eth_hdr(skb))) { in br_handle_frame_finish()
109 skb2 = skb; in br_handle_frame_finish()
110 br_multicast_forward(mdst, skb, skb2); in br_handle_frame_finish()
111 skb = NULL; in br_handle_frame_finish()
115 skb2 = skb; in br_handle_frame_finish()
121 skb2 = skb; in br_handle_frame_finish()
123 skb = NULL; in br_handle_frame_finish()
126 if (skb) { in br_handle_frame_finish()
129 br_forward(dst->dst, skb, skb2); in br_handle_frame_finish()
131 br_flood_forward(br, skb, skb2, unicast); in br_handle_frame_finish()
140 kfree_skb(skb); in br_handle_frame_finish()
146 static int br_handle_local_finish(struct sk_buff *skb) in br_handle_local_finish() argument
148 struct net_bridge_port *p = br_port_get_rcu(skb->dev); in br_handle_local_finish()
152 if (p->flags & BR_LEARNING && br_should_learn(p, skb, &vid)) in br_handle_local_finish()
153 br_fdb_update(p->br, p, eth_hdr(skb)->h_source, vid, false); in br_handle_local_finish()
164 struct sk_buff *skb = *pskb; in br_handle_frame() local
165 const unsigned char *dest = eth_hdr(skb)->h_dest; in br_handle_frame()
168 if (unlikely(skb->pkt_type == PACKET_LOOPBACK)) in br_handle_frame()
171 if (!is_valid_ether_addr(eth_hdr(skb)->h_source)) in br_handle_frame()
174 skb = skb_share_check(skb, GFP_ATOMIC); in br_handle_frame()
175 if (!skb) in br_handle_frame()
178 p = br_port_get_rcu(skb->dev); in br_handle_frame()
216 if (NF_HOOK(NFPROTO_BRIDGE, NF_BR_LOCAL_IN, skb, skb->dev, in br_handle_frame()
220 *pskb = skb; in br_handle_frame()
230 if ((*rhook)(skb)) { in br_handle_frame()
231 *pskb = skb; in br_handle_frame()
234 dest = eth_hdr(skb)->h_dest; in br_handle_frame()
239 skb->pkt_type = PACKET_HOST; in br_handle_frame()
241 NF_HOOK(NFPROTO_BRIDGE, NF_BR_PRE_ROUTING, skb, skb->dev, NULL, in br_handle_frame()
246 kfree_skb(skb); in br_handle_frame()