Lines 17-47
Link Here
|
17 |
#endif |
17 |
#endif |
18 |
|
18 |
|
19 |
TAILQ_FOREACH(lap, &lconf->listen_addrs, entry) { |
19 |
TAILQ_FOREACH(lap, &lconf->listen_addrs, entry) { |
20 |
@@ -56,16 +56,21 @@ setup_listeners(struct servent *se, stru |
|
|
21 |
sa = ifap->ifa_addr; |
22 |
if (sa == NULL || SA_LEN(sa) == 0) |
23 |
continue; |
24 |
-#ifdef SO_RTABLE |
25 |
- if (sa->sa_family == AF_LINK) { |
26 |
- ifd = ifap->ifa_data; |
27 |
- rdomain = ifd->ifi_rdomain; |
28 |
- } |
29 |
-#endif |
30 |
if (sa->sa_family != AF_INET && |
31 |
sa->sa_family != AF_INET6) |
32 |
continue; |
33 |
#ifdef SO_RTABLE |
34 |
+ strlcpy(ifr.ifr_name, ifap->ifa_name, |
35 |
+ sizeof(ifr.ifr_name)); |
36 |
+ |
37 |
+ fd = socket(AF_INET, SOCK_DGRAM, 0); |
38 |
+ if (ioctl(fd, SIOCGIFRDOMAIN, |
39 |
+ (caddr_t)&ifr) == -1) |
40 |
+ rdomain = 0; |
41 |
+ else |
42 |
+ rdomain = ifr.ifr_rdomainid; |
43 |
+ close(fd); |
44 |
+ |
45 |
if (lap->rtable != -1 && rdomain != lap->rtable) |
46 |
continue; |
47 |
#endif |