新内核桥的一点点改动
1.
桥是在br_add_if动态的挂入br_handle_frame
在__netif_receive_skb_core中rx_handler = rcu_dereference(skb->dev->rx_handler)得到调用
2.
br的ip机制非常强大,是通过brnf_call_iptables来决定是否开启,可通过PROC动态配置。
关于PPPOE头部在netfilter无法取到,需要调整这个值/proc/sys/net/bridge/bridge-nf-filter-pppoe-tagged
下面是br挂入的PREROUTING static unsigned int br_nf_pre_routing(void *priv,struct sk_buff *skb,
const struct nf_hook_state *state)
{
if (!brnf_call_iptables && !br->nf_call_iptables)
return NF_ACCEPT;
if (!IS_IP(skb) && !IS_VLAN_IP(skb) && !IS_PPPOE_IP(skb))
return NF_ACCEPT;
nf_bridge = nf_bridge_info_get(skb);
nf_bridge->ipv4_daddr = ip_hdr(skb)->daddr;
skb->protoc