XDP-альтернатива bpf_get_current_pid

#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, потому что эта информация просто еще не вычислена ядром.