]> git.ipfire.org Git - thirdparty/squid.git/blobdiff - src/cf.data.pre
Cleanup: remove several C-style casts from libcompat
[thirdparty/squid.git] / src / cf.data.pre
index 642ca00cc4c7a90b780ff0656bdf5aad2fe99eb2..df92fd0a35d0354dd9ae410dfcce90604dc4e8dd 100644 (file)
@@ -1,4 +1,4 @@
-## Copyright (C) 1996-2015 The Squid Software Foundation and contributors
+## Copyright (C) 1996-2016 The Squid Software Foundation and contributors
 ##
 ## Squid software is distributed under GPLv2+ license and includes
 ## contributions from numerous individuals and organizations.
@@ -200,7 +200,7 @@ DOC_END
 NAME: sslproxy_version
 TYPE: obsolete
 DOC_START
-       Remove this line. Use tls_outgoing_options version= instead.
+       Remove this line. Use tls_outgoing_options options= instead.
 DOC_END
 
 # Options removed in 3.5
@@ -376,6 +376,49 @@ DOC_START
        Replace this line with 'cache_peer' configuration.
 DOC_END
 
+COMMENT_START
+ OPTIONS FOR SMP
+ -----------------------------------------------------------------------------
+COMMENT_END
+
+NAME: workers
+TYPE: int
+LOC: Config.workers
+DEFAULT: 1
+DEFAULT_DOC: SMP support disabled.
+DOC_START
+       Number of main Squid processes or "workers" to fork and maintain.
+       0: "no daemon" mode, like running "squid -N ..."
+       1: "no SMP" mode, start one main Squid process daemon (default)
+       N: start N main Squid process daemons (i.e., SMP mode)
+
+       In SMP mode, each worker does nearly all what a single Squid daemon
+       does (e.g., listen on http_port and forward HTTP requests).
+DOC_END
+
+NAME: cpu_affinity_map
+TYPE: CpuAffinityMap
+LOC: Config.cpuAffinityMap
+DEFAULT: none
+DEFAULT_DOC: Let operating system decide.
+DOC_START
+       Usage: cpu_affinity_map process_numbers=P1,P2,... cores=C1,C2,...
+
+       Sets 1:1 mapping between Squid processes and CPU cores. For example,
+
+           cpu_affinity_map process_numbers=1,2,3,4 cores=1,3,5,7
+
+       affects processes 1 through 4 only and places them on the first
+       four even cores, starting with core #1.
+
+       CPU cores are numbered starting from 1. Requires support for
+       sched_getaffinity(2) and sched_setaffinity(2) system calls.
+
+       Multiple cpu_affinity_map options are merged.
+
+       See also: workers
+DOC_END
+
 COMMENT_START
  OPTIONS FOR AUTHENTICATION
  -----------------------------------------------------------------------------
@@ -674,20 +717,24 @@ DOC_START
        Options:
 
          ttl=n         TTL in seconds for cached results (defaults to 3600
-                       for 1 hour)
+                       for 1 hour)
 
          negative_ttl=n
-                       TTL for cached negative lookups (default same
-                       as ttl)
+                       TTL for cached negative lookups (default same
+                       as ttl)
 
          grace=n       Percentage remaining of TTL where a refresh of a
                        cached entry should be initiated without needing to
                        wait for a new reply. (default is for no grace period)
 
-         cache=n       Limit the result cache size, default is 262144.
-                       The expanded FORMAT value is used as the cache key, so
-                       if the details in FORMAT are highly variable a larger
-                       cache may be needed to produce reduction in helper load.
+         cache=n       The maximum number of entries in the result cache. The
+                       default limit is 262144 entries.  Each cache entry usually
+                       consumes at least 256 bytes. Squid currently does not remove
+                       expired cache entries until the limit is reached, so a proxy
+                       will sooner or later reach the limit. The expanded FORMAT
+                       value is used as the cache key, so if the details in FORMAT
+                       are highly variable, a larger cache may be needed to produce
+                       reduction in helper load.
 
          children-max=n
                        Maximum number of acl helper processes spawned to service
@@ -718,57 +765,33 @@ DOC_START
                        The default is to auto-detect IPv6 and use it when available.
 
 
-       FORMAT specifications
-
-         %LOGIN        Authenticated user login name
-         %EXT_USER     Username from previous external acl
-         %EXT_LOG      Log details from previous external acl
-         %EXT_TAG      Tag from previous external acl
-         %IDENT        Ident user name
-         %SRC          Client IP
-         %SRCPORT      Client source port
-         %URI          Requested URI
-         %DST          Requested host
-         %PROTO        Requested URL scheme
-         %PORT         Requested port
-         %PATH         Requested URL path
-         %METHOD       Request method
-         %MYADDR       Squid interface address
-         %MYPORT       Squid http_port number
-         %PATH         Requested URL-path (including query-string if any)
-         %USER_CERT    SSL User certificate in PEM format
-         %USER_CERTCHAIN SSL User certificate chain in PEM format
-         %USER_CERT_xx SSL User certificate subject attribute xx
-         %USER_CA_CERT_xx SSL User certificate issuer attribute xx
-         %ssl::>sni    SSL client SNI sent to Squid
-         %ssl::<cert_subject SSL server certificate DN
-         %ssl::<cert_issuer SSL server certificate issuer DN
-
-         %>{Header}    HTTP request header "Header"
-         %>{Hdr:member}
-                       HTTP request header "Hdr" list member "member"
-         %>{Hdr:;member}
-                       HTTP request header list member using ; as
-                       list separator. ; can be any non-alphanumeric
-                       character.
-
-         %<{Header}    HTTP reply header "Header"
-         %<{Hdr:member}
-                       HTTP reply header "Hdr" list member "member"
-         %<{Hdr:;member}
-                       HTTP reply header list member using ; as
-                       list separator. ; can be any non-alphanumeric
-                       character.
+       FORMAT is a series of %macro codes. See logformat directive for a full list
+       of the accepted codes. Although note that at the time of any external ACL
+       being tested data may not be available and thus some %macro expand to '-'.
+
+       In addition to the logformat codes; when processing external ACLs these
+       additional macros are made available:
 
          %ACL          The name of the ACL being tested.
