|
--- server.orig 2014-12-28 12:16:48.203243490 -0600
|
|
+++ server.c 2014-12-28 12:18:07.907245217 -0600
|
|
@@ -39,7 +39,10 @@
|
|
u_int8_t *a6;
|
|
size_t sa6len = sizeof(struct in6_addr);
|
|
u_int new_cnt = 0;
|
|
- int tos = IPTOS_LOWDELAY, rdomain, fd;
|
|
+ int tos = IPTOS_LOWDELAY;
|
|
+#ifdef SO_RTABLE
|
|
+ int rdomain, fd;
|
|
+#endif
|
|
|
|
TAILQ_FOREACH(lap, &lconf->listen_addrs, entry) {
|
|
switch (lap->sa.ss_family) {
|
|
@@ -59,6 +62,7 @@
|
|
strlcpy(ifr.ifr_name, ifap->ifa_name,
|
|
sizeof(ifr.ifr_name));
|
|
|
|
+#ifdef SO_RTABLE
|
|
fd = socket(AF_INET, SOCK_DGRAM, 0);
|
|
if (ioctl(fd, SIOCGIFRDOMAIN,
|
|
(caddr_t)&ifr) == -1)
|
|
@@ -69,6 +73,7 @@
|
|
|
|
if (lap->rtable != -1 && rdomain != lap->rtable)
|
|
continue;
|
|
+#endif
|
|
|
|
if (sa->sa_family == AF_INET &&
|
|
((struct sockaddr_in *)sa)->sin_addr.s_addr ==
|
|
@@ -87,7 +92,9 @@
|
|
fatal("setup_listeners calloc");
|
|
|
|
memcpy(&la->sa, sa, SA_LEN(sa));
|
|
+#ifdef SO_RTABLE
|
|
la->rtable = rdomain;
|
|
+#endif
|
|
|
|
TAILQ_INSERT_TAIL(&lconf->listen_addrs, la, entry);
|
|
}
|
|
@@ -132,10 +139,12 @@
|
|
IPPROTO_IP, IP_TOS, &tos, sizeof(tos)) == -1)
|
|
log_warn("setsockopt IPTOS_LOWDELAY");
|
|
|
|
+#ifdef SO_RTABLE
|
|
if (la->rtable != -1 &&
|
|
setsockopt(la->fd, SOL_SOCKET, SO_RTABLE, &la->rtable,
|
|
sizeof(la->rtable)) == -1)
|
|
fatal("setup_listeners setsockopt SO_RTABLE");
|
|
+#endif
|
|
|
|
if (bind(la->fd, (struct sockaddr *)&la->sa,
|
|
SA_LEN((struct sockaddr *)&la->sa)) == -1) {
|