]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
parser_bison: allow to use new osf expression from assignment statement
authorPablo Neira Ayuso <pablo@netfilter.org>
Tue, 7 Aug 2018 15:45:15 +0000 (17:45 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Tue, 7 Aug 2018 15:52:48 +0000 (17:52 +0200)
So the following rule to set the conntrack mark based on the OS passive
recognition works:

 # nft add rule x y ct mark set osf name map { "Windows" : 1, "MacOs" : 2 }

Fixes: 9f28b685b473 ("src: introduce passive OS fingerprint matching")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/parser_bison.y
tests/py/inet/osf.t
tests/py/inet/osf.t.payload

index 9a75120a4dc758361a294111cc9e6672e4564f0e..f3c882995e60f49f01c87ce0cfc2f3eea2f0e459 100644 (file)
@@ -2537,6 +2537,7 @@ primary_stmt_expr :       symbol_expr             { $$ = $1; }
                        |       payload_expr            { $$ = $1; }
                        |       keyword_expr            { $$ = $1; }
                        |       socket_expr             { $$ = $1; }
+                       |       osf_expr                { $$ = $1; }
                        ;
 
 shift_stmt_expr                :       primary_stmt_expr
index 6533b84e1c25351e04dc6b532b1fb3ad06f99e8c..7cf909312aa5e2bd0e9fc9e1cdb133c981f5623b 100644 (file)
@@ -7,3 +7,4 @@
 osf name "Linux";ok
 osf name "morethansixteenbytes";fail
 osf name ;fail
+ct mark set osf name map { "Windows" : 0x00000001, "MacOs" : 0x00000002 };ok
index f94c17ec69b6712f46126f378799d690bacc281d..0381378f8d6791d95edb38a1f144b24b6b20aa17 100644 (file)
@@ -12,3 +12,12 @@ ip6 osfip6 osfchain
 inet osfinet osfchain
   [ osf dreg 1 ]
   [ cmp eq reg 1 0x756e694c 0x00000078 0x00000000 0x00000000 ]
+
+# ct mark set osf name map { "Windows" : 0x00000001, "MacOs" : 0x00000002 }
+__map%d osfip b size 2
+__map%d osfip 0
+        element 646e6957 0073776f 00000000 00000000  : 00000001 0 [end] element 4f63614d 00000073 00000000 00000000  : 00000002 0 [end]
+ip osfip osfchain
+  [ osf dreg 1 ]
+  [ lookup reg 1 set __map%d dreg 1 ]
+  [ ct set mark with reg 1 ]