pthread_rwlock_init(&limiter.limiter_lock,NULL);
/* determine our local IP by iterating through interfaces */
- if ((limiter.ip = get_local_ip())==0) {
- printlog(LOG_CRITICAL,
- "ulogd_DRL unable to aquire local IP address, not registering.\n");
- return (false);
+ limiter.ip = get_local_ip();
+ if (limiter.ip == NULL) {
+ printlog(LOG_CRITICAL, "ulogd_DRL unable to aquire local IP address, not registering.\n");
+ return false;
}
limiter.localaddr = inet_addr(limiter.ip);
limiter.port = htons(LIMITER_LISTEN_PORT);
for (ifa = ifp; ifa; ifa=ifa->ifa_next){
+ printlog(LOG_DEBUG, "get_local_ip: checking new addr.\n");
if (ifa->ifa_addr->sa_family == AF_INET){
salen = sizeof(struct sockaddr_in);
} else if( ifa->ifa_addr->sa_family == AF_INET6){
/* is it MSB first? */
/* We don't want to choose the loopback. */
- if (addrbyte == 127)
+ if (addrbyte == 127) {
+ printlog(LOG_DEBUG, "get_local_ip: ignoring the loopback.\n");
continue;
+ }
+
+ printlog(LOG_DEBUG, "get_local_ip: found address starting with %hhu\n", addrbyte);
/* If there's a non-local address, use that. */
if ((addrbyte != 192) && (addrbyte != 172) && (addrbyte != 10)){
if (localip != NULL) {
free(localip);
}
+ printlog(LOG_DEBUG, "get_local_ip: returning routable address %s\n", ip);
return(ip); /* for now return the IP address */
} else {
if (localip == NULL) {
freeifaddrs(ifp);
free(ip);
- if (localip != NULL)
+ if (localip != NULL) {
+ printlog(LOG_DEBUG, "get_local_ip: returning local address %s\n", localip);
return localip;
+ }
else
return(NULL);
}