make tcpv4connect.py example tracer more robust
authorJean-Tiare Le Bigot <jt@yadutaf.fr>
Sun, 21 Feb 2016 22:45:29 +0000 (23:45 +0100)
committerJean-Tiare Le Bigot <jt@yadutaf.fr>
Sun, 21 Feb 2016 22:45:29 +0000 (23:45 +0100)
examples/tracing/tcpv4connect.py

index b5a1062..6841115 100755 (executable)
@@ -62,7 +62,7 @@ int kretprobe__tcp_v4_connect(struct pt_regs *ctx)
        bpf_probe_read(&dport, sizeof(dport), &skp->__sk_common.skc_dport);
 
        // output
-       bpf_trace_printk("%x %x %d\\n", saddr, daddr, ntohs(dport));
+       bpf_trace_printk("trace_tcp4connect %x %x %d\\n", saddr, daddr, ntohs(dport));
 
        currsock.delete(&pid);
 
@@ -86,10 +86,19 @@ def inet_ntoa(addr):
                addr = addr >> 8
        return dq
 
-# format output
+# filter and format output
 while 1:
-       (task, pid, cpu, flags, ts, msg) = b.trace_fields()
-       (saddr_hs, daddr_hs, dport_s) = msg.split(" ")
+        # Read messages from kernel pipe
+        try:
+            (task, pid, cpu, flags, ts, msg) = b.trace_fields()
+            (_tag, saddr_hs, daddr_hs, dport_s) = msg.split(" ")
+        except ValueError:
+            # Ignore messages from other tracers
+            continue
+
+        # Ignore messages from other tracers
+        if _tag != "trace_tcp4connect":
+            continue
 
        print("%-6d %-12.12s %-16s %-16s %-4s" % (pid, task,
            inet_ntoa(int(saddr_hs, 16)),