-1

Motivation

I'm trying to write a bpftrace program to trace out when a socket is ready for reading by hooking into the kprobe sock_def_readable. I will get a struct sock to inspect. I'd like to map it back to the socket I created in user-land.

Question

How does one recover the port number from a struct sock?

Jonathan Fischoff
  • 1,467
  • 12
  • 22

1 Answers1

0

I just expanded the definition of inet_sk ... which was merely a cast.

#!/usr/bin/env bpftrace

#include <linux/net/inet_sock.h>

BEGIN
{
    printf("network tracing");
}

kprobe:sock_def_readable
{
  $inet_sock = (struct inet_sock *)arg0;
  printf("sock_def_readable destination port %d, source port %d \n", $inet_sock->inet_sport, $inet_sock->inet_dport);
}
Jonathan Fischoff
  • 1,467
  • 12
  • 22