linux-headers (unknown)

(root)/
include/
linux/
seg6.h
       1  /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
       2  /*
       3   *  SR-IPv6 implementation
       4   *
       5   *  Author:
       6   *  David Lebrun <david.lebrun@uclouvain.be>
       7   *
       8   *
       9   *  This program is free software; you can redistribute it and/or
      10   *      modify it under the terms of the GNU General Public License
      11   *      as published by the Free Software Foundation; either version
      12   *      2 of the License, or (at your option) any later version.
      13   */
      14  
      15  #ifndef _LINUX_SEG6_H
      16  #define _LINUX_SEG6_H
      17  
      18  #include <linux/types.h>
      19  #include <linux/in6.h>		/* For struct in6_addr. */
      20  
      21  /*
      22   * SRH
      23   */
      24  struct 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		1
      42  #define SR6_TLV_EGRESS		2
      43  #define SR6_TLV_OPAQUE		3
      44  #define SR6_TLV_PADDING		4
      45  #define SR6_TLV_HMAC		5
      46  
      47  #define sr_has_hmac(srh) ((srh)->flags & SR6_FLAG1_HMAC)
      48  
      49  struct sr6_tlv {
      50  	__u8 type;
      51  	__u8 len;
      52  	__u8 data[0];
      53  };
      54  
      55  #endif