summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgeny Grin (Karlson2k) <k2k@narod.ru>2023-05-22 19:24:43 +0300
committerEvgeny Grin (Karlson2k) <k2k@narod.ru>2023-06-01 11:31:48 +0300
commit97dec411ebb29ff1ffb0f89e54be6c4d022db822 (patch)
tree94cd31f27d00ce418558d359a13246127c62e599
parentdd4f6ff9eae62310dab578f55e116a42abc787ea (diff)
Detect sysctl() symbols in configure
Symbols could be enum values, not necessary macros
-rw-r--r--configure.ac46
-rw-r--r--src/microhttpd/test_client_put_stop.c14
2 files changed, 53 insertions, 7 deletions
diff --git a/configure.ac b/configure.ac
index 6b4a0378..44ac85c3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2643,10 +2643,48 @@ MHD_CHECK_FUNC([[sysctl]], [[
#ifdef HAVE_SYS_SYSCTL_H
#include <sys/sysctl.h>
#endif
-#ifdef HAVE_STDDEF_H
+#if defined(HAVE_STDDEF_H)
#include <stddef.h>
+#elif defined(HAVE_STDLIB_H)
+#include <stdlib.h>
#endif
- ]], [[int mib[2] = {CTL_KERN, KERN_MAXPROC}; i][f (sysctl(mib, 2, NULL, NULL, NULL, 0)) return 1;]]
+ ]], [[
+ int mib[2] = {0, 0}; /* Avoid any platform-specific values */
+ i][f (sysctl(mib, 2, NULL, NULL, NULL, 0)) return 1;
+ ]],
+ [
+ AC_CHECK_DECLS([CTL_NET,PF_INET,IPPROTO_ICMP,ICMPCTL_ICMPLIM],[],[],
+ [[
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif /* HAVE_SYS_TYPES_H */
+#ifdef HAVE_SYS_SYSCTL_H
+#include <sys/sysctl.h>
+#endif /* HAVE_SYS_SYSCTL_H */
+#ifdef HAVE_SYS_SYSCTL_H
+#include <sys/sysctl.h>
+#endif /* HAVE_SYS_SYSCTL_H */
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif /* HAVE_SYS_SOCKET_H */
+#ifdef HAVE_NETINET_IN_SYSTM_H
+#include <netinet/in_systm.h>
+#endif /* HAVE_NETINET_IN_SYSTM_H */
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif /* HAVE_NETINET_IN_H */
+#ifdef HAVE_NETINET_IP_H
+#include <netinet/ip.h>
+#endif /* HAVE_NETINET_IP_H */
+#ifdef HAVE_NETINET_IP_ICMP_H
+#include <netinet/ip_icmp.h>
+#endif /* HAVE_NETINET_IP_ICMP_H */
+#ifdef HAVE_NETINET_ICMP_VAR_H
+#include <netinet/icmp_var.h>
+#endif /* HAVE_NETINET_ICMP_VAR_H */
+ ]]
+ )
+ ]
)
MHD_CHECK_FUNC([[sysctlbyname]], [[
@@ -2656,8 +2694,10 @@ MHD_CHECK_FUNC([[sysctlbyname]], [[
#ifdef HAVE_SYS_SYSCTL_H
#include <sys/sysctl.h>
#endif
-#ifdef HAVE_STDDEF_H
+#if defined(HAVE_STDDEF_H)
#include <stddef.h>
+#elif defined(HAVE_STDLIB_H)
+#include <stdlib.h>
#endif
]], [[sysctlbyname("test", NULL, NULL, NULL, 0);]]
)
diff --git a/src/microhttpd/test_client_put_stop.c b/src/microhttpd/test_client_put_stop.c
index cda8f1d1..3785599d 100644
--- a/src/microhttpd/test_client_put_stop.c
+++ b/src/microhttpd/test_client_put_stop.c
@@ -305,8 +305,12 @@ test_global_init (void)
}
}
#endif
-#if defined(HAVE_SYSCTL) && defined(CTL_NET) && defined(PF_INET) && \
- defined(IPPROTO_ICMP) && defined(ICMPCTL_ICMPLIM)
+#if defined(HAVE_SYSCTL) && defined(HAVE_DECL_CTL_NET) && \
+ defined(HAVE_DECL_PF_INET) && defined(HAVE_DECL_IPPROTO_ICMP) && \
+ defined(HAVE_DECL_ICMPCTL_ICMPLIM)
+ /* Macros may have zero values */
+#if HAVE_DECL_CTL_NET && HAVE_DECL_PF_INET && HAVE_DECL_IPPROTO_ICMP && \
+ HAVE_DECL_ICMPCTL_ICMPLIM
if (1)
{
int mib[4];
@@ -366,8 +370,10 @@ test_global_init (void)
#endif /* _MHD_HEAVY_TESTS */
}
}
-#endif /* HAVE_SYSCTL && CTL_NET && PF_INET &&
- IPPROTO_ICMP && ICMPCTL_ICMPLIM */
+#endif /* HAVE_DECL_CTL_NET && HAVE_DECL_PF_INET && HAVE_DECL_IPPROTO_ICMP && \
+ HAVE_DECL_ICMPCTL_ICMPLIM */
+#endif /* HAVE_SYSCTL && HAVE_DECL_CTL_NET && HAVE_DECL_PF_INET &&
+ HAVE_DECL_IPPROTO_ICMP && HAVE_DECL_ICMPCTL_ICMPLIM */
}
if (MHD_YES != MHD_is_feature_supported (MHD_FEATURE_AUTOSUPPRESS_SIGPIPE))
{