Re: [MERGE] Config cleanups

From: Adrian Chadd <adrian_at_squid-cache.org>
Date: Thu, 11 Sep 2008 10:15:00 +0800

You have the WCCPv2 stuff around the wrong way.

the redirection has nothing to do with the assignment method.

You can and do have L2 redirection with hash assignment. You probably
won't have GRE redirection with mask assignment though, but I think
its entirely possible.

Keep the options separate, and named whatever they are in the wccp2 draft.

I'd also suggest committing each chunk thats "different" seperately -
ie, the wccp stuff seperate, the ACL tidyup seperate, the default
storage stuff seperate, etc. That makes backing out patches easier if
needed.

2c,

Adrian

2008/9/10 Amos Jeffries <squid3_at_treenet.co.nz>:
> This update removes several magic number options in the WCCPv2
> configuration. Replacing them with user-freindly text options.
>
> This should help with a lot of config confusion where these are needed until
> they are obsoleted properly.
>
> # Bazaar merge directive format 2 (Bazaar 0.90)
> # revision_id: squid3_at_treenet.co.nz-20080910154736-tthy86pnrddzmsiu
> # target_branch: file:///src/squid/bzr/trunk/
> # testament_sha1: 7b319238106ae2926697f85b2ec58c3476abc121
> # timestamp: 2008-09-11 03:50:49 +1200
> # base_revision_id: squid3_at_treenet.co.nz-20080909121659-\
> # q5rnfdpug13p94fl
> #
> # Begin patch
> === modified file 'src/cf.data.depend'
> --- src/cf.data.depend 2008-04-03 05:31:29 +0000
> +++ src/cf.data.depend 2008-09-10 15:22:08 +0000
> @@ -47,6 +47,7 @@
> tristate
> uri_whitespace
> ushort
> +wccp2_method
> wccp2_service
> wccp2_service_info
> wordlist
>
> === modified file 'src/cf.data.pre'
> --- src/cf.data.pre 2008-08-09 06:24:33 +0000
> +++ src/cf.data.pre 2008-09-10 15:47:36 +0000
> @@ -831,8 +831,8 @@
>
> NOCOMMENT_START
> #Allow ICP queries from local networks only
> -icp_access allow localnet
> -icp_access deny all
> +#icp_access allow localnet
> +#icp_access deny all
> NOCOMMENT_END
> DOC_END
>
> @@ -856,8 +856,8 @@
>
> NOCOMMENT_START
> #Allow HTCP queries from local networks only
> -htcp_access allow localnet
> -htcp_access deny all
> +#htcp_access allow localnet
> +#htcp_access deny all
> NOCOMMENT_END
> DOC_END
>
> @@ -883,7 +883,7 @@
> NAME: miss_access
> TYPE: acl_access
> LOC: Config.accessList.miss
> -DEFAULT: none
> +DEFAULT: allow all
> DOC_START
> Use to force your neighbors to use you as a sibling instead of
> a parent. For example:
> @@ -897,11 +897,6 @@
>
> By default, allow all clients who passed the http_access rules
> to fetch MISSES from us.
> -
> -NOCOMMENT_START
> -#Default setting:
> -# miss_access allow all
> -NOCOMMENT_END
> DOC_END
>
> NAME: ident_lookup_access
> @@ -1555,9 +1550,7 @@
>
> icp-port: Used for querying neighbor caches about
> objects. To have a non-ICP neighbor
> - specify '7' for the ICP port and make sure the
> - neighbor machine has the UDP echo port
> - enabled in its /etc/inetd.conf file.
> + specify '0' for the ICP port.
> NOTE: Also requires icp_port option enabled to send/receive
> requests via this method.
>
> @@ -1955,7 +1948,7 @@
> NAME: maximum_object_size_in_memory
> COMMENT: (bytes)
> TYPE: b_size_t
> -DEFAULT: 8 KB
> +DEFAULT: 512 KB
> LOC: Config.Store.maxInMemObjSize
> DOC_START
> Objects greater than this size will not be attempted to kept in
> @@ -2124,7 +2117,7 @@
> which can be changed with the --with-coss-membuf-size=N configure
> option.
> NOCOMMENT_START
> -cache_dir ufs @DEFAULT_SWAP_DIR@ 100 16 256
> +# cache_dir ufs @DEFAULT_SWAP_DIR@ 100 16 256
> NOCOMMENT_END
> DOC_END
>
> @@ -2291,7 +2284,7 @@
> NAME: access_log cache_access_log
> TYPE: access_log
> LOC: Config.Log.accesslogs
> -DEFAULT: none
> +DEFAULT: @DEFAULT_ACCESS_LOG@ squid
> DOC_START
> These files log client request activities. Has a line every HTTP or
> ICP request. The format is:
> @@ -2314,9 +2307,9 @@
>
> And priority could be any of:
> err, warning, notice, info, debug.
> -NOCOMMENT_START
> -access_log @DEFAULT_ACCESS_LOG@ squid
> -NOCOMMENT_END
> +
> + Default:
> + access_log @DEFAULT_ACCESS_LOG@ squid
> DOC_END
>
> NAME: log_access
> @@ -2342,14 +2335,17 @@
>
> NAME: cache_store_log
> TYPE: string
> -DEFAULT: @DEFAULT_STORE_LOG@
> +DEFAULT: none
> LOC: Config.Log.store
> DOC_START
> Logs the activities of the storage manager. Shows which
> objects are ejected from the cache, and which objects are
> - saved and for how long. To disable, enter "none". There are
> - not really utilities to analyze this data, so you can safely
> + saved and for how long. To disable, enter "none" or remove the
> line.
> + There are not really utilities to analyze this data, so you can
> safely
> disable it.
> +NOCOMMENT_START
> +# cache_store_log @DEFAULT_STORE_LOG@
> +NOCOMMENT_END
> DOC_END
>
> NAME: cache_swap_state cache_swap_log
> @@ -3085,7 +3081,7 @@
> NAME: request_header_max_size
> COMMENT: (KB)
> TYPE: b_size_t
> -DEFAULT: 20 KB
> +DEFAULT: 64 KB
> LOC: Config.maxRequestHeaderSize
> DOC_START
> This specifies the maximum size for HTTP headers in a request.
> @@ -3098,7 +3094,7 @@
> NAME: reply_header_max_size
> COMMENT: (KB)
> TYPE: b_size_t
> -DEFAULT: 20 KB
> +DEFAULT: 64 KB
> LOC: Config.maxReplyHeaderSize
> DOC_START
> This specifies the maximum size for HTTP headers in a reply.
> @@ -3961,7 +3957,18 @@
> LOC: Config.Wccp.router
> DEFAULT: 0.0.0.0
> IFDEF: USE_WCCP
> -DOC_NONE
> +DOC_START
> + Use this option to define your WCCP ``home'' router for
> + Squid.
> +
> + wccp_router supports a single WCCP(v1) router
> +
> + wccp2_router supports multiple WCCPv2 routers
> +
> + only one of the two may be used at the same time and defines
> + which version of WCCP to use.
> +DOC_END
> +
> NAME: wccp2_router
> TYPE: IPAddress_list
> LOC: Config.Wccp2.router
> @@ -4008,33 +4015,33 @@
> DOC_END
>
> NAME: wccp2_forwarding_method
> -TYPE: int
> +TYPE: wccp2_method
> LOC: Config.Wccp2.forwarding_method
> -DEFAULT: 1
> +DEFAULT: gre_hash
> IFDEF: USE_WCCPv2
> DOC_START
> WCCP2 allows the setting of forwarding methods between the
> router/switch and the cache. Valid values are as follows:
>
> - 1 - GRE encapsulation (forward the packet in a GRE/WCCP tunnel)
> - 2 - L2 redirect (forward the packet using Layer 2/MAC rewriting)
> + gre_hash - GRE encapsulation (forward the packet in a GRE/WCCP
> tunnel)
> + l2_mask - L2 redirect (forward the packet using Layer 2/MAC
> rewriting)
>
> Currently (as of IOS 12.4) cisco routers only support GRE.
> Cisco switches only support the L2 redirect assignment method.
> DOC_END
>
> NAME: wccp2_return_method
> -TYPE: int
> +TYPE: wccp2_method
> LOC: Config.Wccp2.return_method
> -DEFAULT: 1
> +DEFAULT: gre_hash
> IFDEF: USE_WCCPv2
> DOC_START
> WCCP2 allows the setting of return methods between the
> router/switch and the cache for packets that the cache
> decides not to handle. Valid values are as follows:
>
> - 1 - GRE encapsulation (forward the packet in a GRE/WCCP tunnel)
> - 2 - L2 redirect (forward the packet using Layer 2/MAC rewriting)
> + gre_hash - GRE encapsulation (forward the packet in a GRE/WCCP
> tunnel)
> + l2_mask - L2 redirect (forward the packet using Layer 2/MAC
> rewriting)
>
> Currently (as of IOS 12.4) cisco routers only support GRE.
> Cisco switches only support the L2 redirect assignment.
> @@ -4046,16 +4053,16 @@
> DOC_END
>
> NAME: wccp2_assignment_method
> -TYPE: int
> +TYPE: wccp2_method
> LOC: Config.Wccp2.assignment_method
> -DEFAULT: 1
> +DEFAULT: gre_hash
> IFDEF: USE_WCCPv2
> DOC_START
> WCCP2 allows the setting of methods to assign the WCCP hash
> Valid values are as follows:
>
> - 1 - Hash assignment
> - 2 - Mask assignment
> + gre_hash - Hash assignment
> + l2_mask - Mask assignment
>
> As a general rule, cisco routers support the hash assignment method
> and cisco switches support the mask assignment method.
> @@ -4087,7 +4094,6 @@
> wccp2_service dynamic 80 # a dynamic service type which will
> be
> # fleshed out with subsequent
> options.
> wccp2_service standard 0 password=foo
> -
> DOC_END
>
> NAME: wccp2_service_info
> @@ -4138,6 +4144,7 @@
> DEFAULT: 0.0.0.0
> IFDEF: USE_WCCP
> DOC_NONE
> +
> NAME: wccp2_address
> TYPE: address
> LOC: Config.Wccp2.address
> @@ -4315,13 +4322,14 @@
> DEFAULT: 0.0.0.0
> IFDEF: SQUID_SNMP
> DOC_NONE
> +
> NAME: snmp_outgoing_address
> TYPE: address
> LOC: Config.Addrs.snmp_outgoing
> DEFAULT: 255.255.255.255
> IFDEF: SQUID_SNMP
> DOC_START
> - Just like 'udp_incoming_address' above, but for the SNMP port.
> + Just like 'udp_incoming_address', but for the SNMP port.
>
> snmp_incoming_address is used for the SNMP socket receiving
> messages from SNMP agents.
> @@ -4354,7 +4362,7 @@
> and from neighbor caches. The standard UDP port for ICP is 3130.
> Default is disabled (0).
> NOCOMMENT_START
> -icp_port @DEFAULT_ICP_PORT@
> +#icp_port @DEFAULT_ICP_PORT@
> NOCOMMENT_END
> DOC_END
>
>
> === modified file 'src/protos.h'
> --- src/protos.h 2008-09-03 04:40:31 +0000
> +++ src/protos.h 2008-09-10 15:22:08 +0000
> @@ -813,10 +813,13 @@
> SQUIDCEXTERN char *strtokFile(void);
>
> #if USE_WCCPv2
> +
> +SQUIDCEXTERN void parse_wccp2_method(int *v);
> +SQUIDCEXTERN void free_wccp2_method(int *v);
> +SQUIDCEXTERN void dump_wccp2_method(StoreEntry * e, const char *label, int
> v);
> +
> SQUIDCEXTERN void parse_wccp2_service(void *v);
> -
> SQUIDCEXTERN void free_wccp2_service(void *v);
> -
> SQUIDCEXTERN void dump_wccp2_service(StoreEntry * e, const char *label,
> void *v);
>
> SQUIDCEXTERN int check_null_wccp2_service(void *v);
>
> === modified file 'src/wccp2.cc'
> --- src/wccp2.cc 2008-08-13 03:24:57 +0000
> +++ src/wccp2.cc 2008-09-10 15:47:36 +0000
> @@ -109,14 +109,17 @@
> #define WCCP2_CAPABILITY_ASSIGNMENT_METHOD 0x02
> #define WCCP2_CAPABILITY_RETURN_METHOD 0x03
>
> -#define WCCP2_FORWARDING_METHOD_GRE 0x00000001
> -#define WCCP2_FORWARDING_METHOD_L2 0x00000002
> -
> -#define WCCP2_ASSIGNMENT_METHOD_HASH 0x00000001
> -#define WCCP2_ASSIGNMENT_METHOD_MASK 0x00000002
> -
> -#define WCCP2_PACKET_RETURN_METHOD_GRE 0x00000001
> -#define WCCP2_PACKET_RETURN_METHOD_L2 0x00000002
> +#define WCCP2_METHOD_GRE 0x00000001
> +#define WCCP2_METHOD_L2 0x00000002
> +
> +#define WCCP2_FORWARDING_METHOD_GRE WCCP2_METHOD_GRE
> +#define WCCP2_FORWARDING_METHOD_L2 WCCP2_METHOD_L2
> +
> +#define WCCP2_ASSIGNMENT_METHOD_HASH WCCP2_METHOD_GRE
> +#define WCCP2_ASSIGNMENT_METHOD_MASK WCCP2_METHOD_L2
> +
> +#define WCCP2_PACKET_RETURN_METHOD_GRE WCCP2_METHOD_GRE
> +#define WCCP2_PACKET_RETURN_METHOD_L2 WCCP2_METHOD_L2
>
> #define WCCP2_HASH_ASSIGNMENT 0x00
> #define WCCP2_MASK_ASSIGNMENT 0x01
> @@ -1989,6 +1992,54 @@
> * Configuration option parsing code
> */
>
> +/**
> + * Parse wccp2_return_method and wccp2_forwarding_method options
> + * they can be '1' aka 'gre_hash' or '2' aka 'l2_mask'
> + * repesenting the integer numeric of the same.
> + */
> +void
> +parse_wccp2_method(int *method)
> +{
> + char *t;
> +
> + /* Snarf the method */
> + if ((t = strtok(NULL, w_space)) == NULL) {
> + debugs(80, DBG_CRITICAL, "wccp2_*_method: missing setting.");
> + self_destruct();
> + }
> +
> + /* update configuration if its valid */
> + if (strcmp(t, "gre_hash") == 0 || strcmp(t, "1") == 0) {
> + *method = WCCP2_METHOD_GRE;
> + } else if (strcmp(t, "l2_mask") == 0 || strcmp(t, "2") == 0) {
> + *method = WCCP2_METHOD_L2;
> + } else {
> + debugs(80, DBG_CRITICAL, "wccp2_*_method: unknown setting, got " <<
> t );
> + self_destruct();
> + }
> +}
> +
> +void
> +dump_wccp2_method(StoreEntry * e, const char *label, int v)
> +{
> + switch(v)
> + {
> + case 1:
> + storeAppendPrintf(e, "%s gre_hash\n", label);
> + break;
> + case 2:
> + storeAppendPrintf(e, "%s l2_mask\n", label);
> + break;
> + default:
> + debugs(80, DBG_CRITICAL, "FATAL: WCCPv2 configured method (" << v
> << ") is not valid.");
> + self_destruct();
> + }
> +}
> +
> +void
> +free_wccp2_method(int *v)
> +{ }
> +
> /*
> * Format:
> *
>
> # Begin bundle
> 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
> aOJvWvPwbyf5hCJkaP/xdyRThQkLkA02sA==
>
>
Received on Thu Sep 11 2008 - 02:15:05 MDT

This archive was generated by hypermail 2.2.0 : Thu Sep 11 2008 - 12:00:12 MDT