On Tue, Nov 17, 2020 at 4:20 PM Stanislav Fomichev <sdf@xxxxxxxxxx> wrote: > > I'm planning to extend it in the next patches. It's much easier to > work with C than BPF assembly. > > Signed-off-by: Stanislav Fomichev <sdf@xxxxxxxxxx> > --- With nits below: Acked-by: Andrii Nakryiko <andrii@xxxxxxxxxx> > .../testing/selftests/bpf/progs/bind4_prog.c | 73 +++++++ > .../testing/selftests/bpf/progs/bind6_prog.c | 90 ++++++++ > tools/testing/selftests/bpf/test_sock_addr.c | 196 ++---------------- > 3 files changed, 175 insertions(+), 184 deletions(-) > create mode 100644 tools/testing/selftests/bpf/progs/bind4_prog.c > create mode 100644 tools/testing/selftests/bpf/progs/bind6_prog.c > > diff --git a/tools/testing/selftests/bpf/progs/bind4_prog.c b/tools/testing/selftests/bpf/progs/bind4_prog.c > new file mode 100644 > index 000000000000..ff3def2ee6f9 > --- /dev/null > +++ b/tools/testing/selftests/bpf/progs/bind4_prog.c > @@ -0,0 +1,73 @@ > +// SPDX-License-Identifier: GPL-2.0 > + > +#include <string.h> > + > +#include <linux/stddef.h> > +#include <linux/bpf.h> > +#include <linux/in.h> > +#include <linux/in6.h> > +#include <sys/socket.h> > +#include <netinet/tcp.h> > +#include <linux/if.h> > +#include <errno.h> > + > +#include <bpf/bpf_helpers.h> > +#include <bpf/bpf_endian.h> > + > +#define SERV4_IP 0xc0a801feU /* 192.168.1.254 */ > +#define SERV4_PORT 4040 > +#define SERV4_REWRITE_IP 0x7f000001U /* 127.0.0.1 */ > +#define SERV4_REWRITE_PORT 4444 > + > +int _version SEC("version") = 1; not needed, let's not add it to a new test prog > + [...] > diff --git a/tools/testing/selftests/bpf/progs/bind6_prog.c b/tools/testing/selftests/bpf/progs/bind6_prog.c > new file mode 100644 > index 000000000000..97686baaae65 > --- /dev/null > +++ b/tools/testing/selftests/bpf/progs/bind6_prog.c > @@ -0,0 +1,90 @@ > +// SPDX-License-Identifier: GPL-2.0 > + > +#include <string.h> > + > +#include <linux/stddef.h> > +#include <linux/bpf.h> > +#include <linux/in.h> > +#include <linux/in6.h> > +#include <sys/socket.h> > +#include <netinet/tcp.h> > +#include <linux/if.h> > +#include <errno.h> > + > +#include <bpf/bpf_helpers.h> > +#include <bpf/bpf_endian.h> > + > +#define SERV6_IP_0 0xfaceb00c /* face:b00c:1234:5678::abcd */ > +#define SERV6_IP_1 0x12345678 > +#define SERV6_IP_2 0x00000000 > +#define SERV6_IP_3 0x0000abcd > +#define SERV6_PORT 6060 > +#define SERV6_REWRITE_IP_0 0x00000000 > +#define SERV6_REWRITE_IP_1 0x00000000 > +#define SERV6_REWRITE_IP_2 0x00000000 > +#define SERV6_REWRITE_IP_3 0x00000001 > +#define SERV6_REWRITE_PORT 6666 > + > +int _version SEC("version") = 1; same > + > +SEC("cgroup/bind6") > +int bind_v6_prog(struct bpf_sock_addr *ctx) > +{ [...]