[tproxy] tproxy 1.2.0 missing ip_tproxy_sockref_uniq?

Jon Nelson jnelson-tproxy@securepipe.com
Thu, 8 Jan 2004 14:55:39 -0600 (CST)


I was wondering something.

Let's say somebody wants to perform a non-local LISTEN.
Since the port isn't known ahead of time, both the local bind(2)
operation *and* the ASSIGN use a port of 0 (pick one for me).
Of course the 'local' socket (getsockaddr) gets a port, thanks to the
kernel.  However, getsockopt (QUERY) returns ports of 0 for both local
*and* foreign.  How does one determine what the 'remote' port is?
With 2.4.21-23, there was (seeming) explicit support for this scenario
involving the function ip_tproxy_sockref_uniq (from the setsockopt
handler):

/* check if the proxy requested a wildcard port, and allocate
 * a free port if necessary */
if (itp.itp_faddr.s_addr && (itp.itp_fport == 0)) {
	itp.itp_fport = htons(ip_tproxy_sockref_uniq(itp.itp_faddr, proto));
	if (itp.itp_fport == 0) {
		/* port allocation failed */
		res = -EAGAIN;
		goto read_unlk;
	}
}

Did support for automatically assigning a foreign port go away between
2.4.21-23 and 1.2.0?

--
What do you call a fish with no eyes? A fsh.

Jon Nelson <jnelson-tproxy@securepipe.com>