-         %DATA         The ACL arguments. If not used then any arguments
-                       is automatically added at the end of the line
-                       sent to the helper.
-                       NOTE: this will encode the arguments as one token,
-                       whereas the default will pass each separately.
 
-         %%            The percent sign. Useful for helpers which need
-                       an unchanging input format.
+         %DATA         The ACL arguments. If a logformat encoding modifier
+                       is used it will encode the whole set of arguments
+                       as a single token.
+
+                       If not used; then any arguments are automatically
+                       added at the end of the line sent to the helper
+                       as separately URL-encoded fields.
+
+       If SSL is enabled, the following formating codes become available:
+
+         %USER_CERT            SSL User certificate in PEM format
+         %USER_CERTCHAIN       SSL User certificate chain in PEM format
+         %USER_CERT_xx         SSL User certificate subject attribute xx
+         %USER_CA_CERT_xx      SSL User certificate issuer attribute xx
+
+
+       NOTE: all other format codes accepted by older Squid versions
+               are deprecated.
 
 
        General request syntax:
@@ -836,9 +859,9 @@ DOC_START
                        does not alter existing tags.
 
          log=          String to be logged in access.log. Available as
-                       %ea in logformat specifications.
+                       %ea in logformat specifications.
 
-         clt_conn_tag= Associates a TAG with the client TCP connection.
+         clt_conn_tag= Associates a TAG with the client TCP connection.
                        Please see url_rewrite_program related documentation
                        for this kv-pair.
 
@@ -884,8 +907,10 @@ DOC_START
 
        When using "file", the file should contain one item per line.
 
-       Some acl types supports options which changes their default behaviour.
-       The available options are:
+
+       ACL Options
+
+       Some acl types supports options which changes their default behaviour:
 
        -i,+i   By default, regular expressions are CASE-SENSITIVE. To make them
                case-insensitive, use the -i option. To return case-sensitive
@@ -898,6 +923,14 @@ DOC_START
                name or IP), then the ACL would immediately declare a mismatch
                without any warnings or lookups.
 
+       -m[=delimiters]
+               Perform a list membership test, interpreting values as
+               comma-separated token lists and matching against individual
+               tokens instead of whole values. 
+               The optional "delimiters" parameter specifies one or more
+               alternative non-alphanumeric delimiter characters.
+               non-alphanumeric delimiter characters.
+
        --      Used to stop processing all options, in the case the first acl
                value has '-' character as first character (for example the '-'
                is a valid domain name)
@@ -917,15 +950,17 @@ DOC_START
        acl aclname localip ip-address/mask ... # IP address the client connected to [fast]
 
        acl aclname arp      mac-address ... (xx:xx:xx:xx:xx:xx notation)
-         # The arp ACL requires the special configure option --enable-arp-acl.
-         # Furthermore, the ARP ACL code is not portable to all operating systems.
-         # It works on Linux, Solaris, Windows, FreeBSD, and some
-         # other *BSD variants.
          # [fast]
+         # The 'arp' ACL code is not portable to all operating systems.
+         # It works on Linux, Solaris, Windows, FreeBSD, and some other
+         # BSD variants.
+         #
+         # NOTE: Squid can only determine the MAC/EUI address for IPv4
+         # clients that are on the same subnet. If the client is on a
+         # different subnet, then Squid cannot find out its address.
          #
-         # NOTE: Squid can only determine the MAC address for clients that are on
-         # the same subnet. If the client is on a different subnet,
-         # then Squid cannot find out its MAC address.
+         # NOTE 2: IPv6 protocol does not contain ARP. MAC/EUI is either
+         # encoded directly in the IPv6 address or not available.
 
        acl aclname srcdomain   .foo.com ...
          # reverse lookup, from client IP [slow]
@@ -1085,11 +1120,11 @@ DOC_START
 
        acl aclname user_cert attribute values...
          # match against attributes in a user SSL certificate
-         # attribute is one of DN/C/O/CN/L/ST [fast]
+         # attribute is one of DN/C/O/CN/L/ST or a numerical OID [fast]
 
        acl aclname ca_cert attribute values...
          # match against attributes a users issuing CA SSL certificate
-         # attribute is one of DN/C/O/CN/L/ST [fast]
+         # attribute is one of DN/C/O/CN/L/ST or a numerical OID  [fast]
 
        acl aclname ext_user username ...
        acl aclname ext_user_regex [-i] pattern ...
@@ -1109,12 +1144,15 @@ DOC_START
          # effect in rules that affect the reply data stream such as
          # http_reply_access.
 
-       acl aclname note name [value ...]
+       acl aclname note [-m[=delimiters]] name [value ...]
          # match transaction annotation [fast]
          # Without values, matches any annotation with a given name.
          # With value(s), matches any annotation with a given name that
          # also has one of the given values.
-         # Names and values are compared using a string equality test.
+         # If the -m flag is used, then the value of the named
+         # annotation is interpreted as a list of tokens, and the ACL
+         # matches individual name=token pairs rather than whole
+         # name=value pairs. See "ACL Options" above for more info.
          # Annotation sources include note and adaptation_meta directives
          # as well as helper and eCAP responses.
 
@@ -1180,6 +1218,30 @@ IF USE_OPENSSL
 
        acl aclname ssl::server_name_regex [-i] \.foo\.com ...
          # regex matches server name obtained from various sources [fast]
+
+       acl aclname connections_encrypted
+         # matches transactions with all HTTP messages received over TLS
+         # transport connections. [fast]
+         #
+         # The master transaction deals with HTTP messages received from
+         # various sources. All sources used by the master transaction in the
+         # past are considered by the ACL. The following rules define whether
+         # a given message source taints the entire master transaction,
+         # resulting in ACL mismatches:
+         #
+         #  * The HTTP client transport connection is not TLS.
+         #  * An adaptation service connection-encryption flag is off.
+         #  * The peer or origin server transport connection is not TLS.
+         #
+         # Caching currently does not affect these rules. This cache ignorance
+         # implies that only the current HTTP client transport and REQMOD
+         # services status determine whether this ACL matches a from-cache
+         # transaction. The source of the cached response does not have any
+         # effect on future transaction that use the cached response without
+         # revalidation. This may change.
+         #
+         # DNS, ICP, and HTCP exchanges during the master transaction do not
+         # affect these rules.
 ENDIF
        acl aclname any-of acl1 acl2 ...
          # match any one of the acls [fast or slow]
