summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2021-06-11 17:29:14 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2021-06-11 19:47:40 +0200
commitd2fba515ff94b4a8fb507ac8ca4c45ed25371c47 (patch)
treed2c53accafd147aba3c5f4380aa8cf76a5652aad /src
parentd34a1c30004fe1e22743848c192516cf228023ef (diff)
src: add vlan dei
the CFI bit has been repurposed as DEI "Drop Eligible Indicator" since 802.1Q-2011. The vlan cfi field is still retained for compatibility. Closes: https://bugzilla.netfilter.org/show_bug.cgi?id=1516 Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src')
-rw-r--r--src/parser_bison.y2
-rw-r--r--src/proto.c1
-rw-r--r--src/scanner.l1
3 files changed, 4 insertions, 0 deletions
diff --git a/src/parser_bison.y b/src/parser_bison.y
index 136ae105..abce0479 100644
--- a/src/parser_bison.y
+++ b/src/parser_bison.y
@@ -327,6 +327,7 @@ int nft_lex(void *, void *, void *);
%token VLAN "vlan"
%token ID "id"
%token CFI "cfi"
+%token DEI "dei"
%token PCP "pcp"
%token ARP "arp"
@@ -5227,6 +5228,7 @@ vlan_hdr_expr : VLAN vlan_hdr_field close_scope_vlan
vlan_hdr_field : ID { $$ = VLANHDR_VID; }
| CFI { $$ = VLANHDR_CFI; }
+ | DEI { $$ = VLANHDR_DEI; }
| PCP { $$ = VLANHDR_PCP; }
| TYPE { $$ = VLANHDR_TYPE; }
;
diff --git a/src/proto.c b/src/proto.c
index 63727605..2b61e0ba 100644
--- a/src/proto.c
+++ b/src/proto.c
@@ -1032,6 +1032,7 @@ const struct proto_desc proto_vlan = {
},
.templates = {
[VLANHDR_PCP] = VLANHDR_BITFIELD("pcp", 0, 3),
+ [VLANHDR_DEI] = VLANHDR_BITFIELD("dei", 3, 1),
[VLANHDR_CFI] = VLANHDR_BITFIELD("cfi", 3, 1),
[VLANHDR_VID] = VLANHDR_BITFIELD("id", 4, 12),
[VLANHDR_TYPE] = VLANHDR_TYPE("type", &ethertype_type, vlan_type),
diff --git a/src/scanner.l b/src/scanner.l
index 6dc1be89..6cc7778d 100644
--- a/src/scanner.l
+++ b/src/scanner.l
@@ -429,6 +429,7 @@ addrstring ({macaddr}|{ip4addr}|{ip6addr})
"id" { return ID; }
<SCANSTATE_VLAN>{
"cfi" { return CFI; }
+ "dei" { return DEI; }
"pcp" { return PCP; }
}
"8021ad" { yylval->string = xstrdup(yytext); return STRING; }