summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/proto.c2
-rw-r--r--tests/py/ip/meta.t6
-rw-r--r--tests/py/ip/meta.t.payload7
-rw-r--r--tests/py/ip6/meta.t7
-rw-r--r--tests/py/ip6/meta.t.payload34
5 files changed, 49 insertions, 7 deletions
diff --git a/src/proto.c b/src/proto.c
index a54090a3..8cf29d20 100644
--- a/src/proto.c
+++ b/src/proto.c
@@ -591,6 +591,7 @@ const struct proto_desc proto_ip = {
.checksum_key = IPHDR_CHECKSUM,
.protocols = {
PROTO_LINK(IPPROTO_ICMP, &proto_icmp),
+ PROTO_LINK(IPPROTO_ICMPV6, &proto_icmp6),
PROTO_LINK(IPPROTO_ESP, &proto_esp),
PROTO_LINK(IPPROTO_AH, &proto_ah),
PROTO_LINK(IPPROTO_COMP, &proto_comp),
@@ -718,6 +719,7 @@ const struct proto_desc proto_ip6 = {
PROTO_LINK(IPPROTO_TCP, &proto_tcp),
PROTO_LINK(IPPROTO_DCCP, &proto_dccp),
PROTO_LINK(IPPROTO_SCTP, &proto_sctp),
+ PROTO_LINK(IPPROTO_ICMP, &proto_icmp),
PROTO_LINK(IPPROTO_ICMPV6, &proto_icmp6),
},
.templates = {
diff --git a/tests/py/ip/meta.t b/tests/py/ip/meta.t
index 31c99500..d0682adf 100644
--- a/tests/py/ip/meta.t
+++ b/tests/py/ip/meta.t
@@ -4,6 +4,6 @@
icmp type echo-request;ok
meta l4proto icmp icmp type echo-request;ok;icmp type echo-request
-meta l4proto ipv6-icmp icmpv6 type nd-router-advert;ok;meta l4proto 58 icmpv6 type nd-router-advert
-meta l4proto 58 icmpv6 type nd-router-advert;ok
-icmpv6 type nd-router-advert;fail
+meta l4proto ipv6-icmp icmpv6 type nd-router-advert;ok;icmpv6 type nd-router-advert
+meta l4proto 58 icmpv6 type nd-router-advert;ok;icmpv6 type nd-router-advert
+icmpv6 type nd-router-advert;ok
diff --git a/tests/py/ip/meta.t.payload b/tests/py/ip/meta.t.payload
index b186b4b5..322c0878 100644
--- a/tests/py/ip/meta.t.payload
+++ b/tests/py/ip/meta.t.payload
@@ -26,3 +26,10 @@ ip test-ip4 input
[ payload load 1b @ transport header + 0 => reg 1 ]
[ cmp eq reg 1 0x00000086 ]
+# icmpv6 type nd-router-advert
+ip test-ip4 input
+ [ meta load l4proto => reg 1 ]
+ [ cmp eq reg 1 0x0000003a ]
+ [ payload load 1b @ transport header + 0 => reg 1 ]
+ [ cmp eq reg 1 0x00000086 ]
+
diff --git a/tests/py/ip6/meta.t b/tests/py/ip6/meta.t
index 68fa89f5..24445084 100644
--- a/tests/py/ip6/meta.t
+++ b/tests/py/ip6/meta.t
@@ -5,7 +5,6 @@
icmpv6 type nd-router-advert;ok
meta l4proto ipv6-icmp icmpv6 type nd-router-advert;ok;icmpv6 type nd-router-advert
-meta l4proto icmp icmp type echo-request;ok;meta l4proto 1 icmp type echo-request
-meta l4proto 1 icmp type echo-request;ok
-
-icmp type echo-request;fail
+meta l4proto icmp icmp type echo-request;ok;icmp type echo-request
+meta l4proto 1 icmp type echo-request;ok;icmp type echo-request
+icmp type echo-request;ok
diff --git a/tests/py/ip6/meta.t.payload b/tests/py/ip6/meta.t.payload
new file mode 100644
index 00000000..f203baab
--- /dev/null
+++ b/tests/py/ip6/meta.t.payload
@@ -0,0 +1,34 @@
+# icmpv6 type nd-router-advert
+ip test-ip4 input
+ [ meta load l4proto => reg 1 ]
+ [ cmp eq reg 1 0x0000003a ]
+ [ payload load 1b @ transport header + 0 => reg 1 ]
+ [ cmp eq reg 1 0x00000086 ]
+
+# meta l4proto ipv6-icmp icmpv6 type nd-router-advert
+ip test-ip4 input
+ [ meta load l4proto => reg 1 ]
+ [ cmp eq reg 1 0x0000003a ]
+ [ payload load 1b @ transport header + 0 => reg 1 ]
+ [ cmp eq reg 1 0x00000086 ]
+
+# meta l4proto icmp icmp type echo-request
+ip6 test-ip6 input
+ [ meta load l4proto => reg 1 ]
+ [ cmp eq reg 1 0x00000001 ]
+ [ payload load 1b @ transport header + 0 => reg 1 ]
+ [ cmp eq reg 1 0x00000008 ]
+
+# meta l4proto 1 icmp type echo-request
+ip6 test-ip6 input
+ [ meta load l4proto => reg 1 ]
+ [ cmp eq reg 1 0x00000001 ]
+ [ payload load 1b @ transport header + 0 => reg 1 ]
+ [ cmp eq reg 1 0x00000008 ]
+
+# icmp type echo-request
+ip6 test-ip6 input
+ [ meta load l4proto => reg 1 ]
+ [ cmp eq reg 1 0x00000001 ]
+ [ payload load 1b @ transport header + 0 => reg 1 ]
+ [ cmp eq reg 1 0x00000008 ]