diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..c4f5de8c7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +src/*.o +src/*.exe +src/*.res diff --git a/src/ne2000.c b/src/ne2000.c index 24321ae22..6cc274aa7 100644 --- a/src/ne2000.c +++ b/src/ne2000.c @@ -1658,7 +1658,6 @@ void rtl8029as_init(ne2000_t *ne2000) void *ne2000_init() { - struct in_addr myaddr; int rc; int config_net_type; int net_type; @@ -1725,25 +1724,6 @@ void *ne2000_init() if ( rc == 0 ) { pclog("ne2000 slirp initalized!\n"); - inet_aton("10.0.2.15",&myaddr); - //YES THIS NEEDS TO PULL FROM A CONFIG FILE... but for now. - rc=slirp_redir(0,42323,myaddr,23); - pclog("ne2000 slirp redir returned %d on port 42323 -> 23\n",rc); - rc=slirp_redir(0,42380,myaddr,80); - pclog("ne2000 slirp redir returned %d on port 42380 -> 80\n",rc); - rc=slirp_redir(0,42443,myaddr,443); - pclog("ne2000 slirp redir returned %d on port 42443 -> 443\n",rc); - rc=slirp_redir(0,42322,myaddr,22); - pclog("ne2000 slirp redir returned %d on port 42322 -> 22\n",rc); - - //Kali - rc=slirp_redir(1,2213,myaddr,2213); - pclog("ne2000 slirp redir returned %d on port 2213 -> 2213\n",rc); - rc=slirp_redir(1,2231,myaddr,2231); - pclog("ne2000 slirp redir returned %d on port 2231 -> 2231\n",rc); - rc=slirp_redir(1,2271,myaddr,2271); - pclog("ne2000 slirp redir returned %d on port 2271 -> 2271\n",rc); - net_slirp_inited=1; slirpq = QueueCreate(); diff --git a/src/slirp/slirp.c b/src/slirp/slirp.c index dc912c960..ec4a468b8 100644 --- a/src/slirp/slirp.c +++ b/src/slirp/slirp.c @@ -161,6 +161,33 @@ debug_init("slirplog.txt",DEBUG_DEFAULT); inet_aton(CTL_SPECIAL, &special_addr); alias_addr.s_addr = special_addr.s_addr | htonl(CTL_ALIAS); getouraddr(); + + struct in_addr myaddr; + int rc; + inet_aton("10.0.2.15",&myaddr); + + char* category = "SLiRP Port Forwarding"; + char key[32]; + int i = 0, udp, from, to; + while (1) { + sprintf(key, "%d_udp", i); + udp = config_get_int(category, key, 0); + sprintf(key, "%d_from", i); + from = config_get_int(category, key, 0); + if (from < 1) + break; + sprintf(key, "%d_to", i); + to = config_get_int(category, key, from); + + rc = slirp_redir(udp, from, myaddr, to); + if (rc == 0) + pclog("slirp redir %d -> %d successful\n", from, to); + else + pclog("slirp redir %d -> %d failed (%d)\n", from, to, rc); + + i++; + } + return 0; }