Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #5653 from slankdev/slankdev-bgpd-support-prefix-s…
…id-srv6-l3vpn bgpd: additional Prefix-SID sub-types for supporting SRv6 l3vpn
- Loading branch information
Showing
17 changed files
with
886 additions
and
15 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ | ||
#ifndef _LINUX_SEG6_GENL_H | ||
#define _LINUX_SEG6_GENL_H | ||
|
||
#define SEG6_GENL_NAME "SEG6" | ||
#define SEG6_GENL_VERSION 0x1 | ||
|
||
enum { | ||
SEG6_ATTR_UNSPEC, | ||
SEG6_ATTR_DST, | ||
SEG6_ATTR_DSTLEN, | ||
SEG6_ATTR_HMACKEYID, | ||
SEG6_ATTR_SECRET, | ||
SEG6_ATTR_SECRETLEN, | ||
SEG6_ATTR_ALGID, | ||
SEG6_ATTR_HMACINFO, | ||
__SEG6_ATTR_MAX, | ||
}; | ||
|
||
#define SEG6_ATTR_MAX (__SEG6_ATTR_MAX - 1) | ||
|
||
enum { | ||
SEG6_CMD_UNSPEC, | ||
SEG6_CMD_SETHMAC, | ||
SEG6_CMD_DUMPHMAC, | ||
SEG6_CMD_SET_TUNSRC, | ||
SEG6_CMD_GET_TUNSRC, | ||
__SEG6_CMD_MAX, | ||
}; | ||
|
||
#define SEG6_CMD_MAX (__SEG6_CMD_MAX - 1) | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ | ||
#ifndef _LINUX_SEG6_HMAC_H | ||
#define _LINUX_SEG6_HMAC_H | ||
|
||
#include <linux/types.h> | ||
#include <linux/seg6.h> | ||
|
||
#define SEG6_HMAC_SECRET_LEN 64 | ||
#define SEG6_HMAC_FIELD_LEN 32 | ||
|
||
struct sr6_tlv_hmac { | ||
struct sr6_tlv tlvhdr; | ||
__u16 reserved; | ||
__be32 hmackeyid; | ||
__u8 hmac[SEG6_HMAC_FIELD_LEN]; | ||
}; | ||
|
||
enum { | ||
SEG6_HMAC_ALGO_SHA1 = 1, | ||
SEG6_HMAC_ALGO_SHA256 = 2, | ||
}; | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
/* 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_IPTUNNEL_H | ||
#define _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, | ||
}; | ||
|
||
|
||
#endif |
Oops, something went wrong.