On Sun, 05 Sep 2010 16:52:27 -0600, Alex Rousskov <rouss...@measurement-factory.com> wrote: > On 09/05/2010 02:59 PM, Andrew Beverley wrote: >> Please find attached the latest version of the patch to add Netfilter >> marking support to Squid. >> >> All the previous comments have now been actioned. >> >> One thing that I haven't dealt with yet is the dependency on the >> ip_conntrack kernel module. This seems to get loaded automatically after >> some use of Squid, but not straight away, which means that the mark >> retention does not initially work. I've done some googling but have not >> found how to force a kernel module load in a program. Is someone able to >> advise please? >> >> Since my last submission (prompted by a request on squid-users), I have >> also added tcp_outgoing_mark and clientside_mark to complement >> tcp_outgoing_tos and clientside_tos. I am conscious that I have been >> copying old code to implement these, some of which does not seem >> particularly elegant. However, rather than changing things from my >> inexperienced perspective, I thought it best if I post the changes as-is >> and action any feedback as appropriate. >> >> As part of this I have added isAclNfmarkActive() and isAclTosActive() to >> return whether there should be any active TOS or MARK packet marking. I >> added these to fde as that seemed the most appropriate place, but again >> please tell me if I should move them elsewhere. >
I have not yet looked at the patch, this is just some additions to the points Alex makes... > > * TOS (unsigned char) and mark (uint32_t) types are repeated numerous > times throughout the patch. Do you thin it would be a good idea to > typedef them? It seems fairly easy for somebody to type them wrong or > mix them up. I cannot insist on this change, but it would be the right > thing to do, IMO. > > * If TOS and mark types can be the same uint32_t, we should probably use > the same type and avoid at least some of the code duplication due to the > difference in types. 64-bit marks are on the table at netfilter and with TCP/IPv6 extensions. The same is not true for TCP/IPv4. I have no opinion about the change itself, but IF done use two types please. > > * The isAclNfmarkActive() and isAclTosActive() functions appear to be > unrelated to src/fde.cc. They are about configuration, right? Why not > make them Qos globals or, of the lists are moved, Qos::Config methods? > > * I believe Amos does not want new functions in protos.h unless > necessary. Can you declare getOutgoingTOS() and getOutgoingNfmark() in > src/forward.h? And capitalize the first letter since they are global? Indeed, those should be in the src/ip/Qos* headers somewhere. (I know the original TOS was still in protos.h, but lets take the opportunity for the extra cleanup.) Amos