#endif
#include <arpa/inet.h>
+extern int listen_to_virtual_ips;
+
#if _BSDI_VERSION >= 199510
# include <ifaddrs.h>
#endif
if ((ifap->ifa_flags & IFF_UP) == 0)
continue;
+ if (debug)
+ printf("after getifaddrs(), considering %s (%s)\n",
+ ifap->ifa_name,
+ inet_ntoa(((struct sockaddr_in *)ifap->ifa_addr)->sin_addr));
+
if (ifap->ifa_flags & IFF_LOOPBACK) {
sin = (struct sockaddr_in *)ifap->ifa_addr;
- if (ntohl(sin->sin_addr.s_addr) != 0x7f000001)
+ if (ntohl(sin->sin_addr.s_addr) != 0x7f000001 &&
+ !listen_to_virtual_ips)
continue;
}
inter_list[i].flags = 0;
* one physical interface. -wsr
*/
for (j=0; j < i; j++)
- if (inter_list[j].sin.sin_addr.s_addr &
- inter_list[j].mask.sin_addr.s_addr ==
- inter_list[i].sin.sin_addr.s_addr &
- inter_list[i].mask.sin_addr.s_addr)
+ if ((inter_list[j].sin.sin_addr.s_addr &
+ inter_list[j].mask.sin_addr.s_addr) ==
+ (inter_list[i].sin.sin_addr.s_addr &
+ inter_list[i].mask.sin_addr.s_addr))
{
if (inter_list[j].flags & INT_LOOPBACK)
inter_list[j] = inter_list[i];
for(n = ifc.ifc_len, ifr = ifc.ifc_req; n > 0;
ifr = (struct ifreq *)((char *)ifr + size))
{
- extern int listen_to_virtual_ips;
-
size = sizeof(*ifr);
# ifdef HAVE_SA_LEN_IN_STRUCT_SOCKADDR
/*
* input_handler - receive packets asynchronously
*/
-extern void
+void
input_handler(
l_fp *cts
)