Its supposed to be the default. It doesn't work because I left the return out of the if in the loop when I rewrote it to go with the new readipifc interface. The code should look like: void readipinterfaces(void) { Ipifc *nifc; Iplifc *lifc; ipifcs = readipifc(mntpt, ipifcs, -1); for(nifc = ipifcs; nifc; nifc = nifc->next) for(lifc = nifc->lifc; lifc; lifc = lifc->next) if(ipcmp(lifc->ip, IPnoaddr) != 0){ ipmove(ipa, lifc->ip); sprint(ipaddr, "%I", ipa); if(debug) syslog(0, "dns", "ipaddr is %s\n", ipaddr); return; } ipmove(ipa, IPnoaddr); } Thanks, I'm an idiot.