git://git.exim.org
/
users
/
heiko
/
exim.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
376fa78
)
Linux and the BSDs have getifaddrs(). Use it and save a bunch of complex coding.
author
Jeremy Harris
<jgh146exb@wizmail.org>
Wed, 17 Mar 2021 14:33:46 +0000
(14:33 +0000)
committer
Jeremy Harris
<jgh146exb@wizmail.org>
Wed, 17 Mar 2021 14:33:46 +0000
(14:33 +0000)
src/OS/os.h-FreeBSD
patch
|
blob
|
history
src/OS/os.h-Linux
patch
|
blob
|
history
src/OS/os.h-OpenBSD
patch
|
blob
|
history
src/src/host.c
patch
|
blob
|
history
src/src/os.c
patch
|
blob
|
history
diff --git
a/src/OS/os.h-FreeBSD
b/src/OS/os.h-FreeBSD
index 0083642b432c0d9879d5b41ed76bf695d105fbe1..4f135842383f086b2ae7989f229c16d3bbddc37f 100644
(file)
--- a/
src/OS/os.h-FreeBSD
+++ b/
src/OS/os.h-FreeBSD
@@
-11,6
+11,7
@@
#define HAVE_SETCLASSRESOURCES
#define HAVE_MMAP
#define HAVE_SYS_MOUNT_H
#define HAVE_SETCLASSRESOURCES
#define HAVE_MMAP
#define HAVE_SYS_MOUNT_H
+#define HAVE_GETIFADDR
#define SIOCGIFCONF_GIVES_ADDR
#define HAVE_SRANDOMDEV
#define HAVE_ARC4RANDOM
#define SIOCGIFCONF_GIVES_ADDR
#define HAVE_SRANDOMDEV
#define HAVE_ARC4RANDOM
diff --git
a/src/OS/os.h-Linux
b/src/OS/os.h-Linux
index 287e15465fbcc9c11297b2e038369057ca1da528..f2c243e9f7dc7ce356565cad88bf3c0e1ce6e311 100644
(file)
--- a/
src/OS/os.h-Linux
+++ b/
src/OS/os.h-Linux
@@
-16,6
+16,7
@@
with the issue. */
#define HAVE_MMAP
#define HAVE_BSD_GETLOADAVG
#define HAVE_SYS_STATVFS_H
#define HAVE_MMAP
#define HAVE_BSD_GETLOADAVG
#define HAVE_SYS_STATVFS_H
+#define HAVE_GETIFADDRS
#define NO_IP_VAR_H
#define SIG_IGN_WORKS
#define NO_IP_VAR_H
#define SIG_IGN_WORKS
diff --git
a/src/OS/os.h-OpenBSD
b/src/OS/os.h-OpenBSD
index 08f2dcaa56e71cd13f565d89d504053dbde432dd..eaa2f6b1d05fbb34ca33b2f450f681a8d310e757 100644
(file)
--- a/
src/OS/os.h-OpenBSD
+++ b/
src/OS/os.h-OpenBSD
@@
-6,6
+6,7
@@
#define HAVE_BSD_GETLOADAVG
#define HAVE_MMAP
#define HAVE_SYS_MOUNT_H
#define HAVE_BSD_GETLOADAVG
#define HAVE_MMAP
#define HAVE_SYS_MOUNT_H
+#define HAVE_GETIFADDR
#define SIOCGIFCONF_GIVES_ADDR
#define EXIM_HAVE_OPENAT
#define EXIM_HAVE_FUTIMENS
#define SIOCGIFCONF_GIVES_ADDR
#define EXIM_HAVE_OPENAT
#define EXIM_HAVE_FUTIMENS
diff --git
a/src/src/host.c
b/src/src/host.c
index 5f254a28de0bddf7e3f98b6d7cd8b6d35f483243..6b9f674b83805e3a74c46d8913d674cc139f16c3 100644
(file)
--- a/
src/src/host.c
+++ b/
src/src/host.c
@@
-815,7
+815,7
@@
host_find_interfaces(void)
{
ip_address_item *running_interfaces = NULL;
{
ip_address_item *running_interfaces = NULL;
-if (
local_interface_data == NULL
)
+if (
!local_interface_data
)
{
void *reset_item = store_mark();
ip_address_item *dlist = host_build_ifacelist(CUS local_interfaces,
{
void *reset_item = store_mark();
ip_address_item *dlist = host_build_ifacelist(CUS local_interfaces,
diff --git
a/src/src/os.c
b/src/src/os.c
index ae9c6043cdb1f81e74852acf55b116ada20658f7..9a450a8656c98fe35df7206bc9e5bb7cbf855c8e 100644
(file)
--- a/
src/src/os.c
+++ b/
src/src/os.c
@@
-495,9
+495,11
@@
if (getifaddrs(&ifalist) != 0)
for (struct ifaddrs * ifa = ifalist; ifa; ifa = ifa->ifa_next)
{
for (struct ifaddrs * ifa = ifalist; ifa; ifa = ifa->ifa_next)
{
- if (ifa->ifa_addr->sa_family != AF_INET
+ struct sockaddr * ifa_addr = ifa->ifa_addr;
+ if (!ifa_addr) continue;
+ if (ifa_addr->sa_family != AF_INET
#if HAVE_IPV6
#if HAVE_IPV6
- && ifa
->ifa
_addr->sa_family != AF_INET6
+ && ifa_addr->sa_family != AF_INET6
#endif /* HAVE_IPV6 */
)
continue;
#endif /* HAVE_IPV6 */
)
continue;
@@
-511,9
+513,9
@@
for (struct ifaddrs * ifa = ifalist; ifa; ifa = ifa->ifa_next)
next = store_get(sizeof(ip_address_item), FALSE);
next->next = NULL;
next->port = 0;
next = store_get(sizeof(ip_address_item), FALSE);
next->next = NULL;
next->port = 0;
- (void)host_ntoa(-1, ifa
->ifa
_addr, next->address, NULL);
+ (void)host_ntoa(-1, ifa_addr, next->address, NULL);
- if (
yield == NULL
)
+ if (
!yield
)
yield = last = next;
else
{
yield = last = next;
else
{