@@ -1399,7 +1461,7 @@ DOC_START
 
        SECURITY WARNING: Usage of this option is dangerous
        and should not be used trivially. Correct configuration
-       of follow_x_forewarded_for with a limited set of trusted
+       of follow_x_forwarded_for with a limited set of trusted
        sources is required to prevent abuse of your proxy.
 DOC_END
 
@@ -1598,7 +1660,7 @@ LOC: Config.accessList.miss
 DEFAULT: none
 DEFAULT_DOC: Allow, unless rules exist in squid.conf.
 DOC_START
-       Determins whether network access is permitted when satisfying a request.
+       Determines whether network access is permitted when satisfying a request.
 
        For example;
            to force your neighbors to use you as a sibling instead of
@@ -1725,7 +1787,7 @@ DOC_START
          CONNECT tunnel on http_port: same as https_port
          CONNECT tunnel on https_port: same as https_port
 
-       Currently, this directive has effect on intercepted connections and
+       Currently, this directive has effect on intercepted connections and
        bumped tunnels only. Other cases are not supported because Squid
        cannot know the intended destination of other traffic.
 
@@ -1777,13 +1839,13 @@ DOC_START
 
        Modes:
 
-          intercept    Support for IP-Layer interception of
-                       outgoing requests without browser settings.
-                       NP: disables authentication and IPv6 on the port.
+          intercept    Support for IP-Layer NAT interception delivering
+                       traffic to this Squid port.
+                       NP: disables authentication on the port.
 
-          tproxy       Support Linux TPROXY for spoofing outgoing
-                       connections using the client IP address.
-                       NP: disables authentication and maybe IPv6 on the port.
+          tproxy       Support Linux TPROXY (or BSD divert-to) with spoofing
+                       of outgoing connections using the client IP address.
+                       NP: disables authentication on the port.
 
           accel        Accelerator / reverse proxy mode
 
@@ -1871,13 +1933,6 @@ DOC_START
                        assumed to be a combined certificate and
                        key file.
 
-          version=     The version of SSL/TLS supported
-                           1   automatic (default)
-                           3   SSLv3 only
-                           4   TLSv1.0 only
-                           5   TLSv1.1 only
-                           6   TLSv1.2 only
-
           cipher=      Colon separated list of supported ciphers.
                        NOTE: some ciphers such as EDH ciphers depend on
                              additional settings. If those settings are
@@ -1899,6 +1954,11 @@ DOC_START
                                      Always create a new key when using
                                      temporary/ephemeral DH key exchanges
 
+                           SINGLE_ECDH_USE
+                                     Enable ephemeral ECDH key exchange.
+                                     The adopted curve should be specified
+                                     using the tls-dh option.
+
                            NO_TICKET
                                      Disable use of RFC5077 session tickets.
                                      Some servers may have problems
@@ -1916,31 +1976,33 @@ DOC_START
           clientca=    File containing the list of CAs to use when
                        requesting a client certificate.
 
-          cafile=      File containing additional CA certificates to
-                       use when verifying client certificates. If unset
-                       clientca will be used.
+          tls-cafile=  PEM file containing CA certificates to use when verifying
+                       client certificates. If not configured clientca will be
+                       used. May be repeated to load multiple files.
 
           capath=      Directory containing additional CA certificates
                        and CRL lists to use when verifying client certificates.
+                       Requires OpenSSL or LibreSSL.
 
           crlfile=     File of additional CRL lists to use when verifying
                        the client certificate, in addition to CRLs stored in
                        the capath. Implies VERIFY_CRL flag below.
 
-          dhparams=    File containing DH parameters for temporary/ephemeral
-                       DH key exchanges. See OpenSSL documentation for details
-                       on how to create this file.
-                       WARNING: EDH ciphers will be silently disabled if this
-                                option is not set.
+          tls-dh=[curve:]file
+                       File containing DH parameters for temporary/ephemeral DH key
+                       exchanges, optionally prefixed by a curve for ephemeral ECDH
+                       key exchanges.
+                       See OpenSSL documentation for details on how to create the
+                       DH parameter file. Supported curves for ECDH can be listed
+                       using the "openssl ecparam -list_curves" command.
+                       WARNING: EDH and EECDH ciphers will be silently disabled if
+                                this option is not set.
 
           sslflags=    Various flags modifying the use of SSL:
                            DELAYED_AUTH
                                Don't request client certificates
                                immediately, but wait until acl processing
                                requires a certificate (not yet implemented).
-                           NO_DEFAULT_CA
-                               Don't use the default CA lists built in
-                               to OpenSSL.
                            NO_SESSION_REUSE
                                Don't allow for session reuse. Each connection
                                will result in a new SSL session.
@@ -1951,6 +2013,11 @@ DOC_START
                                Verify CRL lists for all certificates in the
                                client certificate chain.
 
+          tls-default-ca[=off]
+                       Whether to use the system Trusted CAs. Default is OFF.
+
+          tls-no-npn   Do not use the TLS NPN extension to advertise HTTP/1.1.
+
           sslcontext=  SSL session ID context identifier.
 
        Other Options:
@@ -2003,152 +2070,25 @@ NOCOMMENT_END
 DOC_END
 
 NAME: https_port
-IFDEF: USE_OPENSSL
+IFDEF: USE_GNUTLS||USE_OPENSSL
 TYPE: PortCfg
 DEFAULT: none
-LOC: HttpsPortList
+LOC: HttpPortList
 DOC_START
-       Usage:  [ip:]port cert=certificate.pem [key=key.pem] [mode] [options...]
+       Usage:  [ip:]port [mode] cert=certificate.pem [options]
 
        The socket address where Squid will listen for client requests made
        over TLS or SSL connections. Commonly referred to as HTTPS.
 
        This is most useful for situations where you are running squid in
-       accelerator mode and you want to do the SSL work at the accelerator level.
+       accelerator mode and you want to do the TLS work at the accelerator level.
 
        You may specify multiple socket addresses on multiple lines,
