tcp_connect_v4接口
tcp_connect_v4接口的调用栈,是用户态调用connect接口进入该路径。
#!/usr/bin/env bpftrace#include <linux/net.h>
#include <linux/skbuff.h>
#include <uapi/linux/in.h>kprobe:tcp_v4_connect {printf("sa_family:0x%x\n", ((struct sockaddr_in *)arg1)->sin_family);printf("sin_port:0x%x\n", ((struct sockaddr_in *)arg1)->sin_port);printf("saddr:0x%x\n", ((struct sockaddr_in *)arg1)->sin_addr.s_addr);@[kstack] = count();
}END {
}调用栈如下:
Attaching 2 probes...
sa_family:0x2
sin_port:0x5000
saddr:0x8871b40a
sa_family:0x2
sin_port:0xf0d2
saddr:0x100007f
sa_family:0x2
sin_port:0x1600
saddr:0xe435864
^C@[tcp_v4_connect+1__inet_stream_connect+209inet_stream_connect+54__sys_connect+150__x64_sys_connect+22do_syscall_64+51entry_SYSCALL_64_after_hwframe+68
]: 3