From 85ccca5f5a56acbc183cc6ae891bfd3ecdf02844 Mon Sep 17 00:00:00 2001 From: Mark Wooding Date: Sun, 17 Jun 2018 19:00:22 +0100 Subject: [PATCH] pathmtu/pathmtu.c: Disable `raw' strategy if we don't have getifaddrs(3). This isn't available on Android earlier than N. --- configure.ac | 2 ++ pathmtu/pathmtu.c | 14 +++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index 887f81d3..e2e763ee 100644 --- a/configure.ac +++ b/configure.ac @@ -63,6 +63,8 @@ case "$host_os" in ;; esac +AC_CHECK_FUNCS([getifaddrs]) + AC_ARG_WITH([adns], AS_HELP_STRING([--with-adns], [use ADNS library for background name resolution]), diff --git a/pathmtu/pathmtu.c b/pathmtu/pathmtu.c index ad1f672c..9c5c8294 100644 --- a/pathmtu/pathmtu.c +++ b/pathmtu/pathmtu.c @@ -51,9 +51,11 @@ #include #include -#include -#include -#include +#ifdef HAVE_GETIFADDRS +# include +# include +# include +#endif #include #include @@ -386,6 +388,8 @@ fail_0: /*----- Doing it the hard way ---------------------------------------------*/ +#ifdef HAVE_GETIFADDRS + #if defined(linux) || defined(__OpenBSD__) # define IPHDR_SANE #endif @@ -794,6 +798,8 @@ static const struct probe_ops raw_ops = { #undef OPS_CHAIN #define OPS_CHAIN &raw_ops +#endif + /*----- Doing the job on Linux --------------------------------------------*/ #if defined(linux) @@ -963,12 +969,14 @@ int main(int argc, char *argv[]) #define f_bogus 1u +#ifdef HAVE_GETIFADDRS if ((rawicmp = socket(PF_INET, SOCK_RAW, IPPROTO_ICMP)) < 0 || (rawudp = socket(PF_INET, SOCK_RAW, IPPROTO_UDP)) < 0) rawerr = errno; if ((rawicmp6 = socket(PF_INET6, SOCK_RAW, IPPROTO_ICMPV6)) < 0 || (rawudp6 = socket(PF_INET6, SOCK_RAW, IPPROTO_RAW)) < 0) rawerr6 = errno; +#endif if (setuid(getuid())) abort(); -- 2.11.0