Commit 25212eea authored by Paul Chaignon's avatar Paul Chaignon

tcpretrans: Remove unnecessary bpf_probe_reads

parent 7e1cf0a1
...@@ -70,28 +70,22 @@ struct ipv6_data_t { ...@@ -70,28 +70,22 @@ struct ipv6_data_t {
}; };
BPF_PERF_OUTPUT(ipv6_events); BPF_PERF_OUTPUT(ipv6_events);
static int trace_event(struct pt_regs *ctx, struct sock *sk, int type) static int trace_event(struct pt_regs *ctx, struct sock *skp, int type)
{ {
if (sk == NULL) if (skp == NULL)
return 0; return 0;
u32 pid = bpf_get_current_pid_tgid(); u32 pid = bpf_get_current_pid_tgid();
struct sock *skp = NULL;
bpf_probe_read(&skp, sizeof(skp), &sk);
// pull in details // pull in details
u16 family = 0, lport = 0, dport = 0; u16 family = skp->__sk_common.skc_family;
char state = 0; u16 lport = skp->__sk_common.skc_num;
bpf_probe_read(&family, sizeof(family), &skp->__sk_common.skc_family); u16 dport = skp->__sk_common.skc_dport;
bpf_probe_read(&lport, sizeof(lport), &skp->__sk_common.skc_num); char state = skp->__sk_common.skc_state;
bpf_probe_read(&dport, sizeof(dport), &skp->__sk_common.skc_dport);
bpf_probe_read(&state, sizeof(state), (void *)&skp->__sk_common.skc_state);
if (family == AF_INET) { if (family == AF_INET) {
struct ipv4_data_t data4 = {.pid = pid, .ip = 4, .type = type}; struct ipv4_data_t data4 = {.pid = pid, .ip = 4, .type = type};
bpf_probe_read(&data4.saddr, sizeof(u32), data4.saddr = skp->__sk_common.skc_rcv_saddr;
&skp->__sk_common.skc_rcv_saddr); data4.daddr = skp->__sk_common.skc_daddr;
bpf_probe_read(&data4.daddr, sizeof(u32),
&skp->__sk_common.skc_daddr);
// lport is host order // lport is host order
data4.lport = lport; data4.lport = lport;
data4.dport = ntohs(dport); data4.dport = ntohs(dport);
...@@ -101,9 +95,9 @@ static int trace_event(struct pt_regs *ctx, struct sock *sk, int type) ...@@ -101,9 +95,9 @@ static int trace_event(struct pt_regs *ctx, struct sock *sk, int type)
} else if (family == AF_INET6) { } else if (family == AF_INET6) {
struct ipv6_data_t data6 = {.pid = pid, .ip = 6, .type = type}; struct ipv6_data_t data6 = {.pid = pid, .ip = 6, .type = type};
bpf_probe_read(&data6.saddr, sizeof(data6.saddr), bpf_probe_read(&data6.saddr, sizeof(data6.saddr),
&skp->__sk_common.skc_v6_rcv_saddr.in6_u.u6_addr32); skp->__sk_common.skc_v6_rcv_saddr.in6_u.u6_addr32);
bpf_probe_read(&data6.daddr, sizeof(data6.daddr), bpf_probe_read(&data6.daddr, sizeof(data6.daddr),
&skp->__sk_common.skc_v6_daddr.in6_u.u6_addr32); skp->__sk_common.skc_v6_daddr.in6_u.u6_addr32);
// lport is host order // lport is host order
data6.lport = lport; data6.lport = lport;
data6.dport = ntohs(dport); data6.dport = ntohs(dport);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment