diff options
author | tilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-01-22 20:42:47 +0000 |
---|---|---|
committer | tilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-01-22 20:42:47 +0000 |
commit | 3e089611dd5020deace9aacdad6b0537563c9034 (patch) | |
tree | 6e7e978e18dd98a93cb4c584e9f50bc3e1b1affc /main/acl.c | |
parent | bfc825996c4148b9f26d35aee08baf564ebbe0a6 (diff) |
Merged revisions 99643 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r99643 | tilghman | 2008-01-22 14:34:55 -0600 (Tue, 22 Jan 2008) | 2 lines
Fix the defines for OS X (and Solaris, too)
........
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@99646 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main/acl.c')
-rw-r--r-- | main/acl.c | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/main/acl.c b/main/acl.c index 7df15019e..810ec80ba 100644 --- a/main/acl.c +++ b/main/acl.c @@ -29,11 +29,16 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/network.h" +#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__Darwin__) +#include <fcntl.h> +#include <net/route.h> +#endif + #if defined(SOLARIS) #include <sys/sockio.h> #endif -#if defined(__linux__) +#if defined(__Darwin__) || defined(__linux__) #include <ifaddrs.h> #endif @@ -103,23 +108,23 @@ static void score_address(const struct sockaddr_in *sin, struct in_addr *best_ad static int get_local_address(struct in_addr *ourip) { int s, res = -1; -#ifdef _SOLARIS +#ifdef SOLARIS struct lifreq *ifr = NULL; struct lifnum ifn; struct lifconf ifc; struct sockaddr_in *sa; char *buf = NULL; int bufsz, x; -#endif /* _SOLARIS */ -#if defined(_BSD) || defined(__linux__) +#endif /* SOLARIS */ +#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__linux__) || defined(__Darwin__) struct ifaddrs *ifap, *ifaphead; int rtnerr; const struct sockaddr_in *sin; -#endif /* defined(_BSD) || defined(_LINUX) */ +#endif /* BSD_OR_LINUX */ struct in_addr best_addr = { 0, }; int best_score = -100; -#if defined(_BSD) || defined(__linux__) +#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__linux__) || defined(__Darwin__) rtnerr = getifaddrs(&ifaphead); if (rtnerr) { perror(NULL); @@ -130,7 +135,7 @@ static int get_local_address(struct in_addr *ourip) s = socket(AF_INET, SOCK_STREAM, 0); if (s > 0) { -#if defined(_BSD) || defined(__linux__) +#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__linux__) || defined(__Darwin__) for (ifap = ifaphead; ifap; ifap = ifap->ifa_next) { if (ifap->ifa_addr->sa_family == AF_INET) { @@ -142,10 +147,10 @@ static int get_local_address(struct in_addr *ourip) break; } } -#endif /* _BSD */ +#endif /* BSD_OR_LINUX */ /* There is no reason whatsoever that this shouldn't work on Linux or BSD also. */ -#ifdef _SOLARIS +#ifdef SOLARIS /* Get a count of interfaces on the machine */ ifn.lifn_family = AF_INET; ifn.lifn_flags = 0; @@ -183,13 +188,13 @@ static int get_local_address(struct in_addr *ourip) } free(buf); -#endif /* _SOLARIS */ +#endif /* SOLARIS */ close(s); } -#if defined(_BSD) || defined(__linux__) +#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__linux__) || defined(__Darwin__) freeifaddrs(ifaphead); -#endif +#endif /* BSD_OR_LINUX */ if (res == 0 && ourip) memcpy(ourip, &best_addr, sizeof(*ourip)); |