
Ich versuche, VLANs programmgesteuert auf einem Ziel zu implementieren.
Aber zuerst wollte ich VLANs manuell einrichten, um ein besseres Verständnis für die Einrichtung von VLANs zu bekommen. Also habe ich auf meinem Entwicklungssystem (Ubuntu) manuell ein VLAN mit der Befehlskombination vconfig/ifconfig eingerichtet, aber die Verwendung derselben Befehlskombination auf dem beabsichtigten Ziel funktioniert nicht.
Beide Systeme verwenden denselben 8021q-Treiber, daher sollte die Methode, den Ethernet-Treiber auf niedrigerer Ebene über die VLAN-Informationen zu informieren, dieselbe sein (denke ich). Nach einem Blick auf die VLAN-Treiberquelle scheint es, dass dieser die VLAN-Informationen sammelt und sie der sk_buff-Struktur hinzufügt, die schließlich an den Ethernet-Treiber weitergegeben wird, aber es ist nicht klar, wo die VLAN-Magie stattfinden soll (Ethernet-Treiber oder 8021q-Treiber).
Ich habe mir die Quelle für den Ethernet-Treiber des Zielsystems angesehen und sie unterstützt eine Ioctl-Methode zum Einrichten eines VLAN. Dies scheint jedoch nicht die herkömmliche Methode zu sein, mit der Linux ein VLAN im Ethernet-Treiber einrichtet.
Mit welchem Mechanismus informiert der VLAN-Treiber (8021q.ko) die Ethernet-Hardware über ein VLAN?
Handelt es sich um einen speziellen API-Aufruf an den Ethernet-Treiber, um ein VLAN in der Hardware einzurichten, oder sollte der VLAN-Treiber die VLAN-Tags zum Paket hinzufügen?
Alle Informationen zur VLAN-Implementierung wären ebenfalls hilfreich.