samples: bpf: rename struct bpf_map_def to avoid conflict with libbpf
Both tools/lib/bpf/libbpf.h and samples/bpf/bpf_load.h define their own version of struct bpf_map_def. The version in bpf_load.h has more fields. libbpf does not support inner maps and its definition of struct bpf_map_def lacks the related fields. Rename the definition in bpf_load.h (samples/bpf) to avoid conflicts. Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: Quentin Monnet <quentin.monnet@netronome.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
This commit is contained in:
committed by
Daniel Borkmann
parent
e3687510fc
commit
74662ea5d4
@@ -420,7 +420,7 @@ static int load_elf_maps_section(struct bpf_map_data *maps, int maps_shndx,
|
|||||||
|
|
||||||
/* Keeping compatible with ELF maps section changes
|
/* Keeping compatible with ELF maps section changes
|
||||||
* ------------------------------------------------
|
* ------------------------------------------------
|
||||||
* The program size of struct bpf_map_def is known by loader
|
* The program size of struct bpf_load_map_def is known by loader
|
||||||
* code, but struct stored in ELF file can be different.
|
* code, but struct stored in ELF file can be different.
|
||||||
*
|
*
|
||||||
* Unfortunately sym[i].st_size is zero. To calculate the
|
* Unfortunately sym[i].st_size is zero. To calculate the
|
||||||
@@ -429,7 +429,7 @@ static int load_elf_maps_section(struct bpf_map_data *maps, int maps_shndx,
|
|||||||
* symbols.
|
* symbols.
|
||||||
*/
|
*/
|
||||||
map_sz_elf = data_maps->d_size / nr_maps;
|
map_sz_elf = data_maps->d_size / nr_maps;
|
||||||
map_sz_copy = sizeof(struct bpf_map_def);
|
map_sz_copy = sizeof(struct bpf_load_map_def);
|
||||||
if (map_sz_elf < map_sz_copy) {
|
if (map_sz_elf < map_sz_copy) {
|
||||||
/*
|
/*
|
||||||
* Backward compat, loading older ELF file with
|
* Backward compat, loading older ELF file with
|
||||||
@@ -448,8 +448,8 @@ static int load_elf_maps_section(struct bpf_map_data *maps, int maps_shndx,
|
|||||||
|
|
||||||
/* Memcpy relevant part of ELF maps data to loader maps */
|
/* Memcpy relevant part of ELF maps data to loader maps */
|
||||||
for (i = 0; i < nr_maps; i++) {
|
for (i = 0; i < nr_maps; i++) {
|
||||||
|
struct bpf_load_map_def *def;
|
||||||
unsigned char *addr, *end;
|
unsigned char *addr, *end;
|
||||||
struct bpf_map_def *def;
|
|
||||||
const char *map_name;
|
const char *map_name;
|
||||||
size_t offset;
|
size_t offset;
|
||||||
|
|
||||||
@@ -464,9 +464,9 @@ static int load_elf_maps_section(struct bpf_map_data *maps, int maps_shndx,
|
|||||||
|
|
||||||
/* Symbol value is offset into ELF maps section data area */
|
/* Symbol value is offset into ELF maps section data area */
|
||||||
offset = sym[i].st_value;
|
offset = sym[i].st_value;
|
||||||
def = (struct bpf_map_def *)(data_maps->d_buf + offset);
|
def = (struct bpf_load_map_def *)(data_maps->d_buf + offset);
|
||||||
maps[i].elf_offset = offset;
|
maps[i].elf_offset = offset;
|
||||||
memset(&maps[i].def, 0, sizeof(struct bpf_map_def));
|
memset(&maps[i].def, 0, sizeof(struct bpf_load_map_def));
|
||||||
memcpy(&maps[i].def, def, map_sz_copy);
|
memcpy(&maps[i].def, def, map_sz_copy);
|
||||||
|
|
||||||
/* Verify no newer features were requested */
|
/* Verify no newer features were requested */
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
#define MAX_MAPS 32
|
#define MAX_MAPS 32
|
||||||
#define MAX_PROGS 32
|
#define MAX_PROGS 32
|
||||||
|
|
||||||
struct bpf_map_def {
|
struct bpf_load_map_def {
|
||||||
unsigned int type;
|
unsigned int type;
|
||||||
unsigned int key_size;
|
unsigned int key_size;
|
||||||
unsigned int value_size;
|
unsigned int value_size;
|
||||||
@@ -21,7 +21,7 @@ struct bpf_map_data {
|
|||||||
int fd;
|
int fd;
|
||||||
char *name;
|
char *name;
|
||||||
size_t elf_offset;
|
size_t elf_offset;
|
||||||
struct bpf_map_def def;
|
struct bpf_load_map_def def;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef void (*fixup_map_cb)(struct bpf_map_data *map, int idx);
|
typedef void (*fixup_map_cb)(struct bpf_map_data *map, int idx);
|
||||||
|
|||||||
Reference in New Issue
Block a user