@@ -354,7 +354,10 @@ func TestTcpdump(t *testing.T) {
354354 t .Fatalf ("docker run failed: %v" , err )
355355 }
356356
357- cmd := "tcpdump -c 2 -i any port 9999"
357+ // Stick to `lo` to avoid catching packets from the host. The "port 9999"
358+ // does not actually do anything because we do not yet support installing
359+ // a filter bpf program.
360+ cmd := "tcpdump -c 2 -i lo port 9999"
358361 tcpdumpProc , err := d .ExecProcess (ctx , dockerutil.ExecOpts {}, "/bin/sh" , "-c" , cmd )
359362 if err != nil {
360363 t .Fatalf ("docker run failed: %v" , err )
@@ -364,13 +367,13 @@ func TestTcpdump(t *testing.T) {
364367 if err != nil {
365368 t .Fatalf ("docker exec failed: %v" , err )
366369 }
370+
367371 if status , err := senderProc .WaitExitStatus (ctx ); err != nil || status != 0 {
368372 t .Fatalf ("docker exec failed: %v, status: %d" , err , status )
369373 }
370374 if status , err := tcpdumpProc .WaitExitStatus (ctx ); err != nil || status != 0 {
371375 t .Fatalf ("docker exec failed: %v, status: %d" , err , status )
372376 }
373-
374377 expectedOutputStr1 := "IP localhost.9999 > localhost.9999: UDP, length 4"
375378 logs , err := tcpdumpProc .Logs ()
376379 if err != nil {
@@ -383,6 +386,27 @@ func TestTcpdump(t *testing.T) {
383386 if ! strings .Contains (logs , expectedOutputStr2 ) {
384387 t .Fatalf ("docker didn't get output: %q, got: %q" , expectedOutputStr2 , logs )
385388 }
389+
390+ // Check that `any` also works to guard against b/411198401.
391+ cmd = "tcpdump -c 2 -i any port 9999"
392+ tcpdumpProc , err = d .ExecProcess (ctx , dockerutil.ExecOpts {}, "/bin/sh" , "-c" , cmd )
393+ if err != nil {
394+ t .Fatalf ("docker run failed: %v" , err )
395+ }
396+ cmd = "python3 sender.py"
397+ senderProc , err = d .ExecProcess (ctx , dockerutil.ExecOpts {}, "/bin/sh" , "-c" , cmd )
398+ if err != nil {
399+ t .Fatalf ("docker exec failed: %v" , err )
400+ }
401+
402+ // We make no assertions about the output because we might catch host packets
403+ // too: we only rely on tcpdump's exit status.
404+ if status , err := tcpdumpProc .WaitExitStatus (ctx ); err != nil || status != 0 {
405+ t .Fatalf ("docker exec failed: %v, status: %d" , err , status )
406+ }
407+ if status , err := senderProc .WaitExitStatus (ctx ); err != nil || status != 0 {
408+ t .Fatalf ("docker exec failed: %v, status: %d" , err , status )
409+ }
386410}
387411
388412func dockerInGvisorCapabilities () []string {
0 commit comments