Index: /trunk/src/VBox/Devices/Network/slirp/slirp.c
===================================================================
--- /trunk/src/VBox/Devices/Network/slirp/slirp.c	(revision 22855)
+++ /trunk/src/VBox/Devices/Network/slirp/slirp.c	(revision 22856)
@@ -207,5 +207,4 @@
 };
 
-
 #ifdef RT_OS_WINDOWS
 static int get_dns_addr_domain(PNATState pData, bool fVerbose,
@@ -341,5 +340,4 @@
     int found = 0;
     struct in_addr tmp_addr;
-    int nameservers = 0;
 
 #ifdef RT_OS_OS2
@@ -443,27 +441,4 @@
 
 #endif
-
-static void alias_init(PNATState pData, struct libalias **pla, int la_flags, struct in_addr addr)
-{
-        int flags = 0;
-        struct libalias *la;
-        la = LibAliasInit(pData, NULL);
-        if (la == NULL)
-        {
-            LogRel(("NAT: LibAlias default rule wasn't initialized\n"));
-            AssertMsgFailed(("NAT: LibAlias default rule wasn't initialized\n"));
-        }
-        flags = LibAliasSetMode(la, 0, 0);
-#ifndef NO_FW_PUNCH
-        flags |= PKT_ALIAS_PUNCH_FW;
-#endif
-#ifdef DEBUG
-        flags |= PKT_ALIAS_LOG; /* set logging */
-#endif
-        flags |= la_flags;
-        flags = LibAliasSetMode(la, flags, ~0);
-        LibAliasSetAddress(la, addr);
-        *pla = la;
-}
 
 static int slirp_init_dns_list(PNATState pData)
@@ -564,5 +539,5 @@
 
     /* set default addresses */
-    loopback_addr.s_addr = INADDR_LOOPBACK;
+    inet_aton("127.0.0.1", &loopback_addr);
     if (slirp_init_dns_list(pData) < 0)
         fNATfailed = 1;
@@ -572,16 +547,22 @@
     getouraddr(pData);
     {
+        int flags = 0;
         struct in_addr proxy_addr;
+        pData->proxy_alias = LibAliasInit(pData, NULL);
+        if (pData->proxy_alias == NULL)
+        {
+            LogRel(("NAT: LibAlias default rule wasn't initialized\n"));
+            AssertMsgFailed(("NAT: LibAlias default rule wasn't initialized\n"));
+        }
+        flags = LibAliasSetMode(pData->proxy_alias, 0, 0);
+#ifndef NO_FW_PUNCH
+        flags |= PKT_ALIAS_PUNCH_FW;
+#endif
+        flags |= PKT_ALIAS_LOG; /* set logging */
+        flags = LibAliasSetMode(pData->proxy_alias, flags, ~0);
         proxy_addr.s_addr = htonl(ntohl(special_addr.s_addr) | CTL_ALIAS);
-        alias_init(pData, &pData->proxy_alias, 0, proxy_addr);
-
-#if 0
-        proxy_addr.s_addr = htonl(ntohl(special_addr.s_addr) | CTL_DNS);
-        alias_init(pData, &pData->dns_alias, PKT_ALIAS_REVERSE, proxy_addr);
-#endif
-
+        LibAliasSetAddress(pData->proxy_alias, proxy_addr);
         ftp_alias_load(pData);
         nbt_alias_load(pData);
-        dns_alias_load(pData);
     }
     return fNATfailed ? VINF_NAT_DNS : VINF_SUCCESS;
@@ -662,5 +643,4 @@
     ftp_alias_unload(pData);
     nbt_alias_unload(pData);
-    dns_alias_unload(pData);
     while(!LIST_EMPTY(&instancehead)) 
     {
@@ -1657,8 +1637,12 @@
         psin = (struct sockaddr_in *)&sa;
 
+        lib = LibAliasInit(pData, NULL);
+        flags = LibAliasSetMode(lib, 0, 0);
+        flags |= PKT_ALIAS_LOG; /* set logging */
+        flags |= PKT_ALIAS_REVERSE; /* set logging */
+        flags = LibAliasSetMode(lib, flags, ~0);
 
         alias.s_addr =  htonl(ntohl(guest_addr) | CTL_ALIAS);
-        alias_init(pData, &so->so_la, PKT_ALIAS_REVERSE, alias);
-        link = LibAliasRedirectPort(so->so_la, psin->sin_addr, htons(rule->host_port),
+        link = LibAliasRedirectPort(lib, psin->sin_addr, htons(rule->host_port),
             alias, htons(rule->guest_port),
             special_addr,  -1, /* not very clear for now*/
@@ -1670,4 +1654,5 @@
             goto remove_port_forwarding;
         }
+        so->so_la = lib;
         rule->activated = 1;
         continue;
