haproxy/addons/51degrees/dummy/pattern/51Degrees.h

147 lines
4.3 KiB
C

/* *********************************************************************
* This Source Code Form is copyright of 51Degrees Mobile Experts Limited.
* Copyright 2019 51Degrees Mobile Experts Limited, 5 Charlotte Close,
* Caversham, Reading, Berkshire, United Kingdom RG4 7BY
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0.
*
* If a copy of the MPL was not distributed with this file, You can obtain
* one at http://mozilla.org/MPL/2.0/.
*
* This Source Code Form is "Incompatible With Secondary Licenses", as
* defined by the Mozilla Public License, v. 2.0.
* *********************************************************************/
/* *********************************************************************
* Dummy library for HAProxy. This does not function, and is designed
* solely for HAProxy testing purposes.
* *********************************************************************/
#ifndef FIFTYONEDEGREES_H_INCLUDED
#define FIFTYONEDEGREES_H_INCLUDED
#ifndef FIFTYONEDEGREES_H_PATTERN_INCLUDED
#define FIFTYONEDEGREES_H_PATTERN_INCLUDED
#endif
#ifndef FIFTYONEDEGREES_DUMMY_LIB
#define FIFTYONEDEGREES_DUMMY_LIB
#endif
#include <stdint.h>
typedef enum e_fiftyoneDegrees_MatchMethod {
NONE,
EXACT,
NUMERIC,
NEAREST,
CLOSEST
} fiftyoneDegreesMatchMethod;
typedef enum e_fiftyoneDegrees_DataSetInitStatus {
DATA_SET_INIT_STATUS_SUCCESS,
DATA_SET_INIT_STATUS_INSUFFICIENT_MEMORY,
DATA_SET_INIT_STATUS_CORRUPT_DATA,
DATA_SET_INIT_STATUS_INCORRECT_VERSION,
DATA_SET_INIT_STATUS_FILE_NOT_FOUND,
DATA_SET_INIT_STATUS_NOT_SET,
DATA_SET_INIT_STATUS_POINTER_OUT_OF_BOUNDS,
DATA_SET_INIT_STATUS_NULL_POINTER
} fiftyoneDegreesDataSetInitStatus;
typedef struct fiftyoneDegrees_ascii_string_t {
const int16_t length;
const char firstByte;
} fiftyoneDegreesAsciiString;
typedef struct fiftyoneDegrees_dataset_header_t {
} fiftyoneDegreesDataSetHeader;
typedef struct fiftyoneDegrees_workset_pool_t {
} fiftyoneDegreesWorksetPool;
typedef struct fiftyoneDegrees_property_t {
} fiftyoneDegreesProperty;
typedef struct fiftyoneDegrees_value_t {
} fiftyoneDegreesValue;
typedef struct fiftyoneDegrees_resultset_cache_t {
} fiftyoneDegreesResultsetCache;
typedef struct fiftyoneDegrees_http_header_t {
int32_t headerNameOffset;
const char *headerName;
} fiftyoneDegreesHttpHeader;
typedef struct fiftyoneDegrees_http_header_workset_t {
fiftyoneDegreesHttpHeader *header;
const char *headerValue;
int headerValueLength;
} fiftyoneDegreesHttpHeaderWorkset;
typedef struct fiftyoneDegrees_dataset_t {
int32_t httpHeadersCount;
fiftyoneDegreesHttpHeader *httpHeaders;
int32_t requiredPropertyCount;
const fiftyoneDegreesProperty **requiredProperties;
} fiftyoneDegreesDataSet;
typedef struct fiftyoneDegrees_workset_t {
fiftyoneDegreesDataSet *dataSet;
int32_t importantHeadersCount;
fiftyoneDegreesHttpHeaderWorkset *importantHeaders;
fiftyoneDegreesMatchMethod method;
int32_t difference;
const fiftyoneDegreesValue **values;
} fiftyoneDegreesWorkset;
int32_t fiftyoneDegreesGetSignatureRank(fiftyoneDegreesWorkset *ws);
const char* fiftyoneDegreesGetPropertyName(
const fiftyoneDegreesDataSet *dataSet,
const fiftyoneDegreesProperty *property);
int32_t fiftyoneDegreesSetValues(
fiftyoneDegreesWorkset *ws,
int32_t requiredPropertyIndex);
const char* fiftyoneDegreesGetValueName(
const fiftyoneDegreesDataSet *dataSet,
const fiftyoneDegreesValue *value);
fiftyoneDegreesWorkset *fiftyoneDegreesWorksetPoolGet(
fiftyoneDegreesWorksetPool *pool);
void fiftyoneDegreesWorksetPoolRelease(
fiftyoneDegreesWorksetPool *pool,
fiftyoneDegreesWorkset *ws);
void fiftyoneDegreesMatchForHttpHeaders(fiftyoneDegreesWorkset *ws);
void fiftyoneDegreesMatch(
fiftyoneDegreesWorkset *ws,
const char* userAgent);
fiftyoneDegreesDataSetInitStatus fiftyoneDegreesInitWithPropertyArray(
const char *fileName,
fiftyoneDegreesDataSet *dataSet,
const char** properties,
int32_t count);
fiftyoneDegreesWorksetPool *fiftyoneDegreesWorksetPoolCreate(
fiftyoneDegreesDataSet *dataSet,
fiftyoneDegreesResultsetCache *cache,
int32_t size);
void fiftyoneDegreesWorksetPoolFree(
const fiftyoneDegreesWorksetPool *pool);
void fiftyoneDegreesDataSetFree(const fiftyoneDegreesDataSet *dataSet);
const fiftyoneDegreesAsciiString* fiftyoneDegreesGetString(
const fiftyoneDegreesDataSet *dataSet,
int32_t offset);
#endif