Message ID | 20180525112036.4768-1-m.xhonneux@gmail.com |
---|---|
State | Changes Requested, archived |
Delegated to: | BPF Maintainers |
Headers | show |
Series | [bpf-next] selftests/bpf: missing headers test_lwt_seg6local | expand |
On Fri, May 25, 2018 at 4:20 AM, Mathieu Xhonneux <m.xhonneux@gmail.com> wrote: > 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' > > Reported-by: Y Song <ys114321@gmail.com> > Signed-off-by: Mathieu Xhonneux <m.xhonneux@gmail.com> > --- > .../selftests/bpf/include/uapi/linux/seg6.h | 55 +++++++++++++++ > .../selftests/bpf/include/uapi/linux/seg6_local.h | 80 ++++++++++++++++++++++ > 2 files changed, 135 insertions(+) > create mode 100644 tools/testing/selftests/bpf/include/uapi/linux/seg6.h > create mode 100644 tools/testing/selftests/bpf/include/uapi/linux/seg6_local.h Thanks for fixing the issue. Acked-by: Y Song <ys114321@gmail.com>
On Fri, May 25, 2018 at 4:20 AM, Mathieu Xhonneux <m.xhonneux@gmail.com> wrote: > 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' > > Reported-by: Y Song <ys114321@gmail.com> > Signed-off-by: Mathieu Xhonneux <m.xhonneux@gmail.com> > --- > .../selftests/bpf/include/uapi/linux/seg6.h | 55 +++++++++++++++ > .../selftests/bpf/include/uapi/linux/seg6_local.h | 80 ++++++++++++++++++++++ > 2 files changed, 135 insertions(+) > create mode 100644 tools/testing/selftests/bpf/include/uapi/linux/seg6.h > create mode 100644 tools/testing/selftests/bpf/include/uapi/linux/seg6_local.h > > diff --git a/tools/testing/selftests/bpf/include/uapi/linux/seg6.h b/tools/testing/selftests/bpf/include/uapi/linux/seg6.h > new file mode 100644 > index 000000000000..286e8d6a8e98 > --- /dev/null > +++ b/tools/testing/selftests/bpf/include/uapi/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 _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 > diff --git a/tools/testing/selftests/bpf/include/uapi/linux/seg6_local.h b/tools/testing/selftests/bpf/include/uapi/linux/seg6_local.h > new file mode 100644 > index 000000000000..edc138bdc56d > --- /dev/null > +++ b/tools/testing/selftests/bpf/include/uapi/linux/seg6_local.h > @@ -0,0 +1,80 @@ > +/* > + * 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_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 > -- > 2.16.1 > Acked-by: Song Liu <songliubraving@fb.com>
On Fri, May 25, 2018 at 9:16 AM, Y Song <ys114321@gmail.com> wrote: > On Fri, May 25, 2018 at 4:20 AM, Mathieu Xhonneux <m.xhonneux@gmail.com> wrote: >> 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' >> >> Reported-by: Y Song <ys114321@gmail.com> >> Signed-off-by: Mathieu Xhonneux <m.xhonneux@gmail.com> >> --- >> .../selftests/bpf/include/uapi/linux/seg6.h | 55 +++++++++++++++ >> .../selftests/bpf/include/uapi/linux/seg6_local.h | 80 ++++++++++++++++++++++ >> 2 files changed, 135 insertions(+) >> create mode 100644 tools/testing/selftests/bpf/include/uapi/linux/seg6.h >> create mode 100644 tools/testing/selftests/bpf/include/uapi/linux/seg6_local.h > > Thanks for fixing the issue. > > Acked-by: Y Song <ys114321@gmail.com> Although it fixed the issue, the file is placed in tools/testing/selftests/bpf/include/uapi/linux directory. Considering the file is really coming from linux/include/uapi/linux directory, should it be placed in tools/include/uapi/linux directory instead?
On Fri, May 25, 2018 at 12:20:36PM +0100, Mathieu Xhonneux wrote: > 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' > > Reported-by: Y Song <ys114321@gmail.com> > Signed-off-by: Mathieu Xhonneux <m.xhonneux@gmail.com> > --- > .../selftests/bpf/include/uapi/linux/seg6.h | 55 +++++++++++++++ > .../selftests/bpf/include/uapi/linux/seg6_local.h | 80 ++++++++++++++++++++++ > 2 files changed, 135 insertions(+) > create mode 100644 tools/testing/selftests/bpf/include/uapi/linux/seg6.h > create mode 100644 tools/testing/selftests/bpf/include/uapi/linux/seg6_local.h > > diff --git a/tools/testing/selftests/bpf/include/uapi/linux/seg6.h b/tools/testing/selftests/bpf/include/uapi/linux/seg6.h hmm. why to selftest? Shouldn't they be added to tools/include/uapi/linux/ instead?
On 05/25/2018 06:23 PM, Alexei Starovoitov wrote: > On Fri, May 25, 2018 at 12:20:36PM +0100, Mathieu Xhonneux wrote: >> 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' >> >> Reported-by: Y Song <ys114321@gmail.com> >> Signed-off-by: Mathieu Xhonneux <m.xhonneux@gmail.com> >> --- >> .../selftests/bpf/include/uapi/linux/seg6.h | 55 +++++++++++++++ >> .../selftests/bpf/include/uapi/linux/seg6_local.h | 80 ++++++++++++++++++++++ >> 2 files changed, 135 insertions(+) >> create mode 100644 tools/testing/selftests/bpf/include/uapi/linux/seg6.h >> create mode 100644 tools/testing/selftests/bpf/include/uapi/linux/seg6_local.h >> >> diff --git a/tools/testing/selftests/bpf/include/uapi/linux/seg6.h b/tools/testing/selftests/bpf/include/uapi/linux/seg6.h > > hmm. why to selftest? > Shouldn't they be added to tools/include/uapi/linux/ instead? Yes, should definitely go there to tools include infrastructure.
2018-05-25 18:39 GMT+02:00 Daniel Borkmann <daniel@iogearbox.net>:
> Yes, should definitely go there to tools include infrastructure.
What is the point of tools/testing/selftests/bpf/include/uapi/ then ?
Incompatibility issues preventing linux/types.h to be included in
non-bpf testing executables ? My initial conception was that all
headers only related to bpf should go into this directory. Sending a
v2.
diff --git a/tools/testing/selftests/bpf/include/uapi/linux/seg6.h b/tools/testing/selftests/bpf/include/uapi/linux/seg6.h new file mode 100644 index 000000000000..286e8d6a8e98 --- /dev/null +++ b/tools/testing/selftests/bpf/include/uapi/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 _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 diff --git a/tools/testing/selftests/bpf/include/uapi/linux/seg6_local.h b/tools/testing/selftests/bpf/include/uapi/linux/seg6_local.h new file mode 100644 index 000000000000..edc138bdc56d --- /dev/null +++ b/tools/testing/selftests/bpf/include/uapi/linux/seg6_local.h @@ -0,0 +1,80 @@ +/* + * 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_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
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' Reported-by: Y Song <ys114321@gmail.com> Signed-off-by: Mathieu Xhonneux <m.xhonneux@gmail.com> --- .../selftests/bpf/include/uapi/linux/seg6.h | 55 +++++++++++++++ .../selftests/bpf/include/uapi/linux/seg6_local.h | 80 ++++++++++++++++++++++ 2 files changed, 135 insertions(+) create mode 100644 tools/testing/selftests/bpf/include/uapi/linux/seg6.h create mode 100644 tools/testing/selftests/bpf/include/uapi/linux/seg6_local.h