Created
June 4, 2020 07:18
-
-
Save soumyadipdm/736497c2fac752061f93d92c50ef136b to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Disassembly of section .bpf.fn.kprobe__tcp_cleanup_rbuf: | |
kprobe__tcp_cleanup_rbuf: | |
; { // Line 87 | |
0: 79 17 68 00 00 00 00 00 r7 = *(u64 *)(r1 + 104) | |
; struct sock *sk = ctx->di; int copied = ctx->si; // Line 88 | |
1: 79 19 70 00 00 00 00 00 r9 = *(u64 *)(r1 + 112) | |
; u32 pid = bpf_get_current_pid_tgid() >> 32; // Line 89 | |
2: 85 00 00 00 0e 00 00 00 call 14 | |
3: bf 06 00 00 00 00 00 00 r6 = r0 | |
4: b7 08 00 00 00 00 00 00 r8 = 0 | |
; u16 dport = 0, family = ({ typeof(unsigned short) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&sk->__sk_common.skc_family); _val; }); // Line 90 | |
5: 6b 8a b0 ff 00 00 00 00 *(u16 *)(r10 - 80) = r8 | |
6: 7b 9a 58 ff 00 00 00 00 *(u64 *)(r10 - 168) = r9 | |
7: bf 93 00 00 00 00 00 00 r3 = r9 | |
8: 07 03 00 00 10 00 00 00 r3 += 16 | |
9: bf a1 00 00 00 00 00 00 r1 = r10 | |
; int kprobe__tcp_cleanup_rbuf(struct pt_regs *ctx) // Line 86 | |
10: 07 01 00 00 b0 ff ff ff r1 += -80 | |
; u16 dport = 0, family = ({ typeof(unsigned short) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&sk->__sk_common.skc_family); _val; }); // Line 90 | |
11: b7 02 00 00 02 00 00 00 r2 = 2 | |
12: 85 00 00 00 04 00 00 00 call 4 | |
13: 69 a9 b0 ff 00 00 00 00 r9 = *(u16 *)(r10 - 80) | |
; char cgpath[16] = "/"; // Line 92 | |
14: 7b 8a f8 ff 00 00 00 00 *(u64 *)(r10 - 8) = r8 | |
15: b7 01 00 00 2f 00 00 00 r1 = 47 | |
16: 7b 1a f0 ff 00 00 00 00 *(u64 *)(r10 - 16) = r1 | |
; t = (struct task_struct *)bpf_get_current_task(); // Line 94 | |
17: 85 00 00 00 23 00 00 00 call 35 | |
18: bf a2 00 00 00 00 00 00 r2 = r10 | |
; int kprobe__tcp_cleanup_rbuf(struct pt_regs *ctx) // Line 86 | |
19: 07 02 00 00 f0 ff ff ff r2 += -16 | |
; task_cgroup_path(t, (char *) &cgpath, sizeof(cgpath)); // Line 95 | |
20: bf 01 00 00 00 00 00 00 r1 = r0 | |
21: b7 03 00 00 10 00 00 00 r3 = 16 | |
22: 85 10 00 00 ff ff ff ff call -1 | |
23: 7b 7a 60 ff 00 00 00 00 *(u64 *)(r10 - 160) = r7 | |
; struct sock *sk = ctx->di; int copied = ctx->si; // Line 88 | |
24: 67 07 00 00 20 00 00 00 r7 <<= 32 | |
25: c7 07 00 00 20 00 00 00 r7 s>>= 32 | |
26: b7 02 00 00 01 00 00 00 r2 = 1 | |
; if (copied <= 0) { // Line 97 | |
27: 6d 72 9b 00 00 00 00 00 if r2 s> r7 goto +155 | |
28: 77 06 00 00 20 00 00 00 r6 >>= 32 | |
; if (family == AF_INET) { // Line 101 | |
29: 15 09 3d 00 0a 00 00 00 if r9 == 10 goto +61 | |
30: 55 09 98 00 02 00 00 00 if r9 != 2 goto +152 | |
31: b7 09 00 00 00 00 00 00 r9 = 0 | |
; ipv4_key.saddr = ({ typeof(__be32) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&sk->__sk_common.skc_rcv_saddr); _val; }); // Line 103 | |
32: 63 9a b0 ff 00 00 00 00 *(u32 *)(r10 - 80) = r9 | |
33: 79 a7 58 ff 00 00 00 00 r7 = *(u64 *)(r10 - 168) | |
34: bf 73 00 00 00 00 00 00 r3 = r7 | |
35: 07 03 00 00 04 00 00 00 r3 += 4 | |
36: bf a1 00 00 00 00 00 00 r1 = r10 | |
; struct ipv4_key_t ipv4_key = {.pid = pid}; // Line 102 | |
37: 07 01 00 00 b0 ff ff ff r1 += -80 | |
; ipv4_key.saddr = ({ typeof(__be32) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&sk->__sk_common.skc_rcv_saddr); _val; }); // Line 103 | |
38: b7 02 00 00 04 00 00 00 r2 = 4 | |
39: 85 00 00 00 04 00 00 00 call 4 | |
40: 61 a1 b0 ff 00 00 00 00 r1 = *(u32 *)(r10 - 80) | |
; ipv4_key.daddr = ({ typeof(__be32) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&sk->__sk_common.skc_daddr); _val; }); // Line 104 | |
41: 7b 1a 50 ff 00 00 00 00 *(u64 *)(r10 - 176) = r1 | |
42: 63 9a b0 ff 00 00 00 00 *(u32 *)(r10 - 80) = r9 | |
43: bf a1 00 00 00 00 00 00 r1 = r10 | |
; struct ipv4_key_t ipv4_key = {.pid = pid}; // Line 102 | |
44: 07 01 00 00 b0 ff ff ff r1 += -80 | |
; ipv4_key.daddr = ({ typeof(__be32) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&sk->__sk_common.skc_daddr); _val; }); // Line 104 | |
45: b7 02 00 00 04 00 00 00 r2 = 4 | |
46: bf 73 00 00 00 00 00 00 r3 = r7 | |
47: 85 00 00 00 04 00 00 00 call 4 | |
48: 61 a1 b0 ff 00 00 00 00 r1 = *(u32 *)(r10 - 80) | |
; ipv4_key.lport = ({ typeof(__u16) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&sk->__sk_common.skc_num); _val; }); // Line 105 | |
49: 7b 1a 48 ff 00 00 00 00 *(u64 *)(r10 - 184) = r1 | |
50: 6b 9a b0 ff 00 00 00 00 *(u16 *)(r10 - 80) = r9 | |
51: bf 73 00 00 00 00 00 00 r3 = r7 | |
52: 07 03 00 00 0e 00 00 00 r3 += 14 | |
53: bf a1 00 00 00 00 00 00 r1 = r10 | |
; struct ipv4_key_t ipv4_key = {.pid = pid}; // Line 102 | |
54: 07 01 00 00 b0 ff ff ff r1 += -80 | |
; ipv4_key.lport = ({ typeof(__u16) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&sk->__sk_common.skc_num); _val; }); // Line 105 | |
55: b7 02 00 00 02 00 00 00 r2 = 2 | |
56: 85 00 00 00 04 00 00 00 call 4 | |
57: 69 a8 b0 ff 00 00 00 00 r8 = *(u16 *)(r10 - 80) | |
; dport = ({ typeof(__be16) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&sk->__sk_common.skc_dport); _val; }); // Line 106 | |
58: 6b 9a b0 ff 00 00 00 00 *(u16 *)(r10 - 80) = r9 | |
; ipv4_key.lport = ({ typeof(__u16) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&sk->__sk_common.skc_num); _val; }); // Line 105 | |
59: 07 07 00 00 0c 00 00 00 r7 += 12 | |
60: bf a1 00 00 00 00 00 00 r1 = r10 | |
; struct ipv4_key_t ipv4_key = {.pid = pid}; // Line 102 | |
61: 07 01 00 00 b0 ff ff ff r1 += -80 | |
; dport = ({ typeof(__be16) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&sk->__sk_common.skc_dport); _val; }); // Line 106 | |
62: b7 02 00 00 02 00 00 00 r2 = 2 | |
63: bf 73 00 00 00 00 00 00 r3 = r7 | |
64: 85 00 00 00 04 00 00 00 call 4 | |
65: 69 a1 b0 ff 00 00 00 00 r1 = *(u16 *)(r10 - 80) | |
; ({ typeof(ipv4_recv_bytes.key) _key = ipv4_key; typeof(ipv4_recv_bytes.leaf) *_leaf = bpf_map_lookup_elem_(bpf_pseudo_fd(1, -2), &_key); if (_leaf) (*_leaf) += copied;else { typeof(ipv4_recv_bytes.leaf) _zleaf; __builtin_memset(&_zleaf, 0, sizeof(_zleaf)); _zleaf += copied;bpf_map_update_elem_(bpf_pseudo_fd(1, -2), &_key, &_zleaf, BPF_NOEXIST); } }); // Line 109 | |
66: 79 a2 50 ff 00 00 00 00 r2 = *(u64 *)(r10 - 176) | |
67: 63 2a b4 ff 00 00 00 00 *(u32 *)(r10 - 76) = r2 | |
68: 63 6a b0 ff 00 00 00 00 *(u32 *)(r10 - 80) = r6 | |
69: 79 a2 48 ff 00 00 00 00 r2 = *(u64 *)(r10 - 184) | |
70: 63 2a b8 ff 00 00 00 00 *(u32 *)(r10 - 72) = r2 | |
71: 6b 8a bc ff 00 00 00 00 *(u16 *)(r10 - 68) = r8 | |
; ipv4_key.dport = ntohs(dport); // Line 107 | |
72: dc 01 00 00 10 00 00 00 r1 = be16 r1 | |
; ({ typeof(ipv4_recv_bytes.key) _key = ipv4_key; typeof(ipv4_recv_bytes.leaf) *_leaf = bpf_map_lookup_elem_(bpf_pseudo_fd(1, -2), &_key); if (_leaf) (*_leaf) += copied;else { typeof(ipv4_recv_bytes.leaf) _zleaf; __builtin_memset(&_zleaf, 0, sizeof(_zleaf)); _zleaf += copied;bpf_map_update_elem_(bpf_pseudo_fd(1, -2), &_key, &_zleaf, BPF_NOEXIST); } }); // Line 109 | |
73: 6b 1a be ff 00 00 00 00 *(u16 *)(r10 - 66) = r1 | |
74: 79 a1 f0 ff 00 00 00 00 r1 = *(u64 *)(r10 - 16) | |
75: 7b 1a c0 ff 00 00 00 00 *(u64 *)(r10 - 64) = r1 | |
76: 79 a1 f8 ff 00 00 00 00 r1 = *(u64 *)(r10 - 8) | |
77: 7b 1a c8 ff 00 00 00 00 *(u64 *)(r10 - 56) = r1 | |
78: 18 11 00 00 fe ff ff ff 00 00 00 00 00 00 00 00 ld_pseudo r1, 1, 4294967294 | |
80: bf a2 00 00 00 00 00 00 r2 = r10 | |
; struct ipv4_key_t ipv4_key = {.pid = pid}; // Line 102 | |
81: 07 02 00 00 b0 ff ff ff r2 += -80 | |
82: 85 00 00 00 01 00 00 00 call 1 | |
; ({ typeof(ipv4_recv_bytes.key) _key = ipv4_key; typeof(ipv4_recv_bytes.leaf) *_leaf = bpf_map_lookup_elem_(bpf_pseudo_fd(1, -2), &_key); if (_leaf) (*_leaf) += copied;else { typeof(ipv4_recv_bytes.leaf) _zleaf; __builtin_memset(&_zleaf, 0, sizeof(_zleaf)); _zleaf += copied;bpf_map_update_elem_(bpf_pseudo_fd(1, -2), &_key, &_zleaf, BPF_NOEXIST); } }); // Line 109 | |
83: 15 00 4c 00 00 00 00 00 if r0 == 0 goto +76 | |
84: 79 a2 60 ff 00 00 00 00 r2 = *(u64 *)(r10 - 160) | |
85: 67 02 00 00 20 00 00 00 r2 <<= 32 | |
86: c7 02 00 00 20 00 00 00 r2 s>>= 32 | |
87: 79 01 00 00 00 00 00 00 r1 = *(u64 *)(r0 + 0) | |
88: 0f 21 00 00 00 00 00 00 r1 += r2 | |
89: 7b 10 00 00 00 00 00 00 *(u64 *)(r0 + 0) = r1 | |
90: 05 00 5c 00 00 00 00 00 goto +92 | |
91: b7 09 00 00 00 00 00 00 r9 = 0 | |
; struct ipv6_key_t ipv6_key = {.pid = pid}; // Line 112 | |
92: 7b 9a d0 ff 00 00 00 00 *(u64 *)(r10 - 48) = r9 | |
93: 63 6a d0 ff 00 00 00 00 *(u32 *)(r10 - 48) = r6 | |
94: 7b 9a e8 ff 00 00 00 00 *(u64 *)(r10 - 24) = r9 | |
95: 7b 9a e0 ff 00 00 00 00 *(u64 *)(r10 - 32) = r9 | |
96: 7b 9a d8 ff 00 00 00 00 *(u64 *)(r10 - 40) = r9 | |
97: 7b 9a c8 ff 00 00 00 00 *(u64 *)(r10 - 56) = r9 | |
98: 7b 9a c0 ff 00 00 00 00 *(u64 *)(r10 - 64) = r9 | |
99: 7b 9a b8 ff 00 00 00 00 *(u64 *)(r10 - 72) = r9 | |
100: 7b 9a b0 ff 00 00 00 00 *(u64 *)(r10 - 80) = r9 | |
101: 79 a6 58 ff 00 00 00 00 r6 = *(u64 *)(r10 - 168) | |
; &sk->__sk_common.skc_v6_rcv_saddr.in6_u.u6_addr32); // Line 114 | |
102: bf 63 00 00 00 00 00 00 r3 = r6 | |
103: 07 03 00 00 48 00 00 00 r3 += 72 | |
104: bf a1 00 00 00 00 00 00 r1 = r10 | |
; struct ipv6_key_t ipv6_key = {.pid = pid}; // Line 112 | |
105: 07 01 00 00 b0 ff ff ff r1 += -80 | |
; bpf_probe_read(&ipv6_key.saddr, sizeof(ipv6_key.saddr), // Line 113 | |
106: b7 02 00 00 10 00 00 00 r2 = 16 | |
107: 85 00 00 00 04 00 00 00 call 4 | |
; &sk->__sk_common.skc_v6_daddr.in6_u.u6_addr32); // Line 116 | |
108: bf 63 00 00 00 00 00 00 r3 = r6 | |
109: 07 03 00 00 38 00 00 00 r3 += 56 | |
; struct ipv6_key_t ipv6_key = {.pid = pid}; // Line 112 | |
110: bf a1 00 00 00 00 00 00 r1 = r10 | |
111: 07 01 00 00 c0 ff ff ff r1 += -64 | |
; bpf_probe_read(&ipv6_key.daddr, sizeof(ipv6_key.daddr), // Line 115 | |
112: b7 02 00 00 10 00 00 00 r2 = 16 | |
113: 85 00 00 00 04 00 00 00 call 4 | |
; ipv6_key.lport = ({ typeof(__u16) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&sk->__sk_common.skc_num); _val; }); // Line 117 | |
114: 6b 9a 70 ff 00 00 00 00 *(u16 *)(r10 - 144) = r9 | |
115: bf 63 00 00 00 00 00 00 r3 = r6 | |
116: 07 03 00 00 0e 00 00 00 r3 += 14 | |
117: bf a1 00 00 00 00 00 00 r1 = r10 | |
; struct ipv6_key_t ipv6_key = {.pid = pid}; // Line 112 | |
118: 07 01 00 00 70 ff ff ff r1 += -144 | |
; ipv6_key.lport = ({ typeof(__u16) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&sk->__sk_common.skc_num); _val; }); // Line 117 | |
119: b7 02 00 00 02 00 00 00 r2 = 2 | |
120: 85 00 00 00 04 00 00 00 call 4 | |
121: 69 a1 70 ff 00 00 00 00 r1 = *(u16 *)(r10 - 144) | |
122: 6b 1a d4 ff 00 00 00 00 *(u16 *)(r10 - 44) = r1 | |
; dport = ({ typeof(__be16) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&sk->__sk_common.skc_dport); _val; }); // Line 118 | |
123: 6b 9a 70 ff 00 00 00 00 *(u16 *)(r10 - 144) = r9 | |
; ipv6_key.lport = ({ typeof(__u16) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&sk->__sk_common.skc_num); _val; }); // Line 117 | |
124: 07 06 00 00 0c 00 00 00 r6 += 12 | |
125: bf a1 00 00 00 00 00 00 r1 = r10 | |
; struct ipv6_key_t ipv6_key = {.pid = pid}; // Line 112 | |
126: 07 01 00 00 70 ff ff ff r1 += -144 | |
; dport = ({ typeof(__be16) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&sk->__sk_common.skc_dport); _val; }); // Line 118 | |
127: b7 02 00 00 02 00 00 00 r2 = 2 | |
128: bf 63 00 00 00 00 00 00 r3 = r6 | |
129: 85 00 00 00 04 00 00 00 call 4 | |
130: 69 a1 70 ff 00 00 00 00 r1 = *(u16 *)(r10 - 144) | |
; ipv6_key.dport = ntohs(dport); // Line 119 | |
131: dc 01 00 00 10 00 00 00 r1 = be16 r1 | |
132: 6b 1a d6 ff 00 00 00 00 *(u16 *)(r10 - 42) = r1 | |
; __builtin_memcpy(&ipv6_key.cgrouppath, &cgpath, sizeof(ipv6_key.cgrouppath)); // Line 120 | |
133: 79 a1 f0 ff 00 00 00 00 r1 = *(u64 *)(r10 - 16) | |
134: 7b 1a d8 ff 00 00 00 00 *(u64 *)(r10 - 40) = r1 | |
135: 79 a1 f8 ff 00 00 00 00 r1 = *(u64 *)(r10 - 8) | |
136: 7b 1a e0 ff 00 00 00 00 *(u64 *)(r10 - 32) = r1 | |
; ({ typeof(ipv6_recv_bytes.key) _key = ipv6_key; typeof(ipv6_recv_bytes.leaf) *_leaf = bpf_map_lookup_elem_(bpf_pseudo_fd(1, -4), &_key); if (_leaf) (*_leaf) += copied;else { typeof(ipv6_recv_bytes.leaf) _zleaf; __builtin_memset(&_zleaf, 0, sizeof(_zleaf)); _zleaf += copied;bpf_map_update_elem_(bpf_pseudo_fd(1, -4), &_key, &_zleaf, BPF_NOEXIST); } }); // Line 121 | |
137: 79 a1 e8 ff 00 00 00 00 r1 = *(u64 *)(r10 - 24) | |
138: 7b 1a a8 ff 00 00 00 00 *(u64 *)(r10 - 88) = r1 | |
139: 79 a1 e0 ff 00 00 00 00 r1 = *(u64 *)(r10 - 32) | |
140: 7b 1a a0 ff 00 00 00 00 *(u64 *)(r10 - 96) = r1 | |
141: 79 a1 d8 ff 00 00 00 00 r1 = *(u64 *)(r10 - 40) | |
142: 7b 1a 98 ff 00 00 00 00 *(u64 *)(r10 - 104) = r1 | |
143: 79 a1 d0 ff 00 00 00 00 r1 = *(u64 *)(r10 - 48) | |
144: 7b 1a 90 ff 00 00 00 00 *(u64 *)(r10 - 112) = r1 | |
145: 79 a1 c8 ff 00 00 00 00 r1 = *(u64 *)(r10 - 56) | |
146: 7b 1a 88 ff 00 00 00 00 *(u64 *)(r10 - 120) = r1 | |
147: 79 a1 c0 ff 00 00 00 00 r1 = *(u64 *)(r10 - 64) | |
148: 7b 1a 80 ff 00 00 00 00 *(u64 *)(r10 - 128) = r1 | |
149: 79 a1 b8 ff 00 00 00 00 r1 = *(u64 *)(r10 - 72) | |
150: 7b 1a 78 ff 00 00 00 00 *(u64 *)(r10 - 136) = r1 | |
151: 79 a1 b0 ff 00 00 00 00 r1 = *(u64 *)(r10 - 80) | |
152: 7b 1a 70 ff 00 00 00 00 *(u64 *)(r10 - 144) = r1 | |
153: 18 11 00 00 fc ff ff ff 00 00 00 00 00 00 00 00 ld_pseudo r1, 1, 4294967292 | |
155: bf a2 00 00 00 00 00 00 r2 = r10 | |
; struct ipv6_key_t ipv6_key = {.pid = pid}; // Line 112 | |
156: 07 02 00 00 70 ff ff ff r2 += -144 | |
157: 85 00 00 00 01 00 00 00 call 1 | |
; ({ typeof(ipv6_recv_bytes.key) _key = ipv6_key; typeof(ipv6_recv_bytes.leaf) *_leaf = bpf_map_lookup_elem_(bpf_pseudo_fd(1, -4), &_key); if (_leaf) (*_leaf) += copied;else { typeof(ipv6_recv_bytes.leaf) _zleaf; __builtin_memset(&_zleaf, 0, sizeof(_zleaf)); _zleaf += copied;bpf_map_update_elem_(bpf_pseudo_fd(1, -4), &_key, &_zleaf, BPF_NOEXIST); } }); // Line 121 | |
158: 15 00 0c 00 00 00 00 00 if r0 == 0 goto +12 | |
159: 05 00 b4 ff 00 00 00 00 goto -76 | |
160: 79 a1 60 ff 00 00 00 00 r1 = *(u64 *)(r10 - 160) | |
; ({ typeof(ipv4_recv_bytes.key) _key = ipv4_key; typeof(ipv4_recv_bytes.leaf) *_leaf = bpf_map_lookup_elem_(bpf_pseudo_fd(1, -2), &_key); if (_leaf) (*_leaf) += copied;else { typeof(ipv4_recv_bytes.leaf) _zleaf; __builtin_memset(&_zleaf, 0, sizeof(_zleaf)); _zleaf += copied;bpf_map_update_elem_(bpf_pseudo_fd(1, -2), &_key, &_zleaf, BPF_NOEXIST); } }); // Line 109 | |
161: 67 01 00 00 20 00 00 00 r1 <<= 32 | |
162: c7 01 00 00 20 00 00 00 r1 s>>= 32 | |
163: 7b 1a 70 ff 00 00 00 00 *(u64 *)(r10 - 144) = r1 | |
164: 18 11 00 00 fe ff ff ff 00 00 00 00 00 00 00 00 ld_pseudo r1, 1, 4294967294 | |
166: bf a2 00 00 00 00 00 00 r2 = r10 | |
167: 07 02 00 00 b0 ff ff ff r2 += -80 | |
168: bf a3 00 00 00 00 00 00 r3 = r10 | |
169: 07 03 00 00 70 ff ff ff r3 += -144 | |
170: 05 00 0a 00 00 00 00 00 goto +10 | |
171: 79 a1 60 ff 00 00 00 00 r1 = *(u64 *)(r10 - 160) | |
; ({ typeof(ipv6_recv_bytes.key) _key = ipv6_key; typeof(ipv6_recv_bytes.leaf) *_leaf = bpf_map_lookup_elem_(bpf_pseudo_fd(1, -4), &_key); if (_leaf) (*_leaf) += copied;else { typeof(ipv6_recv_bytes.leaf) _zleaf; __builtin_memset(&_zleaf, 0, sizeof(_zleaf)); _zleaf += copied;bpf_map_update_elem_(bpf_pseudo_fd(1, -4), &_key, &_zleaf, BPF_NOEXIST); } }); // Line 121 | |
172: 67 01 00 00 20 00 00 00 r1 <<= 32 | |
173: c7 01 00 00 20 00 00 00 r1 s>>= 32 | |
174: 7b 1a 68 ff 00 00 00 00 *(u64 *)(r10 - 152) = r1 | |
175: 18 11 00 00 fc ff ff ff 00 00 00 00 00 00 00 00 ld_pseudo r1, 1, 4294967292 | |
177: bf a2 00 00 00 00 00 00 r2 = r10 | |
178: 07 02 00 00 70 ff ff ff r2 += -144 | |
179: bf a3 00 00 00 00 00 00 r3 = r10 | |
180: 07 03 00 00 68 ff ff ff r3 += -152 | |
181: b7 04 00 00 01 00 00 00 r4 = 1 | |
182: 85 00 00 00 02 00 00 00 call 2 | |
; } // Line 126 | |
183: b7 00 00 00 00 00 00 00 r0 = 0 | |
184: 95 00 00 00 00 00 00 00 exit | |
Disassembly of section .bpf.fn.kprobe__tcp_sendmsg: | |
kprobe__tcp_sendmsg: | |
; { // Line 42 | |
0: 79 12 60 00 00 00 00 00 r2 = *(u64 *)(r1 + 96) | |
; struct sock *sk = ctx->di; struct msghdr *msg = ctx->si; size_t size = ctx->dx; // Line 43 | |
1: 7b 2a 60 ff 00 00 00 00 *(u64 *)(r10 - 160) = r2 | |
2: 79 16 70 00 00 00 00 00 r6 = *(u64 *)(r1 + 112) | |
; u32 pid = bpf_get_current_pid_tgid() >> 32; // Line 44 | |
3: 85 00 00 00 0e 00 00 00 call 14 | |
4: bf 07 00 00 00 00 00 00 r7 = r0 | |
5: b7 09 00 00 00 00 00 00 r9 = 0 | |
; u16 dport = 0, family = ({ typeof(unsigned short) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&sk->__sk_common.skc_family); _val; }); // Line 45 | |
6: 6b 9a b0 ff 00 00 00 00 *(u16 *)(r10 - 80) = r9 | |
7: bf 63 00 00 00 00 00 00 r3 = r6 | |
8: 07 03 00 00 10 00 00 00 r3 += 16 | |
9: bf a1 00 00 00 00 00 00 r1 = r10 | |
; int kprobe__tcp_sendmsg(struct pt_regs *ctx) // Line 41 | |
10: 07 01 00 00 b0 ff ff ff r1 += -80 | |
; u16 dport = 0, family = ({ typeof(unsigned short) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&sk->__sk_common.skc_family); _val; }); // Line 45 | |
11: b7 02 00 00 02 00 00 00 r2 = 2 | |
12: 85 00 00 00 04 00 00 00 call 4 | |
13: 69 a8 b0 ff 00 00 00 00 r8 = *(u16 *)(r10 - 80) | |
; char cgpath[16] = "/"; // Line 47 | |
14: 7b 9a f8 ff 00 00 00 00 *(u64 *)(r10 - 8) = r9 | |
15: b7 01 00 00 2f 00 00 00 r1 = 47 | |
16: 7b 1a f0 ff 00 00 00 00 *(u64 *)(r10 - 16) = r1 | |
; t = (struct task_struct *)bpf_get_current_task(); // Line 49 | |
17: 85 00 00 00 23 00 00 00 call 35 | |
18: bf a2 00 00 00 00 00 00 r2 = r10 | |
; int kprobe__tcp_sendmsg(struct pt_regs *ctx) // Line 41 | |
19: 07 02 00 00 f0 ff ff ff r2 += -16 | |
; task_cgroup_path(t, (char *) &cgpath, sizeof(cgpath)); // Line 50 | |
20: bf 01 00 00 00 00 00 00 r1 = r0 | |
21: b7 03 00 00 10 00 00 00 r3 = 16 | |
22: 85 10 00 00 ff ff ff ff call -1 | |
; u32 pid = bpf_get_current_pid_tgid() >> 32; // Line 44 | |
23: 77 07 00 00 20 00 00 00 r7 >>= 32 | |
; if (family == AF_INET) { // Line 52 | |
24: 15 08 3a 00 0a 00 00 00 if r8 == 10 goto +58 | |
25: 55 08 8f 00 02 00 00 00 if r8 != 2 goto +143 | |
26: b7 09 00 00 00 00 00 00 r9 = 0 | |
; ipv4_key.saddr = ({ typeof(__be32) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&sk->__sk_common.skc_rcv_saddr); _val; }); // Line 54 | |
27: 63 9a b0 ff 00 00 00 00 *(u32 *)(r10 - 80) = r9 | |
28: bf 63 00 00 00 00 00 00 r3 = r6 | |
29: 07 03 00 00 04 00 00 00 r3 += 4 | |
30: bf a1 00 00 00 00 00 00 r1 = r10 | |
; struct ipv4_key_t ipv4_key = {.pid = pid}; // Line 53 | |
31: 07 01 00 00 b0 ff ff ff r1 += -80 | |
; ipv4_key.saddr = ({ typeof(__be32) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&sk->__sk_common.skc_rcv_saddr); _val; }); // Line 54 | |
32: b7 02 00 00 04 00 00 00 r2 = 4 | |
33: 85 00 00 00 04 00 00 00 call 4 | |
34: 61 a1 b0 ff 00 00 00 00 r1 = *(u32 *)(r10 - 80) | |
; ipv4_key.daddr = ({ typeof(__be32) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&sk->__sk_common.skc_daddr); _val; }); // Line 55 | |
35: 7b 1a 58 ff 00 00 00 00 *(u64 *)(r10 - 168) = r1 | |
36: 63 9a b0 ff 00 00 00 00 *(u32 *)(r10 - 80) = r9 | |
37: bf a1 00 00 00 00 00 00 r1 = r10 | |
; struct ipv4_key_t ipv4_key = {.pid = pid}; // Line 53 | |
38: 07 01 00 00 b0 ff ff ff r1 += -80 | |
; ipv4_key.daddr = ({ typeof(__be32) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&sk->__sk_common.skc_daddr); _val; }); // Line 55 | |
39: b7 02 00 00 04 00 00 00 r2 = 4 | |
40: bf 63 00 00 00 00 00 00 r3 = r6 | |
41: 85 00 00 00 04 00 00 00 call 4 | |
42: 61 a1 b0 ff 00 00 00 00 r1 = *(u32 *)(r10 - 80) | |
; ipv4_key.lport = ({ typeof(__u16) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&sk->__sk_common.skc_num); _val; }); // Line 56 | |
43: 7b 1a 50 ff 00 00 00 00 *(u64 *)(r10 - 176) = r1 | |
44: 6b 9a b0 ff 00 00 00 00 *(u16 *)(r10 - 80) = r9 | |
45: bf 63 00 00 00 00 00 00 r3 = r6 | |
46: 07 03 00 00 0e 00 00 00 r3 += 14 | |
47: bf a1 00 00 00 00 00 00 r1 = r10 | |
; struct ipv4_key_t ipv4_key = {.pid = pid}; // Line 53 | |
48: 07 01 00 00 b0 ff ff ff r1 += -80 | |
; ipv4_key.lport = ({ typeof(__u16) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&sk->__sk_common.skc_num); _val; }); // Line 56 | |
49: b7 02 00 00 02 00 00 00 r2 = 2 | |
50: 85 00 00 00 04 00 00 00 call 4 | |
51: 69 a8 b0 ff 00 00 00 00 r8 = *(u16 *)(r10 - 80) | |
; dport = ({ typeof(__be16) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&sk->__sk_common.skc_dport); _val; }); // Line 57 | |
52: 6b 9a b0 ff 00 00 00 00 *(u16 *)(r10 - 80) = r9 | |
; ipv4_key.lport = ({ typeof(__u16) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&sk->__sk_common.skc_num); _val; }); // Line 56 | |
53: 07 06 00 00 0c 00 00 00 r6 += 12 | |
54: bf a1 00 00 00 00 00 00 r1 = r10 | |
; struct ipv4_key_t ipv4_key = {.pid = pid}; // Line 53 | |
55: 07 01 00 00 b0 ff ff ff r1 += -80 | |
; dport = ({ typeof(__be16) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&sk->__sk_common.skc_dport); _val; }); // Line 57 | |
56: b7 02 00 00 02 00 00 00 r2 = 2 | |
57: bf 63 00 00 00 00 00 00 r3 = r6 | |
58: 85 00 00 00 04 00 00 00 call 4 | |
59: 69 a1 b0 ff 00 00 00 00 r1 = *(u16 *)(r10 - 80) | |
; ({ typeof(ipv4_send_bytes.key) _key = ipv4_key; typeof(ipv4_send_bytes.leaf) *_leaf = bpf_map_lookup_elem_(bpf_pseudo_fd(1, -1), &_key); if (_leaf) (*_leaf) += size;else { typeof(ipv4_send_bytes.leaf) _zleaf; __builtin_memset(&_zleaf, 0, sizeof(_zleaf)); _zleaf += size;bpf_map_update_elem_(bpf_pseudo_fd(1, -1), &_key, &_zleaf, BPF_NOEXIST); } }); // Line 60 | |
60: 79 a2 58 ff 00 00 00 00 r2 = *(u64 *)(r10 - 168) | |
61: 63 2a b4 ff 00 00 00 00 *(u32 *)(r10 - 76) = r2 | |
62: 63 7a b0 ff 00 00 00 00 *(u32 *)(r10 - 80) = r7 | |
63: 79 a2 50 ff 00 00 00 00 r2 = *(u64 *)(r10 - 176) | |
64: 63 2a b8 ff 00 00 00 00 *(u32 *)(r10 - 72) = r2 | |
65: 6b 8a bc ff 00 00 00 00 *(u16 *)(r10 - 68) = r8 | |
; ipv4_key.dport = ntohs(dport); // Line 58 | |
66: dc 01 00 00 10 00 00 00 r1 = be16 r1 | |
; ({ typeof(ipv4_send_bytes.key) _key = ipv4_key; typeof(ipv4_send_bytes.leaf) *_leaf = bpf_map_lookup_elem_(bpf_pseudo_fd(1, -1), &_key); if (_leaf) (*_leaf) += size;else { typeof(ipv4_send_bytes.leaf) _zleaf; __builtin_memset(&_zleaf, 0, sizeof(_zleaf)); _zleaf += size;bpf_map_update_elem_(bpf_pseudo_fd(1, -1), &_key, &_zleaf, BPF_NOEXIST); } }); // Line 60 | |
67: 6b 1a be ff 00 00 00 00 *(u16 *)(r10 - 66) = r1 | |
68: 79 a1 f0 ff 00 00 00 00 r1 = *(u64 *)(r10 - 16) | |
69: 7b 1a c0 ff 00 00 00 00 *(u64 *)(r10 - 64) = r1 | |
70: 79 a1 f8 ff 00 00 00 00 r1 = *(u64 *)(r10 - 8) | |
71: 7b 1a c8 ff 00 00 00 00 *(u64 *)(r10 - 56) = r1 | |
72: 18 11 00 00 ff ff ff ff 00 00 00 00 00 00 00 00 ld_pseudo r1, 1, 4294967295 | |
74: bf a2 00 00 00 00 00 00 r2 = r10 | |
; struct ipv4_key_t ipv4_key = {.pid = pid}; // Line 53 | |
75: 07 02 00 00 b0 ff ff ff r2 += -80 | |
76: 85 00 00 00 01 00 00 00 call 1 | |
; ({ typeof(ipv4_send_bytes.key) _key = ipv4_key; typeof(ipv4_send_bytes.leaf) *_leaf = bpf_map_lookup_elem_(bpf_pseudo_fd(1, -1), &_key); if (_leaf) (*_leaf) += size;else { typeof(ipv4_send_bytes.leaf) _zleaf; __builtin_memset(&_zleaf, 0, sizeof(_zleaf)); _zleaf += size;bpf_map_update_elem_(bpf_pseudo_fd(1, -1), &_key, &_zleaf, BPF_NOEXIST); } }); // Line 60 | |
77: 15 00 48 00 00 00 00 00 if r0 == 0 goto +72 | |
78: 79 01 00 00 00 00 00 00 r1 = *(u64 *)(r0 + 0) | |
79: 79 a2 60 ff 00 00 00 00 r2 = *(u64 *)(r10 - 160) | |
80: 0f 21 00 00 00 00 00 00 r1 += r2 | |
81: 7b 10 00 00 00 00 00 00 *(u64 *)(r0 + 0) = r1 | |
82: 05 00 56 00 00 00 00 00 goto +86 | |
; struct ipv6_key_t ipv6_key = {.pid = pid}; // Line 63 | |
83: 7b 9a d0 ff 00 00 00 00 *(u64 *)(r10 - 48) = r9 | |
84: 63 7a d0 ff 00 00 00 00 *(u32 *)(r10 - 48) = r7 | |
85: 7b 9a e8 ff 00 00 00 00 *(u64 *)(r10 - 24) = r9 | |
86: 7b 9a e0 ff 00 00 00 00 *(u64 *)(r10 - 32) = r9 | |
87: 7b 9a d8 ff 00 00 00 00 *(u64 *)(r10 - 40) = r9 | |
88: 7b 9a c8 ff 00 00 00 00 *(u64 *)(r10 - 56) = r9 | |
89: 7b 9a c0 ff 00 00 00 00 *(u64 *)(r10 - 64) = r9 | |
90: 7b 9a b8 ff 00 00 00 00 *(u64 *)(r10 - 72) = r9 | |
91: 7b 9a b0 ff 00 00 00 00 *(u64 *)(r10 - 80) = r9 | |
; &sk->__sk_common.skc_v6_rcv_saddr.in6_u.u6_addr32); // Line 65 | |
92: bf 63 00 00 00 00 00 00 r3 = r6 | |
93: 07 03 00 00 48 00 00 00 r3 += 72 | |
94: bf a1 00 00 00 00 00 00 r1 = r10 | |
; struct ipv6_key_t ipv6_key = {.pid = pid}; // Line 63 | |
95: 07 01 00 00 b0 ff ff ff r1 += -80 | |
; bpf_probe_read(&ipv6_key.saddr, sizeof(ipv6_key.saddr), // Line 64 | |
96: b7 02 00 00 10 00 00 00 r2 = 16 | |
97: 85 00 00 00 04 00 00 00 call 4 | |
; &sk->__sk_common.skc_v6_daddr.in6_u.u6_addr32); // Line 67 | |
98: bf 63 00 00 00 00 00 00 r3 = r6 | |
99: 07 03 00 00 38 00 00 00 r3 += 56 | |
; struct ipv6_key_t ipv6_key = {.pid = pid}; // Line 63 | |
100: bf a1 00 00 00 00 00 00 r1 = r10 | |
101: 07 01 00 00 c0 ff ff ff r1 += -64 | |
; bpf_probe_read(&ipv6_key.daddr, sizeof(ipv6_key.daddr), // Line 66 | |
102: b7 02 00 00 10 00 00 00 r2 = 16 | |
103: 85 00 00 00 04 00 00 00 call 4 | |
; ipv6_key.lport = ({ typeof(__u16) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&sk->__sk_common.skc_num); _val; }); // Line 68 | |
104: 6b 9a 70 ff 00 00 00 00 *(u16 *)(r10 - 144) = r9 | |
105: bf 63 00 00 00 00 00 00 r3 = r6 | |
106: 07 03 00 00 0e 00 00 00 r3 += 14 | |
107: bf a1 00 00 00 00 00 00 r1 = r10 | |
; struct ipv6_key_t ipv6_key = {.pid = pid}; // Line 63 | |
108: 07 01 00 00 70 ff ff ff r1 += -144 | |
; ipv6_key.lport = ({ typeof(__u16) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&sk->__sk_common.skc_num); _val; }); // Line 68 | |
109: b7 02 00 00 02 00 00 00 r2 = 2 | |
110: 85 00 00 00 04 00 00 00 call 4 | |
111: 69 a1 70 ff 00 00 00 00 r1 = *(u16 *)(r10 - 144) | |
112: 6b 1a d4 ff 00 00 00 00 *(u16 *)(r10 - 44) = r1 | |
; dport = ({ typeof(__be16) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&sk->__sk_common.skc_dport); _val; }); // Line 69 | |
113: 6b 9a 70 ff 00 00 00 00 *(u16 *)(r10 - 144) = r9 | |
; ipv6_key.lport = ({ typeof(__u16) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&sk->__sk_common.skc_num); _val; }); // Line 68 | |
114: 07 06 00 00 0c 00 00 00 r6 += 12 | |
115: bf a1 00 00 00 00 00 00 r1 = r10 | |
; struct ipv6_key_t ipv6_key = {.pid = pid}; // Line 63 | |
116: 07 01 00 00 70 ff ff ff r1 += -144 | |
; dport = ({ typeof(__be16) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&sk->__sk_common.skc_dport); _val; }); // Line 69 | |
117: b7 02 00 00 02 00 00 00 r2 = 2 | |
118: bf 63 00 00 00 00 00 00 r3 = r6 | |
119: 85 00 00 00 04 00 00 00 call 4 | |
120: 69 a1 70 ff 00 00 00 00 r1 = *(u16 *)(r10 - 144) | |
; ipv6_key.dport = ntohs(dport); // Line 70 | |
121: dc 01 00 00 10 00 00 00 r1 = be16 r1 | |
122: 6b 1a d6 ff 00 00 00 00 *(u16 *)(r10 - 42) = r1 | |
; __builtin_memcpy(&ipv6_key.cgrouppath, &cgpath, sizeof(ipv6_key.cgrouppath)); // Line 71 | |
123: 79 a1 f0 ff 00 00 00 00 r1 = *(u64 *)(r10 - 16) | |
124: 7b 1a d8 ff 00 00 00 00 *(u64 *)(r10 - 40) = r1 | |
125: 79 a1 f8 ff 00 00 00 00 r1 = *(u64 *)(r10 - 8) | |
126: 7b 1a e0 ff 00 00 00 00 *(u64 *)(r10 - 32) = r1 | |
; ({ typeof(ipv6_send_bytes.key) _key = ipv6_key; typeof(ipv6_send_bytes.leaf) *_leaf = bpf_map_lookup_elem_(bpf_pseudo_fd(1, -3), &_key); if (_leaf) (*_leaf) += size;else { typeof(ipv6_send_bytes.leaf) _zleaf; __builtin_memset(&_zleaf, 0, sizeof(_zleaf)); _zleaf += size;bpf_map_update_elem_(bpf_pseudo_fd(1, -3), &_key, &_zleaf, BPF_NOEXIST); } }); // Line 72 | |
127: 79 a1 e8 ff 00 00 00 00 r1 = *(u64 *)(r10 - 24) | |
128: 7b 1a a8 ff 00 00 00 00 *(u64 *)(r10 - 88) = r1 | |
129: 79 a1 e0 ff 00 00 00 00 r1 = *(u64 *)(r10 - 32) | |
130: 7b 1a a0 ff 00 00 00 00 *(u64 *)(r10 - 96) = r1 | |
131: 79 a1 d8 ff 00 00 00 00 r1 = *(u64 *)(r10 - 40) | |
132: 7b 1a 98 ff 00 00 00 00 *(u64 *)(r10 - 104) = r1 | |
133: 79 a1 d0 ff 00 00 00 00 r1 = *(u64 *)(r10 - 48) | |
134: 7b 1a 90 ff 00 00 00 00 *(u64 *)(r10 - 112) = r1 | |
135: 79 a1 c8 ff 00 00 00 00 r1 = *(u64 *)(r10 - 56) | |
136: 7b 1a 88 ff 00 00 00 00 *(u64 *)(r10 - 120) = r1 | |
137: 79 a1 c0 ff 00 00 00 00 r1 = *(u64 *)(r10 - 64) | |
138: 7b 1a 80 ff 00 00 00 00 *(u64 *)(r10 - 128) = r1 | |
139: 79 a1 b8 ff 00 00 00 00 r1 = *(u64 *)(r10 - 72) | |
140: 7b 1a 78 ff 00 00 00 00 *(u64 *)(r10 - 136) = r1 | |
141: 79 a1 b0 ff 00 00 00 00 r1 = *(u64 *)(r10 - 80) | |
142: 7b 1a 70 ff 00 00 00 00 *(u64 *)(r10 - 144) = r1 | |
143: 18 11 00 00 fd ff ff ff 00 00 00 00 00 00 00 00 ld_pseudo r1, 1, 4294967293 | |
145: bf a2 00 00 00 00 00 00 r2 = r10 | |
; struct ipv6_key_t ipv6_key = {.pid = pid}; // Line 63 | |
146: 07 02 00 00 70 ff ff ff r2 += -144 | |
147: 85 00 00 00 01 00 00 00 call 1 | |
; ({ typeof(ipv6_send_bytes.key) _key = ipv6_key; typeof(ipv6_send_bytes.leaf) *_leaf = bpf_map_lookup_elem_(bpf_pseudo_fd(1, -3), &_key); if (_leaf) (*_leaf) += size;else { typeof(ipv6_send_bytes.leaf) _zleaf; __builtin_memset(&_zleaf, 0, sizeof(_zleaf)); _zleaf += size;bpf_map_update_elem_(bpf_pseudo_fd(1, -3), &_key, &_zleaf, BPF_NOEXIST); } }); // Line 72 | |
148: 15 00 0a 00 00 00 00 00 if r0 == 0 goto +10 | |
149: 05 00 b8 ff 00 00 00 00 goto -72 | |
; ({ typeof(ipv4_send_bytes.key) _key = ipv4_key; typeof(ipv4_send_bytes.leaf) *_leaf = bpf_map_lookup_elem_(bpf_pseudo_fd(1, -1), &_key); if (_leaf) (*_leaf) += size;else { typeof(ipv4_send_bytes.leaf) _zleaf; __builtin_memset(&_zleaf, 0, sizeof(_zleaf)); _zleaf += size;bpf_map_update_elem_(bpf_pseudo_fd(1, -1), &_key, &_zleaf, BPF_NOEXIST); } }); // Line 60 | |
150: 79 a1 60 ff 00 00 00 00 r1 = *(u64 *)(r10 - 160) | |
151: 7b 1a 70 ff 00 00 00 00 *(u64 *)(r10 - 144) = r1 | |
152: 18 11 00 00 ff ff ff ff 00 00 00 00 00 00 00 00 ld_pseudo r1, 1, 4294967295 | |
154: bf a2 00 00 00 00 00 00 r2 = r10 | |
155: 07 02 00 00 b0 ff ff ff r2 += -80 | |
156: bf a3 00 00 00 00 00 00 r3 = r10 | |
157: 07 03 00 00 70 ff ff ff r3 += -144 | |
158: 05 00 08 00 00 00 00 00 goto +8 | |
; ({ typeof(ipv6_send_bytes.key) _key = ipv6_key; typeof(ipv6_send_bytes.leaf) *_leaf = bpf_map_lookup_elem_(bpf_pseudo_fd(1, -3), &_key); if (_leaf) (*_leaf) += size;else { typeof(ipv6_send_bytes.leaf) _zleaf; __builtin_memset(&_zleaf, 0, sizeof(_zleaf)); _zleaf += size;bpf_map_update_elem_(bpf_pseudo_fd(1, -3), &_key, &_zleaf, BPF_NOEXIST); } }); // Line 72 | |
159: 79 a1 60 ff 00 00 00 00 r1 = *(u64 *)(r10 - 160) | |
160: 7b 1a 68 ff 00 00 00 00 *(u64 *)(r10 - 152) = r1 | |
161: 18 11 00 00 fd ff ff ff 00 00 00 00 00 00 00 00 ld_pseudo r1, 1, 4294967293 | |
163: bf a2 00 00 00 00 00 00 r2 = r10 | |
164: 07 02 00 00 70 ff ff ff r2 += -144 | |
165: bf a3 00 00 00 00 00 00 r3 = r10 | |
166: 07 03 00 00 68 ff ff ff r3 += -152 | |
167: b7 04 00 00 01 00 00 00 r4 = 1 | |
168: 85 00 00 00 02 00 00 00 call 2 | |
; return 0; // Line 76 | |
169: b7 00 00 00 00 00 00 00 r0 = 0 | |
170: 95 00 00 00 00 00 00 00 exit | |
bpf: Failed to load program: Invalid argument | |
last insn is not an exit or jmp |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment