mirror of
https://github.com/the-tcpdump-group/tcpdump.git
synced 2025-01-22 23:58:16 +08:00
Add support for ethernet IP protocol
The SRv6 network programming defines a new IP protocol number [1]. The new protocol number is used in the Next Header field of an IPv6 header or any extension header indicates that the payload is an Ethernet. IANA has assigned 143 as the protocol number of ethernet [2]. The SRv6 packet has the following format: IPv6 HDR + SRH + Ethernet HDR + IPv4/IPv6 packet This patch allows TCPDUMP to dissect such SRv6 packets. [1] https://tools.ietf.org/html/draft-ietf-spring-srv6-network-programming-16#section-9.1 [2] https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml Signed-off-by: Ahmed Abdelsalam <ahabdels@gmail.com>
This commit is contained in:
parent
58d8b5d435
commit
1103418a18
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
||||
|
1
tests/ipv6-srh-ipproto-ether.out
Normal file
1
tests/ipv6-srh-ipproto-ether.out
Normal file
@ -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
|
BIN
tests/ipv6-srh-ipproto-ether.pcap
Normal file
BIN
tests/ipv6-srh-ipproto-ether.pcap
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user