#c #linux #ebpf #bpf #xdp-bpf
Вопрос:
Как мне получить текущий идентификатор процесса в xdp
моя программа:
#include lt;linux/bpf.hgt; #include lt;linux/if_ether.hgt; #include lt;linux/ip.hgt; #include lt;linux/in.hgt; #include lt;linux/udp.hgt; #include lt;linux/sched.hgt; #include lt;linux/if_packet.hgt; #include lt;linux/if_vlan.hgt; #include lt;uapi/linux/bpf.hgt; #include lt;net/sock.hgt; #include lt;bcc/proto.hgt; int udpfilter(struct xdp_md *ctx) { bpf_trace_printk("got a packetn"); u32 cpu = bpf_get_smp_processor_id(); //bpf_trace_printk("%s lookingn",cpu); u32 pid = bpf_get_current_pid_tgid(); return XDP_DROP; }
Есть ли какая-либо альтернативная функция для извлечения текущего pid в xdp, я обращал внимание на это https://github.com/iovisor/bcc/blob/master/docs/kernel-versions.md#program-types
Комментарии:
1. Читая ваши другие вопросы, я предполагаю, что вы пытаетесь получить PID процесса назначения пакета?
Ответ №1:
Читая ваши другие вопросы, я предполагаю, что вы пытаетесь получить PID процесса назначения для пакета. Это невозможно при подключении XDP, потому что эта информация просто еще не вычислена ядром.