Adrian Chadd wrote:
On Mon, Mar 31, 2008, Alex Rousskov wrote:

What about Adrian plans (if I understood them correctly) to add
TPROXY-like support to FreeBSD but not for TPROXY4-like API? Is that a
good enough reason to continue supporting unsupported TPROXY versions?

The FreeBSD API will be almost like the TPROXY-4 API.

I'd suggest supporting TPROXY-2 for a few reasons:

* Those who are using it may not want to track the latest kernel + TPROXY
patches for various reasons (if it just works; company policy; etc.) and I think its easy enough to maintain support for both without
  too much hassle.

* Supporting both TPROXY-2 and TPROXY-4 will (hopefully!) force someone
  to integrate it cleanishly and avoid the Squid-2 ip interception mess!

* Thus making it easier for me to drop in a FreeBSD version of "tproxy"
  without too much hassle (or #ifdef's for that matter.)

It shouldn't be that difficult to isolate the bits of the code required for
spoofing the client IP in the request versus the TPROXY-specific stuff.
In fact, the only tproxy-specific stuff I can really see is:

* the logic in forward.c to the local bind, which can be wrapped up as
  part of the socket creation process, and
* The initialisation code, which in the tproxy-2 case does capabilities
  magic.



Adrian


We have come up with a 'final-beta' patch for squid-3 now.
http://treenet.co.nz/projects/squid/patches/tproxy-squid-3_20080407.patch
Just waiting on Laszlo final approval.

It's pretty much:

 * adding a COMM_TRANSPARENT flag to comm_openex(...)

 * adds a comm_set_transparent for internal comm use to do setsockopt()

 * adding a transparent flag to all fde's
   - set to 1 on fde's which are opened with the transparent flag
     OR, accepted from a listening fde with transparent flag.

* override getOutgoingAddr ACL checks to produce the transparent client-address as outgoing addr.

 * adapt the existing Netfilter NAT getsockopt() for tproxy option.


Should be easy to drop the squid side of your emulated TPROXY-4 alterations in there Adrian.

Amos
--
Please use Squid 2.6.STABLE19 or 3.0.STABLE4

Reply via email to