tc: fix compilation with old gcc (< 4.6) (bis)
Commit 8f80d450c3 ("tc: fix compilation with old gcc (< 4.6)") was reverted
to ease the merge of the net-next branch.
Here is the new version.
Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
This commit is contained in:
parent
a9390c921a
commit
67584e3ab2
58
tc/tc_bpf.c
58
tc/tc_bpf.c
|
|
@ -49,6 +49,10 @@
|
|||
#include "tc_util.h"
|
||||
#include "tc_bpf.h"
|
||||
|
||||
#ifndef AF_ALG
|
||||
#define AF_ALG 38
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_ELF
|
||||
static int bpf_obj_open(const char *path, enum bpf_prog_type type,
|
||||
const char *sec, bool verbose);
|
||||
|
|
@ -81,12 +85,13 @@ static int bpf(int cmd, union bpf_attr *attr, unsigned int size)
|
|||
static int bpf_map_update(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));
|
||||
}
|
||||
|
|
@ -745,12 +750,13 @@ static __check_format_string(1, 2) void bpf_dump_error(const char *format, ...)
|
|||
static int bpf_map_create(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));
|
||||
}
|
||||
|
|
@ -758,15 +764,16 @@ static int bpf_map_create(enum bpf_map_type type, unsigned int size_key,
|
|||
static int bpf_prog_load(enum bpf_prog_type type, const struct bpf_insn *insns,
|
||||
size_t size, const char *license)
|
||||
{
|
||||
union bpf_attr attr = {
|
||||
.prog_type = type,
|
||||
.insns = bpf_ptr_to_u64(insns),
|
||||
.insn_cnt = size / 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 = size / 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;
|
||||
|
||||
if (getenv(BPF_ENV_NOLOG)) {
|
||||
attr.log_buf = 0;
|
||||
|
|
@ -779,10 +786,11 @@ static int bpf_prog_load(enum bpf_prog_type type, const struct bpf_insn *insns,
|
|||
|
||||
static int bpf_obj_pin(int fd, const char *pathname)
|
||||
{
|
||||
union bpf_attr attr = {
|
||||
.pathname = bpf_ptr_to_u64(pathname),
|
||||
.bpf_fd = fd,
|
||||
};
|
||||
union bpf_attr attr;
|
||||
|
||||
memset(&attr, 0, sizeof(attr));
|
||||
attr.pathname = bpf_ptr_to_u64(pathname);
|
||||
attr.bpf_fd = fd;
|
||||
|
||||
return bpf(BPF_OBJ_PIN, &attr, sizeof(attr));
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue