linux-headers (unknown)

(root)/
include/
linux/
seg6_local.h
       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 _LINUX_SEG6_LOCAL_H
      15  #define _LINUX_SEG6_LOCAL_H
      16  
      17  #include <linux/seg6.h>
      18  
      19  enum {
      20  	SEG6_LOCAL_UNSPEC,
      21  	SEG6_LOCAL_ACTION,
      22  	SEG6_LOCAL_SRH,
      23  	SEG6_LOCAL_TABLE,
      24  	SEG6_LOCAL_NH4,
      25  	SEG6_LOCAL_NH6,
      26  	SEG6_LOCAL_IIF,
      27  	SEG6_LOCAL_OIF,
      28  	SEG6_LOCAL_BPF,
      29  	SEG6_LOCAL_VRFTABLE,
      30  	SEG6_LOCAL_COUNTERS,
      31  	SEG6_LOCAL_FLAVORS,
      32  	__SEG6_LOCAL_MAX,
      33  };
      34  #define SEG6_LOCAL_MAX (__SEG6_LOCAL_MAX - 1)
      35  
      36  enum {
      37  	SEG6_LOCAL_ACTION_UNSPEC	= 0,
      38  	/* node segment */
      39  	SEG6_LOCAL_ACTION_END		= 1,
      40  	/* adjacency segment (IPv6 cross-connect) */
      41  	SEG6_LOCAL_ACTION_END_X		= 2,
      42  	/* lookup of next seg NH in table */
      43  	SEG6_LOCAL_ACTION_END_T		= 3,
      44  	/* decap and L2 cross-connect */
      45  	SEG6_LOCAL_ACTION_END_DX2	= 4,
      46  	/* decap and IPv6 cross-connect */
      47  	SEG6_LOCAL_ACTION_END_DX6	= 5,
      48  	/* decap and IPv4 cross-connect */
      49  	SEG6_LOCAL_ACTION_END_DX4	= 6,
      50  	/* decap and lookup of DA in v6 table */
      51  	SEG6_LOCAL_ACTION_END_DT6	= 7,
      52  	/* decap and lookup of DA in v4 table */
      53  	SEG6_LOCAL_ACTION_END_DT4	= 8,
      54  	/* binding segment with insertion */
      55  	SEG6_LOCAL_ACTION_END_B6	= 9,
      56  	/* binding segment with encapsulation */
      57  	SEG6_LOCAL_ACTION_END_B6_ENCAP	= 10,
      58  	/* binding segment with MPLS encap */
      59  	SEG6_LOCAL_ACTION_END_BM	= 11,
      60  	/* lookup last seg in table */
      61  	SEG6_LOCAL_ACTION_END_S		= 12,
      62  	/* forward to SR-unaware VNF with static proxy */
      63  	SEG6_LOCAL_ACTION_END_AS	= 13,
      64  	/* forward to SR-unaware VNF with masquerading */
      65  	SEG6_LOCAL_ACTION_END_AM	= 14,
      66  	/* custom BPF action */
      67  	SEG6_LOCAL_ACTION_END_BPF	= 15,
      68  	/* decap and lookup of DA in v4 or v6 table */
      69  	SEG6_LOCAL_ACTION_END_DT46	= 16,
      70  
      71  	__SEG6_LOCAL_ACTION_MAX,
      72  };
      73  
      74  #define SEG6_LOCAL_ACTION_MAX (__SEG6_LOCAL_ACTION_MAX - 1)
      75  
      76  enum {
      77  	SEG6_LOCAL_BPF_PROG_UNSPEC,
      78  	SEG6_LOCAL_BPF_PROG,
      79  	SEG6_LOCAL_BPF_PROG_NAME,
      80  	__SEG6_LOCAL_BPF_PROG_MAX,
      81  };
      82  
      83  #define SEG6_LOCAL_BPF_PROG_MAX (__SEG6_LOCAL_BPF_PROG_MAX - 1)
      84  
      85  /* SRv6 Behavior counters are encoded as netlink attributes guaranteeing the
      86   * correct alignment.
      87   * Each counter is identified by a different attribute type (i.e.
      88   * SEG6_LOCAL_CNT_PACKETS).
      89   *
      90   * - SEG6_LOCAL_CNT_PACKETS: identifies a counter that counts the number of
      91   *   packets that have been CORRECTLY processed by an SRv6 Behavior instance
      92   *   (i.e., packets that generate errors or are dropped are NOT counted).
      93   *
      94   * - SEG6_LOCAL_CNT_BYTES: identifies a counter that counts the total amount
      95   *   of traffic in bytes of all packets that have been CORRECTLY processed by
      96   *   an SRv6 Behavior instance (i.e., packets that generate errors or are
      97   *   dropped are NOT counted).
      98   *
      99   * - SEG6_LOCAL_CNT_ERRORS: identifies a counter that counts the number of
     100   *   packets that have NOT been properly processed by an SRv6 Behavior instance
     101   *   (i.e., packets that generate errors or are dropped).
     102   */
     103  enum {
     104  	SEG6_LOCAL_CNT_UNSPEC,
     105  	SEG6_LOCAL_CNT_PAD,		/* pad for 64 bits values */
     106  	SEG6_LOCAL_CNT_PACKETS,
     107  	SEG6_LOCAL_CNT_BYTES,
     108  	SEG6_LOCAL_CNT_ERRORS,
     109  	__SEG6_LOCAL_CNT_MAX,
     110  };
     111  
     112  #define SEG6_LOCAL_CNT_MAX (__SEG6_LOCAL_CNT_MAX - 1)
     113  
     114  /* SRv6 End* Flavor attributes */
     115  enum {
     116  	SEG6_LOCAL_FLV_UNSPEC,
     117  	SEG6_LOCAL_FLV_OPERATION,
     118  	SEG6_LOCAL_FLV_LCBLOCK_BITS,
     119  	SEG6_LOCAL_FLV_LCNODE_FN_BITS,
     120  	__SEG6_LOCAL_FLV_MAX,
     121  };
     122  
     123  #define SEG6_LOCAL_FLV_MAX (__SEG6_LOCAL_FLV_MAX - 1)
     124  
     125  /* Designed flavor operations for SRv6 End* Behavior */
     126  enum {
     127  	SEG6_LOCAL_FLV_OP_UNSPEC,
     128  	SEG6_LOCAL_FLV_OP_PSP,
     129  	SEG6_LOCAL_FLV_OP_USP,
     130  	SEG6_LOCAL_FLV_OP_USD,
     131  	SEG6_LOCAL_FLV_OP_NEXT_CSID,
     132  	__SEG6_LOCAL_FLV_OP_MAX
     133  };
     134  
     135  #define SEG6_LOCAL_FLV_OP_MAX (__SEG6_LOCAL_FLV_OP_MAX - 1)
     136  
     137  #endif