From 9c33608cb2fb6a64e1b76745efa530a63de08100 Mon Sep 17 00:00:00 2001 From: Ahmed Abdelsalam Date: Fri, 29 Dec 2017 17:43:35 +0100 Subject: Add support for IPv6 routing header type 4 IPv6 routing header type 4 is known as Segment Routing Header (SRH). It is used by Segment Routing (SR) to steer a packet through a controlled set of instructions, called segments. It is described in https://tools.ietf.org/html/draft-ietf-6man-segment-routing-header-07 An extension is added to allow tcpdump to print SRH information. --- ip6.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'ip6.h') diff --git a/ip6.h b/ip6.h index 35f12e42..9ed1499c 100644 --- a/ip6.h +++ b/ip6.h @@ -174,6 +174,7 @@ struct ip6_rthdr { #define IPV6_RTHDR_TYPE_0 0 #define IPV6_RTHDR_TYPE_2 2 +#define IPV6_RTHDR_TYPE_4 4 /* Type 0 Routing header */ /* Also used for Type 2 */ @@ -186,6 +187,21 @@ struct ip6_rthdr0 { struct in6_addr ip6r0_addr[1]; /* up to 23 addresses */ }; +/** + * Type 4 Routing header + * known as Segment Routing Header 'SRH' + */ +struct ip6_srh { + nd_uint8_t srh_nxt; /* next header */ + nd_uint8_t srh_len; /* length in units of 8 octets */ + nd_uint8_t srh_type; /* Routing Type 4 */ + nd_uint8_t srh_segleft; /* segments left */ + nd_uint8_t srh_last_ent; /* Last Entry*/ + nd_uint8_t srh_flags; /* Flags */ + nd_uint16_t srh_tag; /* Tag */ + struct in6_addr srh_segments[1]; /* SRH segments list*/ +}; + /* Fragment header */ struct ip6_frag { nd_uint8_t ip6f_nxt; /* next header */ -- cgit v1.2.1