[PATCH nftables] rt: update test scripts and fix documentation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Anders K. Pedersen <akp@xxxxxxxxxxxx>

Replace tests/files/expr-rt with Python based tests, and replace ether type
with meta nfproto, which generates a bit fewer instructions.

Signed-off-by: Anders K. Pedersen <akp@xxxxxxxxxxxx>
---
 doc/nft.xml                |  6 +++---
 src/evaluate.c             |  4 ++--
 tests/files/expr-rt        | 21 ---------------------
 tests/py/any/rt.t          |  7 +++++++
 tests/py/any/rt.t.payload  |  5 +++++
 tests/py/inet/rt.t         |  8 ++++++++
 tests/py/inet/rt.t.payload | 14 ++++++++++++++
 tests/py/ip/rt.t           |  6 ++++++
 tests/py/ip/rt.t.payload   |  5 +++++
 tests/py/ip6/rt0.t         |  6 ++++++
 tests/py/ip6/rt0.t.payload |  5 +++++
 11 files changed, 61 insertions(+), 26 deletions(-)

diff --git a/doc/nft.xml b/doc/nft.xml
index 1ff70b0..cc1e4a4 100644
--- a/doc/nft.xml
+++ b/doc/nft.xml
@@ -1315,7 +1315,7 @@ filter prerouting meta mark set 0xdead fib daddr . mark type vmap { backhole : d
 			<para>
 				<table frame="all">
 					<title>Routing expression types</title>
-					<tgroup cols='4' align='left' colsep='1' rowsep='1'>
+					<tgroup cols='3' align='left' colsep='1' rowsep='1'>
 						<colspec colname='c1'/>
 						<colspec colname='c2'/>
 						<colspec colname='c3'/>
@@ -1375,8 +1375,8 @@ filter output rt classid 10
 # IP family dependent rt expressions
 ip filter output rt nexthop 192.168.0.1
 ip6 filter output rt nexthop fd00::1
-inet filter ether type ip output rt nexthop 192.168.0.1
-inet filter ether type ip6 output rt nexthop fd00::1
+inet filter meta nfproto ipv4 output rt nexthop 192.168.0.1
+inet filter meta nfproto ipv6 output rt nexthop fd00::1
 					</programlisting>
 				</example>
 			</para>
diff --git a/src/evaluate.c b/src/evaluate.c
index a2e5dbb..79add5e 100644
--- a/src/evaluate.c
+++ b/src/evaluate.c
@@ -639,8 +639,8 @@ static int expr_evaluate_rt(struct eval_ctx *ctx, struct expr **expr)
 
 err:
 	return expr_error(ctx->msgs, rt,
-			  "ether type ip or ip6 must be specified before "
-			  "routing expression");
+			  "meta nfproto ipv4 or ipv6 must be specified "
+			  "before routing expression");
 }
 
 /*
diff --git a/tests/files/expr-rt b/tests/files/expr-rt
deleted file mode 100644
index 4c15409..0000000
--- a/tests/files/expr-rt
+++ /dev/null
@@ -1,21 +0,0 @@
-#! nft -f
-
-add table ip filter
-add chain ip filter output { type filter hook output priority 0 ; }
-
-add table ip6 filter
-add chain ip6 filter output { type filter hook output priority 0 ; }
-
-add table inet filter
-add chain inet filter output { type filter hook output priority 0 ; }
-
-# rt: classid (see /etc/iproute2/rt_realms)
-add rule ip filter output rt classid cosmos counter
-add rule ip6 filter output rt classid cosmos counter
-add rule inet filter output rt classid cosmos counter
-
-# rt: nexthop
-add rule ip filter output rt nexthop 192.168.0.1 counter
-add rule ip6 filter output rt nexthop fd00::1 counter
-add rule inet filter output ether type ip rt nexthop 192.168.0.1 counter
-add rule inet filter output ether type ip6 rt nexthop fd00::1 counter
diff --git a/tests/py/any/rt.t b/tests/py/any/rt.t
new file mode 100644
index 0000000..4f65eaa
--- /dev/null
+++ b/tests/py/any/rt.t
@@ -0,0 +1,7 @@
+:output;type filter hook input priority 0
+
+*ip;test-ip4;output
+*ip6;test-ip6;output
+*inet;test-inet;output
+
+rt classid "cosmos";ok
diff --git a/tests/py/any/rt.t.payload b/tests/py/any/rt.t.payload
new file mode 100644
index 0000000..0e354fa
--- /dev/null
+++ b/tests/py/any/rt.t.payload
@@ -0,0 +1,5 @@
+# rt classid "cosmos"
+ip test-ip4 input
+  [ rt load classid => reg 1 ]
+  [ cmp eq reg 1 0x00000000 ]
+
diff --git a/tests/py/inet/rt.t b/tests/py/inet/rt.t
new file mode 100644
index 0000000..f2dcbdc
--- /dev/null
+++ b/tests/py/inet/rt.t
@@ -0,0 +1,8 @@
+:output;type filter hook input priority 0
+
+*inet;test-inet;output
+
+rt nexthop 192.168.0.1;fail
+rt nexthop fd00::1;fail
+meta nfproto ipv4 rt nexthop 192.168.0.1;ok
+meta nfproto ipv6 rt nexthop fd00::1;ok
diff --git a/tests/py/inet/rt.t.payload b/tests/py/inet/rt.t.payload
new file mode 100644
index 0000000..d94973e
--- /dev/null
+++ b/tests/py/inet/rt.t.payload
@@ -0,0 +1,14 @@
+# meta nfproto ipv4 rt nexthop 192.168.0.1
+inet test-inet output
+  [ meta load nfproto => reg 1 ]
+  [ cmp eq reg 1 0x00000002 ]
+  [ rt load nexthop4 => reg 1 ]
+  [ cmp eq reg 1 0x0100a8c0 ]
+
+# meta nfproto ipv6 rt nexthop fd00::1
+inet test-inet output
+  [ meta load nfproto => reg 1 ]
+  [ cmp eq reg 1 0x0000000a ]
+  [ rt load nexthop6 => reg 1 ]
+  [ cmp eq reg 1 0x000000fd 0x00000000 0x00000000 0x01000000 ]
+
diff --git a/tests/py/ip/rt.t b/tests/py/ip/rt.t
new file mode 100644
index 0000000..99750c5
--- /dev/null
+++ b/tests/py/ip/rt.t
@@ -0,0 +1,6 @@
+:output;type filter hook input priority 0
+
+*ip;test-ip4;output
+
+rt nexthop 192.168.0.1;ok
+rt nexthop fd00::1;fail
diff --git a/tests/py/ip/rt.t.payload b/tests/py/ip/rt.t.payload
new file mode 100644
index 0000000..93eef4a
--- /dev/null
+++ b/tests/py/ip/rt.t.payload
@@ -0,0 +1,5 @@
+# rt nexthop 192.168.0.1
+ip test-ip4 output
+  [ rt load nexthop4 => reg 1 ]
+  [ cmp eq reg 1 0x0100a8c0 ]
+
diff --git a/tests/py/ip6/rt0.t b/tests/py/ip6/rt0.t
new file mode 100644
index 0000000..92614de
--- /dev/null
+++ b/tests/py/ip6/rt0.t
@@ -0,0 +1,6 @@
+:output;type filter hook input priority 0
+
+*ip6;test-ip6;output
+
+rt nexthop 192.168.0.1;fail
+rt nexthop fd00::1;ok
diff --git a/tests/py/ip6/rt0.t.payload b/tests/py/ip6/rt0.t.payload
new file mode 100644
index 0000000..464b7f2
--- /dev/null
+++ b/tests/py/ip6/rt0.t.payload
@@ -0,0 +1,5 @@
+# rt nexthop fd00::1
+ip6 test-ip6 output
+  [ rt load nexthop6 => reg 1 ]
+  [ cmp eq reg 1 0x000000fd 0x00000000 0x00000000 0x01000000 ]
+
��.n��������+%������w��{.n����z��׫���n�r������&��z�ޗ�zf���h���~����������_��+v���)ߣ�

[Index of Archives]     [Netfitler Users]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux