summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ipproto.c1
-rw-r--r--ipproto.h3
-rw-r--r--print-ip-demux.c10
-rw-r--r--tests/TESTLIST1
-rw-r--r--tests/ipv6-srh-ipproto-ether.out1
-rw-r--r--tests/ipv6-srh-ipproto-ether.pcapbin0 -> 236 bytes
6 files changed, 16 insertions, 0 deletions
diff --git a/ipproto.c b/ipproto.c
index 58ceeeba..a3b0714a 100644
--- a/ipproto.c
+++ b/ipproto.c
@@ -50,6 +50,7 @@ const struct tok ipproto_values[] = {
{ IPPROTO_PGM, "PGM" },
{ IPPROTO_SCTP, "SCTP" },
{ IPPROTO_MOBILITY, "Mobility" },
+ { IPPROTO_ETHERNET, "Ethernet" },
{ 0, NULL }
};
diff --git a/ipproto.h b/ipproto.h
index 845cf008..baec4bdc 100644
--- a/ipproto.h
+++ b/ipproto.h
@@ -140,3 +140,6 @@ extern const char *netdb_protoname (const uint8_t);
#ifndef IPPROTO_MOBILITY
#define IPPROTO_MOBILITY 135
#endif
+#ifndef IPPROTO_ETHERNET
+#define IPPROTO_ETHERNET 143 /* TEMPORARY - registered 2020-01-31, expires 2021-01-31 */
+#endif
diff --git a/print-ip-demux.c b/print-ip-demux.c
index 7df0f709..8b53187c 100644
--- a/print-ip-demux.c
+++ b/print-ip-demux.c
@@ -208,6 +208,16 @@ again:
pgm_print(ndo, bp, length, iph);
break;
+ case IPPROTO_ETHERNET:
+ if (ver == 6)
+ ether_print(ndo, bp, length, ND_BYTES_AVAILABLE_AFTER(bp), NULL, NULL);
+ else {
+ ND_PRINT("[%s requires IPv6]",
+ tok2str(ipproto_values,"unknown",nh));
+ nd_print_invalid(ndo);
+ }
+ break;
+
case IPPROTO_NONE:
ND_PRINT("no next header");
break;
diff --git a/tests/TESTLIST b/tests/TESTLIST
index 90fc31d2..8da36269 100644
--- a/tests/TESTLIST
+++ b/tests/TESTLIST
@@ -285,6 +285,7 @@ ipv6-bad-version ipv6-bad-version.pcap ipv6-bad-version.out
ipv6-routing-header ipv6-routing-header.pcap ipv6-routing-header.out -v
ipv6-srh-ext-header ipv6-srh-ext-header.pcap ipv6-srh-ext-header.out -v
ipv6-srh-insert-cksum ipv6-srh-insert-cksum.pcap ipv6-srh-insert-cksum.out -v
+ipv6-srh-ipproto-ether ipv6-srh-ipproto-ether.pcap ipv6-srh-ipproto-ether.out -ev
# Loopback/CTP test case
loopback loopback.pcap loopback.out
diff --git a/tests/ipv6-srh-ipproto-ether.out b/tests/ipv6-srh-ipproto-ether.out
new file mode 100644
index 00000000..96a99bc7
--- /dev/null
+++ b/tests/ipv6-srh-ipproto-ether.out
@@ -0,0 +1 @@
+ 1 15:07:04.802036 be:f5:06:09:44:74 > d6:67:19:4e:0f:4f, ethertype IPv6 (0x86dd), length 196: (flowlabel 0xde027, hlim 63, next-header Routing (43) payload length: 142) a::1 > c::2: srcrt (len=2, type=4, segleft=0, last-entry=0, flags=0x0, tag=0, [0]c::2) ae:64:42:3b:5b:9a > 1e:1d:df:cd:54:7a, ethertype IPv6 (0x86dd), length 118: (flowlabel 0xde027, hlim 64, next-header ICMPv6 (58) payload length: 64) a::2 > e::2: [icmp6 sum ok] ICMP6, echo request, id 18516, seq 1339
diff --git a/tests/ipv6-srh-ipproto-ether.pcap b/tests/ipv6-srh-ipproto-ether.pcap
new file mode 100644
index 00000000..30181e4d
--- /dev/null
+++ b/tests/ipv6-srh-ipproto-ether.pcap
Binary files differ