linux/include/uapi/linux/seg6.h
<<
>>
Prefs
   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 _UAPI_LINUX_SEG6_H
  16#define _UAPI_LINUX_SEG6_H
  17
  18#include <linux/types.h>
  19#include <linux/in6.h>          /* For struct in6_addr. */
  20
  21/*
  22 * SRH
  23 */
  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[0];
  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
  49struct sr6_tlv {
  50        __u8 type;
  51        __u8 len;
  52        __u8 data[0];
  53};
  54
  55#endif
  56