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