*** tproxy.c.orig Fri Dec 20 10:53:24 1996 --- tproxy.c Sun Jan 3 11:33:55 1999 *************** *** 135,140 **** --- 135,144 ---- #include #include #include + #include + #include + #include + #include #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 */