-       each with their own SSL certificate and/or options.
-
-       Modes:
-
-          accel        Accelerator / reverse proxy mode
-
-          intercept    Support for IP-Layer interception of
-                       outgoing requests without browser settings.
-                       NP: disables authentication and IPv6 on the port.
-
-          tproxy       Support Linux TPROXY for spoofing outgoing
-                       connections using the client IP address.
-                       NP: disables authentication and maybe IPv6 on the port.
-
-          ssl-bump     For each intercepted connection allowed by ssl_bump
-                       ACLs, establish a secure connection with the client and with
-                       the server, decrypt HTTPS messages as they pass through
-                       Squid, and treat them as unencrypted HTTP messages,
-                       becoming the man-in-the-middle.
-
-                       An "ssl_bump server-first" match is required to
-                       fully enable bumping of intercepted SSL connections.
-
-                       Requires tproxy or intercept.
-
-       Omitting the mode flag causes default forward proxy mode to be used.
-
+       each with their own certificate and/or options.
 
-       See http_port for a list of generic options
+       The TLS cert= option is mandatory on HTTPS ports.
 
-
-       SSL Options:
-
-          cert=        Path to SSL certificate (PEM format).
-
-          key=         Path to SSL private key file (PEM format)
-                       if not specified, the certificate file is
-                       assumed to be a combined certificate and
-                       key file.
-
-          version=     The version of SSL/TLS supported
-                           1   automatic (default)
-                           3   SSLv3 only
-                           4   TLSv1 only
-
-          cipher=      Colon separated list of supported ciphers.
-
-          options=     Various SSL engine options. The most important
-                       being:
-
-                           NO_SSLv3    Disallow the use of SSLv3
-
-                           NO_TLSv1    Disallow the use of TLSv1.0
-
-                           NO_TLSv1_1  Disallow the use of TLSv1.1
-
-                           NO_TLSv1_2  Disallow the use of TLSv1.2
-
-                           SINGLE_DH_USE
-                                     Always create a new key when using
-                                     temporary/ephemeral DH key exchanges
-
-                           SSL_OP_NO_TICKET
-                                     Disable use of RFC5077 session tickets.
-                                     Some servers may have problems
-                                     understanding the TLS extension due
-                                     to ambiguous specification in RFC4507.
-
-                           ALL       Enable various bug workarounds
-                                     suggested as "harmless" by OpenSSL
-                                     Be warned that this reduces SSL/TLS
-                                     strength to some attacks.
-
-                       See the OpenSSL SSL_CTX_set_options documentation for a
-                       more complete list.
-
-          clientca=    File containing the list of CAs to use when
-                       requesting a client certificate.
-
-          cafile=      File containing additional CA certificates to
-                       use when verifying client certificates. If unset
-                       clientca will be used.
-
-          capath=      Directory containing additional CA certificates
-                       and CRL lists to use when verifying client certificates.
-
-          crlfile=     File of additional CRL lists to use when verifying
-                       the client certificate, in addition to CRLs stored in
-                       the capath. Implies VERIFY_CRL flag below.
-
-          dhparams=    File containing DH parameters for temporary/ephemeral
-                       DH key exchanges.
-
-          sslflags=    Various flags modifying the use of SSL:
-                           DELAYED_AUTH
-                               Don't request client certificates
-                               immediately, but wait until acl processing
-                               requires a certificate (not yet implemented).
-                           NO_DEFAULT_CA
-                               Don't use the default CA lists built in
-                               to OpenSSL.
-                           NO_SESSION_REUSE
-                               Don't allow for session reuse. Each connection
-                               will result in a new SSL session.
-                           VERIFY_CRL
-                               Verify CRL lists when accepting client
-                               certificates.
-                           VERIFY_CRL_ALL
-                               Verify CRL lists for all certificates in the
-                               client certificate chain.
-
-          sslcontext=  SSL session ID context identifier.
-
-          generate-host-certificates[=<on|off>]
-                       Dynamically create SSL server certificates for the
-                       destination hosts of bumped SSL requests.When
-                       enabled, the cert and key options are used to sign
-                       generated certificates. Otherwise generated
-                       certificate will be selfsigned.
-                       If there is CA certificate life time of generated
-                       certificate equals lifetime of CA certificate. If
-                       generated certificate is selfsigned lifetime is three
-                       years.
-                       This option is enabled by default when SslBump is used.
-                       See the sslBump option above for more information.
-
-          dynamic_cert_mem_cache_size=SIZE
-                       Approximate total RAM size spent on cached generated
-                       certificates. If set to zero, caching is disabled. The
-                       default value is 4MB.
-
-       See http_port for a list of available options.
+       See http_port for a list of modes and options.
 DOC_END
 
 NAME: ftp_port
@@ -2544,7 +2484,7 @@ COMMENT_END
 NAME: tls_outgoing_options
 IFDEF: USE_GNUTLS||USE_OPENSSL
 TYPE: securePeerOptions
-DEFAULT: disable
+DEFAULT: min-version=1.0
 LOC: Security::ProxyOutgoingConfig
 DOC_START
        disable         Do not support https:// URLs.
@@ -2557,16 +2497,13 @@ DOC_START
                        If key= is not specified cert= is assumed to reference
                        a PEM file containing both the certificate and the key.
        
-       version=1|3|4|5|6
-                       The TLS/SSL version to use when connecting
-                               1 = automatic (default)
-                               3 = SSL v3 only
-                               4 = TLS v1.0 only
-                               5 = TLS v1.1 only
-                               6 = TLS v1.2 only
-       
        cipher=...      The list of valid TLS ciphers to use.
-       
+
+       min-version=1.N
+                       The minimum TLS protocol version to permit.
+                       To control SSLv3 use the options= parameter.
+                       Supported Values: 1.0 (default), 1.1, 1.2
+
        options=...     Specify various TLS/SSL implementation options:
 
                            NO_SSLv3    Disallow the use of SSLv3
@@ -2595,11 +2532,12 @@ DOC_START
                        See the OpenSSL SSL_CTX_set_options documentation for a
                        more complete list.
        
-       cafile=...      A file containing additional CA certificates to use
-                       when verifying the peer certificate.
-       
-       capath=...      A directory containing additional CA certificates to
+       cafile=         PEM file containing CA certificates to use when verifying
+                       the peer certificate. May be repeated to load multiple files.
+
+       capath=         A directory containing additional CA certificates to
                        use when verifying the peer certificate.
+                       Requires OpenSSL or LibreSSL.
        
        crlfile=...     A certificate revocation list file to use when
                        verifying the peer certificate.
