Hello community, here is the log from the commit of package iproute2 for openSUSE:Factory checked in at 2019-05-21 10:21:55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/iproute2 (Old) and /work/SRC/openSUSE:Factory/.iproute2.new.5148 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "iproute2" Tue May 21 10:21:55 2019 rev:102 rq:702651 version:5.1 Changes: -------- --- /work/SRC/openSUSE:Factory/iproute2/iproute2.changes 2019-02-01 11:43:04.096698990 +0100 +++ /work/SRC/openSUSE:Factory/.iproute2.new.5148/iproute2.changes 2019-05-21 10:21:56.603604988 +0200 @@ -1,0 +2,53 @@ +Mon May 13 09:28:09 UTC 2019 - Michal Kubecek <[email protected]> + +- Revert-tc-ematch-fix-deprecated-yacc-warning.patch: + fix build on SLE12 and openSUSE Leap 42.3 + +------------------------------------------------------------------- +Mon May 13 08:25:42 UTC 2019 - Michal Kubecek <[email protected]> + +- Update to new upstream release 5.1 + * bridge: fdb: add support for src_vni option + * devlink: report cell size + * devlink: add dev info and dev flash subcommands + * devlink: add health subcommand + * ip link: display netrom link type + * ip link: bond_slave: add xstats support + * ip link: bridge: support mcast to unicast flag + * ip netns: add attach subcommand to attach existing netns + * ip xfrm: add option to hide keys in state output + * ip xfrm: support xfrm interfaces + * rdma: add unbound workqueue to list of poll context types + * rdma: provide parent context index for all objects except CM_ID + * rdma: add prefix for driver attributes + * ss: support AF_XDP + * tc: add hit counter for matchall + * tc: add kind property to csum action + * tc: q_cake: support fwmark option + * improve batch and dump performance by caching link lookups + * more JSON support + * many text/JSON output fixes + +------------------------------------------------------------------- +Sat Mar 23 05:39:54 UTC 2019 - [email protected] + +- Update to new upstream release 5.0.0 + * ip route: get print JSON output when -j is given + * ip route: print route type in JSON output + * tc: m_connmark: fix action error messages + * ipaddress: print error messages on stderr + * iprule: fix printing hint about unresolved iifname + oofname + * man: Document COLORFGBG environment variable + * tcpedit: Fix wrong pedit ipv6 structure id + * ss: Render buffer to output every time a number of chunks alloc + * ss: fix compilation under glibc < 2.18 + +------------------------------------------------------------------- +Thu Mar 6 00:59:48 UTC 2019 - Joe Stringer <[email protected]> + +- Add patches which enable support of BPF global data section, + pulled from https://github.com/cilium/iproute2/tree/static-data + * bpf-bss-section-poc.patch + * bpf-data-section-support-poc.patch + +------------------------------------------------------------------- Old: ---- iproute2-4.20.0.tar.sign iproute2-4.20.0.tar.xz New: ---- Revert-tc-ematch-fix-deprecated-yacc-warning.patch bpf-bss-section-poc.patch bpf-data-section-support-poc.patch iproute2-5.1.0.tar.sign iproute2-5.1.0.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ iproute2.spec ++++++ --- /var/tmp/diff_new_pack.W45KvV/_old 2019-05-21 10:21:57.147604878 +0200 +++ /var/tmp/diff_new_pack.W45KvV/_new 2019-05-21 10:21:57.151604877 +0200 @@ -12,14 +12,14 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # Name: iproute2 -Version: 4.20 +Version: 5.1 Release: 0 -%define rversion 4.20.0 +%define rversion 5.1.0 Summary: Linux network configuration utilities License: GPL-2.0-only Group: Productivity/Networking/Routing @@ -37,7 +37,10 @@ Patch4: xfrm-support-displaying-transformations-used-for-Mob.patch Patch6: split-link-and-compile-steps-for-binaries.patch Patch7: examples-fix-bashisms-in-example-script.patch +Patch101: Revert-tc-ematch-fix-deprecated-yacc-warning.patch Patch102: Revert-emp-fix-warning-on-deprecated-bison-directive.patch +Patch201: bpf-data-section-support-poc.patch +Patch202: bpf-bss-section-poc.patch BuildRequires: bison BuildRequires: db-devel BuildRequires: fdupes @@ -84,7 +87,10 @@ %prep %setup -qn %name-%rversion -%patch -P 1 -P 2 -P 3 -P 4 -P 6 -P 7 -p1 +%patch -P 1 -P 2 -P 3 -P 4 -P 6 -P 7 -P 201 -P 202 -p1 +%if 0%{?suse_version} < 1500 +%patch -P 101 -p1 +%endif %if 0%{?sles_version} == 11 %patch -P 102 -p1 %endif ++++++ Revert-tc-ematch-fix-deprecated-yacc-warning.patch ++++++ From: Michal Kubecek <[email protected]> Date: Mon, 13 May 2019 11:09:08 +0200 Subject: Revert "tc/ematch: fix deprecated yacc warning" Patch-mainline: Never, build fix for older distributions This reverts commit 38983334f6d59318f40cda5cab771a92c2510695. For SLE <= 12 and openSUSE 42.3 only. Their bison (version 2.7) does not recognize new syntax. --- tc/emp_ematch.y | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- a/tc/emp_ematch.y +++ b/tc/emp_ematch.y @@ -8,8 +8,8 @@ %locations %token-table -%define parse.error verbose -%define api.prefix {ematch_} +%error-verbose +%name-prefix "ematch_" %union { unsigned int i; ++++++ bpf-bss-section-poc.patch ++++++ >From 8f256b14edf9fdba3e0c688b76a4124d8627cde1 Mon Sep 17 00:00:00 2001 From: Joe Stringer <[email protected]> Date: Thu, 24 Jan 2019 20:55:39 -0800 Subject: [PATCH iproute2-next 2/2] bpf: bss section poc To: Stephen Hemminger <[email protected]> Cc: [email protected], [email protected] The .bss section denotes uninitialized data, which is for instance what clang will generate if a static variable is set to zero by default. Teach the bpf library about .bss so that such variables can be properly initialized. Signed-off-by: Joe Stringer <[email protected]> --- lib/bpf.c | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/lib/bpf.c b/lib/bpf.c index eb208275ebaa..69eaa5ee732d 100644 --- a/lib/bpf.c +++ b/lib/bpf.c @@ -1159,6 +1159,7 @@ struct bpf_elf_ctx { int sec_text; int sec_btf; int sec_data; + int sec_bss; char license[ELF_MAX_LICENSE_LEN]; enum bpf_prog_type type; __u32 ifindex; @@ -2048,6 +2049,14 @@ static int bpf_fetch_data(struct bpf_elf_ctx *ctx, int section, return 0; } +static int bpf_fetch_bss(struct bpf_elf_ctx *ctx, int section, + struct bpf_elf_sec_data *data) +{ + ctx->sec_bss = section; + ctx->sec_done[section] = true; + return 0; +} + static void bpf_btf_report(int fd, struct bpf_elf_ctx *ctx) { fprintf(stderr, "\nBTF debug data section \'.BTF\' %s%s (%d)!\n", @@ -2262,6 +2271,11 @@ static bool bpf_has_glob_data(const struct bpf_elf_ctx *ctx) return ctx->sec_data; } +static bool bpf_has_bss_data(const struct bpf_elf_ctx *ctx) +{ + return ctx->sec_bss; +} + static int bpf_fetch_ancillary(struct bpf_elf_ctx *ctx, bool check_text_sec) { struct bpf_elf_sec_data data; @@ -2286,6 +2300,9 @@ static int bpf_fetch_ancillary(struct bpf_elf_ctx *ctx, bool check_text_sec) else if (data.sec_hdr.sh_type == SHT_PROGBITS && !strcmp(data.sec_name, ".data")) ret = bpf_fetch_data(ctx, i, &data); + else if (data.sec_hdr.sh_type == SHT_NOBITS && + !strcmp(data.sec_name, ".bss")) + ret = bpf_fetch_bss(ctx, i, &data); else if (data.sec_hdr.sh_type == SHT_SYMTAB && !strcmp(data.sec_name, ".symtab")) ret = bpf_fetch_symtab(ctx, i, &data); @@ -2414,6 +2431,19 @@ static int bpf_apply_relo_glob(struct bpf_elf_ctx *ctx, struct bpf_elf_prog *pro return 0; } +static int bpf_apply_relo_bss(struct bpf_elf_ctx *ctx, struct bpf_elf_prog *prog, + GElf_Rel *relo, GElf_Sym *sym, + struct bpf_relo_props *props) +{ + unsigned int insn_off = relo->r_offset / sizeof(struct bpf_insn); + + if (insn_off >= prog->insns_num) + return -EINVAL; + + prog->insns[insn_off].imm = 0; + return 0; +} + static int bpf_apply_relo_call(struct bpf_elf_ctx *ctx, struct bpf_elf_prog *prog, GElf_Rel *relo, GElf_Sym *sym, struct bpf_relo_props *props) @@ -2470,10 +2500,12 @@ static int bpf_apply_relo_data(struct bpf_elf_ctx *ctx, ret = bpf_apply_relo_map(ctx, prog, &relo, &sym, props); else if (sym.st_shndx == ctx->sec_data) ret = bpf_apply_relo_glob(ctx, prog, &relo, &sym, props); + else if (sym.st_shndx == ctx->sec_bss) + ret = bpf_apply_relo_bss(ctx, prog, &relo, &sym, props); else if (sym.st_shndx == ctx->sec_text) ret = bpf_apply_relo_call(ctx, prog, &relo, &sym, props); else - fprintf(stderr, "ELF contains non-{map,data,call} related relo data in entry %u pointing to section %u! Compiler bug?!\n", + fprintf(stderr, "ELF contains non-{bss,call,data,map} related relo data in entry %u pointing to section %u! Compiler bug?!\n", relo_ent, sym.st_shndx); if (ret < 0) return ret; @@ -2569,7 +2601,8 @@ static int bpf_fetch_prog_sec(struct bpf_elf_ctx *ctx, const char *section) return ret; } - if (bpf_has_map_data(ctx) || bpf_has_call_data(ctx) || bpf_has_glob_data(ctx)) + if (bpf_has_map_data(ctx) || bpf_has_call_data(ctx) || + bpf_has_glob_data(ctx) || bpf_has_bss_data(ctx)) ret = bpf_fetch_prog_relo(ctx, section, &lderr, &sseen, &prog); if (ret < 0 && !lderr) ret = bpf_fetch_prog(ctx, section, &sseen); -- 2.19.1 ++++++ bpf-data-section-support-poc.patch ++++++ >From 4e0dcb220bd77a5ddf0f8956740281efbf1ead90 Mon Sep 17 00:00:00 2001 From: Daniel Borkmann <[email protected]> Date: Wed, 31 Oct 2018 20:25:22 +0100 Subject: [PATCH iproute2-next 1/2] bpf: data section support poc To: Stephen Hemminger <[email protected]> Cc: [email protected], [email protected] Signed-off-by: Daniel Borkmann <[email protected]> --- lib/bpf.c | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/lib/bpf.c b/lib/bpf.c index 45f279fa4a41..eb208275ebaa 100644 --- a/lib/bpf.c +++ b/lib/bpf.c @@ -1142,6 +1142,7 @@ struct bpf_elf_ctx { Elf_Data *sym_tab; Elf_Data *str_tab; Elf_Data *btf_data; + Elf_Data *glo_data; char obj_uid[64]; int obj_fd; int btf_fd; @@ -1157,6 +1158,7 @@ struct bpf_elf_ctx { int sec_maps; int sec_text; int sec_btf; + int sec_data; char license[ELF_MAX_LICENSE_LEN]; enum bpf_prog_type type; __u32 ifindex; @@ -2037,6 +2039,15 @@ static int bpf_fetch_text(struct bpf_elf_ctx *ctx, int section, return 0; } +static int bpf_fetch_data(struct bpf_elf_ctx *ctx, int section, + struct bpf_elf_sec_data *data) +{ + ctx->sec_data = section; + ctx->glo_data = data->sec_data; + ctx->sec_done[section] = true; + return 0; +} + static void bpf_btf_report(int fd, struct bpf_elf_ctx *ctx) { fprintf(stderr, "\nBTF debug data section \'.BTF\' %s%s (%d)!\n", @@ -2246,6 +2257,11 @@ static bool bpf_has_call_data(const struct bpf_elf_ctx *ctx) return ctx->sec_text; } +static bool bpf_has_glob_data(const struct bpf_elf_ctx *ctx) +{ + return ctx->sec_data; +} + static int bpf_fetch_ancillary(struct bpf_elf_ctx *ctx, bool check_text_sec) { struct bpf_elf_sec_data data; @@ -2267,6 +2283,9 @@ static int bpf_fetch_ancillary(struct bpf_elf_ctx *ctx, bool check_text_sec) !strcmp(data.sec_name, ".text") && check_text_sec) ret = bpf_fetch_text(ctx, i, &data); + else if (data.sec_hdr.sh_type == SHT_PROGBITS && + !strcmp(data.sec_name, ".data")) + ret = bpf_fetch_data(ctx, i, &data); else if (data.sec_hdr.sh_type == SHT_SYMTAB && !strcmp(data.sec_name, ".symtab")) ret = bpf_fetch_symtab(ctx, i, &data); @@ -2380,6 +2399,21 @@ static int bpf_apply_relo_map(struct bpf_elf_ctx *ctx, struct bpf_elf_prog *prog return 0; } +static int bpf_apply_relo_glob(struct bpf_elf_ctx *ctx, struct bpf_elf_prog *prog, + GElf_Rel *relo, GElf_Sym *sym, + struct bpf_relo_props *props) +{ + unsigned int insn_off = relo->r_offset / sizeof(struct bpf_insn); + int *data; + + if (insn_off >= prog->insns_num) + return -EINVAL; + + data = ctx->glo_data->d_buf + sym->st_value; + prog->insns[insn_off].imm = *data; + return 0; +} + static int bpf_apply_relo_call(struct bpf_elf_ctx *ctx, struct bpf_elf_prog *prog, GElf_Rel *relo, GElf_Sym *sym, struct bpf_relo_props *props) @@ -2434,10 +2468,12 @@ static int bpf_apply_relo_data(struct bpf_elf_ctx *ctx, if (sym.st_shndx == ctx->sec_maps) ret = bpf_apply_relo_map(ctx, prog, &relo, &sym, props); + else if (sym.st_shndx == ctx->sec_data) + ret = bpf_apply_relo_glob(ctx, prog, &relo, &sym, props); else if (sym.st_shndx == ctx->sec_text) ret = bpf_apply_relo_call(ctx, prog, &relo, &sym, props); else - fprintf(stderr, "ELF contains non-{map,call} related relo data in entry %u pointing to section %u! Compiler bug?!\n", + fprintf(stderr, "ELF contains non-{map,data,call} related relo data in entry %u pointing to section %u! Compiler bug?!\n", relo_ent, sym.st_shndx); if (ret < 0) return ret; @@ -2533,7 +2569,7 @@ static int bpf_fetch_prog_sec(struct bpf_elf_ctx *ctx, const char *section) return ret; } - if (bpf_has_map_data(ctx) || bpf_has_call_data(ctx)) + if (bpf_has_map_data(ctx) || bpf_has_call_data(ctx) || bpf_has_glob_data(ctx)) ret = bpf_fetch_prog_relo(ctx, section, &lderr, &sseen, &prog); if (ret < 0 && !lderr) ret = bpf_fetch_prog(ctx, section, &sseen); -- 2.19.1 ++++++ iproute2-4.20.0.tar.xz -> iproute2-5.1.0.tar.xz ++++++ ++++ 14556 lines of diff (skipped)
