From: Julien Floret <julien.flo...@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.flo...@6wind.com> Signed-off-by: Nicolas Dichtel <nicolas.dich...@6wind.com> --- tc/tc_bpf.c | 48 +++++++++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 21 deletions(-) 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)); } -- 2.4.2 -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html