@@ -2609,13 +2547,13 @@ DOC_START
                        DONT_VERIFY_PEER
                                Accept certificates even if they fail to
                                verify.
-                       NO_DEFAULT_CA
-                               Don't use the default CA list built in
-                               to OpenSSL.
                        DONT_VERIFY_DOMAIN
                                Don't verify the peer certificate
                                matches the server name
        
+       default-ca[=off]
+                       Whether to use the system Trusted CAs. Default is ON.
+       
        domain=         The peer name as advertised in its certificate.
                        Used for verifying the correctness of the received peer
                        certificate. If not specified the peer hostname will be
@@ -2665,6 +2603,26 @@ DOC_START
         Sets the cache size to use for ssl session
 DOC_END
 
+NAME: sslproxy_foreign_intermediate_certs
+IFDEF: USE_OPENSSL
+DEFAULT: none
+LOC: Config.ssl_client.foreignIntermediateCertsPath
+TYPE: string
+DOC_START
+       Many origin servers fail to send their full server certificate
+       chain for verification, assuming the client already has or can
+       easily locate any missing intermediate certificates.
+
+       Squid uses the certificates from the specified file to fill in
+       these missing chains when trying to validate origin server
+       certificate chains.
+
+       The file is expected to contain zero or more PEM-encoded
+       intermediate certificates. These certificates are not treated
+       as trusted root certificates, and any self-signed certificate in
+       this file will be ignored.
+DOC_END
+
 NAME: sslproxy_cert_sign_hash
 IFDEF: USE_OPENSSL
 DEFAULT: none
@@ -2919,7 +2877,8 @@ IFDEF: USE_SSL_CRTD
 DEFAULT: @DEFAULT_SSL_CRTD@ -s @DEFAULT_SSL_DB_DIR@ -M 4MB
 LOC: Ssl::TheConfig.ssl_crtd
 DOC_START
-       Specify the location and options of the executable for ssl_crtd process.
+       Specify the location and options of the executable for certificate
+       generator.
        @DEFAULT_SSL_CRTD@ program requires -s and -M parameters
        For more information use:
                @DEFAULT_SSL_CRTD@ -h
@@ -3281,6 +3240,12 @@ DOC_START
                        Default is auto to automatically determine the status
                        of the peer.
        
+       auth-no-keytab
+                       Do not use a keytab to authenticate to a peer when
+                       login=NEGOTIATE is specified. Let the GSSAPI
+                       implementation determine which already existing
+                       credentials cache to use instead.
+       
        
        ==== SSL / HTTPS / TLS OPTIONS ====
        
@@ -3296,17 +3261,14 @@ DOC_START
                        reference a combined file containing both the
                        certificate and the key.
        
-       sslversion=1|3|4|5|6
-                       The SSL version to use when connecting to this peer
-                               1 = automatic (default)
-                               3 = SSL v3 only
-                               4 = TLS v1.0 only
-                               5 = TLS v1.1 only
-                               6 = TLS v1.2 only
-       
        sslcipher=...   The list of valid SSL ciphers to use when connecting
                        to this peer.
-       
+
+       tls-min-version=1.N
+                       The minimum TLS protocol version to permit. To control
+                       SSLv3 use the ssloptions= parameter.
+                       Supported Values: 1.0 (default), 1.1, 1.2
+
        ssloptions=...  Specify various SSL implementation options:
 
                            NO_SSLv3    Disallow the use of SSLv3
@@ -3335,11 +3297,12 @@ DOC_START
                        See the OpenSSL SSL_CTX_set_options documentation for a
                        more complete list.
        
-       sslcafile=...   A file containing additional CA certificates to use
-                       when verifying the peer certificate.
+       tls-cafile=     PEM file containing CA certificates to use when verifying
+                       the peer certificate. May be repeated to load multiple files.
        
        sslcapath=...   A directory containing additional CA certificates to
                        use when verifying the peer certificate.
+                       Requires OpenSSL or LibreSSL.
        
        sslcrlfile=...  A certificate revocation list file to use when
                        verifying the peer certificate.
@@ -3350,10 +3313,6 @@ DOC_START
                                Accept certificates even if they fail to
                                verify.
 
-                       NO_DEFAULT_CA
-                               Don't use the default CA list built in
-                               to OpenSSL.
-
                        DONT_VERIFY_DOMAIN
                                Don't verify the peer certificate
                                matches the server name
@@ -3370,7 +3329,11 @@ DOC_START
                        If set to auto the header will only be added if the
                        request is forwarded as a https:// URL.
        
+       tls-default-ca[=off]
+                       Whether to use the system Trusted CAs. Default is ON.
        
+       tls-no-npn      Do not use the TLS NPN extension to advertise HTTP/1.1.
+
        ==== GENERAL OPTIONS ====
        
        connect-timeout=N
@@ -3384,11 +3347,12 @@ DOC_START
        
        allow-miss      Disable Squid's use of only-if-cached when forwarding
                        requests to siblings. This is primarily useful when
-                       icp_hit_stale is used by the sibling. To extensive use
-                       of this option may result in forwarding loops, and you
-                       should avoid having two-way peerings with this option.
-                       For example to deny peer usage on requests from peer
-                       by denying cache_peer_access if the source is a peer.
+                       icp_hit_stale is used by the sibling. Excessive use
+                       of this option may result in forwarding loops. One way
+                       to prevent peering loops when using this option, is to
+                       deny cache peer usage on requests from a peer:
+                       acl fromPeer ...
+                       cache_peer_access peerName deny fromPeer
        
        max-conn=N      Limit the number of concurrent connections the Squid
                        may open to this peer, including already opened idle
@@ -3439,7 +3403,7 @@ DOC_START
                        Required if you have multiple peers on the same host
                        but different ports.
                        This name can be used in cache_peer_access and similar
-                       directives to dentify the peer.
+                       directives to identify the peer.
                        Can be used by outgoing access controls through the
                        peername ACL type.
        
@@ -3454,17 +3418,43 @@ DOC_END
 NAME: cache_peer_access
 TYPE: peer_access
 DEFAULT: none
+DEFAULT_DOC: No peer usage restrictions.
 LOC: none
 DOC_START
-       Use to limit the requests for which a neighbor proxy will be
-       queried. Peers with no restrictions are queried for all requests.
+       Restricts usage of cache_peer proxies.
 
        Usage:
