diff --git a/AF_XDP-interaction/lib_xsk_extend.c b/AF_XDP-interaction/lib_xsk_extend.c index 6cad1c1..c8f6102 100644 --- a/AF_XDP-interaction/lib_xsk_extend.c +++ b/AF_XDP-interaction/lib_xsk_extend.c @@ -11,6 +11,8 @@ #include /* provided by libbpf */ +#include "lib_xsk_extend.h" + int xsk_umem__btf_id(void *umem_pkt_data) // , const struct xsk_umem *umem) { // if (umem->config.xdp_headroom < sizeof(int)) @@ -20,7 +22,6 @@ int xsk_umem__btf_id(void *umem_pkt_data) // , const struct xsk_umem *umem) return *(int *)(umem_pkt_data - sizeof(int)); } - struct xsk_btf_info { struct hashmap map; struct btf *btf; @@ -28,12 +29,6 @@ struct xsk_btf_info { __u32 btf_type_id; }; -struct xsk_btf_entry { - __u32 offset; - __u32 size; -}; - - __u32 xsk_btf__btf_type_id(struct xsk_btf_info *xbi) { return xbi->btf_type_id; @@ -122,7 +117,7 @@ error_btf: } static int __xsk_btf_field_entry(struct xsk_btf_info *xbi, const char *field, - struct xsk_btf_entry *entry) + struct xsk_btf_member *entry) { const struct btf_member *m; unsigned short vlen; @@ -156,6 +151,15 @@ bool xsk_btf__has_field(const char *field, struct xsk_btf_info *xbi) return __xsk_btf_field_entry(xbi, field, NULL) ? false : true; } +bool xsk_btf__field_member(const char *field, struct xsk_btf_info *xbi, + struct xsk_btf_member *entry) +{ + if (!xbi) + return false; + + return __xsk_btf_field_entry(xbi, field, entry) ? false : true; +} + void xsk_btf__free_xdp_hint(struct xsk_btf_info *xbi) { if (!xbi) @@ -169,14 +173,14 @@ void xsk_btf__free_xdp_hint(struct xsk_btf_info *xbi) int xsk_btf__read(void **dest, size_t size, const char *field, struct xsk_btf_info *xbi, const void *addr) { - struct xsk_btf_entry *entry; + struct xsk_btf_member *entry; int err; if (!field || !xbi || !dest || !addr) return -EINVAL; if (!hashmap__find(&(xbi->map), field, (void **)&entry)) { - struct xsk_btf_entry e; + struct xsk_btf_member e; err = __xsk_btf_field_entry(xbi, field, &e); if (err) diff --git a/AF_XDP-interaction/lib_xsk_extend.h b/AF_XDP-interaction/lib_xsk_extend.h index e5e0ff5..7311bba 100644 --- a/AF_XDP-interaction/lib_xsk_extend.h +++ b/AF_XDP-interaction/lib_xsk_extend.h @@ -9,6 +9,11 @@ LIBBPF_API int xsk_umem__btf_id(void *umem_data); struct xsk_btf_info; +struct xsk_btf_member { + __u32 offset; + __u32 size; +}; + LIBBPF_API int xsk_btf__init_xdp_hint(struct btf *btf_obj, const char *xdp_hints_name, struct xsk_btf_info **xbi);