summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-proxy/squid/files/squid-2.6.14-qos.patch')
-rw-r--r--net-proxy/squid/files/squid-2.6.14-qos.patch311
1 files changed, 0 insertions, 311 deletions
diff --git a/net-proxy/squid/files/squid-2.6.14-qos.patch b/net-proxy/squid/files/squid-2.6.14-qos.patch
deleted file mode 100644
index 34a6d6275175..000000000000
--- a/net-proxy/squid/files/squid-2.6.14-qos.patch
+++ /dev/null
@@ -1,311 +0,0 @@
-diff -Nru squid-2.6.STABLE14.orig/src/cache_cf.c squid-2.6.STABLE14/src/cache_cf.c
---- squid-2.6.STABLE14.orig/src/cache_cf.c 2007-06-24 01:50:18.000000000 +0300
-+++ squid-2.6.STABLE14/src/cache_cf.c 2007-08-16 20:11:00.000000000 +0300
-@@ -891,6 +891,65 @@
- }
- }
-
-+CBDATA_TYPE(acl_priority);
-+
-+static void
-+dump_acl_priority(StoreEntry * entry, const char *name, acl_priority * head)
-+{
-+ acl_priority *l;
-+ for (l = head; l; l = l->next) {
-+ if (l->priority > 0)
-+ storeAppendPrintf(entry, "%s %04X:%04X", name,
-+ l->priority >> 16, l->priority & 0xFFFF);
-+ else
-+ storeAppendPrintf(entry, "%s none", name);
-+ dump_acl_list(entry, l->acl_list);
-+ storeAppendPrintf(entry, "\n");
-+ }
-+}
-+
-+static void
-+freed_acl_priority(void *data)
-+{
-+ acl_priority *l = data;
-+ aclDestroyAclList(&l->acl_list);
-+}
-+
-+static void
-+parse_acl_priority(acl_priority ** head)
-+{
-+ acl_priority *l;
-+ acl_priority **tail = head; /* sane name below */
-+ unsigned long priority, t1, t2;
-+ char junk;
-+ char *token = strtok(NULL, w_space);
-+ if (!token)
-+ self_destruct();
-+ if (sscanf(token, "%x:%x%c", &t1, &t2, &junk) != 2)
-+ self_destruct();
-+ if (t1 < 0 || t1 > 0xFFFF || t2 < 0 || t2 > 0xFFFF)
-+ self_destruct();
-+ priority = t1 << 16 | t2;
-+ CBDATA_INIT_TYPE_FREECB(acl_priority, freed_acl_priority);
-+ l = cbdataAlloc(acl_priority);
-+ l->priority = priority;
-+ aclParseAclList(&l->acl_list);
-+ while (*tail)
-+ tail = &(*tail)->next;
-+ *tail = l;
-+}
-+
-+static void
-+free_acl_priority(acl_priority ** head)
-+{
-+ while (*head) {
-+ acl_priority *l = *head;
-+ *head = l->next;
-+ l->next = NULL;
-+ cbdataFree(l);
-+ }
-+}
-+
- #if DELAY_POOLS
-
- /* do nothing - free_delay_pool_count is the magic free function.
-diff -Nru squid-2.6.STABLE14.orig/src/cf.data.pre squid-2.6.STABLE14/src/cf.data.pre
---- squid-2.6.STABLE14.orig/src/cf.data.pre 2007-08-16 20:10:44.000000000 +0300
-+++ squid-2.6.STABLE14/src/cf.data.pre 2007-08-16 20:11:00.000000000 +0300
-@@ -3218,6 +3218,27 @@
- Default: 255 (TOS from server is not changed).
- DOC_END
-
-+NAME: tcp_outgoing_priority
-+TYPE: acl_priority
-+DEFAULT: none
-+LOC: Config.accessList.outgoing_priority
-+DOC_START
-+ Allows you to select the priority of the outgoing connection,
-+ based on the username or source address making the request. The
-+ priority can be used by Linux QoS Qdiscs for classification.
-+
-+ tcp_outgoing_priority priority [!]aclname ...
-+
-+ Example where requests from special_service_net are assigned
-+ priority 10:100
-+
-+ acl special_service_net src 10.0.0.0/255.255.255.0
-+ tcp_outgoing_priority 10:100 special_service_net
-+
-+ Processing proceeds in the order specified, and stops at first fully
-+ matching line.
-+DOC_END
-+
- NAME: tcp_outgoing_address
- TYPE: acl_address
- DEFAULT: none
-diff -Nru squid-2.6.STABLE14.orig/src/comm.c squid-2.6.STABLE14/src/comm.c
---- squid-2.6.STABLE14.orig/src/comm.c 2007-04-17 12:39:56.000000000 +0300
-+++ squid-2.6.STABLE14/src/comm.c 2007-08-16 20:11:00.000000000 +0300
-@@ -162,7 +162,7 @@
- int flags,
- const char *note)
- {
-- return comm_openex(sock_type, proto, addr, port, flags, 0, note);
-+ return comm_openex(sock_type, proto, addr, port, flags, 0, 0, note);
- }
-
-
-@@ -175,10 +175,12 @@
- u_short port,
- int flags,
- unsigned char TOS,
-+ unsigned long PRIORITY,
- const char *note)
- {
- int new_socket;
- int tos = 0;
-+ unsigned long priority = 0;
- fde *F = NULL;
-
- /* Create socket for accepting new connections. */
-@@ -209,12 +211,25 @@
- debug(5, 0) ("comm_open: setsockopt(IP_TOS) not supported on this platform\n");
- #endif
- }
-+ if (PRIORITY) {
-+#ifdef SO_PRIORITY
-+ priority = PRIORITY;
-+ enter_suid();
-+ if (setsockopt(new_socket, SOL_SOCKET, SO_PRIORITY, (char *) &priority, sizeof(unsigned long)) < 0)
-+ debug(50, 1) ("comm_open: setsockopt(SO_PRIORITY) on FD %d: %s\n",
-+ new_socket, xstrerror());
-+ leave_suid();
-+#else
-+ debug(50, 0) ("comm_open: setsockopt(SO_PRIORITY) not supported on this platform\n");
-+#endif
-+ }
- /* update fdstat */
- debug(5, 5) ("comm_open: FD %d is a new socket\n", new_socket);
- fd_open(new_socket, FD_SOCKET, note);
- F = &fd_table[new_socket];
- F->local_addr = addr;
- F->tos = tos;
-+ F->priority = priority;
- if (!(flags & COMM_NOCLOEXEC))
- commSetCloseOnExec(new_socket);
- if ((flags & COMM_REUSEADDR))
-@@ -382,6 +397,15 @@
- debug(5, 1) ("commResetFD: setsockopt(IP_TOS) on FD %d: %s\n", cs->fd, xstrerror());
- }
- #endif
-+#ifdef SO_PRIORITY
-+ if (F->priority) {
-+ unsigned long priority = F->priority;
-+ enter_suid();
-+ if (setsockopt(cs->fd, SOL_SOCKET, SO_PRIORITY, (char *)&priority, sizeof(unsigned long)) < 0)
-+ debug(50, 1) ("commResetFD: setsockopt(SO_PRIORITY) on FD %d: %s\n", cs->fd, xstrerror());
-+ leave_suid();
-+ }
-+#endif
- if (F->flags.close_on_exec)
- commSetCloseOnExec(cs->fd);
- if (F->flags.nonblocking)
-diff -Nru squid-2.6.STABLE14.orig/src/forward.c squid-2.6.STABLE14/src/forward.c
---- squid-2.6.STABLE14.orig/src/forward.c 2007-04-17 12:35:17.000000000 +0300
-+++ squid-2.6.STABLE14/src/forward.c 2007-08-16 20:11:00.000000000 +0300
-@@ -418,6 +418,17 @@
- return 0;
- }
-
-+static unsigned long
-+aclMapPriority(acl_priority * head, aclCheck_t * ch)
-+{
-+ acl_priority *l;
-+ for (l = head; l; l = l->next) {
-+ if (aclMatchAclList(l->acl_list, ch))
-+ return l->priority;
-+ }
-+ return 0;
-+}
-+
- struct in_addr
- getOutgoingAddr(request_t * request)
- {
-@@ -446,6 +457,20 @@
- return aclMapTOS(Config.accessList.outgoing_tos, &ch);
- }
-
-+unsigned long
-+getOutgoingPriority(request_t * request)
-+{
-+ aclCheck_t ch;
-+ memset(&ch, '\0', sizeof(aclCheck_t));
-+ if (request) {
-+ ch.src_addr = request->client_addr;
-+ ch.my_addr = request->my_addr;
-+ ch.my_port = request->my_port;
-+ ch.request = request;
-+ }
-+ return aclMapPriority(Config.accessList.outgoing_priority, &ch);
-+}
-+
- static void
- fwdConnectStart(void *data)
- {
-@@ -462,6 +487,7 @@
- int ftimeout = Config.Timeout.forward - (squid_curtime - fwdState->start);
- struct in_addr outgoing;
- unsigned short tos;
-+ unsigned long priority;
- #if LINUX_TPROXY
- struct in_tproxy itp;
- #endif
-@@ -547,15 +573,17 @@
- #endif
- outgoing = getOutgoingAddr(fwdState->request);
- tos = getOutgoingTOS(fwdState->request);
-+ priority = getOutgoingPriority(fwdState->request);
-
-- debug(17, 3) ("fwdConnectStart: got addr %s, tos %d\n",
-- inet_ntoa(outgoing), tos);
-+ debug(17, 3) ("fwdConnectStart: got addr %s, tos %d, priority %lu\n",
-+ inet_ntoa(outgoing), tos, priority);
- fd = comm_openex(SOCK_STREAM,
- IPPROTO_TCP,
- outgoing,
- 0,
- COMM_NONBLOCKING,
- tos,
-+ priority,
- url);
- if (fd < 0) {
- debug(50, 4) ("fwdConnectStart: %s\n", xstrerror());
-diff -Nru squid-2.6.STABLE14.orig/src/protos.h squid-2.6.STABLE14/src/protos.h
---- squid-2.6.STABLE14.orig/src/protos.h 2007-07-15 12:52:17.000000000 +0300
-+++ squid-2.6.STABLE14/src/protos.h 2007-08-16 20:11:00.000000000 +0300
-@@ -160,7 +160,7 @@
- extern void comm_init(void);
- extern int comm_listen(int sock);
- extern int comm_open(int, int, struct in_addr, u_short port, int, const char *note);
--extern int comm_openex(int, int, struct in_addr, u_short, int, unsigned char TOS, const char *);
-+extern int comm_openex(int, int, struct in_addr, u_short, int, unsigned char TOS, unsigned long PRIORITY, const char *);
- extern u_short comm_local_port(int fd);
-
- extern void commDeferFD(int fd);
-@@ -735,6 +735,7 @@
- #endif
- struct in_addr getOutgoingAddr(request_t * request);
- unsigned long getOutgoingTOS(request_t * request);
-+unsigned long getOutgoingPriority(request_t * request);
-
- extern void urnStart(request_t *, StoreEntry *);
-
-diff -Nru squid-2.6.STABLE14.orig/src/ssl.c squid-2.6.STABLE14/src/ssl.c
---- squid-2.6.STABLE14.orig/src/ssl.c 2007-02-03 23:53:38.000000000 +0200
-+++ squid-2.6.STABLE14/src/ssl.c 2007-08-16 20:11:00.000000000 +0300
-@@ -524,6 +524,7 @@
- 0,
- COMM_NONBLOCKING,
- getOutgoingTOS(request),
-++ getOutgoingPriority(request),
- url);
- if (sock == COMM_ERROR) {
- debug(26, 4) ("sslStart: Failed because we're out of sockets.\n");
-diff -Nru squid-2.6.STABLE14.orig/src/structs.h squid-2.6.STABLE14/src/structs.h
---- squid-2.6.STABLE14.orig/src/structs.h 2007-08-16 20:10:44.000000000 +0300
-+++ squid-2.6.STABLE14/src/structs.h 2007-08-16 20:11:00.000000000 +0300
-@@ -296,6 +296,12 @@
- int tos;
- };
-
-+struct _acl_priority {
-+ acl_priority *next;
-+ acl_list *acl_list;
-+ unsigned long priority;
-+};
-+
- struct _aclCheck_t {
- const acl_access *access_list;
- struct in_addr src_addr;
-@@ -705,6 +711,7 @@
- acl_access *reply;
- acl_address *outgoing_address;
- acl_tos *outgoing_tos;
-+ acl_priority *outgoing_priority;
- #if USE_HTCP
- acl_access *htcp;
- acl_access *htcp_clr;
-@@ -876,6 +883,7 @@
- u_short remote_port;
- struct in_addr local_addr;
- unsigned char tos;
-+ unsigned long priority;
- char ipaddr[16]; /* dotted decimal address of peer */
- char desc[FD_DESC_SZ];
- struct {
-diff -Nru squid-2.6.STABLE14.orig/src/typedefs.h squid-2.6.STABLE14/src/typedefs.h
---- squid-2.6.STABLE14.orig/src/typedefs.h 2006-09-02 17:08:42.000000000 +0300
-+++ squid-2.6.STABLE14/src/typedefs.h 2007-08-16 20:11:00.000000000 +0300
-@@ -102,6 +102,7 @@
- typedef struct _acl_access acl_access;
- typedef struct _acl_address acl_address;
- typedef struct _acl_tos acl_tos;
-+typedef struct _acl_priority acl_priority;
- typedef struct _aclCheck_t aclCheck_t;
- typedef struct _wordlist wordlist;
- typedef struct _intlist intlist;