diff options
-rw-r--r-- | ipproto.c | 1 | ||||
-rw-r--r-- | ipproto.h | 3 | ||||
-rw-r--r-- | print-ip-demux.c | 10 | ||||
-rw-r--r-- | tests/TESTLIST | 1 | ||||
-rw-r--r-- | tests/ipv6-srh-ipproto-ether.out | 1 | ||||
-rw-r--r-- | tests/ipv6-srh-ipproto-ether.pcap | bin | 0 -> 236 bytes |
6 files changed, 16 insertions, 0 deletions
@@ -50,6 +50,7 @@ const struct tok ipproto_values[] = { { IPPROTO_PGM, "PGM" }, { IPPROTO_SCTP, "SCTP" }, { IPPROTO_MOBILITY, "Mobility" }, + { IPPROTO_ETHERNET, "Ethernet" }, { 0, NULL } }; @@ -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 Binary files differnew file mode 100644 index 00000000..30181e4d --- /dev/null +++ b/tests/ipv6-srh-ipproto-ether.pcap |