--- squid-3.0.STABLE25.orig/src/cf.data.pre 2010-03-13 21:45:43.000000000 -0800 +++ squid-3.0.STABLE25.orig/src/cf.data.pre 2010-03-24 13:30:41.000000000 -0800 @@ -1125,6 +1125,60 @@ making the request. DOC_END +NAME: zph_tos_local +TYPE: int +DEFAULT: 0 +LOC: Config.zph_tos_local +DOC_START + Allows you to select a TOS/Diffserv value to mark local hits. Read above + (tcp_outgoing_tos) for details/requirements about TOS. + Default: 0 (disabled). +DOC_END + +NAME: zph_tos_peer +TYPE: int +DEFAULT: 0 +LOC: Config.zph_tos_peer +DOC_START + Allows you to select a TOS/Diffserv value to mark peer hits. Read above + (tcp_outgoing_tos) for details/requirements about TOS. + Default: 0 (disabled). +DOC_END + +NAME: zph_tos_parent +COMMENT: on|off +TYPE: onoff +LOC: Config.onoff.zph_tos_parent +DEFAULT: on +DOC_START + Set this to off if you want only sibling hits to be marked. + If set to on (default), parent hits are being marked too. +DOC_END + +NAME: zph_preserve_miss_tos +COMMENT: on|off +TYPE: onoff +LOC: Config.onoff.zph_preserve_miss_tos +DEFAULT: on +DOC_START + If set to on (default), any HTTP response towards clients will + have the TOS value of the response comming from the remote + server masked with the value of zph_preserve_miss_tos_mask. + For this to work correctly, you will need to patch your linux + kernel with the TOS preserving ZPH patch. +DOC_END + +NAME: zph_preserve_miss_tos_mask +TYPE: int +DEFAULT: 255 +LOC: Config.zph_preserve_miss_tos_mask +DOC_START + Allows you to mask certain bits in the TOS received from the + remote server, before copying the value to the TOS send towards + clients. + Default: 255 (TOS from server is not changed). +DOC_END + NAME: tcp_outgoing_address TYPE: acl_address DEFAULT: none --- squid-3.0.STABLE25.orig/src/client_side_reply.cc 2010-03-13 21:45:41.000000000 -0800 +++ squid-3.0.STABLE25.orig/src/client_side_reply.cc 2010-03-24 13:30:41.000000000 -0800 @@ -48,6 +48,7 @@ #include "ESI.h" #endif #include "MemObject.h" +#include "fde.h" #include "ACLChecklist.h" #include "ACL.h" #if DELAY_POOLS @@ -1549,6 +1550,11 @@ /* guarantee nothing has been sent yet! */ assert(http->out.size == 0); assert(http->out.offset == 0); + if (Config.zph_tos_local) + { + debugs(33, 1, "ZPH hit hier.code=" << http->request->hier.code <<" TOS="<getConn()->fd,Config.zph_tos_local); + } tempBuffer.offset = reqofs; tempBuffer.length = getNextNode()->readBuffer.length; tempBuffer.data = getNextNode()->readBuffer.data; @@ -1829,6 +1835,24 @@ char *buf = next()->readBuffer.data; char *body_buf = buf; + + if (reqofs==0 && !logTypeIsATcpHit(http->logType)) + { + int tos = 0; + if (Config.zph_tos_peer && + (http->request->hier.code==SIBLING_HIT || + (Config.onoff.zph_tos_parent && http->request->hier.code==PARENT_HIT))) + { + tos = Config.zph_tos_peer; + debugs(33, 1, "ZPH: Peer hit, TOS="<_peer)) { p->stats.fetches++; request->peer_login = p->login; --- squid-3.0.STABLE25.orig/src/structs.h 2010-03-13 21:45:39.000000000 -0800 +++ squid-3.0.STABLE25.orig/src/structs.h 2010-03-24 13:30:41.000000000 -0800 @@ -554,6 +554,8 @@ int emailErrData; int httpd_suppress_version_string; int global_internal_static; + int zph_tos_parent; + int zph_preserve_miss_tos; int debug_override_X; int WIN32_IpAddrChangeMonitor; } @@ -722,6 +724,9 @@ int sleep_after_fork; /* microseconds */ time_t minimum_expiry_time; /* seconds */ external_acl *externalAclHelperList; + int zph_tos_local; + int zph_tos_peer; + int zph_preserve_miss_tos_mask; #if USE_SSL struct