generateRSTSentTracepoint creates the tcp_send_reset tracepoint.
()
| 174 | |
| 175 | // generateRSTSentTracepoint creates the tcp_send_reset tracepoint. |
| 176 | func (g *ScriptGenerator) generateRSTSentTracepoint() string { |
| 177 | var sb strings.Builder |
| 178 | |
| 179 | sb.WriteString("tracepoint:tcp:tcp_send_reset\n") |
| 180 | sb.WriteString("{\n") |
| 181 | |
| 182 | // Only process IPv4 (family == 2) |
| 183 | sb.WriteString(` if (args->family != 2) { return; } |
| 184 | |
| 185 | `) |
| 186 | |
| 187 | // Extract bytes into local vars first (required for BPF verifier) |
| 188 | if g.hasIPFilter() { |
| 189 | sb.WriteString(` // Read IP bytes into local vars for filtering |
| 190 | $s0 = args->saddr[0]; $s1 = args->saddr[1]; $s2 = args->saddr[2]; $s3 = args->saddr[3]; |
| 191 | $d0 = args->daddr[0]; $d1 = args->daddr[1]; $d2 = args->daddr[2]; $d3 = args->daddr[3]; |
| 192 | |
| 193 | `) |
| 194 | // Add IP filter using local vars |
| 195 | sb.WriteString(g.buildTCPIPFilterCheckFromLocalVars()) |
| 196 | } |
| 197 | |
| 198 | sb.WriteString(` $saddr = ntop(2, args->saddr); |
| 199 | $daddr = ntop(2, args->daddr); |
| 200 | $sport = args->sport; |
| 201 | $dport = args->dport; |
| 202 | |
| 203 | `) |
| 204 | |
| 205 | if g.config.OutputJSON { |
| 206 | sb.WriteString(` printf("{\"time\":\"%s\",\"type\":\"RST_SENT\",\"probe\":\"tcp_send_reset\",\"src_ip\":\"%s\",\"src_port\":%d,\"dst_ip\":\"%s\",\"dst_port\":%d}\n", |
| 207 | strftime("%H:%M:%S", nsecs), |
| 208 | $saddr, $sport, |
| 209 | $daddr, $dport); |
| 210 | `) |
| 211 | } else { |
| 212 | sb.WriteString(` printf("%-12s %-10s %-18s %-18s %-18s %s:%-5d -> %s:%-5d\n", |
| 213 | strftime("%H:%M:%S", nsecs), |
| 214 | "RST_SENT", |
| 215 | "-", |
| 216 | "-", |
| 217 | "tcp_send_reset", |
| 218 | $saddr, $sport, |
| 219 | $daddr, $dport); |
| 220 | `) |
| 221 | } |
| 222 | |
| 223 | sb.WriteString("}\n\n") |
| 224 | return sb.String() |
| 225 | } |
| 226 | |
| 227 | // generateRSTReceivedTracepoint creates the tcp_receive_reset tracepoint. |
| 228 | func (g *ScriptGenerator) generateRSTReceivedTracepoint() string { |
no test coverage detected