diff options
| author | Hiroki Shirokura <slank.dev@gmail.com> | 2020-01-06 09:52:39 +0900 |
|---|---|---|
| committer | Hiroki Shirokura <slank.dev@gmail.com> | 2020-01-09 09:53:04 +0900 |
| commit | 63d02478b557011b8606668f1e3c2edbf263794d (patch) | |
| tree | 7be95b681b689acde139aa6720cca171dfc42fce /include/linux/seg6.h | |
| parent | 94d7dc50f3d4bd15393b7a1d7c42e76862d04193 (diff) | |
include: add kernel header for seg6/seg6local
The linux kernel is adding support for seg6/seg6local
lwtunnel type to support SRv6 feature.
This commit update our includes to reflect new types
and structs we should be listening for from the kernel
Signed-off-by: Hiroki Shirokura <slank.dev@gmail.com>
Diffstat (limited to 'include/linux/seg6.h')
| -rw-r--r-- | include/linux/seg6.h | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/include/linux/seg6.h b/include/linux/seg6.h new file mode 100644 index 0000000000..329163e4a0 --- /dev/null +++ b/include/linux/seg6.h @@ -0,0 +1,55 @@ +/* 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 _LINUX_SEG6_H +#define _LINUX_SEG6_H + +#include <linux/types.h> +#include <linux/in6.h> /* For struct in6_addr. */ + +/* + * SRH + */ +struct ipv6_sr_hdr { + __u8 nexthdr; + __u8 hdrlen; + __u8 type; + __u8 segments_left; + __u8 first_segment; /* Represents the last_entry field of SRH */ + __u8 flags; + __u16 tag; + + struct in6_addr segments[0]; +}; + +#define SR6_FLAG1_PROTECTED (1 << 6) +#define SR6_FLAG1_OAM (1 << 5) +#define SR6_FLAG1_ALERT (1 << 4) +#define SR6_FLAG1_HMAC (1 << 3) + +#define SR6_TLV_INGRESS 1 +#define SR6_TLV_EGRESS 2 +#define SR6_TLV_OPAQUE 3 +#define SR6_TLV_PADDING 4 +#define SR6_TLV_HMAC 5 + +#define sr_has_hmac(srh) ((srh)->flags & SR6_FLAG1_HMAC) + +struct sr6_tlv { + __u8 type; + __u8 len; + __u8 data[0]; +}; + +#endif |
