X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fsrv6%2Fsr_packet.h;h=dda776b40370c61c2d194bd54081498eee82079e;hb=9e722bd466383dd53b10d4c1de95ad18db939147;hp=7af4ad4d9c03b2e7ff66758f4a82e2e503797aa8;hpb=5d73eecd63018db69b10bf56adeec9cc5cf92790;p=vpp.git diff --git a/src/vnet/srv6/sr_packet.h b/src/vnet/srv6/sr_packet.h index 7af4ad4d9c0..dda776b4037 100755 --- a/src/vnet/srv6/sr_packet.h +++ b/src/vnet/srv6/sr_packet.h @@ -28,7 +28,7 @@ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | Next Header | Hdr Ext Len | Routing Type | Segments Left | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | First Segment | Flags | RESERVED | + * | Last Entry | Flags | Tag | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | | * | Segment List[0] (128 bits IPv6 address) | @@ -61,13 +61,12 @@ * * o Routing Type: TBD, to be assigned by IANA (suggested value: 4). * - * o Segments Left. Defined in [RFC2460], it contains the index, in + * o Segments Left. Defined in [RFC8200], it contains the index, in * the Segment List, of the next segment to inspect. Segments Left * is decremented at each segment. * - * o First Segment: contains the index, in the Segment List, of the - * first segment of the path which is in fact the last element of the - * Segment List. + * o Last Entry: contains the index (zero based), in the Segment List, + * of the the last element of the Segment List * * o Flags: 8 bits of flags. Following flags are defined: * @@ -94,8 +93,10 @@ * 36 octets of the SRH represent the HMAC information. See * Section 3.1.5 for details on the HMAC TLV. * - * o RESERVED: SHOULD be unset on transmission and MUST be ignored on - * receipt. + * o Tag: tag a packet as part of a class or group of packets, e.g., + * packets sharing the same set of properties. When tag is not used + * at source it MUST be set to zero on transmission. When tag is not + * used during SRH Processing it SHOULD be ignored. * * o Segment List[n]: 128 bit IPv6 addresses representing the nth * segment in the Segment List. The Segment List is encoded starting @@ -132,7 +133,7 @@ typedef struct u8 segments_left; /* Pointer to the first segment in the header */ - u8 first_segment; + u8 last_entry; /* Flag bits */ #define IP6_SR_HEADER_FLAG_PROTECTED (0x40) @@ -142,12 +143,19 @@ typedef struct /* values 0x0, 0x4 - 0x7 are reserved */ u8 flags; - u16 reserved; + u16 tag; /* The segment elts */ ip6_address_t segments[0]; } __attribute__ ((packed)) ip6_sr_header_t; +typedef struct +{ + u8 type; + u8 length; + u8 value[0]; +} __attribute__ ((packed)) ip6_sr_tlv_t; + /* * fd.io coding-style-patch-verification: ON *