diff options
Diffstat (limited to 'contrib/ipfilter/FWTK/tproxy.diff')
-rw-r--r-- | contrib/ipfilter/FWTK/tproxy.diff | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/contrib/ipfilter/FWTK/tproxy.diff b/contrib/ipfilter/FWTK/tproxy.diff new file mode 100644 index 0000000..234404b --- /dev/null +++ b/contrib/ipfilter/FWTK/tproxy.diff @@ -0,0 +1,82 @@ +*** tproxy.c.orig Fri Dec 20 10:53:24 1996 +--- tproxy.c Sun Jan 3 11:33:55 1999 +*************** +*** 135,140 **** +--- 135,144 ---- + #include <netinet/in.h> + #include <sys/signal.h> + #include <syslog.h> ++ #include <unistd.h> ++ #include <fcntl.h> ++ #include <sys/ioctl.h> ++ #include <net/if.h> + #include "tproxy.h" + + #ifdef AIX +*************** +*** 147,152 **** +--- 151,159 ---- + #define bzero(buf,size) memset(buf, '\0', size); + #endif /* SYSV */ + ++ #include "ip_compat.h" ++ #include "ip_fil.h" ++ #include "ip_nat.h" + + + /* socket to audio server */ +*************** +*** 324,329 **** +--- 331,369 ---- + char localbuf[2048]; + void timeout(); + extern int errno; ++ /* ++ * IP-Filter block ++ */ ++ struct sockaddr_in laddr, faddr; ++ struct natlookup natlookup; ++ int slen, natfd; ++ ++ bzero((char *)&laddr, sizeof(laddr)); ++ bzero((char *)&faddr, sizeof(faddr)); ++ slen = sizeof(laddr); ++ if (getsockname(0, (struct sockaddr *)&laddr, &slen) < 0) ++ return -1; ++ slen = sizeof(faddr); ++ if (getpeername(0, (struct sockaddr *)&faddr, &slen) < 0) ++ return -1; ++ natlookup.nl_inport = laddr.sin_port; ++ natlookup.nl_outport = faddr.sin_port; ++ natlookup.nl_inip = laddr.sin_addr; ++ natlookup.nl_outip = faddr.sin_addr; ++ natlookup.nl_flags = IPN_TCP; ++ if ((natfd = open(IPL_NAT, O_RDONLY)) < 0) ++ return -1; ++ if (ioctl(natfd, SIOCGNATL, &natlookup) == -1) { ++ syslog(LOG_ERR, "SIOCGNATL failed: %m\n"); ++ close(natfd); ++ return -1; ++ } ++ close(natfd); ++ strcpy(hostname, inet_ntoa(natlookup.nl_realip)); ++ serverport = ntohs(natlookup.nl_realport); ++ /* ++ * End of IP-Filter block ++ */ + + /* setup a timeout in case dialog doesn't finish */ + signal(SIGALRM, timeout); +*************** +*** 337,344 **** +--- 377,386 ---- + * and modify the call to (and subroutine) serverconnect() as + * appropriate. + */ ++ #if 0 + strcpy(hostname, "randomhostname"); + serverport = 7070; ++ #endif + /* Can we connect to the server */ + if ( (serverfd = serverconnect(hostname, serverport)) < 0 ) { + /* errno may still be set from previous call */ |