
Estou tentando implementar vlans em um destino programaticamente.
Mas primeiro eu queria configurar vlans manualmente para ajudar a entender melhor a configuração de vlans. Então eu configurei uma vlan manualmente no meu sistema de desenvolvimento (ubuntu) usando a combinação de comandos vconfig/ifconfig, mas usar a mesma combinação de comandos no destino pretendido não funciona.
Ambos os sistemas usam o mesmo driver 8021q, portanto, o método de informar o driver Ethernet de nível inferior sobre as informações da vlan deve ser o mesmo (eu acho). Depois de olhar para a fonte do driver vlan, parece que ele coleta as informações da vlan e adiciona as informações à estrutura sk_buff que é eventualmente passada para o driver ethernet, mas não é óbvio onde a mágica da vlan deve acontecer (driver ethernet ou driver 8021q) .
Examinei a fonte do driver Ethernet do sistema de destino e ele suporta um método ioctl de configuração de uma vlan. Mas esta não parece ser a maneira convencional como o Linux configura uma vlan no driver Ethernet.
Por qual mecanismo o driver vlan (8021q.ko) informa ao hardware Ethernet sobre uma vlan?
É uma chamada de API especial para o driver Ethernet para configurar uma vlan no hardware ou o driver vlan deveria adicionar as tags vlan ao pacote?
Qualquer informação sobre a implementação de vlan também seria útil.