diff --git a/mDNSPosix/mDNSPosix.c b/mDNSPosix/mDNSPosix.c
index 8960c93..28f4e06 100644
--- a/mDNSPosix/mDNSPosix.c
+++ b/mDNSPosix/mDNSPosix.c
@@ -1102,14 +1102,14 @@
 	}
 #endif
 
-mDNSlocal mDNSu32		ProcessRoutingNotification(int sd)
+mDNSlocal mDNSBool		ProcessRoutingNotification(int sd)
 // Read through the messages on sd and if any indicate that any interface records should
 // be torn down and rebuilt, return affected indices as a bitmask. Otherwise return 0.
 	{
 	ssize_t					readCount;
 	char					buff[4096];	
 	struct nlmsghdr			*pNLMsg = (struct nlmsghdr*) buff;
-	mDNSu32				result = 0;
+	mDNSBool				result = mDNSfalse;
 	
 	// The structure here is more complex than it really ought to be because,
 	// unfortunately, there's no good way to size a buffer in advance large
@@ -1144,10 +1144,9 @@
 #endif
 
 		// Process the NetLink message
-		if (pNLMsg->nlmsg_type == RTM_GETLINK || pNLMsg->nlmsg_type == RTM_NEWLINK)
-			result |= 1 << ((struct ifinfomsg*) NLMSG_DATA(pNLMsg))->ifi_index;
-		else if (pNLMsg->nlmsg_type == RTM_DELADDR || pNLMsg->nlmsg_type == RTM_NEWADDR)
-			result |= 1 << ((struct ifaddrmsg*) NLMSG_DATA(pNLMsg))->ifa_index;
+		if (pNLMsg->nlmsg_type == RTM_GETLINK || pNLMsg->nlmsg_type == RTM_NEWLINK ||
+				pNLMsg->nlmsg_type == RTM_DELADDR || pNLMsg->nlmsg_type == RTM_NEWADDR)
+			result = mDNStrue;
 
 		// Advance pNLMsg to the next message in the buffer
 		if ((pNLMsg->nlmsg_flags & NLM_F_MULTI) != 0 && pNLMsg->nlmsg_type != NLMSG_DONE)
@@ -1191,14 +1190,14 @@
 	}
 #endif
 
-mDNSlocal mDNSu32		ProcessRoutingNotification(int sd)
+mDNSlocal mDNSBool		ProcessRoutingNotification(int sd)
 // Read through the messages on sd and if any indicate that any interface records should
 // be torn down and rebuilt, return affected indices as a bitmask. Otherwise return 0.
 	{
 	ssize_t					readCount;
 	char					buff[4096];	
 	struct ifa_msghdr		*pRSMsg = (struct ifa_msghdr*) buff;
-	mDNSu32				result = 0;
+	mDNSBool				result = mDNSfalse;
 
 	readCount = read(sd, buff, sizeof buff);
 	if (readCount < (ssize_t) sizeof(struct ifa_msghdr))
@@ -1212,10 +1211,7 @@
 	if (pRSMsg->ifam_type == RTM_NEWADDR || pRSMsg->ifam_type == RTM_DELADDR ||
 		 pRSMsg->ifam_type == RTM_IFINFO)
 		{
-		if (pRSMsg->ifam_type == RTM_IFINFO)
-			result |= 1 << ((struct if_msghdr*) pRSMsg)->ifm_index;
-		else
-			result |= 1 << pRSMsg->ifam_index;
+		result = mDNStrue;
 		}
 
 	return result;
@@ -1228,7 +1224,7 @@
 	{
 	IfChangeRec		*pChgRec = (IfChangeRec*) context;
 	fd_set			readFDs;
-	mDNSu32		changedInterfaces = 0;
+	mDNSBool		changedInterfaces = mDNSfalse;
 	struct timeval	zeroTimeout = { 0, 0 };
 
 	(void)fd; // Unused
diff --git a/mDNSPosix/mDNSUNP.c b/mDNSPosix/mDNSUNP.c
index f5d0c52..0e3632b 100755
--- a/mDNSPosix/mDNSUNP.c
+++ b/mDNSPosix/mDNSUNP.c
@@ -106,7 +106,7 @@
 			goto gotError;
 		}
 		while (fscanf(fp,
-					  "%4s%4s%4s%4s%4s%4s%4s%4s %x %02x %02x %02x %15s\n",
+					  "%4s%4s%4s%4s%4s%4s%4s%4s %x %x %x %x %15s\n",
 					  addr[0],addr[1],addr[2],addr[3],
 					  addr[4],addr[5],addr[6],addr[7],
 					  &index, &plen, &scope, &flags, ifname) != EOF) {
