diff --git a/src/ipxwrapper.c b/src/ipxwrapper.c
index 2a0ad98..fec3024 100644
--- a/src/ipxwrapper.c
+++ b/src/ipxwrapper.c
@@ -322,7 +322,7 @@ static DWORD WINAPI router_main(LPVOID buf) {
 		
 		lock_mutex();
 		
-		add_host(packet->src_net, packet->src_node, ntohl(addr.sin_addr.s_addr));
+		add_host(packet->src_net, packet->src_node, addr.sin_addr.s_addr);
 		
 		for(sockptr = sockets; sockptr; sockptr = sockptr->next) {
 			if(
@@ -470,8 +470,8 @@ static BOOL load_nics(void) {
 			return FALSE;
 		}
 		
-		nnic->ipaddr = ntohl(inet_addr(ifptr->IpAddressList.IpAddress.String));
-		nnic->bcast = nnic->ipaddr | ~ntohl(inet_addr(ifptr->IpAddressList.IpMask.String));
+		nnic->ipaddr = inet_addr(ifptr->IpAddressList.IpAddress.String);
+		nnic->bcast = nnic->ipaddr | ~inet_addr(ifptr->IpAddressList.IpMask.String);
 		
 		memcpy(nnic->hwaddr, ifptr->Address, 6);
 		
diff --git a/src/winsock.c b/src/winsock.c
index 70a8519..7b8d64d 100644
--- a/src/winsock.c
+++ b/src/winsock.c
@@ -659,16 +659,35 @@ int WSAAPI sendto(SOCKET fd, const char *buf, int len, int flags, const struct s
 		packet->size = htons(len);
 		memcpy(packet->data, buf, len);
 		
-		/* TODO: Only send out enabled interfaces */
-		
 		struct sockaddr_in saddr;
 		saddr.sin_family = AF_INET;
-		saddr.sin_addr.s_addr = INADDR_BROADCAST;
 		saddr.sin_port = htons(global_conf.udp_port);
 		
-		int sval = r_sendto(net_fd, (char*)packet, psize, 0, (struct sockaddr*)&saddr, sizeof(saddr));
-		if(sval == -1) {
-			len = -1;
+		ipx_host *host = find_host(packet->dest_net, packet->dest_node);
+		
+		if(host) {
+			saddr.sin_addr.s_addr = host->ipaddr;
+			
+			int sval = r_sendto(net_fd, (char*)packet, psize, 0, (struct sockaddr*)&saddr, sizeof(saddr));
+			if(sval == -1) {
+				len = -1;
+			}
+		}else{
+			ipx_nic *nic = nics;
+			int success = 0;
+			
+			while(nic) {
+				saddr.sin_addr.s_addr = nic->bcast;
+				
+				int sval = r_sendto(net_fd, (char*)packet, psize, 0, (struct sockaddr*)&saddr, sizeof(saddr));
+				if(sval >= 0) {
+					success = 1;
+				}
+				
+				nic = nic->next;
+			}
+			
+			len = success ? len : -1;
 		}
 		
 		free(packet);