56 lines · c
1/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */2/*3 * SR-IPv6 implementation4 *5 * Author:6 * David Lebrun <david.lebrun@uclouvain.be>7 *8 *9 * This program is free software; you can redistribute it and/or10 * modify it under the terms of the GNU General Public License11 * as published by the Free Software Foundation; either version12 * 2 of the License, or (at your option) any later version.13 */14 15#ifndef _UAPI_LINUX_SEG6_H16#define _UAPI_LINUX_SEG6_H17 18#include <linux/types.h>19#include <linux/in6.h> /* For struct in6_addr. */20 21/*22 * SRH23 */24struct ipv6_sr_hdr {25 __u8 nexthdr;26 __u8 hdrlen;27 __u8 type;28 __u8 segments_left;29 __u8 first_segment; /* Represents the last_entry field of SRH */30 __u8 flags;31 __u16 tag;32 33 struct in6_addr segments[];34};35 36#define SR6_FLAG1_PROTECTED (1 << 6)37#define SR6_FLAG1_OAM (1 << 5)38#define SR6_FLAG1_ALERT (1 << 4)39#define SR6_FLAG1_HMAC (1 << 3)40 41#define SR6_TLV_INGRESS 142#define SR6_TLV_EGRESS 243#define SR6_TLV_OPAQUE 344#define SR6_TLV_PADDING 445#define SR6_TLV_HMAC 546 47#define sr_has_hmac(srh) ((srh)->flags & SR6_FLAG1_HMAC)48 49struct sr6_tlv {50 __u8 type;51 __u8 len;52 __u8 data[0];53};54 55#endif56