- 论坛徽章:
- 0
|
dev.c中int netif_receive_skb(struct sk_buff *skb)有调用桥的处理函数:
skb = handle_bridge(skb, &pt_prev, &ret, orig_dev);
if (!skb)
goto out;
发现有如下宏定义:
#if defined(CONFIG_BRIDGE) || defined (CONFIG_BRIDGE_MODULE)
...
...
static inline struct sk_buff *handle_bridge(struct sk_buff *skb,
struct packet_type **pt_prev, int *ret,
struct net_device *orig_dev)
{
struct net_bridge_port *port;
if (skb->pkt_type == PACKET_LOOPBACK ||
(port = rcu_dereference(skb->dev->br_port)) == NULL)
return skb;
if (*pt_prev) {
*ret = deliver_skb(skb, *pt_prev, orig_dev);
*pt_prev = NULL;
}
return br_handle_frame_hook(port, skb);
}
#else
#define handle_bridge(skb, pt_prev, ret, orig_dev) (skb)
#endif
CentOS6.2 LiveCD版上面内核编译没有定义上面的两个宏, 不知道这样分析对不对? 手头上暂时没有编译源代码,还不能确定。 |
|