@@ -247,7 +247,9 @@ static int br_validate_ipv4(struct net *net, struct sk_buff *skb)
247247
248248void nf_bridge_update_protocol (struct sk_buff * skb )
249249{
250- switch (skb -> nf_bridge -> orig_proto ) {
250+ const struct nf_bridge_info * nf_bridge = nf_bridge_info_get (skb );
251+
252+ switch (nf_bridge -> orig_proto ) {
251253 case BRNF_PROTO_8021Q :
252254 skb -> protocol = htons (ETH_P_8021Q );
253255 break ;
@@ -569,7 +571,8 @@ static unsigned int br_nf_forward_ip(void *priv,
569571 struct net_device * parent ;
570572 u_int8_t pf ;
571573
572- if (!skb -> nf_bridge )
574+ nf_bridge = nf_bridge_info_get (skb );
575+ if (!nf_bridge )
573576 return NF_ACCEPT ;
574577
575578 /* Need exclusive nf_bridge_info since we might have multiple
@@ -701,7 +704,9 @@ br_nf_ip_fragment(struct net *net, struct sock *sk, struct sk_buff *skb,
701704
702705static unsigned int nf_bridge_mtu_reduction (const struct sk_buff * skb )
703706{
704- if (skb -> nf_bridge -> orig_proto == BRNF_PROTO_PPPOE )
707+ const struct nf_bridge_info * nf_bridge = nf_bridge_info_get (skb );
708+
709+ if (nf_bridge -> orig_proto == BRNF_PROTO_PPPOE )
705710 return PPPOE_SES_HLEN ;
706711 return 0 ;
707712}
@@ -839,7 +844,9 @@ static unsigned int ip_sabotage_in(void *priv,
839844 struct sk_buff * skb ,
840845 const struct nf_hook_state * state )
841846{
842- if (skb -> nf_bridge && !skb -> nf_bridge -> in_prerouting &&
847+ struct nf_bridge_info * nf_bridge = nf_bridge_info_get (skb );
848+
849+ if (nf_bridge && !nf_bridge -> in_prerouting &&
843850 !netif_is_l3_master (skb -> dev )) {
844851 state -> okfn (state -> net , state -> sk , skb );
845852 return NF_STOLEN ;
@@ -877,7 +884,9 @@ static void br_nf_pre_routing_finish_bridge_slow(struct sk_buff *skb)
877884
878885static int br_nf_dev_xmit (struct sk_buff * skb )
879886{
880- if (skb -> nf_bridge && skb -> nf_bridge -> bridged_dnat ) {
887+ const struct nf_bridge_info * nf_bridge = nf_bridge_info_get (skb );
888+
889+ if (nf_bridge && nf_bridge -> bridged_dnat ) {
881890 br_nf_pre_routing_finish_bridge_slow (skb );
882891 return 1 ;
883892 }
0 commit comments