forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
selftests/bpf: missing headers test_lwt_seg6local
Previous patch "selftests/bpf: test for seg6local End.BPF action" lacks some UAPI headers in tools/. clang -I. -I./include/uapi -I../../../include/uapi -idirafter /usr/local/include -idirafter /data/users/yhs/work/llvm/build/install/lib/clang/7.0.0/include -idirafter /usr/include -Wno-compare-distinct-pointer-types \ -O2 -target bpf -emit-llvm -c test_lwt_seg6local.c -o - | \ llc -march=bpf -mcpu=generic -filetype=obj -o [...]/net-next/tools/testing/selftests/bpf/test_lwt_seg6local.o test_lwt_seg6local.c:4:10: fatal error: 'linux/seg6_local.h' file not found ^~~~~~~~~~~~~~~~~~~~ 1 error generated. make: Leaving directory `/data/users/yhs/work/net-next/tools/testing/selftests/bpf' v2: moving the headers to tools/include/uapi/. Reported-by: Y Song <[email protected]> Signed-off-by: Mathieu Xhonneux <[email protected]> Signed-off-by: Daniel Borkmann <[email protected]>
- Loading branch information
Showing
2 changed files
with
135 additions
and
0 deletions.
There are no files selected for viewing
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 <[email protected]> | ||
* | ||
* | ||
* 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_H | ||
#define _UAPI_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,80 @@ | ||
/* | ||
* SR-IPv6 implementation | ||
* | ||
* Author: | ||
* David Lebrun <[email protected]> | ||
* | ||
* | ||
* 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_LOCAL_H | ||
#define _UAPI_LINUX_SEG6_LOCAL_H | ||
|
||
#include <linux/seg6.h> | ||
|
||
enum { | ||
SEG6_LOCAL_UNSPEC, | ||
SEG6_LOCAL_ACTION, | ||
SEG6_LOCAL_SRH, | ||
SEG6_LOCAL_TABLE, | ||
SEG6_LOCAL_NH4, | ||
SEG6_LOCAL_NH6, | ||
SEG6_LOCAL_IIF, | ||
SEG6_LOCAL_OIF, | ||
SEG6_LOCAL_BPF, | ||
__SEG6_LOCAL_MAX, | ||
}; | ||
#define SEG6_LOCAL_MAX (__SEG6_LOCAL_MAX - 1) | ||
|
||
enum { | ||
SEG6_LOCAL_ACTION_UNSPEC = 0, | ||
/* node segment */ | ||
SEG6_LOCAL_ACTION_END = 1, | ||
/* adjacency segment (IPv6 cross-connect) */ | ||
SEG6_LOCAL_ACTION_END_X = 2, | ||
/* lookup of next seg NH in table */ | ||
SEG6_LOCAL_ACTION_END_T = 3, | ||
/* decap and L2 cross-connect */ | ||
SEG6_LOCAL_ACTION_END_DX2 = 4, | ||
/* decap and IPv6 cross-connect */ | ||
SEG6_LOCAL_ACTION_END_DX6 = 5, | ||
/* decap and IPv4 cross-connect */ | ||
SEG6_LOCAL_ACTION_END_DX4 = 6, | ||
/* decap and lookup of DA in v6 table */ | ||
SEG6_LOCAL_ACTION_END_DT6 = 7, | ||
/* decap and lookup of DA in v4 table */ | ||
SEG6_LOCAL_ACTION_END_DT4 = 8, | ||
/* binding segment with insertion */ | ||
SEG6_LOCAL_ACTION_END_B6 = 9, | ||
/* binding segment with encapsulation */ | ||
SEG6_LOCAL_ACTION_END_B6_ENCAP = 10, | ||
/* binding segment with MPLS encap */ | ||
SEG6_LOCAL_ACTION_END_BM = 11, | ||
/* lookup last seg in table */ | ||
SEG6_LOCAL_ACTION_END_S = 12, | ||
/* forward to SR-unaware VNF with static proxy */ | ||
SEG6_LOCAL_ACTION_END_AS = 13, | ||
/* forward to SR-unaware VNF with masquerading */ | ||
SEG6_LOCAL_ACTION_END_AM = 14, | ||
/* custom BPF action */ | ||
SEG6_LOCAL_ACTION_END_BPF = 15, | ||
|
||
__SEG6_LOCAL_ACTION_MAX, | ||
}; | ||
|
||
#define SEG6_LOCAL_ACTION_MAX (__SEG6_LOCAL_ACTION_MAX - 1) | ||
|
||
enum { | ||
SEG6_LOCAL_BPF_PROG_UNSPEC, | ||
SEG6_LOCAL_BPF_PROG, | ||
SEG6_LOCAL_BPF_PROG_NAME, | ||
__SEG6_LOCAL_BPF_PROG_MAX, | ||
}; | ||
|
||
#define SEG6_LOCAL_BPF_PROG_MAX (__SEG6_LOCAL_BPF_PROG_MAX - 1) | ||
|
||
#endif |