
Estoy intentando implementar VLAN en un objetivo mediante programación.
Pero primero quería configurar las VLAN manualmente para ayudar a comprender mejor la configuración de las VLAN. Así que configuro una VLAN manualmente en mi sistema de desarrollo (ubuntu) usando la combinación de comandos vconfig/ifconfig, pero usar la misma combinación de comandos en el objetivo previsto no funciona.
Ambos sistemas usan el mismo controlador 8021q, por lo que el método para informar al controlador Ethernet de nivel inferior de la información de VLAN debería ser el mismo (creo). Después de observar la fuente del controlador VLAN, parece que recopila la información de VLAN y agrega la información a la estructura sk_buff que finalmente se pasa al controlador de Ethernet, pero no es obvio dónde se supone que sucederá la magia de VLAN (controlador de Ethernet o controlador 8021q). .
Miré la fuente del controlador Ethernet del sistema de destino y admite un método ioctl para configurar una VLAN. Pero esta no parece la forma convencional en que Linux configura una VLAN en el controlador Ethernet.
¿Mediante qué mecanismo el controlador VLAN (8021q.ko) le informa al hardware Ethernet acerca de una VLAN?
¿Es una llamada API especial al controlador Ethernet para configurar una VLAN en el hardware, o el controlador VLAN debería agregar las etiquetas VLAN al paquete?
Cualquier información sobre la implementación de VLAN también sería útil.