ebpf_exporter

Форк
0
/
udp-drops.bpf.c 
33 строки · 972.0 Байт
1
#include <vmlinux.h>
2
#include <bpf/bpf_tracing.h>
3
#include "maps.bpf.h"
4

5
#define UPPER_PORT_BOUND 32768
6

7
struct {
8
    __uint(type, BPF_MAP_TYPE_HASH);
9
    __uint(max_entries, UPPER_PORT_BOUND);
10
    __type(key, u16);
11
    __type(value, u64);
12
} udp_fail_queue_rcv_skbs_total SEC(".maps");
13

14
SEC("tp_btf/udp_fail_queue_rcv_skb")
15
int BPF_PROG(udp_fail_queue_rcv_skb, int rc, struct sock *sk)
16
{
17
    u16 lport = sk->__sk_common.skc_num;
18

19
    // We are not interested in ephemeral ports for outbound connections.
20
    // There's a ton of them and they don't easily correlate with services.
21
    // To still have some visibility, we put all of the ephemeral ports into
22
    // the same local_port="0" label and defer to debugging with tracepoints
23
    // to find what port and service are having issues.
24
    if (lport >= UPPER_PORT_BOUND) {
25
        lport = 0;
26
    }
27

28
    increment_map(&udp_fail_queue_rcv_skbs_total, &lport, 1);
29

30
    return 0;
31
}
32

33
char LICENSE[] SEC("license") = "GPL";
34

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.