Czy w jakiś sposób mogę manipulować wartością Priority Code Point (PCP) pole w ramce Ethernet z mojej aplikacji (np. przy użyciu setsockopt()
)? Chciałbym uniknąć hacków niskiego poziomu z tworzeniem ramki Ethernet od podstaw.
Przeszukałem strony podręcznika socket(7)
i ip(7)
ale nie ma możliwości sterowania polami ramek Ethernet.
Jeśli jest to istotne, potrzebuję go do gniazda TCP.
Odpowiedzi:
4 dla odpowiedzi № 1Możesz ustawić pole priorytetu vlan za pomocą sockopt ():
int priority = 7;
setsockopt(sfd, SOL_SOCKET, SO_PRIORITY, &priority, sizeof(priority));
W pliku net / 8021q / vlan_dev.c widać, że pole skb-> priorytet jest używane dla VLAN 802.1Q TCI ...
1 dla odpowiedzi nr 2
Na każdym urządzeniu VLAN są mapowania wejścia i wyjścia. Na przykład:
vconfig add eth0 333
vconfig set_egress_map eth0.333 2 4
vconfig set_egress_map eth0.333 3 5
cat /proc/net/vlan/eth0.333
Możesz zobaczyć odwzorowania na dwóch ostatnich liniach.