Upd project
This commit is contained in:
parent
b45084ec06
commit
212ff48422
5
common.h
5
common.h
@ -2,10 +2,11 @@
|
||||
#define H_COMMON
|
||||
|
||||
struct reset {
|
||||
__u8 saddr[4];
|
||||
__u8 daddr[4];
|
||||
__u16 sport;
|
||||
__u16 dport;
|
||||
__u32 saddr;
|
||||
// __u8 saddr[4];
|
||||
// __u8 daddr[4];
|
||||
};
|
||||
|
||||
#endif
|
||||
|
6
exec.sh
Executable file
6
exec.sh
Executable file
@ -0,0 +1,6 @@
|
||||
#!/usr/bin/sh
|
||||
|
||||
|
||||
clang-11 -g -O2 -target bpf -c tp_tcp.c -o tp_tcp.o
|
||||
gcc load_bpf.c -o load_bpf -lbpf
|
||||
sudo ./load_bpf
|
BIN
load_bpf
BIN
load_bpf
Binary file not shown.
15
load_bpf.c
15
load_bpf.c
@ -27,7 +27,7 @@ int main(void){
|
||||
return -1;
|
||||
}
|
||||
//LIBBPF_OPTS(bpf_map_create_opts, opts, .map_flags = BPF_F_MMAPABLE);
|
||||
map_fd = bpf_create_map(BPF_MAP_TYPE_HASH, sizeof(int), sizeof(struct reset), 4096, BPF_ANY);
|
||||
map_fd = bpf_create_map(BPF_MAP_TYPE_ARRAY, sizeof(int), sizeof(struct reset), 4096, BPF_ANY);
|
||||
printf("Create map: %d\n", map_fd);
|
||||
|
||||
err = bpf_object__load(obj);
|
||||
@ -63,9 +63,16 @@ int main(void){
|
||||
int e = bpf_map_lookup_elem(map_fd, &keys, &s_reset);
|
||||
if (e == 0){
|
||||
//printf("%lld\n", stats);
|
||||
struct in_addr *src = (struct in_addr*)&s_reset.saddr;
|
||||
struct in_addr *dest = (struct in_addr*)&s_reset.daddr;
|
||||
printf("Sport: %d; dport: %d %s %s\n", s_reset.sport, s_reset.dport, inet_ntoa(*src), inet_ntoa(*dest));
|
||||
__u8 saddr[4];
|
||||
saddr[0] = s_reset.saddr & 0xFF;
|
||||
saddr[1] = (s_reset.saddr >> 8) & 0xFF;
|
||||
saddr[2] = (s_reset.saddr >> 16) & 0xFF;
|
||||
saddr[3] = (s_reset.saddr >> 24) & 0xFF;
|
||||
//struct in_addr *src = (struct in_addr*)&s_reset.saddr;
|
||||
struct in_addr *src = (struct in_addr*)&saddr;
|
||||
//struct in_addr *dest = (struct in_addr*)&s_reset.daddr;
|
||||
//printf("Sport: %d; dport: %d %s %s\n", s_reset.sport, s_reset.dport, inet_ntoa(*src), inet_ntoa(*dest));
|
||||
printf("Sport: %d; dport: %d %s\n", s_reset.sport, s_reset.dport, inet_ntoa(*src));
|
||||
}
|
||||
|
||||
}
|
||||
|
41
tp_tcp.c
41
tp_tcp.c
@ -27,8 +27,8 @@ struct ctx_reset {
|
||||
};
|
||||
|
||||
struct {
|
||||
// __uint(type, BPF_MAP_TYPE_ARRAY);
|
||||
__uint(type, BPF_MAP_TYPE_HASH);
|
||||
__uint(type, BPF_MAP_TYPE_ARRAY);
|
||||
// __uint(type, BPF_MAP_TYPE_HASH);
|
||||
__uint(max_entries, 4096);
|
||||
__type(key, int);
|
||||
__type(value, sizeof(struct reset));
|
||||
@ -53,25 +53,44 @@ struct {
|
||||
*/
|
||||
|
||||
//SEC("tp/tcp_retransmit_synack")
|
||||
SEC("tracepoint/tcp/tcp_receive_reset")
|
||||
//int tcp_retransmit(struct sock *sk){
|
||||
//SEC("tracepoint/tcp/tcp_receive_reset")
|
||||
SEC("tracepoint/tcp/tcp_send_reset")
|
||||
int tcp_retransmit(struct ctx_reset *ctx){
|
||||
long long *stats;
|
||||
struct reset *s_reset;
|
||||
int keys = 0;
|
||||
|
||||
s_reset = bpf_map_lookup_elem(&tcp_reset_stats, &keys);
|
||||
if (!s_reset)
|
||||
if (!s_reset){
|
||||
bpf_printk("Failed to get the map");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!ctx)
|
||||
return 0;
|
||||
|
||||
//*stats += 1;
|
||||
s_reset->saddr[0] = ctx->saddr[0];
|
||||
/*s_reset->saddr[0] = ctx->saddr[0];
|
||||
s_reset->saddr[1] = ctx->saddr[1];
|
||||
s_reset->saddr[2] = ctx->saddr[2];
|
||||
s_reset->saddr[3] = ctx->saddr[3];
|
||||
s_reset->saddr[3] = ctx->saddr[3];*/
|
||||
//memcpy(s_reset->saddr, ctx->saddr, 4);
|
||||
s_reset->saddr = (ctx->saddr[0]) +
|
||||
(ctx->saddr[1] << 8) +
|
||||
(ctx->saddr[2] << 16) +
|
||||
(ctx->saddr[3] << 24);
|
||||
__u8 saddr[4];
|
||||
saddr[0] = s_reset->saddr & 0xFF;
|
||||
saddr[1] = (s_reset->saddr >> 8) & 0xFF;
|
||||
saddr[2] = (s_reset->saddr >> 16) & 0xFF;
|
||||
saddr[3] = (s_reset->saddr >> 24) & 0xFF;
|
||||
bpf_printk("Saddr: %d %d", ctx->saddr[0], ctx->saddr[1]);
|
||||
bpf_printk("Saddr: %d %d", ctx->saddr[2], ctx->saddr[3]);
|
||||
bpf_printk("Saddr: %d %d", saddr[0], saddr[1]);
|
||||
bpf_printk("Saddr: %d %d", saddr[2], saddr[3]);
|
||||
|
||||
//bpf_printk("Daddr: %d %d\n", ctx->daddr[0], ctx->daddr[1]);
|
||||
//bpf_printk("Daddr: %d %d\n", ctx->daddr[2], ctx->daddr[3]);
|
||||
//bpf_printk("D: %d %d", s_reset->daddr[0], s_reset->daddr[1]);
|
||||
//if (sizeof(ctx->daddr) == 4)
|
||||
bpf_printk("%d", sizeof(struct reset));
|
||||
//memcpy(s_reset->daddr, ctx->daddr, 4);
|
||||
/*s_reset->daddr[0] = ctx->daddr[0];
|
||||
s_reset->daddr[1] = ctx->daddr[1];
|
||||
s_reset->daddr[2] = ctx->daddr[2];
|
||||
|
BIN
tp_tcp.o
BIN
tp_tcp.o
Binary file not shown.
Loading…
Reference in New Issue
Block a user