diff options
author | Florian Westphal <fw@strlen.de> | 2020-11-02 00:27:04 +0100 |
---|---|---|
committer | Florian Westphal <fw@strlen.de> | 2020-11-09 12:14:52 +0100 |
commit | 2a9aea6f2dfb6ee61528809af98860e06b38762b (patch) | |
tree | 0d0f1c44efdfa6ef4a5787da7d4e3b1ef843c68a /src | |
parent | db3207dc06bc0c3cd3ec0df409512448ecba603e (diff) |
parser: merge sack-perm/sack-permitted and maxseg/mss
One was added by the tcp option parsing ocde, the other by synproxy.
So we have:
synproxy ... sack-perm
synproxy ... mss
and
tcp option maxseg
tcp option sack-permitted
This kills the extra tokens on the scanner/parser side,
so sack-perm and sack-permitted can both be used.
Likewise, 'synproxy maxseg' and 'tcp option mss size 42' will work too.
On the output side, the shorter form is now preferred, i.e. sack-perm
and mss.
Signed-off-by: Florian Westphal <fw@strlen.de>
Diffstat (limited to 'src')
-rw-r--r-- | src/parser_bison.y | 12 | ||||
-rw-r--r-- | src/scanner.l | 8 | ||||
-rw-r--r-- | src/tcpopt.c | 2 |
3 files changed, 10 insertions, 12 deletions
diff --git a/src/parser_bison.y b/src/parser_bison.y index 9bf4f71f..8d6e28c9 100644 --- a/src/parser_bison.y +++ b/src/parser_bison.y @@ -233,7 +233,6 @@ int nft_lex(void *, void *, void *); %token SYNPROXY "synproxy" %token MSS "mss" %token WSCALE "wscale" -%token SACKPERM "sack-perm" %token TYPEOF "typeof" @@ -400,14 +399,13 @@ int nft_lex(void *, void *, void *); %token OPTION "option" %token ECHO "echo" %token EOL "eol" -%token MAXSEG "maxseg" %token NOOP "noop" %token SACK "sack" %token SACK0 "sack0" %token SACK1 "sack1" %token SACK2 "sack2" %token SACK3 "sack3" -%token SACK_PERMITTED "sack-permitted" +%token SACK_PERM "sack-permitted" %token TIMESTAMP "timestamp" %token KIND "kind" %token COUNT "count" @@ -3279,7 +3277,7 @@ synproxy_arg : MSS NUM { $<stmt>0->synproxy.flags |= NF_SYNPROXY_OPT_TIMESTAMP; } - | SACKPERM + | SACK_PERM { $<stmt>0->synproxy.flags |= NF_SYNPROXY_OPT_SACK_PERM; } @@ -3334,7 +3332,7 @@ synproxy_ts : /* empty */ { $$ = 0; } ; synproxy_sack : /* empty */ { $$ = 0; } - | SACKPERM + | SACK_PERM { $$ = NF_SYNPROXY_OPT_SACK_PERM; } @@ -5216,9 +5214,9 @@ tcp_hdr_field : SPORT { $$ = TCPHDR_SPORT; } tcp_hdr_option_type : EOL { $$ = TCPOPTHDR_EOL; } | NOOP { $$ = TCPOPTHDR_NOOP; } - | MAXSEG { $$ = TCPOPTHDR_MAXSEG; } + | MSS { $$ = TCPOPTHDR_MAXSEG; } | WINDOW { $$ = TCPOPTHDR_WINDOW; } - | SACK_PERMITTED { $$ = TCPOPTHDR_SACK_PERMITTED; } + | SACK_PERM { $$ = TCPOPTHDR_SACK_PERMITTED; } | SACK { $$ = TCPOPTHDR_SACK0; } | SACK0 { $$ = TCPOPTHDR_SACK0; } | SACK1 { $$ = TCPOPTHDR_SACK1; } diff --git a/src/scanner.l b/src/scanner.l index 7afd9bfb..516c648f 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -421,14 +421,16 @@ addrstring ({macaddr}|{ip4addr}|{ip6addr}) "echo" { return ECHO; } "eol" { return EOL; } -"maxseg" { return MAXSEG; } +"maxseg" { return MSS; } +"mss" { return MSS; } "noop" { return NOOP; } "sack" { return SACK; } "sack0" { return SACK0; } "sack1" { return SACK1; } "sack2" { return SACK2; } "sack3" { return SACK3; } -"sack-permitted" { return SACK_PERMITTED; } +"sack-permitted" { return SACK_PERM; } +"sack-perm" { return SACK_PERM; } "timestamp" { return TIMESTAMP; } "time" { return TIME; } @@ -565,9 +567,7 @@ addrstring ({macaddr}|{ip4addr}|{ip6addr}) "osf" { return OSF; } "synproxy" { return SYNPROXY; } -"mss" { return MSS; } "wscale" { return WSCALE; } -"sack-perm" { return SACKPERM; } "notrack" { return NOTRACK; } diff --git a/src/tcpopt.c b/src/tcpopt.c index ec305d94..6dbaa9e6 100644 --- a/src/tcpopt.c +++ b/src/tcpopt.c @@ -55,7 +55,7 @@ static const struct exthdr_desc tcpopt_window = { }; static const struct exthdr_desc tcpopt_sack_permitted = { - .name = "sack-permitted", + .name = "sack-perm", .type = TCPOPT_SACK_PERMITTED, .templates = { [TCPOPTHDR_FIELD_KIND] = PHT("kind", 0, 8), |