我试图以编程方式在目标上实现vlan。
但首先我想手动设置vlan,以帮助更好地理解vlan设置。所以我使用vconfig / ifconfig命令组合在我的开发系统(ubuntu)上手动设置了一个vlan,但在目标目标上使用相同的命令组合并不起作用。
两个系统都使用相同的8021q驱动程序,因此通知较低级别以太网驱动程序vlan信息的方法应该是相同的(我想)。在查看vlan驱动程序源之后,它似乎收集了vlan信息并添加了最终传递给以太网驱动程序的sk_buff结构的信息,但是在vlan魔法发生的地方并不明显(以太网驱动程序)或8021q司机)。
我查看了目标系统的以太网驱动程序的源代码,它支持设置vlan的ioctl方法。但这似乎不像Linux在以太网驱动程序中设置vlan的传统方式。
通过什么机制,vlan驱动程序(8021q.ko)告诉以太网硬件有关vlan的信息?
对于以太网驱动程序在硬件中设置vlan是否是特殊的api调用,或者vlan驱动程序是否应该将vlan标记添加到数据包中?
有关vlan实现的任何信息也会有所帮助。