-               cache_peer_access cache-host allow|deny [!]aclname ...
+               cache_peer_access peer-name allow|deny [!]aclname ...
+
+       For the required peer-name parameter, use either the value of the
+       cache_peer name=value parameter or, if name=value is missing, the
+       cache_peer hostname parameter.
+
+       This directive narrows down the selection of peering candidates, but
+       does not determine the order in which the selected candidates are
+       contacted. That order is determined by the peer selection algorithms
+       (see PEER SELECTION sections in the cache_peer documentation).
+
+       If a deny rule matches, the corresponding peer will not be contacted
+       for the current transaction -- Squid will not send ICP queries and
+       will not forward HTTP requests to that peer. An allow match leaves
+       the corresponding peer in the selection. The first match for a given
+       peer wins for that peer.
+
+       The relative order of cache_peer_access directives for the same peer
+       matters. The relative order of any two cache_peer_access directives
+       for different peers does not matter. To ease interpretation, it is a
+       good idea to group cache_peer_access directives for the same peer
+       together.
+
+       A single cache_peer_access directive may be evaluated multiple times
+       for a given transaction because individual peer selection algorithms
+       may check it independently from each other. These redundant checks
+       may be optimized away in future Squid versions.
+
+       This clause only supports fast acl types.
+       See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
 
