Provided by: trafficserver-dev_8.0.5+ds-3_amd64 bug

NAME

       TSClientProtocolStack - TSClientProtocolStack API function

SYNOPSIS

       #include <ts/ts.h>

       TSReturnCode TSHttpTxnClientProtocolStackGet(TSHttpTxn txnp, int n, char const** result, int* actual)

       TSReturnCode TSHttpSsnClientProtocolStackGet(TSHttpSsn ssnp, int n, char const** result, int* actual)

       char const* TSHttpTxnClientProtocolStackContains(TSHttpTxn txnp)

       char const* TSHttpSsnClientProtocolStackContains(TSHttpSsn ssnp)

       char const* TSNormalizedProtocolTag(char const* tag)

       char const* TSRegisterProtocolTag(char const* tag)

DESCRIPTION

       These  functions  are used to explore the protocol stack of the client (user agent) connection to Traffic
       Server. The functions TSHttpTxnClientProtocolStackGet() and TSHttpSsnClientProtocolStackGet() can be used
       to    retrieve    the    entire     protocol     stack     for     the     user     agent     connection.
       TSHttpTxnClientProtocolStackContains()   and  TSHttpSsnClientProtocolStackContains()  will  check  for  a
       specific protocol tag being present in the stack.

       Each protocol is represented by tag which is a null terminated string. A particular tag  will  always  be
       returned as the same character pointer and so protocols can be reliably checked with pointer comparisons.
       TSNormalizedProtocolTag()  will  return this character pointer for a specific tag. A return value of NULL
       indicates the provided tag is not registered as a known protocol tag.  TSRegisterProtocolTag()  registers
       the  tag  and then returns its normalized value. This is useful for plugins that provide custom protocols
       for user agents.

       The protocols are ordered from higher level protocols to  the  lower  level  ones  on  which  the  higher
       operate.    For    instance    a    stack    might    look    like    "http/1.1,tls/1.2,tcp,ipv4".    For
       TSHttpTxnClientProtocolStackGet() and TSHttpSsnClientProtocolStackGet() these values are  placed  in  the
       array  result.  count  is  the  maximum number of elements of result that may be modified by the function
       call. If actual is not NULL then the actual number of elements in the protocol stack will be returned. If
       this is equal or less than count then all elements were returned. If it is larger then some  layers  were
       omitted  from  result. If the full stack is required actual can be used to resize result to be sufficient
       to hold all of the elements and the function called again with updated count and result. In practice  the
       maximum  number  of  elements  will  is almost certain to be less than 10 which therefore should suffice.
       These functions return TS_SUCCESS on success and TS_ERROR on failure which should only occurr if txnp  or
       ssnp are invalid.

       The   TSHttpTxnClientProtocolStackContains()  and  TSHttpSsnClientProtocolStackContains()  functions  are
       provided for the convenience when only the presence of a protocol is of interest, not its location or the
       presence of other protocols. These functions return NULL if the  protocol  tag  is  not  present,  and  a
       pointer  to the normalized tag if it is present. The strings are matched with an anchor prefix search, as
       with debug tags. For instance if tag is "tls" then it will  match  "tls/1.2"  or  "tls/1.3".  This  makes
       checking  for  TLS  or IP more convenient. If more precision is required the entire protocol stack can be
       retrieved and processed more thoroughly.

       The protocol tags defined by Traffic Server.
                                               ────────────────────────
                                                 Protocol    Tag
                                               ────────────────────────
                                                 HTTP/1.1    http/1.1
                                               ────────────────────────
                                                 HTTP/1.0    http/1.0
                                               ────────────────────────
                                                 HTTP/2      h2
                                               ────────────────────────
                                                 WebSocket   ws
                                               ────────────────────────
                                                 TLS 1.3     tls/1.3
                                               ────────────────────────
                                                 TLS 1.2     tls/1.2
                                               ────────────────────────
                                                 TLS 1.1     tls/1.1
                                               ────────────────────────
                                                 TLS 1.0     tls/1.0
                                               ────────────────────────
                                                 TCP         tcp
                                               ────────────────────────
                                                 UDP         udp
                                               ────────────────────────
                                                 IPv4        ipv4
                                               ────────────────────────
                                                 IPv6        ipv6
                                               ────────────────────────
                                                 QUIC        quic
                                               ┌───────────┬──────────┐
                                               │           │          │
   Examples                                    │           │          │
--
COPYRIGHT                                      │           │          │
       2020, dev@trafficserver.apache.org      │           │          │
                                               │           │          │
                                               │           │          │