MCPcopy
hub / github.com/microsoft/retina / generateRSTSentTracepoint

Method generateRSTSentTracepoint

shell/tracescript.go:176–225  ·  view source on GitHub ↗

generateRSTSentTracepoint creates the tcp_send_reset tracepoint.

()

Source from the content-addressed store, hash-verified

174
175// generateRSTSentTracepoint creates the tcp_send_reset tracepoint.
176func (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.
228func (g *ScriptGenerator) generateRSTReceivedTracepoint() string {

Callers 1

Calls 3

hasIPFilterMethod · 0.95
StringMethod · 0.45

Tested by

no test coverage detected