at v4.13 1.1 kB view raw
1/* 2 * SR-IPv6 implementation 3 * 4 * Author: 5 * David Lebrun <david.lebrun@uclouvain.be> 6 * 7 * 8 * This program is free software; you can redistribute it and/or 9 * modify it under the terms of the GNU General Public License 10 * as published by the Free Software Foundation; either version 11 * 2 of the License, or (at your option) any later version. 12 */ 13 14#ifndef _UAPI_LINUX_SEG6_H 15#define _UAPI_LINUX_SEG6_H 16 17#include <linux/types.h> 18#include <linux/in6.h> /* For struct in6_addr. */ 19 20/* 21 * SRH 22 */ 23struct ipv6_sr_hdr { 24 __u8 nexthdr; 25 __u8 hdrlen; 26 __u8 type; 27 __u8 segments_left; 28 __u8 first_segment; 29 __u8 flags; 30 __u16 reserved; 31 32 struct in6_addr segments[0]; 33}; 34 35#define SR6_FLAG1_PROTECTED (1 << 6) 36#define SR6_FLAG1_OAM (1 << 5) 37#define SR6_FLAG1_ALERT (1 << 4) 38#define SR6_FLAG1_HMAC (1 << 3) 39 40#define SR6_TLV_INGRESS 1 41#define SR6_TLV_EGRESS 2 42#define SR6_TLV_OPAQUE 3 43#define SR6_TLV_PADDING 4 44#define SR6_TLV_HMAC 5 45 46#define sr_has_hmac(srh) ((srh)->flags & SR6_FLAG1_HMAC) 47 48struct sr6_tlv { 49 __u8 type; 50 __u8 len; 51 __u8 data[0]; 52}; 53 54#endif