• Main Page
  • Related Pages
  • Namespaces
  • Data Structures
  • Files
  • File List
  • Globals

apidefs.h

Go to the documentation of this file.
00001 /** @file
00002 
00003   This header file defines common types that can be shared
00004   between internal code and TS APIs.
00005 
00006   @section license License
00007 
00008   Licensed to the Apache Software Foundation (ASF) under one
00009   or more contributor license agreements.  See the NOTICE file
00010   distributed with this work for additional information
00011   regarding copyright ownership.  The ASF licenses this file
00012   to you under the Apache License, Version 2.0 (the
00013   "License"); you may not use this file except in compliance
00014   with the License.  You may obtain a copy of the License at
00015 
00016       http://www.apache.org/licenses/LICENSE-2.0
00017 
00018   Unless required by applicable law or agreed to in writing, software
00019   distributed under the License is distributed on an "AS IS" BASIS,
00020   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00021   See the License for the specific language governing permissions and
00022   limitations under the License.
00023 
00024   @section developers Developers
00025 
00026   Developers, when adding a new element to an enum, append it. DO NOT
00027   insert it.  Otherwise, binary compatibility of plugins will be broken!
00028 
00029  */
00030 
00031 #ifndef __TS_TYPES_H__
00032 #define __TS_TYPES_H__
00033 
00034 /*
00035  * ATS Plugin just needs to include <ts/ts.h>,
00036  * should not include this file directly!
00037  *
00038  */
00039 
00040 /* GENERATED FILE WARNING!  DO NOT EDIT apidefs.h
00041  *
00042  * You must modify apidefs.h.in instead.
00043  *
00044  */
00045 
00046 #include <stdint.h>
00047 #include <sys/types.h>
00048 #include <sys/socket.h>
00049 
00050 #ifndef tsapi
00051 #define tsapi
00052 #endif
00053 
00054 #if !defined(TS_PRINTFLIKE)
00055 #if defined(__GNUC__) || defined(__clang__)
00056 #define TS_PRINTFLIKE(fmt, arg) __attribute__((format(printf, fmt, arg)))
00057 #else
00058 #define TS_PRINTFLIKE(fmt, arg)
00059 #endif
00060 #endif
00061 
00062 #if !defined(TS_NORETURN)
00063 #if defined(__GNUC__) || defined(__clang__)
00064 #define TS_NORETURN __attribute__((noreturn))
00065 #else
00066 #define TS_NORETURN
00067 #endif
00068 #endif
00069 
00070 #ifdef __cplusplus
00071 extern "C"
00072 {
00073 #endif /* __cplusplus */
00074 
00075   /* Version info
00076    */
00077 #define TS_VERSION_STRING             "5.2.0"
00078 #define TS_VERSION_NUMBER              5002000
00079 #define TS_VERSION_MAJOR               5
00080 #define TS_VERSION_MINOR               2
00081 #define TS_VERSION_MICRO               0
00082 
00083 #define TS_HTTP_VERSION(a,b)  ((((a) & 0xFFFF) << 16) | ((b) & 0xFFFF))
00084 #define TS_HTTP_MINOR(v)      ((v) & 0xFFFF)
00085 #define TS_HTTP_MAJOR(v)      (((v) >> 16) & 0xFFFF)
00086 #define __TS_RES_PATH(x)   #x
00087 #define _TS_RES_PATH(x)    __TS_RES_PATH (x)
00088 #define TS_RES_PATH(x)     x __FILE__ ":" _TS_RES_PATH (__LINE__)
00089 #define TS_RES_MEM_PATH    TS_RES_PATH ("memory/")
00090 #define TS_MAX_USER_NAME_LEN 256
00091 
00092 #ifndef TS_DEPRECATED
00093 #define TS_DEPRECATED __attribute__ ((deprecated))
00094 #endif
00095 
00096   /**
00097       The following struct is used by TSPluginRegister(). It stores
00098       registration information about the plugin.
00099 
00100    */
00101   typedef struct
00102   {
00103     char* plugin_name;
00104     char* vendor_name;
00105     char* support_email;
00106   } TSPluginRegistrationInfo;
00107 
00108   /**
00109       This set of enums are possible values returned by
00110       TSHttpHdrParseReq() and TSHttpHdrParseResp().
00111 
00112    */
00113   typedef enum
00114   {
00115     TS_PARSE_ERROR = -1,
00116     TS_PARSE_DONE = 0,
00117     TS_PARSE_OK = 1,
00118     TS_PARSE_CONT = 2
00119   } TSParseResult;
00120 
00121   /**
00122       This set of enums represents the possible HTTP types that
00123       can be assigned to an HTTP header. When a header is created
00124       with TSHttpHdrCreate(), it is automatically assigned a type of
00125       TS_HTTP_TYPE_UNKNOWN. You can modify the HTTP type ONCE after it
00126       the header is created, using TSHttpHdrTypeSet(). After setting the
00127       HTTP type once, you cannot set it again. Use TSHttpHdrTypeGet()
00128       to obtain the TSHttpType of an HTTP header.
00129 
00130    */
00131   typedef enum
00132   {
00133     TS_HTTP_TYPE_UNKNOWN,
00134     TS_HTTP_TYPE_REQUEST,
00135     TS_HTTP_TYPE_RESPONSE
00136   } TSHttpType;
00137 
00138   /**
00139       This set of enums represents possible return values from
00140       TSHttpHdrStatusGet(), which retrieves the status code from an
00141       HTTP response header (TSHttpHdrStatusGet() retrieves status codes
00142       only from headers of type TS_HTTP_TYPE_RESPONSE). You can also set
00143       the TSHttpStatus of a response header using TSHttpHdrStatusSet().
00144 
00145    */
00146   typedef enum
00147   {
00148     TS_HTTP_STATUS_NONE = 0,
00149 
00150     TS_HTTP_STATUS_CONTINUE = 100,
00151     TS_HTTP_STATUS_SWITCHING_PROTOCOL = 101,
00152 
00153     TS_HTTP_STATUS_OK = 200,
00154     TS_HTTP_STATUS_CREATED = 201,
00155     TS_HTTP_STATUS_ACCEPTED = 202,
00156     TS_HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION = 203,
00157     TS_HTTP_STATUS_NO_CONTENT = 204,
00158     TS_HTTP_STATUS_RESET_CONTENT = 205,
00159     TS_HTTP_STATUS_PARTIAL_CONTENT = 206,
00160     TS_HTTP_STATUS_MULTI_STATUS = 207,
00161     TS_HTTP_STATUS_ALREADY_REPORTED = 208,
00162     TS_HTTP_STATUS_IM_USED = 211,
00163 
00164     TS_HTTP_STATUS_MULTIPLE_CHOICES = 300,
00165     TS_HTTP_STATUS_MOVED_PERMANENTLY = 301,
00166     TS_HTTP_STATUS_MOVED_TEMPORARILY = 302,
00167     TS_HTTP_STATUS_SEE_OTHER = 303,
00168     TS_HTTP_STATUS_NOT_MODIFIED = 304,
00169     TS_HTTP_STATUS_USE_PROXY = 305,
00170     TS_HTTP_STATUS_TEMPORARY_REDIRECT = 307,
00171     TS_HTTP_STATUS_PERMANENT_REDIRECT = 308,
00172 
00173     TS_HTTP_STATUS_BAD_REQUEST = 400,
00174     TS_HTTP_STATUS_UNAUTHORIZED = 401,
00175     TS_HTTP_STATUS_PAYMENT_REQUIRED = 402,
00176     TS_HTTP_STATUS_FORBIDDEN = 403,
00177     TS_HTTP_STATUS_NOT_FOUND = 404,
00178     TS_HTTP_STATUS_METHOD_NOT_ALLOWED = 405,
00179     TS_HTTP_STATUS_NOT_ACCEPTABLE = 406,
00180     TS_HTTP_STATUS_PROXY_AUTHENTICATION_REQUIRED = 407,
00181     TS_HTTP_STATUS_REQUEST_TIMEOUT = 408,
00182     TS_HTTP_STATUS_CONFLICT = 409,
00183     TS_HTTP_STATUS_GONE = 410,
00184     TS_HTTP_STATUS_LENGTH_REQUIRED = 411,
00185     TS_HTTP_STATUS_PRECONDITION_FAILED = 412,
00186     TS_HTTP_STATUS_REQUEST_ENTITY_TOO_LARGE = 413,
00187     TS_HTTP_STATUS_REQUEST_URI_TOO_LONG = 414,
00188     TS_HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE = 415,
00189     TS_HTTP_STATUS_REQUESTED_RANGE_NOT_SATISFIABLE = 416,
00190     TS_HTTP_STATUS_EXPECTATION_FAILED = 417,
00191     TS_HTTP_STATUS_UNPROCESSABLE_ENTITY = 422,
00192     TS_HTTP_STATUS_LOCKED = 423,
00193     TS_HTTP_STATUS_FAILED_DEPENDENCY = 424,
00194     TS_HTTP_STATUS_UPGRADE_REQUIRED = 426,
00195     TS_HTTP_STATUS_PRECONDITION_REQUIRED = 428,
00196     TS_HTTP_STATUS_TOO_MANY_REQUESTS = 429,
00197     TS_HTTP_STATUS_REQUEST_HEADER_FIELDS_TOO_LARGE = 431,
00198 
00199     TS_HTTP_STATUS_INTERNAL_SERVER_ERROR = 500,
00200     TS_HTTP_STATUS_NOT_IMPLEMENTED = 501,
00201     TS_HTTP_STATUS_BAD_GATEWAY = 502,
00202     TS_HTTP_STATUS_SERVICE_UNAVAILABLE = 503,
00203     TS_HTTP_STATUS_GATEWAY_TIMEOUT = 504,
00204     TS_HTTP_STATUS_HTTPVER_NOT_SUPPORTED = 505,
00205     TS_HTTP_STATUS_VARIANT_ALSO_NEGOTIATES = 506,
00206     TS_HTTP_STATUS_INSUFFICIENT_STORAGE = 507,
00207     TS_HTTP_STATUS_LOOP_DETECTED = 508,
00208     TS_HTTP_STATUS_NOT_EXTENDED = 510,
00209     TS_HTTP_STATUS_NETWORK_AUTHENTICATION_REQUIRED = 511
00210 
00211   } TSHttpStatus;
00212 
00213   /**
00214       This set of enums represents the possible hooks where you can
00215       set up continuation callbacks. The functions used to register a
00216       continuation for a particular hook are:
00217 
00218       TSHttpHookAdd: adds a global hook. You can globally add
00219       any hook except for
00220        - TS_HTTP_REQUEST_TRANSFORM_HOOK
00221        - TS_HTTP_RESPONSE_TRANSFORM_HOOK
00222        - TS_HTTP_RESPONSE_CLIENT_HOOK
00223 
00224       The following hooks can ONLY be added globally:
00225        - TS_HTTP_SELECT_ALT_HOOK
00226        - TS_HTTP_SSN_START_HOOK
00227        - TS_HTTP_SSN_CLOSE_HOOK
00228 
00229       TSHttpSsnHookAdd: adds a transaction hook to each transaction
00230       within a session. You can only use transaction hooks with this call:
00231        - TS_HTTP_READ_REQUEST_HDR_HOOK
00232        - TS_HTTP_OS_DNS_HOOK
00233        - TS_HTTP_SEND_REQUEST_HDR_HOOK
00234        - TS_HTTP_READ_CACHE_HDR_HOOK
00235        - TS_HTTP_READ_RESPONSE_HDR_HOOK
00236        - TS_HTTP_SEND_RESPONSE_HDR_HOOK
00237        - TS_HTTP_REQUEST_TRANSFORM_HOOK
00238        - TS_HTTP_RESPONSE_TRANSFORM_HOOK
00239        - TS_HTTP_RESPONSE_CLIENT_HOOK
00240        - TS_HTTP_TXN_START_HOOK
00241        - TS_HTTP_TXN_CLOSE_HOOK
00242 
00243       TSHttpTxnHookAdd: adds a callback at a specific point within
00244       an HTTP transaction. The following hooks can be used with this
00245       function:
00246        - TS_HTTP_READ_REQUEST_HDR_HOOK
00247        - TS_HTTP_OS_DNS_HOOK
00248        - TS_HTTP_SEND_REQUEST_HDR_HOOK
00249        - TS_HTTP_READ_CACHE_HDR_HOOK
00250        - TS_HTTP_READ_RESPONSE_HDR_HOOK
00251        - TS_HTTP_SEND_RESPONSE_HDR_HOOK
00252        - TS_HTTP_REQUEST_TRANSFORM_HOOK
00253        - TS_HTTP_RESPONSE_TRANSFORM_HOOK
00254        - TS_HTTP_TXN_CLOSE_HOOK
00255 
00256       The two transform hooks can ONLY be added as transaction hooks.
00257 
00258       TS_HTTP_LAST_HOOK _must_ be the last element. Only right place
00259       to insert a new element is just before TS_HTTP_LAST_HOOK.
00260 
00261    */
00262   typedef enum
00263   {
00264     TS_HTTP_READ_REQUEST_HDR_HOOK,
00265     TS_HTTP_OS_DNS_HOOK,
00266     TS_HTTP_SEND_REQUEST_HDR_HOOK,
00267     TS_HTTP_READ_CACHE_HDR_HOOK,
00268     TS_HTTP_READ_RESPONSE_HDR_HOOK,
00269     TS_HTTP_SEND_RESPONSE_HDR_HOOK,
00270     TS_HTTP_REQUEST_TRANSFORM_HOOK,
00271     TS_HTTP_RESPONSE_TRANSFORM_HOOK,
00272     TS_HTTP_SELECT_ALT_HOOK,
00273     TS_HTTP_TXN_START_HOOK,
00274     TS_HTTP_TXN_CLOSE_HOOK,
00275     TS_HTTP_SSN_START_HOOK,
00276     TS_HTTP_SSN_CLOSE_HOOK,
00277     TS_HTTP_CACHE_LOOKUP_COMPLETE_HOOK,
00278     TS_HTTP_PRE_REMAP_HOOK,
00279     TS_HTTP_POST_REMAP_HOOK,
00280     TS_HTTP_RESPONSE_CLIENT_HOOK,
00281     TS_HTTP_LAST_HOOK
00282   } TSHttpHookID;
00283   #define TS_HTTP_READ_REQUEST_PRE_REMAP_HOOK TS_HTTP_PRE_REMAP_HOOK  /* backwards compat */
00284 
00285   /** Plugin lifecycle hooks.
00286 
00287       These are called during lifecycle events of a plugin. They
00288       should be set in the plugin initialization function. The
00289       continuation is invoked with an event ID specified for each hook
00290       and @c NULL for the event data.
00291 
00292       TS_LIFECYCLE_PORTS_INITIALIZED_HOOK
00293 
00294         called once, after the HTTP proxy port data structures have
00295         been initialized. In particular, SSL related calls that depend
00296         on accept endpoints may be invoked. After this hook is
00297         finished, the proxy port sockets are opened and connections
00298         are accepted.
00299 
00300         Event: TS_EVENT_LIFECYCLE_PORTS_INITIALIZED
00301 
00302       TS_LIFECYCLE_PORTS_READY_HOOK
00303 
00304         called once, after the sockets have been opened and the accept
00305         threads have been started. That is, the ports are ready to
00306         accept connections. This is *not* guaranteed to be called
00307         before the first connection is accepted.
00308 
00309         Event: TS_EVENT_LIFECYCLE_PORTS_READY_HOOK
00310 
00311       TS_LIFECYCLE_CACHE_READY_HOOK
00312 
00313         called once, after the cache has finished its
00314         initialization. It is either online or has failed when this
00315         hook is called.
00316 
00317         Event: TS_EVENT_LIFECYCLE_CACHE_READY
00318 
00319       TS_LIFECYCLE_SERVER_SSL_CTX_INITIALIZED_HOOK
00320 
00321         called every time after a server SSL_CTX has finished the initialization.
00322         It exposes the initialized SSL_CTX pointer.
00323 
00324         Event: TS_EVENT_LIFECYCLE_SERVER_SSL_CTX_INITIALIZED
00325 
00326       TS_LIFECYCLE_CLIENT_SSL_CTX_INITIALIZED_HOOK
00327 
00328         called once, after the client SSL_CTX has finished the initialization.
00329         It exposes the initialized SSL_CTX pointer.
00330 
00331         Event: TS_EVENT_LIFECYCLE_CLIENT_SSL_CTX_INITIALIZED
00332 
00333       Ordering guarantees:
00334 
00335       - TS_LIFECYCLE_PORTS_INITIALIZED_HOOK before TS_LIFECYCLE_PORTS_READY_HOOK.
00336 
00337       NOTE! ONLY the orderings EXPLICITLY mentioned above are guaranteed.
00338       
00339    */
00340   typedef enum
00341   {
00342     TS_LIFECYCLE_PORTS_INITIALIZED_HOOK,
00343     TS_LIFECYCLE_PORTS_READY_HOOK,
00344     TS_LIFECYCLE_CACHE_READY_HOOK,
00345     TS_LIFECYCLE_SERVER_SSL_CTX_INITIALIZED_HOOK,
00346     TS_LIFECYCLE_CLIENT_SSL_CTX_INITIALIZED_HOOK,
00347     TS_LIFECYCLE_LAST_HOOK
00348   } TSLifecycleHookID;
00349 
00350   /**
00351       TSEvents are sent to continuations when they are called back.
00352       The TSEvent provides the continuation's handler function with
00353       information about the callback. Based on the event it receives,
00354       the handler function can decide what to do.
00355 
00356    */
00357   typedef enum
00358   {
00359     TS_EVENT_NONE = 0,
00360     TS_EVENT_IMMEDIATE = 1,
00361     TS_EVENT_TIMEOUT = 2,
00362     TS_EVENT_ERROR = 3,
00363     TS_EVENT_CONTINUE = 4,
00364 
00365     TS_EVENT_VCONN_READ_READY = 100,
00366     TS_EVENT_VCONN_WRITE_READY = 101,
00367     TS_EVENT_VCONN_READ_COMPLETE = 102,
00368     TS_EVENT_VCONN_WRITE_COMPLETE = 103,
00369     TS_EVENT_VCONN_EOS = 104,
00370     TS_EVENT_VCONN_INACTIVITY_TIMEOUT = 105,
00371 
00372     TS_EVENT_NET_CONNECT = 200,
00373     TS_EVENT_NET_CONNECT_FAILED = 201,
00374     TS_EVENT_NET_ACCEPT = 202,
00375     TS_EVENT_NET_ACCEPT_FAILED = 204,
00376 
00377     /* EVENTS 206 - 212 for internal use */
00378     TS_EVENT_INTERNAL_206 = 206,
00379     TS_EVENT_INTERNAL_207 = 207,
00380     TS_EVENT_INTERNAL_208 = 208,
00381     TS_EVENT_INTERNAL_209 = 209,
00382     TS_EVENT_INTERNAL_210 = 210,
00383     TS_EVENT_INTERNAL_211 = 211,
00384     TS_EVENT_INTERNAL_212 = 212,
00385 
00386     TS_EVENT_HOST_LOOKUP = 500,
00387     TS_EVENT_CACHE_OPEN_READ = 1102,
00388     TS_EVENT_CACHE_OPEN_READ_FAILED = 1103,
00389     TS_EVENT_CACHE_OPEN_WRITE = 1108,
00390     TS_EVENT_CACHE_OPEN_WRITE_FAILED = 1109,
00391     TS_EVENT_CACHE_REMOVE = 1112,
00392     TS_EVENT_CACHE_REMOVE_FAILED = 1113,
00393     TS_EVENT_CACHE_SCAN = 1120,
00394     TS_EVENT_CACHE_SCAN_FAILED = 1121,
00395     TS_EVENT_CACHE_SCAN_OBJECT = 1122,
00396     TS_EVENT_CACHE_SCAN_OPERATION_BLOCKED = 1123,
00397     TS_EVENT_CACHE_SCAN_OPERATION_FAILED = 1124,
00398     TS_EVENT_CACHE_SCAN_DONE = 1125,
00399 
00400     TS_EVENT_CACHE_LOOKUP = 1126,
00401     TS_EVENT_CACHE_READ = 1127,
00402     TS_EVENT_CACHE_DELETE = 1128,
00403     TS_EVENT_CACHE_WRITE = 1129,
00404     TS_EVENT_CACHE_WRITE_HEADER = 1130,
00405     TS_EVENT_CACHE_CLOSE = 1131,
00406     TS_EVENT_CACHE_LOOKUP_READY = 1132,
00407     TS_EVENT_CACHE_LOOKUP_COMPLETE = 1133,
00408     TS_EVENT_CACHE_READ_READY = 1134,
00409     TS_EVENT_CACHE_READ_COMPLETE = 1135,
00410 
00411     /* EVENT 1200 for internal use */
00412     TS_EVENT_INTERNAL_1200 = 1200,
00413 
00414     /* EVENT 3900 is corresponding to event AIO_EVENT_DONE defined in I_AIO.h */
00415     TS_AIO_EVENT_DONE = 3900,
00416 
00417     TS_EVENT_HTTP_CONTINUE = 60000,
00418     TS_EVENT_HTTP_ERROR = 60001,
00419     TS_EVENT_HTTP_READ_REQUEST_HDR = 60002,
00420     TS_EVENT_HTTP_OS_DNS = 60003,
00421     TS_EVENT_HTTP_SEND_REQUEST_HDR = 60004,
00422     TS_EVENT_HTTP_READ_CACHE_HDR = 60005,
00423     TS_EVENT_HTTP_READ_RESPONSE_HDR = 60006,
00424     TS_EVENT_HTTP_SEND_RESPONSE_HDR = 60007,
00425     TS_EVENT_HTTP_REQUEST_TRANSFORM = 60008,
00426     TS_EVENT_HTTP_RESPONSE_TRANSFORM = 60009,
00427     TS_EVENT_HTTP_SELECT_ALT = 60010,
00428     TS_EVENT_HTTP_TXN_START = 60011,
00429     TS_EVENT_HTTP_TXN_CLOSE = 60012,
00430     TS_EVENT_HTTP_SSN_START = 60013,
00431     TS_EVENT_HTTP_SSN_CLOSE = 60014,
00432     TS_EVENT_HTTP_CACHE_LOOKUP_COMPLETE = 60015,
00433     TS_EVENT_HTTP_PRE_REMAP = 60016,
00434     TS_EVENT_HTTP_POST_REMAP = 60017,
00435     TS_EVENT_LIFECYCLE_PORTS_INITIALIZED = 60018,
00436     TS_EVENT_LIFECYCLE_PORTS_READY = 60019,
00437     TS_EVENT_LIFECYCLE_CACHE_READY = 60020,
00438     TS_EVENT_LIFECYCLE_SERVER_SSL_CTX_INITIALIZED = 60021,
00439     TS_EVENT_LIFECYCLE_CLIENT_SSL_CTX_INITIALIZED = 60022,
00440     TS_EVENT_MGMT_UPDATE = 60100,
00441 
00442     /* EVENTS 60200 - 60202 for internal use */
00443     TS_EVENT_INTERNAL_60200 = 60200,
00444     TS_EVENT_INTERNAL_60201 = 60201,
00445     TS_EVENT_INTERNAL_60202 = 60202
00446   } TSEvent;
00447   #define TS_EVENT_HTTP_READ_REQUEST_PRE_REMAP TS_EVENT_HTTP_PRE_REMAP /* backwards compat */
00448 
00449   typedef enum
00450   { TS_SRVSTATE_STATE_UNDEFINED = 0,
00451     TS_SRVSTATE_ACTIVE_TIMEOUT,
00452     TS_SRVSTATE_BAD_INCOMING_RESPONSE,
00453     TS_SRVSTATE_CONNECTION_ALIVE,
00454     TS_SRVSTATE_CONNECTION_CLOSED,
00455     TS_SRVSTATE_CONNECTION_ERROR,
00456     TS_SRVSTATE_INACTIVE_TIMEOUT,
00457     TS_SRVSTATE_OPEN_RAW_ERROR,
00458     TS_SRVSTATE_PARSE_ERROR,
00459     TS_SRVSTATE_TRANSACTION_COMPLETE,
00460     TS_SRVSTATE_CONGEST_CONTROL_CONGESTED_ON_F,
00461     TS_SRVSTATE_CONGEST_CONTROL_CONGESTED_ON_M
00462   } TSServerState;
00463 
00464   typedef enum
00465   {
00466     TS_LOOKUP_UNDEFINED_LOOKUP,
00467     TS_LOOKUP_ICP_SUGGESTED_HOST,
00468     TS_LOOKUP_PARENT_PROXY,
00469     TS_LOOKUP_ORIGIN_SERVER,
00470     TS_LOOKUP_INCOMING_ROUTER,
00471     TS_LOOKUP_HOST_NONE
00472   } TSLookingUpType;
00473 
00474   typedef enum
00475   {
00476     TS_CACHE_LOOKUP_MISS,
00477     TS_CACHE_LOOKUP_HIT_STALE,
00478     TS_CACHE_LOOKUP_HIT_FRESH,
00479     TS_CACHE_LOOKUP_SKIPPED
00480   } TSCacheLookupResult;
00481 
00482   typedef enum
00483   {
00484     TS_CACHE_DATA_TYPE_NONE,
00485     TS_CACHE_DATA_TYPE_HTTP,
00486     TS_CACHE_DATA_TYPE_OTHER
00487   } TSCacheDataType;
00488 
00489   typedef enum
00490   {
00491     TS_CACHE_ERROR_NO_DOC = -20400,
00492     TS_CACHE_ERROR_DOC_BUSY = -20401,
00493     TS_CACHE_ERROR_NOT_READY = -20407
00494   } TSCacheError;
00495 
00496   typedef enum
00497   {
00498     TS_CACHE_SCAN_RESULT_DONE = 0,
00499     TS_CACHE_SCAN_RESULT_CONTINUE = 1,
00500     TS_CACHE_SCAN_RESULT_DELETE = 10,
00501     TS_CACHE_SCAN_RESULT_DELETE_ALL_ALTERNATES,
00502     TS_CACHE_SCAN_RESULT_UPDATE,
00503     TS_CACHE_SCAN_RESULT_RETRY
00504   } TSCacheScanResult;
00505 
00506   typedef enum
00507   {
00508     TS_VC_CLOSE_ABORT = -1,
00509     TS_VC_CLOSE_NORMAL = 1
00510   } TSVConnCloseFlags;
00511 
00512   typedef enum
00513   {
00514     TS_IOBUFFER_SIZE_INDEX_128 = 0,
00515     TS_IOBUFFER_SIZE_INDEX_256 = 1,
00516     TS_IOBUFFER_SIZE_INDEX_512 = 2,
00517     TS_IOBUFFER_SIZE_INDEX_1K = 3,
00518     TS_IOBUFFER_SIZE_INDEX_2K = 4,
00519     TS_IOBUFFER_SIZE_INDEX_4K = 5,
00520     TS_IOBUFFER_SIZE_INDEX_8K = 6,
00521     TS_IOBUFFER_SIZE_INDEX_16K = 7,
00522     TS_IOBUFFER_SIZE_INDEX_32K = 8
00523   } TSIOBufferSizeIndex;
00524 
00525   /**
00526       Starting 2.0, SDK now follows same versioning as Traffic Server.
00527    */
00528   typedef enum
00529   {
00530     TS_SDK_VERSION_2_0 = 0,
00531     TS_SDK_VERSION_3_0
00532   } TSSDKVersion;
00533 
00534   typedef enum
00535   {
00536     TS_ERROR = -1,
00537     TS_SUCCESS = 0
00538   } TSReturnCode;
00539 
00540   typedef enum
00541   {
00542     NO_CALLBACK = 0,
00543     AFTER_HEADER ,
00544     AFTER_BODY
00545   } TSFetchWakeUpOptions;
00546 
00547 #ifndef _HTTP_PROXY_API_ENUMS_H_
00548 #define _HTTP_PROXY_API_ENUMS_H_
00549   /// Server session sharing values - match
00550   /// Must be identical to definition in HttpProxyAPIEnums.h
00551   typedef enum
00552   {
00553     TS_SERVER_SESSION_SHARING_MATCH_NONE,
00554     TS_SERVER_SESSION_SHARING_MATCH_BOTH,
00555     TS_SERVER_SESSION_SHARING_MATCH_IP,
00556     TS_SERVER_SESSION_SHARING_MATCH_HOST
00557   } TSServerSessionSharingMatchType;
00558 
00559   /// Server session sharing values - pool
00560   /// Must be identical to definition in HttpProxyAPIEnums.h
00561   typedef enum
00562   {
00563     TS_SERVER_SESSION_SHARING_POOL_GLOBAL,
00564     TS_SERVER_SESSION_SHARING_POOL_THREAD
00565   } TSServerSessionSharingPoolType;
00566 #endif
00567 
00568   /* librecords types */
00569 
00570   /* The values of this enum must match enum RecT in I_RecDefs.h */
00571   typedef enum
00572     {
00573       TS_RECORDTYPE_NULL        = 0x00,
00574       TS_RECORDTYPE_CONFIG      = 0x01,
00575       TS_RECORDTYPE_PROCESS     = 0x02,
00576       TS_RECORDTYPE_NODE        = 0x04,
00577       TS_RECORDTYPE_CLUSTER     = 0x08,
00578       TS_RECORDTYPE_LOCAL       = 0x10,
00579       TS_RECORDTYPE_PLUGIN      = 0x20,
00580       TS_RECORDTYPE_ALL         = 0x3F
00581     } TSRecordType;
00582 
00583   /* The values of this enum must match enum RecDataT in I_RecDefs.h */
00584   typedef enum
00585     {
00586       TS_RECORDDATATYPE_NULL = 0,
00587       TS_RECORDDATATYPE_INT,
00588       TS_RECORDDATATYPE_FLOAT,
00589       TS_RECORDDATATYPE_STRING,
00590       TS_RECORDDATATYPE_COUNTER,
00591       TS_RECORDDATATYPE_STAT_CONST,
00592       TS_RECORDDATATYPE_STAT_FX,
00593       TS_RECORDDATATYPE_MAX
00594     } TSRecordDataType;
00595 
00596   typedef union
00597   {
00598     int64_t rec_int;
00599     float rec_float;
00600     char* rec_string;
00601     int64_t rec_counter;
00602   } TSRecordData;
00603 
00604   /* The values of this enum must match enum RecPersistT in I_RecDefs.h */
00605   typedef enum
00606     {
00607       TS_RECORDP_NULL,
00608       TS_RECORDP_PERSISTENT,
00609       TS_RECORDP_NON_PERSISTENT
00610     } TSRecordPersistType;
00611 
00612   /* The values of this enum must match enum RecUpdateT in I_RecDefs.h */
00613   typedef enum
00614     {
00615       TS_RECORDUPDATE_NULL,
00616       TS_RECORDUPDATE_DYNAMIC,
00617       TS_RECORDUPDATE_RESTART_TS,
00618       TS_RECORDUPDATE_RESTART_TM,
00619       TS_RECORDUPDATE_RESTART_TC
00620     } TSRecordUpdateType;
00621 
00622   /* The values of this enum must match enum RecCheckT in I_RecDefs.h */
00623   typedef enum
00624     {
00625       TS_RECORDCHECK_NULL,
00626       TS_RECORDCHECK_STR,
00627       TS_RECORDCHECK_INT,
00628       TS_RECORDCHECK_IP
00629     } TSRecordCheckType;
00630 
00631   /* The values of this enum must match enum RecModeT in I_RecDefs.h */
00632   typedef enum
00633     {
00634       TS_RECORDMODE_NULL,
00635       TS_RECORDMODE_CLIENT,
00636       TS_RECORDMODE_SERVER,
00637       TS_RECORDMODE_STAND_ALONE
00638     } TSRecordModeType;
00639 
00640   /* The values of this enum must match enum RecAccessT in I_RecDefs.h */
00641   typedef enum
00642     {
00643       TS_RECORDACCESS_NULL,
00644       TS_RECORDACCESS_NO_ACCESS,
00645       TS_RECORDACCESS_READ_ONLY
00646     } TSRecordAccessType;
00647 
00648   typedef enum
00649   {
00650     TS_CONFIG_NULL = -1,
00651     TS_CONFIG_URL_REMAP_PRISTINE_HOST_HDR,
00652     TS_CONFIG_HTTP_CHUNKING_ENABLED,
00653     TS_CONFIG_HTTP_NEGATIVE_CACHING_ENABLED,
00654     TS_CONFIG_HTTP_NEGATIVE_CACHING_LIFETIME,
00655     TS_CONFIG_HTTP_CACHE_WHEN_TO_REVALIDATE,
00656     TS_CONFIG_HTTP_KEEP_ALIVE_ENABLED_IN,
00657     TS_CONFIG_HTTP_KEEP_ALIVE_ENABLED_OUT,
00658     TS_CONFIG_HTTP_KEEP_ALIVE_POST_OUT,
00659     TS_CONFIG_HTTP_SHARE_SERVER_SESSIONS, // DEPRECATED
00660     TS_CONFIG_HTTP_SERVER_SESSION_SHARING_POOL,
00661     TS_CONFIG_HTTP_SERVER_SESSION_SHARING_MATCH,
00662     TS_CONFIG_NET_SOCK_RECV_BUFFER_SIZE_OUT,
00663     TS_CONFIG_NET_SOCK_SEND_BUFFER_SIZE_OUT,
00664     TS_CONFIG_NET_SOCK_OPTION_FLAG_OUT,
00665     TS_CONFIG_HTTP_FORWARD_PROXY_AUTH_TO_PARENT,
00666     TS_CONFIG_HTTP_ANONYMIZE_REMOVE_FROM,
00667     TS_CONFIG_HTTP_ANONYMIZE_REMOVE_REFERER,
00668     TS_CONFIG_HTTP_ANONYMIZE_REMOVE_USER_AGENT,
00669     TS_CONFIG_HTTP_ANONYMIZE_REMOVE_COOKIE,
00670     TS_CONFIG_HTTP_ANONYMIZE_REMOVE_CLIENT_IP,
00671     TS_CONFIG_HTTP_ANONYMIZE_INSERT_CLIENT_IP,
00672     TS_CONFIG_HTTP_RESPONSE_SERVER_ENABLED,
00673     TS_CONFIG_HTTP_INSERT_SQUID_X_FORWARDED_FOR,
00674     TS_CONFIG_HTTP_SERVER_TCP_INIT_CWND,
00675     TS_CONFIG_HTTP_SEND_HTTP11_REQUESTS,
00676     TS_CONFIG_HTTP_CACHE_HTTP,
00677     TS_CONFIG_HTTP_CACHE_CLUSTER_CACHE_LOCAL,
00678     TS_CONFIG_HTTP_CACHE_IGNORE_CLIENT_NO_CACHE,
00679     TS_CONFIG_HTTP_CACHE_IGNORE_CLIENT_CC_MAX_AGE,
00680     TS_CONFIG_HTTP_CACHE_IMS_ON_CLIENT_NO_CACHE,
00681     TS_CONFIG_HTTP_CACHE_IGNORE_SERVER_NO_CACHE,
00682     TS_CONFIG_HTTP_CACHE_CACHE_RESPONSES_TO_COOKIES,
00683     TS_CONFIG_HTTP_CACHE_IGNORE_AUTHENTICATION,
00684     TS_CONFIG_HTTP_CACHE_CACHE_URLS_THAT_LOOK_DYNAMIC,
00685     TS_CONFIG_HTTP_CACHE_REQUIRED_HEADERS,
00686     TS_CONFIG_HTTP_INSERT_REQUEST_VIA_STR,
00687     TS_CONFIG_HTTP_INSERT_RESPONSE_VIA_STR,
00688     TS_CONFIG_HTTP_CACHE_HEURISTIC_MIN_LIFETIME,
00689     TS_CONFIG_HTTP_CACHE_HEURISTIC_MAX_LIFETIME,
00690     TS_CONFIG_HTTP_CACHE_GUARANTEED_MIN_LIFETIME,
00691     TS_CONFIG_HTTP_CACHE_GUARANTEED_MAX_LIFETIME,
00692     TS_CONFIG_HTTP_CACHE_MAX_STALE_AGE,
00693     TS_CONFIG_HTTP_KEEP_ALIVE_NO_ACTIVITY_TIMEOUT_IN,
00694     TS_CONFIG_HTTP_KEEP_ALIVE_NO_ACTIVITY_TIMEOUT_OUT,
00695     TS_CONFIG_HTTP_TRANSACTION_NO_ACTIVITY_TIMEOUT_IN,
00696     TS_CONFIG_HTTP_TRANSACTION_NO_ACTIVITY_TIMEOUT_OUT,
00697     TS_CONFIG_HTTP_TRANSACTION_ACTIVE_TIMEOUT_OUT,
00698     TS_CONFIG_HTTP_ORIGIN_MAX_CONNECTIONS,
00699     TS_CONFIG_HTTP_CONNECT_ATTEMPTS_MAX_RETRIES,
00700     TS_CONFIG_HTTP_CONNECT_ATTEMPTS_MAX_RETRIES_DEAD_SERVER,
00701     TS_CONFIG_HTTP_CONNECT_ATTEMPTS_RR_RETRIES,
00702     TS_CONFIG_HTTP_CONNECT_ATTEMPTS_TIMEOUT,
00703     TS_CONFIG_HTTP_POST_CONNECT_ATTEMPTS_TIMEOUT,
00704     TS_CONFIG_HTTP_DOWN_SERVER_CACHE_TIME,
00705     TS_CONFIG_HTTP_DOWN_SERVER_ABORT_THRESHOLD,
00706     TS_CONFIG_HTTP_CACHE_FUZZ_TIME,
00707     TS_CONFIG_HTTP_CACHE_FUZZ_MIN_TIME,
00708     TS_CONFIG_HTTP_DOC_IN_CACHE_SKIP_DNS,
00709     TS_CONFIG_HTTP_BACKGROUND_FILL_ACTIVE_TIMEOUT,
00710     TS_CONFIG_HTTP_RESPONSE_SERVER_STR,
00711     TS_CONFIG_HTTP_CACHE_HEURISTIC_LM_FACTOR,
00712     TS_CONFIG_HTTP_CACHE_FUZZ_PROBABILITY,
00713     TS_CONFIG_HTTP_BACKGROUND_FILL_COMPLETED_THRESHOLD,
00714     TS_CONFIG_NET_SOCK_PACKET_MARK_OUT,
00715     TS_CONFIG_NET_SOCK_PACKET_TOS_OUT,
00716     TS_CONFIG_HTTP_INSERT_AGE_IN_RESPONSE,
00717     TS_CONFIG_HTTP_CHUNKING_SIZE,
00718     TS_CONFIG_HTTP_FLOW_CONTROL_ENABLED,
00719     TS_CONFIG_HTTP_FLOW_CONTROL_LOW_WATER_MARK,
00720     TS_CONFIG_HTTP_FLOW_CONTROL_HIGH_WATER_MARK,
00721     TS_CONFIG_HTTP_CACHE_RANGE_LOOKUP,
00722     TS_CONFIG_HTTP_NORMALIZE_AE_GZIP,
00723     TS_CONFIG_HTTP_DEFAULT_BUFFER_SIZE,
00724     TS_CONFIG_HTTP_DEFAULT_BUFFER_WATER_MARK,
00725     TS_CONFIG_HTTP_REQUEST_HEADER_MAX_SIZE,
00726     TS_CONFIG_HTTP_RESPONSE_HEADER_MAX_SIZE,
00727     TS_CONFIG_HTTP_NEGATIVE_REVALIDATING_ENABLED,
00728     TS_CONFIG_HTTP_NEGATIVE_REVALIDATING_LIFETIME,
00729     TS_CONFIG_HTTP_ACCEPT_ENCODING_FILTER_ENABLED,
00730     TS_CONFIG_SSL_HSTS_MAX_AGE,
00731     TS_CONFIG_SSL_HSTS_INCLUDE_SUBDOMAINS,
00732     TS_CONFIG_HTTP_CACHE_OPEN_READ_RETRY_TIME,
00733     TS_CONFIG_HTTP_CACHE_MAX_OPEN_READ_RETRIES,
00734     TS_CONFIG_HTTP_CACHE_RANGE_WRITE,
00735     TS_CONFIG_HTTP_POST_CHECK_CONTENT_LENGTH_ENABLED,
00736     TS_CONFIG_HTTP_GLOBAL_USER_AGENT_HEADER,
00737     TS_CONFIG_LAST_ENTRY
00738   } TSOverridableConfigKey;
00739 
00740   /* The TASK pool of threads is the primary method of off-loading continuations from the
00741      net-threads. Configure this with proxy.config.task_threads in records.config. */
00742   typedef enum
00743     {
00744       TS_THREAD_POOL_DEFAULT = -1,
00745       TS_THREAD_POOL_NET,
00746       TS_THREAD_POOL_TASK,
00747       /* unlikely you should use these */
00748       TS_THREAD_POOL_SSL,
00749       TS_THREAD_POOL_DNS,
00750       TS_THREAD_POOL_REMAP,
00751       TS_THREAD_POOL_CLUSTER,
00752       TS_THREAD_POOL_UDP
00753     } TSThreadPool;
00754 
00755   typedef int64_t TSHRTime;
00756 
00757   /* The TSMilestonesType is an enum defining all the various milestones ("timers") that
00758      we track for a request. */
00759   typedef enum
00760     {
00761       TS_MILESTONE_NULL = -1,
00762       TS_MILESTONE_UA_BEGIN,
00763       TS_MILESTONE_UA_READ_HEADER_DONE,
00764       TS_MILESTONE_UA_BEGIN_WRITE,
00765       TS_MILESTONE_UA_CLOSE,
00766       TS_MILESTONE_SERVER_FIRST_CONNECT,
00767       TS_MILESTONE_SERVER_CONNECT,
00768       TS_MILESTONE_SERVER_CONNECT_END,
00769       TS_MILESTONE_SERVER_BEGIN_WRITE,
00770       TS_MILESTONE_SERVER_FIRST_READ,
00771       TS_MILESTONE_SERVER_READ_HEADER_DONE,
00772       TS_MILESTONE_SERVER_CLOSE,
00773       TS_MILESTONE_CACHE_OPEN_READ_BEGIN,
00774       TS_MILESTONE_CACHE_OPEN_READ_END,
00775       TS_MILESTONE_CACHE_OPEN_WRITE_BEGIN,
00776       TS_MILESTONE_CACHE_OPEN_WRITE_END,
00777       TS_MILESTONE_DNS_LOOKUP_BEGIN,
00778       TS_MILESTONE_DNS_LOOKUP_END,
00779       TS_MILESTONE_SM_START,
00780       TS_MILESTONE_SM_FINISH,
00781       TS_MILESTONE_LAST_ENTRY
00782     } TSMilestonesType;
00783 
00784 
00785   /* These typedefs are used with the corresponding TSMgmt*Get functions
00786      for storing the values retrieved by those functions. For example,
00787      TSMgmtCounterGet() retrieves an TSMgmtCounter. */
00788   typedef int64_t TSMgmtInt;
00789   typedef int64_t TSMgmtCounter;
00790   typedef float TSMgmtFloat;
00791   typedef char* TSMgmtString;
00792 
00793   typedef struct tsapi_file* TSFile;
00794 
00795   typedef struct tsapi_mloc* TSMLoc;
00796   typedef struct tsapi_mbuffer* TSMBuffer;
00797   typedef struct tsapi_httpssn* TSHttpSsn;
00798   typedef struct tsapi_httptxn* TSHttpTxn;
00799   typedef struct tsapi_httpaltinfo* TSHttpAltInfo;
00800   typedef struct tsapi_mimeparser* TSMimeParser;
00801   typedef struct tsapi_httpparser* TSHttpParser;
00802   typedef struct tsapi_cachekey* TSCacheKey;
00803   typedef struct tsapi_cachehttpinfo* TSCacheHttpInfo;
00804   typedef struct tsapi_cachetxn* TSCacheTxn;
00805 
00806   typedef struct tsapi_port* TSPortDescriptor;
00807   typedef struct tsapi_vio* TSVIO;
00808   typedef struct tsapi_thread* TSThread;
00809   typedef struct tsapi_mutex* TSMutex;
00810   typedef struct tsapi_config* TSConfig;
00811   typedef struct tsapi_cont* TSCont;
00812   typedef struct tsapi_cont* TSVConn; /* a VConn is really a specialized TSCont */
00813   typedef struct tsapi_action* TSAction;
00814   typedef struct tsapi_iobuffer* TSIOBuffer;
00815   typedef struct tsapi_iobufferdata* TSIOBufferData;
00816   typedef struct tsapi_bufferblock* TSIOBufferBlock;
00817   typedef struct tsapi_bufferreader* TSIOBufferReader;
00818   typedef struct tsapi_hostlookupresult* TSHostLookupResult;
00819   typedef struct tsapi_aiocallback* TSAIOCallback;
00820 
00821   typedef void *(*TSThreadFunc) (void* data);
00822   typedef int (*TSEventFunc) (TSCont contp, TSEvent event, void* edata);
00823   typedef void (*TSConfigDestroyFunc) (void* data);
00824 
00825   typedef struct
00826   {
00827     int success_event_id;
00828     int failure_event_id;
00829     int timeout_event_id;
00830   } TSFetchEvent;
00831 
00832   typedef struct TSFetchUrlParams
00833   {
00834     const char* request;
00835     int request_len;
00836     struct sockaddr_storage ip;
00837     int port;
00838     TSCont contp;
00839     TSFetchEvent events;
00840     TSFetchWakeUpOptions options;
00841     struct TSFetchUrlParams* next;
00842   } TSFetchUrlParams_t;
00843 
00844   /* --------------------------------------------------------------------------
00845      Init */
00846 
00847   /**
00848       This function must be defined by all plugins. Traffic Server
00849       calls this initialization routine when it loads the plugin (at
00850       startup), and sets argc and argv appropriately based on the values
00851       in plugin.config.
00852 
00853       @param argc the number of initial values specified in plugin.config,
00854         plus one. If only the name of your plugin shared object is
00855         specified in plugin.config, argc=1.
00856       @param argv the vector of arguments. The length of argv is argc.
00857         argv[0] is the name of the plugin shared library. Subsequent
00858         values of argv are initialization values specified in
00859         plugin.config.
00860 
00861    */
00862   extern tsapi void TSPluginInit(int argc, const char* argv[]);
00863 
00864   /* --------------------------------------------------------------------------
00865      URL schemes */
00866   extern tsapi const char* TS_URL_SCHEME_FILE;
00867   extern tsapi const char* TS_URL_SCHEME_FTP;
00868   extern tsapi const char* TS_URL_SCHEME_GOPHER;
00869   extern tsapi const char* TS_URL_SCHEME_HTTP;
00870   extern tsapi const char* TS_URL_SCHEME_HTTPS;
00871   extern tsapi const char* TS_URL_SCHEME_MAILTO;
00872   extern tsapi const char* TS_URL_SCHEME_NEWS;
00873   extern tsapi const char* TS_URL_SCHEME_NNTP;
00874   extern tsapi const char* TS_URL_SCHEME_PROSPERO;
00875   extern tsapi const char* TS_URL_SCHEME_TELNET;
00876   extern tsapi const char* TS_URL_SCHEME_TUNNEL;
00877   extern tsapi const char* TS_URL_SCHEME_WAIS;
00878   extern tsapi const char* TS_URL_SCHEME_PNM;
00879   extern tsapi const char* TS_URL_SCHEME_RTSP;
00880   extern tsapi const char* TS_URL_SCHEME_RTSPU;
00881   extern tsapi const char* TS_URL_SCHEME_MMS;
00882   extern tsapi const char* TS_URL_SCHEME_MMSU;
00883   extern tsapi const char* TS_URL_SCHEME_MMST;
00884 
00885   /* --------------------------------------------------------------------------
00886      URL scheme string lengths */
00887   extern tsapi int TS_URL_LEN_FILE;
00888   extern tsapi int TS_URL_LEN_FTP;
00889   extern tsapi int TS_URL_LEN_GOPHER;
00890   extern tsapi int TS_URL_LEN_HTTP;
00891   extern tsapi int TS_URL_LEN_HTTPS;
00892   extern tsapi int TS_URL_LEN_MAILTO;
00893   extern tsapi int TS_URL_LEN_NEWS;
00894   extern tsapi int TS_URL_LEN_NNTP;
00895   extern tsapi int TS_URL_LEN_PROSPERO;
00896   extern tsapi int TS_URL_LEN_TELNET;
00897   extern tsapi int TS_URL_LEN_WAIS;
00898 
00899   /* --------------------------------------------------------------------------
00900      MIME fields */
00901   extern tsapi const char* TS_MIME_FIELD_ACCEPT;
00902   extern tsapi const char* TS_MIME_FIELD_ACCEPT_CHARSET;
00903   extern tsapi const char* TS_MIME_FIELD_ACCEPT_ENCODING;
00904   extern tsapi const char* TS_MIME_FIELD_ACCEPT_LANGUAGE;
00905   extern tsapi const char* TS_MIME_FIELD_ACCEPT_RANGES;
00906   extern tsapi const char* TS_MIME_FIELD_AGE;
00907   extern tsapi const char* TS_MIME_FIELD_ALLOW;
00908   extern tsapi const char* TS_MIME_FIELD_APPROVED;
00909   extern tsapi const char* TS_MIME_FIELD_AUTHORIZATION;
00910   extern tsapi const char* TS_MIME_FIELD_BYTES;
00911   extern tsapi const char* TS_MIME_FIELD_CACHE_CONTROL;
00912   extern tsapi const char* TS_MIME_FIELD_CLIENT_IP;
00913   extern tsapi const char* TS_MIME_FIELD_CONNECTION;
00914   extern tsapi const char* TS_MIME_FIELD_CONTENT_BASE;
00915   extern tsapi const char* TS_MIME_FIELD_CONTENT_ENCODING;
00916   extern tsapi const char* TS_MIME_FIELD_CONTENT_LANGUAGE;
00917   extern tsapi const char* TS_MIME_FIELD_CONTENT_LENGTH;
00918   extern tsapi const char* TS_MIME_FIELD_CONTENT_LOCATION;
00919   extern tsapi const char* TS_MIME_FIELD_CONTENT_MD5;
00920   extern tsapi const char* TS_MIME_FIELD_CONTENT_RANGE;
00921   extern tsapi const char* TS_MIME_FIELD_CONTENT_TYPE;
00922   extern tsapi const char* TS_MIME_FIELD_CONTROL;
00923   extern tsapi const char* TS_MIME_FIELD_COOKIE;
00924   extern tsapi const char* TS_MIME_FIELD_DATE;
00925   extern tsapi const char* TS_MIME_FIELD_DISTRIBUTION;
00926   extern tsapi const char* TS_MIME_FIELD_ETAG;
00927   extern tsapi const char* TS_MIME_FIELD_EXPECT;
00928   extern tsapi const char* TS_MIME_FIELD_EXPIRES;
00929   extern tsapi const char* TS_MIME_FIELD_FOLLOWUP_TO;
00930   extern tsapi const char* TS_MIME_FIELD_FROM;
00931   extern tsapi const char* TS_MIME_FIELD_HOST;
00932   extern tsapi const char* TS_MIME_FIELD_IF_MATCH;
00933   extern tsapi const char* TS_MIME_FIELD_IF_MODIFIED_SINCE;
00934   extern tsapi const char* TS_MIME_FIELD_IF_NONE_MATCH;
00935   extern tsapi const char* TS_MIME_FIELD_IF_RANGE;
00936   extern tsapi const char* TS_MIME_FIELD_IF_UNMODIFIED_SINCE;
00937   extern tsapi const char* TS_MIME_FIELD_KEEP_ALIVE;
00938   extern tsapi const char* TS_MIME_FIELD_KEYWORDS;
00939   extern tsapi const char* TS_MIME_FIELD_LAST_MODIFIED;
00940   extern tsapi const char* TS_MIME_FIELD_LINES;
00941   extern tsapi const char* TS_MIME_FIELD_LOCATION;
00942   extern tsapi const char* TS_MIME_FIELD_MAX_FORWARDS;
00943   extern tsapi const char* TS_MIME_FIELD_MESSAGE_ID;
00944   extern tsapi const char* TS_MIME_FIELD_NEWSGROUPS;
00945   extern tsapi const char* TS_MIME_FIELD_ORGANIZATION;
00946   extern tsapi const char* TS_MIME_FIELD_PATH;
00947   extern tsapi const char* TS_MIME_FIELD_PRAGMA;
00948   extern tsapi const char* TS_MIME_FIELD_PROXY_AUTHENTICATE;
00949   extern tsapi const char* TS_MIME_FIELD_PROXY_AUTHORIZATION;
00950   extern tsapi const char* TS_MIME_FIELD_PROXY_CONNECTION;
00951   extern tsapi const char* TS_MIME_FIELD_PUBLIC;
00952   extern tsapi const char* TS_MIME_FIELD_RANGE;
00953   extern tsapi const char* TS_MIME_FIELD_REFERENCES;
00954   extern tsapi const char* TS_MIME_FIELD_REFERER;
00955   extern tsapi const char* TS_MIME_FIELD_REPLY_TO;
00956   extern tsapi const char* TS_MIME_FIELD_RETRY_AFTER;
00957   extern tsapi const char* TS_MIME_FIELD_SENDER;
00958   extern tsapi const char* TS_MIME_FIELD_SERVER;
00959   extern tsapi const char* TS_MIME_FIELD_SET_COOKIE;
00960   extern tsapi const char* TS_MIME_FIELD_STRICT_TRANSPORT_SECURITY;
00961   extern tsapi const char* TS_MIME_FIELD_SUBJECT;
00962   extern tsapi const char* TS_MIME_FIELD_SUMMARY;
00963   extern tsapi const char* TS_MIME_FIELD_TE;
00964   extern tsapi const char* TS_MIME_FIELD_TRANSFER_ENCODING;
00965   extern tsapi const char* TS_MIME_FIELD_UPGRADE;
00966   extern tsapi const char* TS_MIME_FIELD_USER_AGENT;
00967   extern tsapi const char* TS_MIME_FIELD_VARY;
00968   extern tsapi const char* TS_MIME_FIELD_VIA;
00969   extern tsapi const char* TS_MIME_FIELD_WARNING;
00970   extern tsapi const char* TS_MIME_FIELD_WWW_AUTHENTICATE;
00971   extern tsapi const char* TS_MIME_FIELD_XREF;
00972   extern tsapi const char* TS_MIME_FIELD_X_FORWARDED_FOR;
00973 
00974   /* --------------------------------------------------------------------------
00975      MIME fields string lengths */
00976   extern tsapi int TS_MIME_LEN_ACCEPT;
00977   extern tsapi int TS_MIME_LEN_ACCEPT_CHARSET;
00978   extern tsapi int TS_MIME_LEN_ACCEPT_ENCODING;
00979   extern tsapi int TS_MIME_LEN_ACCEPT_LANGUAGE;
00980   extern tsapi int TS_MIME_LEN_ACCEPT_RANGES;
00981   extern tsapi int TS_MIME_LEN_AGE;
00982   extern tsapi int TS_MIME_LEN_ALLOW;
00983   extern tsapi int TS_MIME_LEN_APPROVED;
00984   extern tsapi int TS_MIME_LEN_AUTHORIZATION;
00985   extern tsapi int TS_MIME_LEN_BYTES;
00986   extern tsapi int TS_MIME_LEN_CACHE_CONTROL;
00987   extern tsapi int TS_MIME_LEN_CLIENT_IP;
00988   extern tsapi int TS_MIME_LEN_CONNECTION;
00989   extern tsapi int TS_MIME_LEN_CONTENT_BASE;
00990   extern tsapi int TS_MIME_LEN_CONTENT_ENCODING;
00991   extern tsapi int TS_MIME_LEN_CONTENT_LANGUAGE;
00992   extern tsapi int TS_MIME_LEN_CONTENT_LENGTH;
00993   extern tsapi int TS_MIME_LEN_CONTENT_LOCATION;
00994   extern tsapi int TS_MIME_LEN_CONTENT_MD5;
00995   extern tsapi int TS_MIME_LEN_CONTENT_RANGE;
00996   extern tsapi int TS_MIME_LEN_CONTENT_TYPE;
00997   extern tsapi int TS_MIME_LEN_CONTROL;
00998   extern tsapi int TS_MIME_LEN_COOKIE;
00999   extern tsapi int TS_MIME_LEN_DATE;
01000   extern tsapi int TS_MIME_LEN_DISTRIBUTION;
01001   extern tsapi int TS_MIME_LEN_ETAG;
01002   extern tsapi int TS_MIME_LEN_EXPECT;
01003   extern tsapi int TS_MIME_LEN_EXPIRES;
01004   extern tsapi int TS_MIME_LEN_FOLLOWUP_TO;
01005   extern tsapi int TS_MIME_LEN_FROM;
01006   extern tsapi int TS_MIME_LEN_HOST;
01007   extern tsapi int TS_MIME_LEN_IF_MATCH;
01008   extern tsapi int TS_MIME_LEN_IF_MODIFIED_SINCE;
01009   extern tsapi int TS_MIME_LEN_IF_NONE_MATCH;
01010   extern tsapi int TS_MIME_LEN_IF_RANGE;
01011   extern tsapi int TS_MIME_LEN_IF_UNMODIFIED_SINCE;
01012   extern tsapi int TS_MIME_LEN_KEEP_ALIVE;
01013   extern tsapi int TS_MIME_LEN_KEYWORDS;
01014   extern tsapi int TS_MIME_LEN_LAST_MODIFIED;
01015   extern tsapi int TS_MIME_LEN_LINES;
01016   extern tsapi int TS_MIME_LEN_LOCATION;
01017   extern tsapi int TS_MIME_LEN_MAX_FORWARDS;
01018   extern tsapi int TS_MIME_LEN_MESSAGE_ID;
01019   extern tsapi int TS_MIME_LEN_NEWSGROUPS;
01020   extern tsapi int TS_MIME_LEN_ORGANIZATION;
01021   extern tsapi int TS_MIME_LEN_PATH;
01022   extern tsapi int TS_MIME_LEN_PRAGMA;
01023   extern tsapi int TS_MIME_LEN_PROXY_AUTHENTICATE;
01024   extern tsapi int TS_MIME_LEN_PROXY_AUTHORIZATION;
01025   extern tsapi int TS_MIME_LEN_PROXY_CONNECTION;
01026   extern tsapi int TS_MIME_LEN_PUBLIC;
01027   extern tsapi int TS_MIME_LEN_RANGE;
01028   extern tsapi int TS_MIME_LEN_REFERENCES;
01029   extern tsapi int TS_MIME_LEN_REFERER;
01030   extern tsapi int TS_MIME_LEN_REPLY_TO;
01031   extern tsapi int TS_MIME_LEN_RETRY_AFTER;
01032   extern tsapi int TS_MIME_LEN_SENDER;
01033   extern tsapi int TS_MIME_LEN_SERVER;
01034   extern tsapi int TS_MIME_LEN_SET_COOKIE;
01035   extern tsapi int TS_MIME_LEN_STRICT_TRANSPORT_SECURITY;
01036   extern tsapi int TS_MIME_LEN_SUBJECT;
01037   extern tsapi int TS_MIME_LEN_SUMMARY;
01038   extern tsapi int TS_MIME_LEN_TE;
01039   extern tsapi int TS_MIME_LEN_TRANSFER_ENCODING;
01040   extern tsapi int TS_MIME_LEN_UPGRADE;
01041   extern tsapi int TS_MIME_LEN_USER_AGENT;
01042   extern tsapi int TS_MIME_LEN_VARY;
01043   extern tsapi int TS_MIME_LEN_VIA;
01044   extern tsapi int TS_MIME_LEN_WARNING;
01045   extern tsapi int TS_MIME_LEN_WWW_AUTHENTICATE;
01046   extern tsapi int TS_MIME_LEN_XREF;
01047   extern tsapi int TS_MIME_LEN_X_FORWARDED_FOR;
01048 
01049   /* --------------------------------------------------------------------------
01050      HTTP values */
01051   extern tsapi const char* TS_HTTP_VALUE_BYTES;
01052   extern tsapi const char* TS_HTTP_VALUE_CHUNKED;
01053   extern tsapi const char* TS_HTTP_VALUE_CLOSE;
01054   extern tsapi const char* TS_HTTP_VALUE_COMPRESS;
01055   extern tsapi const char* TS_HTTP_VALUE_DEFLATE;
01056   extern tsapi const char* TS_HTTP_VALUE_GZIP;
01057   extern tsapi const char* TS_HTTP_VALUE_IDENTITY;
01058   extern tsapi const char* TS_HTTP_VALUE_KEEP_ALIVE;
01059   extern tsapi const char* TS_HTTP_VALUE_MAX_AGE;
01060   extern tsapi const char* TS_HTTP_VALUE_MAX_STALE;
01061   extern tsapi const char* TS_HTTP_VALUE_MIN_FRESH;
01062   extern tsapi const char* TS_HTTP_VALUE_MUST_REVALIDATE;
01063   extern tsapi const char* TS_HTTP_VALUE_NONE;
01064   extern tsapi const char* TS_HTTP_VALUE_NO_CACHE;
01065   extern tsapi const char* TS_HTTP_VALUE_NO_STORE;
01066   extern tsapi const char* TS_HTTP_VALUE_NO_TRANSFORM;
01067   extern tsapi const char* TS_HTTP_VALUE_ONLY_IF_CACHED;
01068   extern tsapi const char* TS_HTTP_VALUE_PRIVATE;
01069   extern tsapi const char* TS_HTTP_VALUE_PROXY_REVALIDATE;
01070   extern tsapi const char* TS_HTTP_VALUE_PUBLIC;
01071 
01072   /* --------------------------------------------------------------------------
01073      HTTP values string lengths */
01074   extern tsapi int TS_HTTP_LEN_BYTES;
01075   extern tsapi int TS_HTTP_LEN_CHUNKED;
01076   extern tsapi int TS_HTTP_LEN_CLOSE;
01077   extern tsapi int TS_HTTP_LEN_COMPRESS;
01078   extern tsapi int TS_HTTP_LEN_DEFLATE;
01079   extern tsapi int TS_HTTP_LEN_GZIP;
01080   extern tsapi int TS_HTTP_LEN_IDENTITY;
01081   extern tsapi int TS_HTTP_LEN_KEEP_ALIVE;
01082   extern tsapi int TS_HTTP_LEN_MAX_AGE;
01083   extern tsapi int TS_HTTP_LEN_MAX_STALE;
01084   extern tsapi int TS_HTTP_LEN_MIN_FRESH;
01085   extern tsapi int TS_HTTP_LEN_MUST_REVALIDATE;
01086   extern tsapi int TS_HTTP_LEN_NONE;
01087   extern tsapi int TS_HTTP_LEN_NO_CACHE;
01088   extern tsapi int TS_HTTP_LEN_NO_STORE;
01089   extern tsapi int TS_HTTP_LEN_NO_TRANSFORM;
01090   extern tsapi int TS_HTTP_LEN_ONLY_IF_CACHED;
01091   extern tsapi int TS_HTTP_LEN_PRIVATE;
01092   extern tsapi int TS_HTTP_LEN_PROXY_REVALIDATE;
01093   extern tsapi int TS_HTTP_LEN_PUBLIC;
01094 
01095   /* --------------------------------------------------------------------------
01096      HTTP methods */
01097   extern tsapi const char* TS_HTTP_METHOD_CONNECT;
01098   extern tsapi const char* TS_HTTP_METHOD_DELETE;
01099   extern tsapi const char* TS_HTTP_METHOD_GET;
01100   extern tsapi const char* TS_HTTP_METHOD_HEAD;
01101   extern tsapi const char* TS_HTTP_METHOD_ICP_QUERY;
01102   extern tsapi const char* TS_HTTP_METHOD_OPTIONS;
01103   extern tsapi const char* TS_HTTP_METHOD_POST;
01104   extern tsapi const char* TS_HTTP_METHOD_PURGE;
01105   extern tsapi const char* TS_HTTP_METHOD_PUT;
01106   extern tsapi const char* TS_HTTP_METHOD_TRACE;
01107   extern tsapi const char* TS_HTTP_METHOD_PUSH;
01108 
01109   /* --------------------------------------------------------------------------
01110      HTTP methods string lengths */
01111   extern tsapi int TS_HTTP_LEN_CONNECT;
01112   extern tsapi int TS_HTTP_LEN_DELETE;
01113   extern tsapi int TS_HTTP_LEN_GET;
01114   extern tsapi int TS_HTTP_LEN_HEAD;
01115   extern tsapi int TS_HTTP_LEN_ICP_QUERY;
01116   extern tsapi int TS_HTTP_LEN_OPTIONS;
01117   extern tsapi int TS_HTTP_LEN_POST;
01118   extern tsapi int TS_HTTP_LEN_PURGE;
01119   extern tsapi int TS_HTTP_LEN_PUT;
01120   extern tsapi int TS_HTTP_LEN_TRACE;
01121   extern tsapi int TS_HTTP_LEN_PUSH;
01122 
01123   /* --------------------------------------------------------------------------
01124      TLS Next Protocol well-known protocol names. */
01125 
01126   extern tsapi const char * const TS_NPN_PROTOCOL_HTTP_0_9;
01127   extern tsapi const char * const TS_NPN_PROTOCOL_HTTP_1_0;
01128   extern tsapi const char * const TS_NPN_PROTOCOL_HTTP_1_1;
01129   extern tsapi const char * const TS_NPN_PROTOCOL_HTTP_2_0;
01130   extern tsapi const char * const TS_NPN_PROTOCOL_SPDY_1;
01131   extern tsapi const char * const TS_NPN_PROTOCOL_SPDY_2;
01132   extern tsapi const char * const TS_NPN_PROTOCOL_SPDY_3;
01133   extern tsapi const char * const TS_NPN_PROTOCOL_SPDY_3_1;
01134 
01135   extern tsapi int TS_NPN_PROTOCOL_INDEX_HTTP_0_9;
01136   extern tsapi int TS_NPN_PROTOCOL_INDEX_HTTP_1_0;
01137   extern tsapi int TS_NPN_PROTOCOL_INDEX_HTTP_1_1;
01138   extern tsapi int TS_NPN_PROTOCOL_INDEX_SPDY_1;
01139   extern tsapi int TS_NPN_PROTOCOL_INDEX_SPDY_2;
01140   extern tsapi int TS_NPN_PROTOCOL_INDEX_SPDY_3;
01141   extern tsapi int TS_NPN_PROTOCOL_INDEX_SPDY_3_1;
01142   extern tsapi int TS_NPN_PROTOCOL_INDEX_HTTP_2_0;
01143 
01144   extern tsapi const char * const TS_NPN_PROTOCOL_GROUP_HTTP;
01145   extern tsapi const char * const TS_NPN_PROTOCOL_GROUP_HTTP2;
01146   extern tsapi const char * const TS_NPN_PROTOCOL_GROUP_SPDY;
01147 
01148   /* --------------------------------------------------------------------------
01149      MLoc Constants */
01150   /**
01151       Use TS_NULL_MLOC as the parent in calls that require a parent
01152       when an TSMLoc does not have a parent TSMLoc. For example if
01153       the TSMLoc is obtained by a call to TSHttpTxnClientReqGet(),
01154 
01155    */
01156   extern tsapi const TSMLoc TS_NULL_MLOC;
01157 
01158 #ifdef __cplusplus
01159 }
01160 #endif /* __cplusplus */
01161 
01162 #endif /* __TS_TYPES_H__ */

Generated by  doxygen 1.7.1