diff options
Diffstat (limited to 'net-proxy/squid/files/squid-3.0.18-adapted-zph.patch')
-rw-r--r-- | net-proxy/squid/files/squid-3.0.18-adapted-zph.patch | 207 |
1 files changed, 0 insertions, 207 deletions
diff --git a/net-proxy/squid/files/squid-3.0.18-adapted-zph.patch b/net-proxy/squid/files/squid-3.0.18-adapted-zph.patch deleted file mode 100644 index 7b7e62cbbd1c..000000000000 --- a/net-proxy/squid/files/squid-3.0.18-adapted-zph.patch +++ /dev/null @@ -1,207 +0,0 @@ -diff -Nru squid-3.0.STABLE18.orig/src/cf.data.pre squid-3.0.STABLE18/src/cf.data.pre ---- squid-3.0.STABLE18.orig/src/cf.data.pre 2009-08-06 23:21:35.000000000 +0200 -+++ squid-3.0.STABLE18/src/cf.data.pre 2009-08-06 23:21:56.000000000 +0200 -@@ -1133,6 +1133,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 -diff -Nru squid-3.0.STABLE18.orig/src/client_side_reply.cc squid-3.0.STABLE18/src/client_side_reply.cc ---- squid-3.0.STABLE18.orig/src/client_side_reply.cc 2009-08-04 13:57:49.000000000 +0200 -+++ squid-3.0.STABLE18/src/client_side_reply.cc 2009-08-06 23:21:57.000000000 +0200 -@@ -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="<<Config.zph_tos_local); -+ comm_set_tos(http->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="<<tos<<" hier.code="<<http->request->hier.code); -+ } -+ else if (Config.onoff.zph_preserve_miss_tos && Config.zph_preserve_miss_tos_mask) -+ { -+ tos = fd_table[fd].upstreamTOS & Config.zph_preserve_miss_tos_mask; -+ debugs(33, 1, "ZPH: Preserving TOS on miss, TOS="<<tos); -+ } -+ comm_set_tos(fd,tos); -+ } - - if (buf != result.data) { - /* we've got to copy some data */ -diff -Nru squid-3.0.STABLE18.orig/src/fde.h squid-3.0.STABLE18/src/fde.h ---- squid-3.0.STABLE18.orig/src/fde.h 2009-08-04 13:57:49.000000000 +0200 -+++ squid-3.0.STABLE18/src/fde.h 2009-08-06 23:21:57.000000000 +0200 -@@ -106,7 +106,7 @@ - long handle; - } win32; - #endif -- -+ unsigned char upstreamTOS; /* see FwdState::dispatch() */ - }; - - #endif /* SQUID_FDE_H */ -diff -Nru squid-3.0.STABLE18.orig/src/forward.cc squid-3.0.STABLE18/src/forward.cc ---- squid-3.0.STABLE18.orig/src/forward.cc 2009-08-04 13:57:49.000000000 +0200 -+++ squid-3.0.STABLE18/src/forward.cc 2009-08-06 23:26:39.000000000 +0200 -@@ -965,6 +965,57 @@ - - netdbPingSite(request->host); - -+ /* Retrieves remote server TOS value, and stores it as part of the -+ * original client request FD object. It is later used to forward -+ * remote server's TOS in the response to the client in case of a MISS. -+ */ -+ fde * clientFde = &fd_table[client_fd]; -+ if (clientFde) -+ { -+ int tos = 1; -+ int tos_len = sizeof(tos); -+ clientFde->upstreamTOS = 0; -+ if (setsockopt(server_fd,SOL_IP,IP_RECVTOS,&tos,tos_len)==0) -+ { -+ unsigned char buf[512]; -+ int len = 512; -+ if (getsockopt(server_fd,SOL_IP,IP_PKTOPTIONS,buf,(socklen_t*)&len) == 0) -+ { -+ /* Parse the PKTOPTIONS structure to locate the TOS data message -+ * prepared in the kernel by the ZPH incoming TCP TOS preserving -+ * patch. -+ */ -+ unsigned char * p = buf; -+ while (p-buf < len) -+ { -+ struct cmsghdr *o = (struct cmsghdr*)p; -+ if (o->cmsg_len<=0) -+ break; -+ -+ if (o->cmsg_level == SOL_IP && o->cmsg_type == IP_TOS) -+ { -+ union { -+ unsigned char *pchar; -+ int *pint; -+ } data; -+ data.pchar = CMSG_DATA(o); -+ clientFde->upstreamTOS = (unsigned char)*data.pint; -+ break; -+ } -+ p += CMSG_LEN(o->cmsg_len); -+ } -+ } -+ else -+ { -+ debugs(33, 1, "ZPH: error in getsockopt(IP_PKTOPTIONS) on FD "<<server_fd<<" "<<xstrerror()); -+ } -+ } -+ else -+ { -+ debugs(33, 1, "ZPH: error in setsockopt(IP_RECVTOS) on FD "<<server_fd<<" "<<xstrerror()); -+ } -+ } -+ - if (servers && (p = servers->_peer)) { - p->stats.fetches++; - request->peer_login = p->login; -diff -Nru squid-3.0.STABLE18.orig/src/structs.h squid-3.0.STABLE18/src/structs.h ---- squid-3.0.STABLE18.orig/src/structs.h 2009-08-04 13:57:50.000000000 +0200 -+++ squid-3.0.STABLE18/src/structs.h 2009-08-06 23:21:57.000000000 +0200 -@@ -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 |