tcpdump mailing list archives
Re: Cross-compiling tcpdump with ipv6 enabled
From: Guy Harris <guy () alum mit edu>
Date: Thu, 18 Dec 2014 13:01:22 -0800
On Dec 17, 2014, at 2:11 PM, Xiufeng Xie <xxie28 () wisc edu> wrote:
Currently I need to capture ipv6 packets on Android phone. On my PC, tcpdump works well with ipv6 traffic, so I also want to try it on the phone. However, when I cross-compile tcpdump for ARM platform with ipv6 enabled, it is forced to give the warning about buggy getaddrinfo() function and then exit.
https://www.gnu.org/software/autoconf/manual/autoconf.html#Runtime "Sometimes you need to find out how a system performs at runtime, such as whether a given function has a certain capability or bug. If you can, make such checks when your program runs instead of when it is configured. You can check for things like the machine's endianness when your program initializes itself. If you really need to test for a runtime behavior while configuring, you can write a test program to determine the result, and compile and run it using AC_RUN_IFELSE. Avoid running test programs if possible, because this prevents people from configuring your package for cross-compiling. There's nothing we can do, when cross-compiling, to determine whether getaddrinfo() is buggy or not. What we *could* do is, when cross-compiling, assume it's *not* buggy; this has the advantage of allowing IPv6 support when cross-compiling, with the disadvantage that, if the target platform has a buggy getaddrinfo(), it builds anyway, and you're stuck with the buggy behavior. I would vote for assuming that there aren't many buggy implementations these days, especially when cross-compiling (which would probably be for a Linux or *BSD target, current versions of which probably have non-buggy getaddrinfo()), assuming a *non*-buggy getaddrinfo() when cross compiling, and playing The World's Smallest Violin if somebody ends up getting hosed by getaddrinfo() on a target platform for which they're cross-compiling.
I comment out this test to complete compiling (with ipv6 enabled). The resulting binary works well when monitoring ipv4 packets on my phone, but still captures 0 packets on the Verizon ipv6 lTE network.
Try writing a small test program, using libpcap, that doesn't set any capture filter and that just counts packets. If that doesn't capture any packets on Verizon's LTE network, then the problem is either with libpcap or with the Android networking stack. _______________________________________________ tcpdump-workers mailing list tcpdump-workers () lists tcpdump org https://lists.sandelman.ca/mailman/listinfo/tcpdump-workers
Current thread:
- Cross-compiling tcpdump with ipv6 enabled Xiufeng Xie (Dec 17)
- Re: Cross-compiling tcpdump with ipv6 enabled Guy Harris (Dec 18)
- Re: Cross-compiling tcpdump with ipv6 enabled Michael Richardson (Dec 18)
- Re: Cross-compiling tcpdump with ipv6 enabled Xiufeng Xie (Dec 19)
- Re: Cross-compiling tcpdump with ipv6 enabled Michael Richardson (Dec 19)
- Re: Cross-compiling tcpdump with ipv6 enabled Guy Harris (Dec 19)
- Re: Cross-compiling tcpdump with ipv6 enabled Michael Richardson (Dec 18)
- Re: Cross-compiling tcpdump with ipv6 enabled Guy Harris (Dec 18)