@Mastah :
Ce sont des règles nftables classiques.
chain_in
C'est une chaîne de base.
chain_in_vlan_update
C'est une chaîne régulière.
Une chaîne permet de regrouper plusieurs règles pour des raisons de clarté et de concision.
vlan type arp vlan id set 321 counter
Une règle est formée par une séquence d'expressions et se termine par des déclarations.
Le manuel indique que
vlan type arp est une expression « En-tête Ethernet ». La règle désigne toutes les trames 802.1q qui encapsulent des paquets ARP.
Le manuel indique aussi que
vlan id set est une déclaration de charge utile.
payload_expression set valuevlan id est une expression d'en-tête Ethernet.
counter
Un compteur qui indique le nombre de paquets auxquels s'est appliquée la (ou les) déclaration(s) dans la règle (selon sa position).
Concrètement :
ether daddr da:d3:00:01:02:03 vlan id 321 jump out_update_vlan ➡
⤷ vlan pcp set 6 counter
On change la valeur du champ PCP à 6 de certaines trames 802.1q. Celles ayant l'identifiant VLAN 321 et dont l'adresse destination est da:d3:00:01:02:03.
En résumé :
vlan pcp set 6 est une déclaration et se place donc en fin de règle. Elle définie la valeur du champ PCP d'une trame 802.1q à la priorité 6.
table netdev t {
chain in_update_vlan {
vlan type arp vlan id set 321 counter
ip saddr 10.1.1.1 icmp type echo-request vlan id set 321 counter
}
chain in {
type filter hook ingress device veth0 priority filter;
vlan pcp 0 counter
ether saddr da:d3:00:01:02:03 vlan id 123 jump in_update_vlan
}
chain out_update_vlan {
vlan type arp vlan id set 123 counter
ip daddr 10.1.1.1 icmp type echo-reply vlan id set 123 counter
vlan pcp set 6 counter
}
chain out {
type filter hook egress device veth0 priority filter;
ether daddr da:d3:00:01:02:03 vlan id 321 jump out_update_vlan
}
}Source:
vlan_mangling