Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Evergreen:11.1:kernel-2.6.32
squid-beta
10833.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 10833.patch of Package squid-beta
--------------------- PatchSet 10833 Date: 2007/05/26 06:38:03 Author: wessels Branch: HEAD Tag: (none) Log: Added 'clientside_tos' directive and feature. Much like 'tcp_outgoing_tos' except that this affect connections between Squid and its clients instead of server-side connections. Members: src/ClientRequestContext.h:1.3->1.4 src/cf.data.pre:1.437->1.438 src/client_side_request.cc:1.87->1.88 src/comm.cc:1.430->1.431 src/comm.h:1.28->1.29 src/forward.cc:1.164->1.165 src/structs.h:1.556->1.557 Index: squid3/src/ClientRequestContext.h =================================================================== RCS file: /cvsroot/squid/squid3/src/ClientRequestContext.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- squid3/src/ClientRequestContext.h 11 Jan 2006 21:14:33 -0000 1.3 +++ squid3/src/ClientRequestContext.h 26 May 2007 06:38:03 -0000 1.4 @@ -38,6 +38,7 @@ bool redirect_done; bool no_cache_done; bool interpreted_req_hdrs; + bool clientside_tos_done; private: CBDATA_CLASS(ClientRequestContext); Index: squid3/src/cf.data.pre =================================================================== RCS file: /cvsroot/squid/squid3/src/cf.data.pre,v retrieving revision 1.437 retrieving revision 1.438 diff -u -r1.437 -r1.438 --- squid3/src/cf.data.pre 22 May 2007 17:12:38 -0000 1.437 +++ squid3/src/cf.data.pre 26 May 2007 06:38:03 -0000 1.438 @@ -1,6 +1,6 @@ # -# $Id: cf.data.pre,v 1.437 2007/05/22 17:12:38 rousskov Exp $ +# $Id: cf.data.pre,v 1.438 2007/05/26 06:38:03 wessels Exp $ # # # SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -2922,6 +2922,16 @@ matching line. DOC_END +NAME: clientside_tos +TYPE: acl_tos +DEFAULT: none +LOC: Config.accessList.clientside_tos +DOC_START + Allows you to select a TOS/Diffserv value to mark client-side + connections with, based on the username or source address + making the request. +DOC_END + NAME: tcp_outgoing_address TYPE: acl_address DEFAULT: none Index: squid3/src/client_side_request.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/client_side_request.cc,v retrieving revision 1.87 retrieving revision 1.88 diff -u -r1.87 -r1.88 --- squid3/src/client_side_request.cc 18 May 2007 18:26:01 -0000 1.87 +++ squid3/src/client_side_request.cc 26 May 2007 06:38:04 -0000 1.88 @@ -1,6 +1,6 @@ /* - * $Id: client_side_request.cc,v 1.87 2007/05/18 18:26:01 wessels Exp $ + * $Id: client_side_request.cc,v 1.88 2007/05/26 06:38:04 wessels Exp $ * * DEBUG: section 85 Client-side Request Routines * AUTHOR: Robert Collins (Originally Duane Wessels in client_side.c) @@ -999,6 +999,8 @@ * the callout. This is strictly for convenience. */ +extern int aclMapTOS (acl_tos * head, ACLChecklist * ch); + void ClientHttpRequest::doCallouts() { @@ -1049,6 +1051,20 @@ } } + if (!calloutContext->clientside_tos_done) { + calloutContext->clientside_tos_done = true; + if (getConn() != NULL) { + ACLChecklist ch; + ch.src_addr = request->client_addr; + ch.my_addr = request->my_addr; + ch.my_port = request->my_port; + ch.request = HTTPMSGLOCK(request); + int tos = aclMapTOS(Config.accessList.clientside_tos, &ch); + if (tos) + comm_set_tos(getConn()->fd, tos); + } + } + cbdataReferenceDone(calloutContext->http); delete calloutContext; calloutContext = NULL; Index: squid3/src/comm.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/comm.cc,v retrieving revision 1.430 retrieving revision 1.431 diff -u -r1.430 -r1.431 --- squid3/src/comm.cc 30 Apr 2007 16:56:09 -0000 1.430 +++ squid3/src/comm.cc 26 May 2007 06:38:04 -0000 1.431 @@ -1,6 +1,6 @@ /* - * $Id: comm.cc,v 1.430 2007/04/30 16:56:09 wessels Exp $ + * $Id: comm.cc,v 1.431 2007/05/26 06:38:04 wessels Exp $ * * DEBUG: section 5 Socket Functions * AUTHOR: Harvest Derived @@ -822,6 +822,21 @@ return anErrno == ENFILE || anErrno == EMFILE; } +int +comm_set_tos(int fd, int tos) +{ +#ifdef IP_TOS + int x = setsockopt(fd, IPPROTO_IP, IP_TOS, (char *) &tos, sizeof(int)); + if (x < 0) + debugs(50, 1, "comm_set_tos: setsockopt(IP_TOS) on FD " << fd << ": " << xstrerror()); + return x; +#else + debugs(50, 0, "comm_set_tos: setsockopt(IP_TOS) not supported on this platform"); + return -1 +#endif +} + + /* Create a socket. Default is blocking, stream (TCP) socket. IO_TYPE * is OR of flags specified in defines.h:COMM_* */ int Index: squid3/src/comm.h =================================================================== RCS file: /cvsroot/squid/squid3/src/comm.h,v retrieving revision 1.28 retrieving revision 1.29 diff -u -r1.28 -r1.29 --- squid3/src/comm.h 31 Oct 2006 23:30:57 -0000 1.28 +++ squid3/src/comm.h 26 May 2007 06:38:04 -0000 1.29 @@ -53,6 +53,7 @@ SQUIDCEXTERN int comm_openex(int, int, struct IN_ADDR, u_short, int, unsigned char TOS, const char *); SQUIDCEXTERN u_short comm_local_port(int fd); +SQUIDCEXTERN int comm_set_tos(int fd, int tos); SQUIDCEXTERN void commSetSelect(int, unsigned int, PF *, void *, time_t); Index: squid3/src/forward.cc =================================================================== RCS file: /cvsroot/squid/squid3/src/forward.cc,v retrieving revision 1.164 retrieving revision 1.165 diff -u -r1.164 -r1.165 --- squid3/src/forward.cc 11 May 2007 13:20:57 -0000 1.164 +++ squid3/src/forward.cc 26 May 2007 06:38:04 -0000 1.165 @@ -1,6 +1,6 @@ /* - * $Id: forward.cc,v 1.164 2007/05/11 13:20:57 rousskov Exp $ + * $Id: forward.cc,v 1.165 2007/05/26 06:38:04 wessels Exp $ * * DEBUG: section 17 Request Forwarding * AUTHOR: Duane Wessels @@ -1197,7 +1197,11 @@ return addr; } -static int +/* + * DPW 2007-05-19 + * Formerly static, but now used by client_side_request.cc + */ +int aclMapTOS(acl_tos * head, ACLChecklist * ch) { acl_tos *l; Index: squid3/src/structs.h =================================================================== RCS file: /cvsroot/squid/squid3/src/structs.h,v retrieving revision 1.556 retrieving revision 1.557 diff -u -r1.556 -r1.557 --- squid3/src/structs.h 18 May 2007 06:41:25 -0000 1.556 +++ squid3/src/structs.h 26 May 2007 06:38:05 -0000 1.557 @@ -1,6 +1,6 @@ /* - * $Id: structs.h,v 1.556 2007/05/18 06:41:25 amosjeffries Exp $ + * $Id: structs.h,v 1.557 2007/05/26 06:38:05 wessels Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -584,6 +584,7 @@ acl_access *reply; acl_address *outgoing_address; acl_tos *outgoing_tos; + acl_tos *clientside_tos; #if USE_HTCP acl_access *htcp;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor