8021q

2214阅读 0评论2012-10-21 miracleqiji
分类:LINUX

[vlan_proto_init]
    - vlan_proc_init
    - dev_add_pack
    - register_netdevice_notifiler
    - vlan_ioctl_set(vlan_ioctl_handler)

static struct packet_type vlan_packet_type = {
.type = __constant_htons(ETH_P_8021Q),
.func = vlan_skb_recv, /* VLAN receive method */
};

[vlan_skb_recv]
    - get vlan from skb->data(vlan_hdr)
    - skb->dev = __find_vlan_dev (from eth0 to eth0.10)
        - __vlan_find_group
        - vlan_group_get_device
    - stats 
    - skb_pull_rcsum(skb, VLAN_HLEN); (take off vlan header)
    - check dev
    - vlan_get_ingress_priority
    - vlan_check_reorder_header
        - skb_shared
        - skb_clone
        - kfree_skb (user-1)
    - netif_rx
         
上一篇:uboot-1.2.0
下一篇:没有了