mirror of
https://git.proxmox.com/git/mirror_ubuntu-kernels.git
synced 2026-01-08 03:58:24 +00:00
The SRv6 H.Encaps.Red behavior described in [1] is an optimization of the SRv6 H.Encaps behavior [2]. H.Encaps.Red reduces the length of the SRH by excluding the first segment (SID) in the SRH of the pushed IPv6 header. The first SID is only placed in the IPv6 Destination Address field of the pushed IPv6 header. When the SRv6 Policy only contains one SID the SRH is omitted, unless there is an HMAC TLV to be carried. [1] - https://datatracker.ietf.org/doc/html/rfc8986#section-5.2 [2] - https://datatracker.ietf.org/doc/html/rfc8986#section-5.1 Signed-off-by: Andrea Mayer <andrea.mayer@uniroma2.it> Signed-off-by: Anton Makarov <anton.makarov11235@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
42 lines
964 B
C
42 lines
964 B
C
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
|
|
/*
|
|
* SR-IPv6 implementation
|
|
*
|
|
* Author:
|
|
* David Lebrun <david.lebrun@uclouvain.be>
|
|
*
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version
|
|
* 2 of the License, or (at your option) any later version.
|
|
*/
|
|
|
|
#ifndef _UAPI_LINUX_SEG6_IPTUNNEL_H
|
|
#define _UAPI_LINUX_SEG6_IPTUNNEL_H
|
|
|
|
#include <linux/seg6.h> /* For struct ipv6_sr_hdr. */
|
|
|
|
enum {
|
|
SEG6_IPTUNNEL_UNSPEC,
|
|
SEG6_IPTUNNEL_SRH,
|
|
__SEG6_IPTUNNEL_MAX,
|
|
};
|
|
#define SEG6_IPTUNNEL_MAX (__SEG6_IPTUNNEL_MAX - 1)
|
|
|
|
struct seg6_iptunnel_encap {
|
|
int mode;
|
|
struct ipv6_sr_hdr srh[0];
|
|
};
|
|
|
|
#define SEG6_IPTUN_ENCAP_SIZE(x) ((sizeof(*x)) + (((x)->srh->hdrlen + 1) << 3))
|
|
|
|
enum {
|
|
SEG6_IPTUN_MODE_INLINE,
|
|
SEG6_IPTUN_MODE_ENCAP,
|
|
SEG6_IPTUN_MODE_L2ENCAP,
|
|
SEG6_IPTUN_MODE_ENCAP_RED,
|
|
};
|
|
|
|
#endif
|