-       The syntax is identical to 'http_access' and the other lists of
-       ACL elements.  See the comments for 'http_access', or the
-       Squid FAQ (http://wiki.squid-cache.org/SquidFaq/SquidAcl).
 DOC_END
 
 NAME: neighbor_type_domain
@@ -3957,18 +3947,26 @@ TYPE: int
 DEFAULT: 90
 LOC: Config.Swap.lowWaterMark
 DOC_START
-       The low-water mark for cache object replacement.
-       Replacement begins when the swap (disk) usage is above the
-       low-water mark and attempts to maintain utilization near the
-       low-water mark.  As swap utilization gets close to high-water
-       mark object eviction becomes more aggressive.  If utilization is
-       close to the low-water mark less replacement is done each time.
+       The low-water mark for AUFS/UFS/diskd cache object eviction by
+       the cache_replacement_policy algorithm.
+
+       Removal begins when the swap (disk) usage of a cache_dir is
+       above this low-water mark and attempts to maintain utilization
+       near the low-water mark.
+
+       As swap utilization increases towards the high-water mark set
+       by cache_swap_high object eviction becomes more agressive.
+
+       The value difference in percentages between low- and high-water
+       marks represent an eviction rate of 300 objects per second and
+       the rate continues to scale in agressiveness by multiples of
+       this above the high-water mark.
 
        Defaults are 90% and 95%. If you have a large cache, 5% could be
        hundreds of MB. If this is the case you may wish to set these
        numbers closer together.
 
-       See also cache_swap_high
+       See also cache_swap_high and cache_replacement_policy
 DOC_END
 
 NAME: cache_swap_high
@@ -3977,18 +3975,26 @@ TYPE: int
 DEFAULT: 95
 LOC: Config.Swap.highWaterMark
 DOC_START
-       The high-water mark for cache object replacement.
-       Replacement begins when the swap (disk) usage is above the
-       low-water mark and attempts to maintain utilization near the
-       low-water mark.  As swap utilization gets close to high-water
-       mark object eviction becomes more aggressive.  If utilization is
-       close to the low-water mark less replacement is done each time.
+       The high-water mark for AUFS/UFS/diskd cache object eviction by
+       the cache_replacement_policy algorithm.
+
+       Removal begins when the swap (disk) usage of a cache_dir is
+       above the low-water mark set by cache_swap_low and attempts to
+       maintain utilization near the low-water mark.
+
+       As swap utilization increases towards this high-water mark object
+       eviction becomes more agressive.
+
+       The value difference in percentages between low- and high-water
+       marks represent an eviction rate of 300 objects per second and
+       the rate continues to scale in agressiveness by multiples of
+       this above the high-water mark.
 
        Defaults are 90% and 95%. If you have a large cache, 5% could be
        hundreds of MB. If this is the case you may wish to set these
        numbers closer together.
 
-       See also cache_swap_low
+       See also cache_swap_low and cache_replacement_policy
 DOC_END
 
 COMMENT_START
@@ -4016,11 +4022,12 @@ DOC_START
        modifiers are usually not needed, but can be specified if an explicit
        output format is desired.
 
-               % ["|[|'|#] [-] [[0]width] [{argument}] formatcode
+               % ["|[|'|#|/] [-] [[0]width] [{arg}] formatcode [{arg}]
 
                "       output in quoted string format
                [       output in squid text log format as used by log_mime_hdrs
                #       output in URL quoted format
+               /       output in shell \-escaped format
                '       output as-is
 
                -       left aligned
@@ -4030,7 +4037,8 @@ DOC_START
                        When minimum starts with 0, the field is zero-padded.
                        String values exceeding maximum width are truncated.
 
-               {arg}   argument such as header name etc
+               {arg}   argument such as header name etc. This field may be
+                       placed before or after the token, but not both at once.
 
        Format codes:
 
@@ -4107,7 +4115,12 @@ DOC_START
                ul      User name from authentication
                ue      User name from external acl helper
                ui      User name from ident
-               us      User name from SSL
+               un      A user name. Expands to the first available name
+                       from the following list of information sources:
+                       - authenticated user name, like %ul
+                       - user name supplied by an external ACL, like %ue
+                       - SSL client name, like %us
+                       - ident user name, like %ui
                credentials Client credentials. The exact meaning depends on
                        the authentication scheme: For Basic authentication,
                        it is the password; for Digest, the realm sent by the
@@ -4148,7 +4161,6 @@ DOC_START
                                Squid, although most fields are often preserved.
                                Optional header name argument as for >h
 
-
            RESPONSE
 
                [http::]<Hs     HTTP status code received from the next hop
@@ -4179,7 +4191,6 @@ DOC_START
                                Generated FTP/Gopher listings are treated as
                                received bodies.
 
-
            TIMING
 
                [http::]<pt     Peer response time in milliseconds. The timer starts
@@ -4217,6 +4228,52 @@ DOC_START
                                after the peek, stare, or splice SSL bumping
                                actions.
 
+               ssl::>cert_subject
+                               The Subject field of the received client
+                               SSL certificate or a dash ('-') if Squid has
+                               received an invalid/malformed certificate or
+                               no certificate at all. Consider encoding the
+                               logged value because Subject often has spaces.
+
+               ssl::>cert_issuer
+                               The Issuer field of the received client
+                               SSL certificate or a dash ('-') if Squid has
+                               received an invalid/malformed certificate or
+                               no certificate at all. Consider encoding the
+                               logged value because Issuer often has spaces.
+
+               ssl::<cert_errors
+                               The list of certificate validation errors
+                               detected by Squid (including OpenSSL and
+                               certificate validation helper components). The
+                               errors are listed in the discovery order. By
+                               default, the error codes are separated by ':'.
+                               Accepts an optional separator argument.
+
+               %ssl::>negotiated_version The negotiated TLS version of the
+                               client connection.
+
+               %ssl::<negotiated_version The negotiated TLS version of the
+                               last server or peer connection.
+
+               %ssl::>received_hello_version The TLS version of the Hello
+                               message received from TLS client.
+
+               %ssl::<received_hello_version The TLS version of the Hello
+                               message received from TLS server.
+
+               %ssl::>received_supported_version The maximum TLS version
+                               supported by the TLS client.
+
+               %ssl::<received_supported_version The maximum TLS version
+                               supported by the TLS server.
+
+               %ssl::>negotiated_cipher The negotiated cipher of the
+                               client connection.
+
+               %ssl::<negotiated_cipher The negotiated cipher of the
+                               last server or peer connection.
+
        If ICAP is enabled, the following code becomes available (as
        well as ICAP log codes documented with the icap_log option):
 
@@ -4225,7 +4282,7 @@ DOC_START
                                ACLs are checked and when ICAP
                                transaction is in progress.
 
-       If adaptation is enabled the following three codes become available:
+       If adaptation is enabled the following codes become available:
 
                adapt::<last_h  The header of the last ICAP response or
                                meta-information from the last eCAP
@@ -4255,20 +4312,6 @@ DOC_START
        service name in curly braces to record response time(s) specific
        to that service. For example: %{my_service}adapt::sum_trs
 
-       If SSL is enabled, the following formating codes become available:
-
-               %ssl::>cert_subject The Subject field of the received client
-                               SSL certificate or a dash ('-') if Squid has
-                               received an invalid/malformed certificate or
-                               no certificate at all. Consider encoding the
-                               logged value because Subject often has spaces.
-
-               %ssl::>cert_issuer The Issuer field of the received client
-                               SSL certificate or a dash ('-') if Squid has
-                               received an invalid/malformed certificate or
-                               no certificate at all. Consider encoding the
-                               logged value because Issuer often has spaces.
-
        The default formats available (which do not need re-defining) are:
 
 logformat squid      %ts.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %[un %Sh/%<a %mt
@@ -4886,10 +4929,10 @@ DOC_START
 DOC_END
 
 NAME: pinger_program
-TYPE: string
-DEFAULT: @DEFAULT_PINGER@
-LOC: Config.pinger.program
 IFDEF: USE_ICMP
+TYPE: icmp
+DEFAULT: @DEFAULT_PINGER@
+LOC: IcmpCfg
 DOC_START
        Specify the location of the executable for the pinger process.
 DOC_END
@@ -4897,7 +4940,7 @@ DOC_END
 NAME: pinger_enable
 TYPE: onoff
 DEFAULT: on
-LOC: Config.pinger.enable
+LOC: IcmpCfg.enable
 IFDEF: USE_ICMP
 DOC_START
        Control whether the pinger is active at run-time.
@@ -5410,9 +5453,7 @@ DOC_START
                 reload-into-ims
                 ignore-reload
                 ignore-no-store
-                ignore-must-revalidate
                 ignore-private
-                ignore-auth
                 max-stale=NN
                 refresh-ims
                 store-stale
@@ -5448,22 +5489,11 @@ DOC_START
                the HTTP standard. Enabling this feature could make you
                liable for problems which it causes.
 
-               ignore-must-revalidate ignores any ``Cache-Control: must-revalidate``
-               headers received from a server. Doing this VIOLATES
-               the HTTP standard. Enabling this feature could make you
-               liable for problems which it causes.
-
                ignore-private ignores any ``Cache-control: private''
                headers received from a server. Doing this VIOLATES
                the HTTP standard. Enabling this feature could make you
                liable for problems which it causes.
 
-               ignore-auth caches responses to requests with authorization,
-               as if the originserver had sent ``Cache-control: public''
-               in the response header. Doing this VIOLATES the HTTP standard.
-               Enabling this feature could make you liable for problems which
-               it causes.
-
                refresh-ims causes squid to contact the origin server
                when a client issues an If-Modified-Since request. This
                ensures that the client will receive an updated version
@@ -5481,7 +5511,7 @@ DOC_START
 
        Basically a cached object is:
 
-               FRESH if expires < now, else STALE
+               FRESH if expire > now, else STALE
                STALE if age > max
                FRESH if lm-factor < percent, else STALE
                FRESH if age < min
@@ -6733,7 +6763,7 @@ DOC_START
 
                delay_parameters 1 none 8000/8000
 
-       Note that 8 x 8000 KByte/sec -> 64Kbit/sec.
+       Note that 8 x 8K Byte/sec -> 64K bit/sec.
 
        Note that the word 'none' is used to represent no limit.
 
@@ -6748,9 +6778,9 @@ DOC_START
 
                delay_parameters 2 32000/32000 8000/8000 600/8000
 
-       Note that 8 x 32000 KByte/sec -> 256Kbit/sec.
-                 8 x  8000 KByte/sec ->  64Kbit/sec.
-                 8 x   600 Byte/sec  -> 4800bit/sec.
+       Note that 8 x  32K Byte/sec ->  256K bit/sec.
+                 8 x   8K Byte/sec ->   64K bit/sec.
+                 8 x 600  Byte/sec -> 4800  bit/sec.
 
 
        Finally, for a class 4 delay pool as in the example - each user will
@@ -8370,6 +8400,12 @@ DOC_START
 
        uri: icap://servername:port/servicepath
                ICAP server and service location.
+            icaps://servername:port/servicepath
+               The "icap:" URI scheme is used for traditional ICAP server and
+               service location (default port is 1344, connections are not
+               encrypted). The "icaps:" URI scheme is for Secure ICAP
+               services that use SSL/TLS-encrypted ICAP connections (by
+               default, on port 11344).
 
        ICAP does not allow a single service to handle both REQMOD and RESPMOD
        transactions. Squid does not enforce that requirement. You can specify
@@ -8435,12 +8471,97 @@ DOC_START
                Use the given number as the Max-Connections limit, regardless
                of the Max-Connections value given by the service, if any.
 
+       connection-encryption=on|off
+               Determines the ICAP service effect on the connections_encrypted
+               ACL.
+
+               The default is "on" for Secure ICAP services (i.e., those
+               with the icaps:// service URIs scheme) and "off" for plain ICAP
+               services.
+
+               Does not affect ICAP connections (e.g., does not turn Secure
+               ICAP on or off).
+
+       ==== ICAPS / TLS OPTIONS ====
+
+       These options are used for Secure ICAP (icaps://....) services only.
+
+       tls-cert=/path/to/ssl/certificate
+                       A client SSL certificate to use when connecting to
+                       this icap server.
+
+       tls-key=/path/to/ssl/key
+                       The private TLS/SSL key corresponding to sslcert above.
+                       If 'tls-key' is not specified 'tls-cert' is assumed to
+                       reference a combined PEM format file containing both the
+                       certificate and the key.
+
+       tls-cipher=...  The list of valid TLS/SSL ciphers to use when connecting
+                       to this icap server.
+
+       tls-min-version=1.N
+                       The minimum TLS protocol version to permit. To control
+                       SSLv3 use the ssloptions= parameter.
+                       Supported Values: 1.0 (default), 1.1, 1.2
+
+       tls-options=... Specify various OpenSSL library options:
+
+                           NO_SSLv3    Disallow the use of SSLv3
+
+                           NO_TLSv1    Disallow the use of TLSv1.0
+                           NO_TLSv1_1  Disallow the use of TLSv1.1
+                           NO_TLSv1_2  Disallow the use of TLSv1.2
+
+                           SINGLE_DH_USE
+                                     Always create a new key when using
+                                     temporary/ephemeral DH key exchanges
+
+                           ALL       Enable various bug workarounds
+                                     suggested as "harmless" by OpenSSL
+                                     Be warned that this reduces SSL/TLS
+                                     strength to some attacks.
+
+                       See the OpenSSL SSL_CTX_set_options documentation for a
+                       more complete list. Options relevant only to SSLv2 are
+                       not supported.
+
+       tls-cafile=     PEM file containing CA certificates to use when verifying
+                       the icap server certificate.
+                       Use to specify intermediate CA certificate(s) if not sent
+                       by the server. Or the full CA chain for the server when
+                       using the tls-default-ca=off flag.
+                       May be repeated to load multiple files.
+
+       tls-capath=...  A directory containing additional CA certificates to
+                       use when verifying the icap server certificate.
+                       Requires OpenSSL or LibreSSL.
+
+       tls-crlfile=... A certificate revocation list file to use when
+                       verifying the icap server certificate.
+
+       tls-flags=...   Specify various flags modifying the Squid TLS implementation:
+
+                       DONT_VERIFY_PEER
+                               Accept certificates even if they fail to
+                               verify.
+                       DONT_VERIFY_DOMAIN
+                               Don't verify the icap server certificate
+                               matches the server name
+
+       tls-default-ca[=off]
+                       Whether to use the system Trusted CAs. Default is ON.
+
+       tls-domain=     The icap server name as advertised in it's certificate.
+                       Used for verifying the correctness of the received icap
+                       server certificate. If not specified the icap server
+                       hostname extracted from ICAP URI will be used.
+
        Older icap_service format without optional named parameters is
        deprecated but supported for backward compatibility.
 
 Example:
 icap_service svcBlocker reqmod_precache icap://icap1.mydomain.net:1344/reqmod bypass=0
-icap_service svcLogger reqmod_precache icap://icap2.mydomain.net:1344/respmod routing=on
+icap_service svcLogger reqmod_precache icaps://icap2.mydomain.net:11344/reqmod routing=on
 DOC_END
 
 NAME: icap_class
@@ -8537,6 +8658,15 @@ DOC_START
 
                Routing is not allowed by default.
 
+       connection-encryption=on|off
+               Determines the eCAP service effect on the connections_encrypted
+               ACL. 
+
+               Defaults to "on", which does not taint the master transaction
+               w.r.t. that ACL.
+
+               Does not affect eCAP API calls.
+
        Older ecap_service format without optional named parameters is
        deprecated but supported for backward compatibility.
 
@@ -9468,44 +9598,6 @@ DOC_START
        not all I/O types supports large values (eg on Windows).
 DOC_END
 
-NAME: workers
-TYPE: int
-LOC: Config.workers
-DEFAULT: 1
-DEFAULT_DOC: SMP support disabled.
-DOC_START
-       Number of main Squid processes or "workers" to fork and maintain.
-       0: "no daemon" mode, like running "squid -N ..."
-       1: "no SMP" mode, start one main Squid process daemon (default)
-       N: start N main Squid process daemons (i.e., SMP mode)
-
-       In SMP mode, each worker does nearly all what a single Squid daemon
-       does (e.g., listen on http_port and forward HTTP requests).
-DOC_END
-
-NAME: cpu_affinity_map
-TYPE: CpuAffinityMap
-LOC: Config.cpuAffinityMap
-DEFAULT: none
-DEFAULT_DOC: Let operating system decide.
-DOC_START
-       Usage: cpu_affinity_map process_numbers=P1,P2,... cores=C1,C2,...
-
-       Sets 1:1 mapping between Squid processes and CPU cores. For example,
-
-           cpu_affinity_map process_numbers=1,2,3,4 cores=1,3,5,7
-
-       affects processes 1 through 4 only and places them on the first
-       four even cores, starting with core #1.
-
-       CPU cores are numbered starting from 1. Requires support for
-       sched_getaffinity(2) and sched_setaffinity(2) system calls.
-
-       Multiple cpu_affinity_map options are merged.
-
-       See also: workers
-DOC_END
-
 NAME: force_request_body_continuation
 TYPE: acl_access
 LOC: Config.accessList.forceRequestBodyContinuation