Estou tentando implementar vlans em um destino programaticamente.
Mas primeiro eu queria configurar as vlans manualmente para ajudar a entender melhor a configuração do vlan. 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 comando no destino desejado não funciona.
Ambos os sistemas usam o mesmo driver 8021q, portanto o método de informar o driver Ethernet de nível mais baixo da informação vlan deve ser o mesmo (eu acho). Depois de olhar para a fonte do driver vlan, parece que ele coleta a informação vlan e adiciona a informação a estrutura sk_buff que eventualmente é passada para o driver ethernet, mas não é óbvio onde a magia vlan deve acontecer (driver ethernet ou driver 8021q) .
Eu olhei para a fonte do driver ethernet do sistema de destino e ele suporta um método ioctl de configuração de uma vlan. Mas isso não parece 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 api especial para o driver ethernet para configurar uma vlan em hardware, ou o driver vlan deve estar adicionando as tags vlan ao pacote?
Qualquer informação sobre a implementação de vlan também seria útil.
Tags linux vlan system-programming