diff -Nru -x '*~' -x '*.orig' squid-3.1.1.orig/src/cf.data.pre squid-3.1.1/src/cf.data.pre --- squid-3.1.1.orig/src/cf.data.pre 2010-03-29 12:02:56.000000000 +0200 +++ squid-3.1.1/src/cf.data.pre 2010-04-08 14:05:48.883216389 +0200 @@ -1376,6 +1376,8 @@ parent-hit=0xFF Value to mark hits from parent peers. + acl-hit=0xFF Value to mark hits from acl matches. + NOTE: 'miss' preserve feature is only possible on Linux at this time. @@ -1396,6 +1398,22 @@ DOC_END +NAME: zph_acl +TYPE: acl_access +IFDEF: USE_ZPH_QOS +DEFAULT: none +DEFAULT_IF_NONE: deny all +LOC: Config.accessList.zph_acl +DOC_START + If set acl-hit in qos_flows, replies to client requests with TOS/Diffser + if acls is matched. + + qos_flows acl-hit=0x08 + acl peer_hit rep_header X-Cache HIT[[:space:]]from[[:space:]]domain\.com + zph_acl_access allow peer_hit + zph_acl_access deny all +DOC_END + NAME: tcp_outgoing_address TYPE: acl_address DEFAULT: none diff -Nru -x '*~' -x '*.orig' squid-3.1.1.orig/src/client_side_reply.cc squid-3.1.1/src/client_side_reply.cc --- squid-3.1.1.orig/src/client_side_reply.cc 2010-03-29 12:02:56.000000000 +0200 +++ squid-3.1.1/src/client_side_reply.cc 2010-04-08 14:05:48.883216389 +0200 @@ -1957,6 +1957,13 @@ } else if (Config.zph.tos_parent_hit && http->request->hier.code==PARENT_HIT) { tos = Config.zph.tos_parent_hit; debugs(33, 2, "ZPH: Parent Peer hit with hier.code=" << http->request->hier.code << ", TOS=" << tos); + } else if (Config.zph.tos_acl_hit && Config.accessList.zph_acl) { + ACLFilledChecklist *acl_checklist = clientAclChecklistCreate(Config.accessList.zph_acl, http); + int result = acl_checklist->fastCheck(); + if (result) { + tos = Config.zph.tos_acl_hit; + debugs(33, 2, "ZPH: Acl hit with hier.code=" << http->request->hier.code << ", TOS=" << tos); + } } else if (Config.zph.preserve_miss_tos && Config.zph.preserve_miss_tos_mask) { tos = fd_table[fd].upstreamTOS & Config.zph.preserve_miss_tos_mask; debugs(33, 2, "ZPH: Preserving TOS on miss, TOS="<0) { + snprintf(p, 13, " acl-hit=%2x", tos_acl_hit); + p += 13; + } if (preserve_miss_tos != 0) { snprintf(p, 22, " disable-preserve-miss"); p += 22; diff -Nru -x '*~' -x '*.orig' squid-3.1.1.orig/src/ip/QosConfig.h squid-3.1.1/src/ip/QosConfig.h --- squid-3.1.1.orig/src/ip/QosConfig.h 2010-03-29 12:02:56.000000000 +0200 +++ squid-3.1.1/src/ip/QosConfig.h 2010-04-08 14:05:48.910902971 +0200 @@ -11,6 +11,7 @@ int tos_local_hit; int tos_sibling_hit; int tos_parent_hit; + int tos_acl_hit; int preserve_miss_tos; int preserve_miss_tos_mask; diff -Nru -x '*~' -x '*.orig' squid-3.1.1.orig/src/structs.h squid-3.1.1/src/structs.h --- squid-3.1.1.orig/src/structs.h 2010-03-29 12:02:57.000000000 +0200 +++ squid-3.1.1/src/structs.h 2010-04-08 14:05:48.910902971 +0200 @@ -491,6 +491,10 @@ #if ICAP_CLIENT acl_access* icap; #endif + +#if USE_ZPH_QOS + acl_access *zph_acl; +#endif } accessList; acl_deny_info_list *denyInfoList; authConfig authConfiguration;