Message ID | 1452171793-5829-1-git-send-email-nicolas.dichtel@6wind.com |
---|---|
State | Accepted, archived |
Delegated to: | stephen hemminger |
Headers | show |
On 01/07/2016 02:03 PM, Nicolas Dichtel wrote: > From: Julien Floret <julien.floret@6wind.com> > > gcc < 4.6 does not handle C11 syntax for the static initialization of > anonymous struct/union, hence the following error: > > tc_bpf.c:260: error: unknown field map_type specified in initializer > > Signed-off-by: Julien Floret <julien.floret@6wind.com> > Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com> Thanks! Acked-by: Daniel Borkmann <daniel@iogearbox.net> -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 01/07/2016 02:31 PM, Daniel Borkmann wrote: > On 01/07/2016 02:03 PM, Nicolas Dichtel wrote: >> From: Julien Floret <julien.floret@6wind.com> >> >> gcc < 4.6 does not handle C11 syntax for the static initialization of >> anonymous struct/union, hence the following error: >> >> tc_bpf.c:260: error: unknown field map_type specified in initializer >> >> Signed-off-by: Julien Floret <julien.floret@6wind.com> >> Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com> > > Thanks! > > Acked-by: Daniel Borkmann <daniel@iogearbox.net> Btw, for iproute2's net-next branch there're couple of other occasions as well. Stephen, how do you prefer to handle this? Should a separate patch be done against net-next branch to reduce merge conflicts? -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Le 07/01/2016 14:56, Daniel Borkmann a écrit : > Btw, for iproute2's net-next branch there're couple of other occasions > as well. Stephen, how do you prefer to handle this? Should a separate > patch be done against net-next branch to reduce merge conflicts? Thank you Daniel for noticing it. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thu, 7 Jan 2016 14:03:13 +0100 Nicolas Dichtel <nicolas.dichtel@6wind.com> wrote: > From: Julien Floret <julien.floret@6wind.com> > > gcc < 4.6 does not handle C11 syntax for the static initialization of > anonymous struct/union, hence the following error: > > tc_bpf.c:260: error: unknown field map_type specified in initializer > > Signed-off-by: Julien Floret <julien.floret@6wind.com> > Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com> Applied, thanks.
diff --git a/tc/tc_bpf.c b/tc/tc_bpf.c index 276871a5c0a5..47993bad81ca 100644 --- a/tc/tc_bpf.c +++ b/tc/tc_bpf.c @@ -257,12 +257,14 @@ static bool bpf_may_skip_map_creation(int file_fd) static int bpf_create_map(enum bpf_map_type type, unsigned int size_key, unsigned int size_value, unsigned int max_elem) { - union bpf_attr attr = { - .map_type = type, - .key_size = size_key, - .value_size = size_value, - .max_entries = max_elem, - }; + union bpf_attr attr; + + memset(&attr, 0, sizeof(attr)); + + attr.map_type = type; + attr.key_size = size_key; + attr.value_size = size_value; + attr.max_entries = max_elem; return bpf(BPF_MAP_CREATE, &attr, sizeof(attr)); } @@ -270,12 +272,14 @@ static int bpf_create_map(enum bpf_map_type type, unsigned int size_key, static int bpf_update_map(int fd, const void *key, const void *value, uint64_t flags) { - union bpf_attr attr = { - .map_fd = fd, - .key = bpf_ptr_to_u64(key), - .value = bpf_ptr_to_u64(value), - .flags = flags, - }; + union bpf_attr attr; + + memset(&attr, 0, sizeof(attr)); + + attr.map_fd = fd; + attr.key = bpf_ptr_to_u64(key); + attr.value = bpf_ptr_to_u64(value); + attr.flags = flags; return bpf(BPF_MAP_UPDATE_ELEM, &attr, sizeof(attr)); } @@ -283,15 +287,17 @@ static int bpf_update_map(int fd, const void *key, const void *value, static int bpf_prog_load(enum bpf_prog_type type, const struct bpf_insn *insns, unsigned int len, const char *license) { - union bpf_attr attr = { - .prog_type = type, - .insns = bpf_ptr_to_u64(insns), - .insn_cnt = len / sizeof(struct bpf_insn), - .license = bpf_ptr_to_u64(license), - .log_buf = bpf_ptr_to_u64(bpf_log_buf), - .log_size = sizeof(bpf_log_buf), - .log_level = 1, - }; + union bpf_attr attr; + + memset(&attr, 0, sizeof(attr)); + + attr.prog_type = type; + attr.insns = bpf_ptr_to_u64(insns); + attr.insn_cnt = len / sizeof(struct bpf_insn); + attr.license = bpf_ptr_to_u64(license); + attr.log_buf = bpf_ptr_to_u64(bpf_log_buf); + attr.log_size = sizeof(bpf_log_buf); + attr.log_level = 1; return bpf(BPF_PROG_LOAD, &attr, sizeof(attr)); }