Update upstream source from tag 'upstream/6.0.24.51.1+repack'
Update to upstream version '6.0.24.51.1+repack'
with Debian dir 345d0bf3b0
This commit is contained in:
commit
a675c89dc3
|
@ -1,2 +0,0 @@
|
||||||
.pc/
|
|
||||||
*.swp
|
|
2383
MQTTAsync.h
2383
MQTTAsync.h
File diff suppressed because it is too large
Load Diff
1980
MQTTClient.h
1980
MQTTClient.h
File diff suppressed because it is too large
Load Diff
|
@ -1,277 +0,0 @@
|
||||||
/*******************************************************************************
|
|
||||||
* Copyright (c) 2009, 2020 IBM Corp.
|
|
||||||
*
|
|
||||||
* All rights reserved. This program and the accompanying materials
|
|
||||||
* are made available under the terms of the Eclipse Public License v2.0
|
|
||||||
* and Eclipse Distribution License v1.0 which accompany this distribution.
|
|
||||||
*
|
|
||||||
* The Eclipse Public License is available at
|
|
||||||
* https://www.eclipse.org/legal/epl-2.0/
|
|
||||||
* and the Eclipse Distribution License is available at
|
|
||||||
* http://www.eclipse.org/org/documents/edl-v10.php.
|
|
||||||
*
|
|
||||||
* Contributors:
|
|
||||||
* Ian Craggs - initial API and implementation and/or initial documentation
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @file
|
|
||||||
* \brief This structure represents a persistent data store, used to store
|
|
||||||
* outbound and inbound messages, in order to achieve reliable messaging.
|
|
||||||
*
|
|
||||||
* The MQTT Client persists QoS1 and QoS2 messages in order to meet the
|
|
||||||
* assurances of delivery associated with these @ref qos levels. The messages
|
|
||||||
* are saved in persistent storage
|
|
||||||
* The type and context of the persistence implementation are specified when
|
|
||||||
* the MQTT client is created (see MQTTClient_create()). The default
|
|
||||||
* persistence type (::MQTTCLIENT_PERSISTENCE_DEFAULT) uses a file system-based
|
|
||||||
* persistence mechanism. The <i>persistence_context</i> argument passed to
|
|
||||||
* MQTTClient_create() when using the default peristence is a string
|
|
||||||
* representing the location of the persistence directory. If the context
|
|
||||||
* argument is NULL, the working directory will be used.
|
|
||||||
*
|
|
||||||
* To use memory-based persistence, an application passes
|
|
||||||
* ::MQTTCLIENT_PERSISTENCE_NONE as the <i>persistence_type</i> to
|
|
||||||
* MQTTClient_create(). This can lead to message loss in certain situations,
|
|
||||||
* but can be appropriate in some cases (see @ref qos).
|
|
||||||
*
|
|
||||||
* Client applications can provide their own persistence mechanism by passing
|
|
||||||
* ::MQTTCLIENT_PERSISTENCE_USER as the <i>persistence_type</i>. To implement a
|
|
||||||
* custom persistence mechanism, the application must pass an initialized
|
|
||||||
* ::MQTTClient_persistence structure as the <i>persistence_context</i>
|
|
||||||
* argument to MQTTClient_create().
|
|
||||||
*
|
|
||||||
* If the functions defined return an ::MQTTCLIENT_PERSISTENCE_ERROR then the
|
|
||||||
* state of the persisted data should remain as it was prior to the function
|
|
||||||
* being called. For example, if Persistence_put() returns
|
|
||||||
* ::MQTTCLIENT_PERSISTENCE_ERROR, then it is assumed tha tthe persistent store
|
|
||||||
* does not contain the data that was passed to the function. Similarly, if
|
|
||||||
* Persistence_remove() returns ::MQTTCLIENT_PERSISTENCE_ERROR then it is
|
|
||||||
* assumed that the data to be removed is still held in the persistent store.
|
|
||||||
*
|
|
||||||
* It is up to the persistence implementation to log any error information that
|
|
||||||
* may be required to diagnose a persistence mechanism failure.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
/// @cond EXCLUDE
|
|
||||||
*/
|
|
||||||
#if !defined(MQTTCLIENTPERSISTENCE_H)
|
|
||||||
#define MQTTCLIENTPERSISTENCE_H
|
|
||||||
/*
|
|
||||||
/// @endcond
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This <i>persistence_type</i> value specifies the default file system-based
|
|
||||||
* persistence mechanism (see MQTTClient_create()).
|
|
||||||
*/
|
|
||||||
#define MQTTCLIENT_PERSISTENCE_DEFAULT 0
|
|
||||||
/**
|
|
||||||
* This <i>persistence_type</i> value specifies a memory-based
|
|
||||||
* persistence mechanism (see MQTTClient_create()).
|
|
||||||
*/
|
|
||||||
#define MQTTCLIENT_PERSISTENCE_NONE 1
|
|
||||||
/**
|
|
||||||
* This <i>persistence_type</i> value specifies an application-specific
|
|
||||||
* persistence mechanism (see MQTTClient_create()).
|
|
||||||
*/
|
|
||||||
#define MQTTCLIENT_PERSISTENCE_USER 2
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Application-specific persistence functions must return this error code if
|
|
||||||
* there is a problem executing the function.
|
|
||||||
*/
|
|
||||||
#define MQTTCLIENT_PERSISTENCE_ERROR -2
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Initialize the persistent store.
|
|
||||||
*
|
|
||||||
* Either open the existing persistent store for this client ID or create a new
|
|
||||||
* one if one doesn't exist. If the persistent store is already open, return
|
|
||||||
* without taking any action.
|
|
||||||
*
|
|
||||||
* An application can use the same client identifier to connect to many
|
|
||||||
* different servers. The <i>clientid</i> in conjunction with the
|
|
||||||
* <i>serverURI</i> uniquely identifies the persistence store required.
|
|
||||||
*
|
|
||||||
* @param handle The address of a pointer to a handle for this persistence
|
|
||||||
* implementation. This function must set handle to a valid reference to the
|
|
||||||
* persistence following a successful return.
|
|
||||||
* The handle pointer is passed as an argument to all the other
|
|
||||||
* persistence functions. It may include the context parameter and/or any other
|
|
||||||
* data for use by the persistence functions.
|
|
||||||
* @param clientID The client identifier for which the persistent store should
|
|
||||||
* be opened.
|
|
||||||
* @param serverURI The connection string specified when the MQTT client was
|
|
||||||
* created (see MQTTClient_create()).
|
|
||||||
* @param context A pointer to any data required to initialize the persistent
|
|
||||||
* store (see ::MQTTClient_persistence).
|
|
||||||
* @return Return 0 if the function completes successfully, otherwise return
|
|
||||||
* ::MQTTCLIENT_PERSISTENCE_ERROR.
|
|
||||||
*/
|
|
||||||
typedef int (*Persistence_open)(void** handle, const char* clientID, const char* serverURI, void* context);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Close the persistent store referred to by the handle.
|
|
||||||
*
|
|
||||||
* @param handle The handle pointer from a successful call to
|
|
||||||
* Persistence_open().
|
|
||||||
* @return Return 0 if the function completes successfully, otherwise return
|
|
||||||
* ::MQTTCLIENT_PERSISTENCE_ERROR.
|
|
||||||
*/
|
|
||||||
typedef int (*Persistence_close)(void* handle);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Put the specified data into the persistent store.
|
|
||||||
*
|
|
||||||
* @param handle The handle pointer from a successful call to
|
|
||||||
* Persistence_open().
|
|
||||||
* @param key A string used as the key for the data to be put in the store. The
|
|
||||||
* key is later used to retrieve data from the store with Persistence_get().
|
|
||||||
* @param bufcount The number of buffers to write to the persistence store.
|
|
||||||
* @param buffers An array of pointers to the data buffers associated with
|
|
||||||
* this <i>key</i>.
|
|
||||||
* @param buflens An array of lengths of the data buffers. <i>buflen[n]</i>
|
|
||||||
* gives the length of <i>buffer[n]</i>.
|
|
||||||
* @return Return 0 if the function completes successfully, otherwise return
|
|
||||||
* ::MQTTCLIENT_PERSISTENCE_ERROR.
|
|
||||||
*/
|
|
||||||
typedef int (*Persistence_put)(void* handle, char* key, int bufcount, char* buffers[], int buflens[]);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Retrieve the specified data from the persistent store.
|
|
||||||
*
|
|
||||||
* @param handle The handle pointer from a successful call to
|
|
||||||
* Persistence_open().
|
|
||||||
* @param key A string that is the key for the data to be retrieved. This is
|
|
||||||
* the same key used to save the data to the store with Persistence_put().
|
|
||||||
* @param buffer The address of a pointer to a buffer. This function sets the
|
|
||||||
* pointer to point at the retrieved data, if successful.
|
|
||||||
* @param buflen The address of an int that is set to the length of
|
|
||||||
* <i>buffer</i> by this function if successful.
|
|
||||||
* @return Return 0 if the function completes successfully, otherwise return
|
|
||||||
* ::MQTTCLIENT_PERSISTENCE_ERROR.
|
|
||||||
*/
|
|
||||||
typedef int (*Persistence_get)(void* handle, char* key, char** buffer, int* buflen);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Remove the data for the specified key from the store.
|
|
||||||
*
|
|
||||||
* @param handle The handle pointer from a successful call to
|
|
||||||
* Persistence_open().
|
|
||||||
* @param key A string that is the key for the data to be removed from the
|
|
||||||
* store. This is the same key used to save the data to the store with
|
|
||||||
* Persistence_put().
|
|
||||||
* @return Return 0 if the function completes successfully, otherwise return
|
|
||||||
* ::MQTTCLIENT_PERSISTENCE_ERROR.
|
|
||||||
*/
|
|
||||||
typedef int (*Persistence_remove)(void* handle, char* key);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Returns the keys in this persistent data store.
|
|
||||||
*
|
|
||||||
* @param handle The handle pointer from a successful call to
|
|
||||||
* Persistence_open().
|
|
||||||
* @param keys The address of a pointer to pointers to strings. Assuming
|
|
||||||
* successful execution, this function allocates memory to hold the returned
|
|
||||||
* keys (strings used to store the data with Persistence_put()). It also
|
|
||||||
* allocates memory to hold an array of pointers to these strings. <i>keys</i>
|
|
||||||
* is set to point to the array of pointers to strings.
|
|
||||||
* @param nkeys A pointer to the number of keys in this persistent data store.
|
|
||||||
* This function sets the number of keys, if successful.
|
|
||||||
* @return Return 0 if the function completes successfully, otherwise return
|
|
||||||
* ::MQTTCLIENT_PERSISTENCE_ERROR.
|
|
||||||
*/
|
|
||||||
typedef int (*Persistence_keys)(void* handle, char*** keys, int* nkeys);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Clears the persistence store, so that it no longer contains any
|
|
||||||
* persisted data.
|
|
||||||
*
|
|
||||||
* @param handle The handle pointer from a successful call to
|
|
||||||
* Persistence_open().
|
|
||||||
* @return Return 0 if the function completes successfully, otherwise return
|
|
||||||
* ::MQTTCLIENT_PERSISTENCE_ERROR.
|
|
||||||
*/
|
|
||||||
typedef int (*Persistence_clear)(void* handle);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Returns whether any data has been persisted using the specified key.
|
|
||||||
*
|
|
||||||
* @param handle The handle pointer from a successful call to
|
|
||||||
* Persistence_open().
|
|
||||||
* @param key The string to be tested for existence in the store.
|
|
||||||
* @return Return 0 if the key was found in the store, otherwise return
|
|
||||||
* ::MQTTCLIENT_PERSISTENCE_ERROR.
|
|
||||||
*/
|
|
||||||
typedef int (*Persistence_containskey)(void* handle, char* key);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief A structure containing the function pointers to a persistence
|
|
||||||
* implementation and the context or state that will be shared across all
|
|
||||||
* the persistence functions.
|
|
||||||
*/
|
|
||||||
typedef struct {
|
|
||||||
/**
|
|
||||||
* A pointer to any data required to initialize the persistent store.
|
|
||||||
*/
|
|
||||||
void* context;
|
|
||||||
/**
|
|
||||||
* A function pointer to an implementation of Persistence_open().
|
|
||||||
*/
|
|
||||||
Persistence_open popen;
|
|
||||||
/**
|
|
||||||
* A function pointer to an implementation of Persistence_close().
|
|
||||||
*/
|
|
||||||
Persistence_close pclose;
|
|
||||||
/**
|
|
||||||
* A function pointer to an implementation of Persistence_put().
|
|
||||||
*/
|
|
||||||
Persistence_put pput;
|
|
||||||
/**
|
|
||||||
* A function pointer to an implementation of Persistence_get().
|
|
||||||
*/
|
|
||||||
Persistence_get pget;
|
|
||||||
/**
|
|
||||||
* A function pointer to an implementation of Persistence_remove().
|
|
||||||
*/
|
|
||||||
Persistence_remove premove;
|
|
||||||
/**
|
|
||||||
* A function pointer to an implementation of Persistence_keys().
|
|
||||||
*/
|
|
||||||
Persistence_keys pkeys;
|
|
||||||
/**
|
|
||||||
* A function pointer to an implementation of Persistence_clear().
|
|
||||||
*/
|
|
||||||
Persistence_clear pclear;
|
|
||||||
/**
|
|
||||||
* A function pointer to an implementation of Persistence_containskey().
|
|
||||||
*/
|
|
||||||
Persistence_containskey pcontainskey;
|
|
||||||
} MQTTClient_persistence;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A callback which is invoked just before a write to persistence. This can be
|
|
||||||
* used to transform the data, for instance to encrypt it.
|
|
||||||
* @param context The context as set in ::MQTTAsync_setBeforePersistenceWrite
|
|
||||||
* @param bufcount The number of buffers to write to the persistence store.
|
|
||||||
* @param buffers An array of pointers to the data buffers.
|
|
||||||
* @param buflens An array of lengths of the data buffers.
|
|
||||||
* @return Return 0 if the function completes successfully, otherwise non 0.
|
|
||||||
*/
|
|
||||||
typedef int MQTTPersistence_beforeWrite(void* context, int bufcount, char* buffers[], int buflens[]);
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A callback which is invoked just after a read from persistence. This can be
|
|
||||||
* used to transform the data, for instance to decrypt it.
|
|
||||||
* @param context The context as set in ::MQTTAsync_setAfterPersistenceRead
|
|
||||||
* @param buffer The address of a pointer to a buffer.
|
|
||||||
* @param buflen The address of an int that is the length of the buffer.
|
|
||||||
* @return Return 0 if the function completes successfully, otherwise non 0.
|
|
||||||
*/
|
|
||||||
typedef int MQTTPersistence_afterRead(void* context, char** buffer, int* buflen);
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,36 +0,0 @@
|
||||||
/*******************************************************************************
|
|
||||||
* Copyright (c) 2020, 2020 Andreas Walter
|
|
||||||
*
|
|
||||||
* All rights reserved. This program and the accompanying materials
|
|
||||||
* are made available under the terms of the Eclipse Public License v2.0
|
|
||||||
* and Eclipse Distribution License v1.0 which accompany this distribution.
|
|
||||||
*
|
|
||||||
* The Eclipse Public License is available at
|
|
||||||
* https://www.eclipse.org/legal/epl-2.0/
|
|
||||||
* and the Eclipse Distribution License is available at
|
|
||||||
* http://www.eclipse.org/org/documents/edl-v10.php.
|
|
||||||
*
|
|
||||||
* Contributors:
|
|
||||||
* Andreas Walter - initially moved export declarations into separate fle
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
#if !defined(EXPORTDECLARATIONS_H)
|
|
||||||
#define EXPORTDECLARATIONS_H
|
|
||||||
|
|
||||||
#if defined(_WIN32) || defined(_WIN64)
|
|
||||||
# if defined(PAHO_MQTT_EXPORTS)
|
|
||||||
# define LIBMQTT_API __declspec(dllexport)
|
|
||||||
# elif defined(PAHO_MQTT_IMPORTS)
|
|
||||||
# define LIBMQTT_API __declspec(dllimport)
|
|
||||||
# else
|
|
||||||
# define LIBMQTT_API
|
|
||||||
# endif
|
|
||||||
#else
|
|
||||||
# if defined(PAHO_MQTT_EXPORTS)
|
|
||||||
# define LIBMQTT_API __attribute__ ((visibility ("default")))
|
|
||||||
# else
|
|
||||||
# define LIBMQTT_API extern
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
222
MQTTProperties.h
222
MQTTProperties.h
|
@ -1,222 +0,0 @@
|
||||||
/*******************************************************************************
|
|
||||||
* Copyright (c) 2017, 2023 IBM Corp. and others
|
|
||||||
*
|
|
||||||
* All rights reserved. This program and the accompanying materials
|
|
||||||
* are made available under the terms of the Eclipse Public License v2.0
|
|
||||||
* and Eclipse Distribution License v1.0 which accompany this distribution.
|
|
||||||
*
|
|
||||||
* The Eclipse Public License is available at
|
|
||||||
* https://www.eclipse.org/legal/epl-2.0/
|
|
||||||
* and the Eclipse Distribution License is available at
|
|
||||||
* http://www.eclipse.org/org/documents/edl-v10.php.
|
|
||||||
*
|
|
||||||
* Contributors:
|
|
||||||
* Ian Craggs - initial API and implementation and/or initial documentation
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
#if !defined(MQTTPROPERTIES_H)
|
|
||||||
#define MQTTPROPERTIES_H
|
|
||||||
|
|
||||||
#include "MQTTExportDeclarations.h"
|
|
||||||
|
|
||||||
#define MQTT_INVALID_PROPERTY_ID -2
|
|
||||||
|
|
||||||
/** The one byte MQTT V5 property indicator */
|
|
||||||
enum MQTTPropertyCodes {
|
|
||||||
MQTTPROPERTY_CODE_PAYLOAD_FORMAT_INDICATOR = 1, /**< The value is 1 */
|
|
||||||
MQTTPROPERTY_CODE_MESSAGE_EXPIRY_INTERVAL = 2, /**< The value is 2 */
|
|
||||||
MQTTPROPERTY_CODE_CONTENT_TYPE = 3, /**< The value is 3 */
|
|
||||||
MQTTPROPERTY_CODE_RESPONSE_TOPIC = 8, /**< The value is 8 */
|
|
||||||
MQTTPROPERTY_CODE_CORRELATION_DATA = 9, /**< The value is 9 */
|
|
||||||
MQTTPROPERTY_CODE_SUBSCRIPTION_IDENTIFIER = 11, /**< The value is 11 */
|
|
||||||
MQTTPROPERTY_CODE_SESSION_EXPIRY_INTERVAL = 17, /**< The value is 17 */
|
|
||||||
MQTTPROPERTY_CODE_ASSIGNED_CLIENT_IDENTIFER = 18,/**< The value is 18 */
|
|
||||||
MQTTPROPERTY_CODE_SERVER_KEEP_ALIVE = 19, /**< The value is 19 */
|
|
||||||
MQTTPROPERTY_CODE_AUTHENTICATION_METHOD = 21, /**< The value is 21 */
|
|
||||||
MQTTPROPERTY_CODE_AUTHENTICATION_DATA = 22, /**< The value is 22 */
|
|
||||||
MQTTPROPERTY_CODE_REQUEST_PROBLEM_INFORMATION = 23,/**< The value is 23 */
|
|
||||||
MQTTPROPERTY_CODE_WILL_DELAY_INTERVAL = 24, /**< The value is 24 */
|
|
||||||
MQTTPROPERTY_CODE_REQUEST_RESPONSE_INFORMATION = 25,/**< The value is 25 */
|
|
||||||
MQTTPROPERTY_CODE_RESPONSE_INFORMATION = 26, /**< The value is 26 */
|
|
||||||
MQTTPROPERTY_CODE_SERVER_REFERENCE = 28, /**< The value is 28 */
|
|
||||||
MQTTPROPERTY_CODE_REASON_STRING = 31, /**< The value is 31 */
|
|
||||||
MQTTPROPERTY_CODE_RECEIVE_MAXIMUM = 33, /**< The value is 33*/
|
|
||||||
MQTTPROPERTY_CODE_TOPIC_ALIAS_MAXIMUM = 34, /**< The value is 34 */
|
|
||||||
MQTTPROPERTY_CODE_TOPIC_ALIAS = 35, /**< The value is 35 */
|
|
||||||
MQTTPROPERTY_CODE_MAXIMUM_QOS = 36, /**< The value is 36 */
|
|
||||||
MQTTPROPERTY_CODE_RETAIN_AVAILABLE = 37, /**< The value is 37 */
|
|
||||||
MQTTPROPERTY_CODE_USER_PROPERTY = 38, /**< The value is 38 */
|
|
||||||
MQTTPROPERTY_CODE_MAXIMUM_PACKET_SIZE = 39, /**< The value is 39 */
|
|
||||||
MQTTPROPERTY_CODE_WILDCARD_SUBSCRIPTION_AVAILABLE = 40,/**< The value is 40 */
|
|
||||||
MQTTPROPERTY_CODE_SUBSCRIPTION_IDENTIFIERS_AVAILABLE = 41,/**< The value is 41 */
|
|
||||||
MQTTPROPERTY_CODE_SHARED_SUBSCRIPTION_AVAILABLE = 42/**< The value is 241 */
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a printable string description of an MQTT V5 property code.
|
|
||||||
* @param value an MQTT V5 property code.
|
|
||||||
* @return the printable string description of the input property code.
|
|
||||||
* NULL if the code was not found.
|
|
||||||
*/
|
|
||||||
LIBMQTT_API const char* MQTTPropertyName(enum MQTTPropertyCodes value);
|
|
||||||
|
|
||||||
/** The one byte MQTT V5 property type */
|
|
||||||
enum MQTTPropertyTypes {
|
|
||||||
MQTTPROPERTY_TYPE_BYTE,
|
|
||||||
MQTTPROPERTY_TYPE_TWO_BYTE_INTEGER,
|
|
||||||
MQTTPROPERTY_TYPE_FOUR_BYTE_INTEGER,
|
|
||||||
MQTTPROPERTY_TYPE_VARIABLE_BYTE_INTEGER,
|
|
||||||
MQTTPROPERTY_TYPE_BINARY_DATA,
|
|
||||||
MQTTPROPERTY_TYPE_UTF_8_ENCODED_STRING,
|
|
||||||
MQTTPROPERTY_TYPE_UTF_8_STRING_PAIR
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the MQTT V5 type code of an MQTT V5 property.
|
|
||||||
* @param value an MQTT V5 property code.
|
|
||||||
* @return the MQTT V5 type code of the input property. -1 if the code was not found.
|
|
||||||
*/
|
|
||||||
LIBMQTT_API int MQTTProperty_getType(enum MQTTPropertyCodes value);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The data for a length delimited string
|
|
||||||
*/
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
int len; /**< the length of the string */
|
|
||||||
char* data; /**< pointer to the string data */
|
|
||||||
} MQTTLenString;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Structure to hold an MQTT version 5 property of any type
|
|
||||||
*/
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
enum MQTTPropertyCodes identifier; /**< The MQTT V5 property id. A multi-byte integer. */
|
|
||||||
/** The value of the property, as a union of the different possible types. */
|
|
||||||
union {
|
|
||||||
unsigned char byte; /**< holds the value of a byte property type */
|
|
||||||
unsigned short integer2; /**< holds the value of a 2 byte integer property type */
|
|
||||||
unsigned int integer4; /**< holds the value of a 4 byte integer property type */
|
|
||||||
struct {
|
|
||||||
MQTTLenString data; /**< The value of a string property, or the name of a user property. */
|
|
||||||
MQTTLenString value; /**< The value of a user property. */
|
|
||||||
};
|
|
||||||
} value;
|
|
||||||
} MQTTProperty;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* MQTT version 5 property list
|
|
||||||
*/
|
|
||||||
typedef struct MQTTProperties
|
|
||||||
{
|
|
||||||
int count; /**< number of property entries in the array */
|
|
||||||
int max_count; /**< max number of properties that the currently allocated array can store */
|
|
||||||
int length; /**< mbi: byte length of all properties */
|
|
||||||
MQTTProperty *array; /**< array of properties */
|
|
||||||
} MQTTProperties;
|
|
||||||
|
|
||||||
#define MQTTProperties_initializer {0, 0, 0, NULL}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the length of the properties structure when serialized ready for network transmission.
|
|
||||||
* @param props an MQTT V5 property structure.
|
|
||||||
* @return the length in bytes of the properties when serialized.
|
|
||||||
*/
|
|
||||||
int MQTTProperties_len(MQTTProperties* props);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add a property pointer to the property array. Memory is allocated in this function,
|
|
||||||
* so MQTTClient_create or MQTTAsync_create must be called first to initialize the
|
|
||||||
* internal heap tracking. Alternatively MQTTAsync_global_init() can be called first
|
|
||||||
* or build with the HIGH_PERFORMANCE option which disables the heap tracking.
|
|
||||||
* @param props The property list to add the property to.
|
|
||||||
* @param prop The property to add to the list.
|
|
||||||
* @return 0 on success, -1 on failure.
|
|
||||||
*/
|
|
||||||
LIBMQTT_API int MQTTProperties_add(MQTTProperties* props, const MQTTProperty* prop);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Serialize the given property list to a character buffer, e.g. for writing to the network.
|
|
||||||
* @param pptr pointer to the buffer - move the pointer as we add data
|
|
||||||
* @param properties pointer to the property list, can be NULL
|
|
||||||
* @return whether the write succeeded or not: number of bytes written, or < 0 on failure.
|
|
||||||
*/
|
|
||||||
int MQTTProperties_write(char** pptr, const MQTTProperties* properties);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reads a property list from a character buffer into an array.
|
|
||||||
* @param properties pointer to the property list to be filled. Should be initalized but empty.
|
|
||||||
* @param pptr pointer to the character buffer.
|
|
||||||
* @param enddata pointer to the end of the character buffer so we don't read beyond.
|
|
||||||
* @return 1 if the properties were read successfully.
|
|
||||||
*/
|
|
||||||
int MQTTProperties_read(MQTTProperties* properties, char** pptr, char* enddata);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Free all memory allocated to the property list, including any to individual properties.
|
|
||||||
* @param properties pointer to the property list.
|
|
||||||
*/
|
|
||||||
LIBMQTT_API void MQTTProperties_free(MQTTProperties* properties);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Copy the contents of a property list, allocating additional memory if needed.
|
|
||||||
* @param props pointer to the property list.
|
|
||||||
* @return the duplicated property list.
|
|
||||||
*/
|
|
||||||
LIBMQTT_API MQTTProperties MQTTProperties_copy(const MQTTProperties* props);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks if property list contains a specific property.
|
|
||||||
* @param props pointer to the property list.
|
|
||||||
* @param propid the property id to check for.
|
|
||||||
* @return 1 if found, 0 if not.
|
|
||||||
*/
|
|
||||||
LIBMQTT_API int MQTTProperties_hasProperty(MQTTProperties *props, enum MQTTPropertyCodes propid);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the number of instances of a property id. Most properties can exist only once.
|
|
||||||
* User properties and subscription ids can exist more than once.
|
|
||||||
* @param props pointer to the property list.
|
|
||||||
* @param propid the property id to check for.
|
|
||||||
* @return the number of times found. Can be 0.
|
|
||||||
*/
|
|
||||||
LIBMQTT_API int MQTTProperties_propertyCount(MQTTProperties *props, enum MQTTPropertyCodes propid);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the integer value of a specific property. The property given must be a numeric type.
|
|
||||||
* @param props pointer to the property list.
|
|
||||||
* @param propid the property id to check for.
|
|
||||||
* @return the integer value of the property. -9999999 on failure.
|
|
||||||
*/
|
|
||||||
LIBMQTT_API int MQTTProperties_getNumericValue(MQTTProperties *props, enum MQTTPropertyCodes propid);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the integer value of a specific property when it's not the only instance.
|
|
||||||
* The property given must be a numeric type.
|
|
||||||
* @param props pointer to the property list.
|
|
||||||
* @param propid the property id to check for.
|
|
||||||
* @param index the instance number, starting at 0.
|
|
||||||
* @return the integer value of the property. -9999999 on failure.
|
|
||||||
*/
|
|
||||||
LIBMQTT_API int MQTTProperties_getNumericValueAt(MQTTProperties *props, enum MQTTPropertyCodes propid, int index);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a pointer to the property structure for a specific property.
|
|
||||||
* @param props pointer to the property list.
|
|
||||||
* @param propid the property id to check for.
|
|
||||||
* @return the pointer to the property structure if found. NULL if not found.
|
|
||||||
*/
|
|
||||||
LIBMQTT_API MQTTProperty* MQTTProperties_getProperty(MQTTProperties *props, enum MQTTPropertyCodes propid);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a pointer to the property structure for a specific property when it's not the only instance.
|
|
||||||
* @param props pointer to the property list.
|
|
||||||
* @param propid the property id to check for.
|
|
||||||
* @param index the instance number, starting at 0.
|
|
||||||
* @return the pointer to the property structure if found. NULL if not found.
|
|
||||||
*/
|
|
||||||
LIBMQTT_API MQTTProperty* MQTTProperties_getPropertyAt(MQTTProperties *props, enum MQTTPropertyCodes propid, int index);
|
|
||||||
|
|
||||||
#endif /* MQTTPROPERTIES_H */
|
|
|
@ -1,79 +0,0 @@
|
||||||
/*******************************************************************************
|
|
||||||
* Copyright (c) 2017, 2020 IBM Corp. and others
|
|
||||||
*
|
|
||||||
* All rights reserved. This program and the accompanying materials
|
|
||||||
* are made available under the terms of the Eclipse Public License v2.0
|
|
||||||
* and Eclipse Distribution License v1.0 which accompany this distribution.
|
|
||||||
*
|
|
||||||
* The Eclipse Public License is available at
|
|
||||||
* https://www.eclipse.org/legal/epl-2.0/
|
|
||||||
* and the Eclipse Distribution License is available at
|
|
||||||
* http://www.eclipse.org/org/documents/edl-v10.php.
|
|
||||||
*
|
|
||||||
* Contributors:
|
|
||||||
* Ian Craggs - initial API and implementation and/or initial documentation
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
#if !defined(MQTTREASONCODES_H)
|
|
||||||
#define MQTTREASONCODES_H
|
|
||||||
|
|
||||||
#include "MQTTExportDeclarations.h"
|
|
||||||
|
|
||||||
/** The MQTT V5 one byte reason code */
|
|
||||||
enum MQTTReasonCodes {
|
|
||||||
MQTTREASONCODE_SUCCESS = 0,
|
|
||||||
MQTTREASONCODE_NORMAL_DISCONNECTION = 0,
|
|
||||||
MQTTREASONCODE_GRANTED_QOS_0 = 0,
|
|
||||||
MQTTREASONCODE_GRANTED_QOS_1 = 1,
|
|
||||||
MQTTREASONCODE_GRANTED_QOS_2 = 2,
|
|
||||||
MQTTREASONCODE_DISCONNECT_WITH_WILL_MESSAGE = 4,
|
|
||||||
MQTTREASONCODE_NO_MATCHING_SUBSCRIBERS = 16,
|
|
||||||
MQTTREASONCODE_NO_SUBSCRIPTION_FOUND = 17,
|
|
||||||
MQTTREASONCODE_CONTINUE_AUTHENTICATION = 24,
|
|
||||||
MQTTREASONCODE_RE_AUTHENTICATE = 25,
|
|
||||||
MQTTREASONCODE_UNSPECIFIED_ERROR = 128,
|
|
||||||
MQTTREASONCODE_MALFORMED_PACKET = 129,
|
|
||||||
MQTTREASONCODE_PROTOCOL_ERROR = 130,
|
|
||||||
MQTTREASONCODE_IMPLEMENTATION_SPECIFIC_ERROR = 131,
|
|
||||||
MQTTREASONCODE_UNSUPPORTED_PROTOCOL_VERSION = 132,
|
|
||||||
MQTTREASONCODE_CLIENT_IDENTIFIER_NOT_VALID = 133,
|
|
||||||
MQTTREASONCODE_BAD_USER_NAME_OR_PASSWORD = 134,
|
|
||||||
MQTTREASONCODE_NOT_AUTHORIZED = 135,
|
|
||||||
MQTTREASONCODE_SERVER_UNAVAILABLE = 136,
|
|
||||||
MQTTREASONCODE_SERVER_BUSY = 137,
|
|
||||||
MQTTREASONCODE_BANNED = 138,
|
|
||||||
MQTTREASONCODE_SERVER_SHUTTING_DOWN = 139,
|
|
||||||
MQTTREASONCODE_BAD_AUTHENTICATION_METHOD = 140,
|
|
||||||
MQTTREASONCODE_KEEP_ALIVE_TIMEOUT = 141,
|
|
||||||
MQTTREASONCODE_SESSION_TAKEN_OVER = 142,
|
|
||||||
MQTTREASONCODE_TOPIC_FILTER_INVALID = 143,
|
|
||||||
MQTTREASONCODE_TOPIC_NAME_INVALID = 144,
|
|
||||||
MQTTREASONCODE_PACKET_IDENTIFIER_IN_USE = 145,
|
|
||||||
MQTTREASONCODE_PACKET_IDENTIFIER_NOT_FOUND = 146,
|
|
||||||
MQTTREASONCODE_RECEIVE_MAXIMUM_EXCEEDED = 147,
|
|
||||||
MQTTREASONCODE_TOPIC_ALIAS_INVALID = 148,
|
|
||||||
MQTTREASONCODE_PACKET_TOO_LARGE = 149,
|
|
||||||
MQTTREASONCODE_MESSAGE_RATE_TOO_HIGH = 150,
|
|
||||||
MQTTREASONCODE_QUOTA_EXCEEDED = 151,
|
|
||||||
MQTTREASONCODE_ADMINISTRATIVE_ACTION = 152,
|
|
||||||
MQTTREASONCODE_PAYLOAD_FORMAT_INVALID = 153,
|
|
||||||
MQTTREASONCODE_RETAIN_NOT_SUPPORTED = 154,
|
|
||||||
MQTTREASONCODE_QOS_NOT_SUPPORTED = 155,
|
|
||||||
MQTTREASONCODE_USE_ANOTHER_SERVER = 156,
|
|
||||||
MQTTREASONCODE_SERVER_MOVED = 157,
|
|
||||||
MQTTREASONCODE_SHARED_SUBSCRIPTIONS_NOT_SUPPORTED = 158,
|
|
||||||
MQTTREASONCODE_CONNECTION_RATE_EXCEEDED = 159,
|
|
||||||
MQTTREASONCODE_MAXIMUM_CONNECT_TIME = 160,
|
|
||||||
MQTTREASONCODE_SUBSCRIPTION_IDENTIFIERS_NOT_SUPPORTED = 161,
|
|
||||||
MQTTREASONCODE_WILDCARD_SUBSCRIPTIONS_NOT_SUPPORTED = 162
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a printable string description of an MQTT V5 reason code.
|
|
||||||
* @param value an MQTT V5 reason code.
|
|
||||||
* @return the printable string description of the input reason code.
|
|
||||||
* NULL if the code was not found.
|
|
||||||
*/
|
|
||||||
LIBMQTT_API const char* MQTTReasonCode_toString(enum MQTTReasonCodes value);
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,46 +0,0 @@
|
||||||
/*******************************************************************************
|
|
||||||
* Copyright (c) 2018 IBM Corp.
|
|
||||||
*
|
|
||||||
* All rights reserved. This program and the accompanying materials
|
|
||||||
* are made available under the terms of the Eclipse Public License v2.0
|
|
||||||
* and Eclipse Distribution License v1.0 which accompany this distribution.
|
|
||||||
*
|
|
||||||
* The Eclipse Public License is available at
|
|
||||||
* https://www.eclipse.org/legal/epl-2.0/
|
|
||||||
* and the Eclipse Distribution License is available at
|
|
||||||
* http://www.eclipse.org/org/documents/edl-v10.php.
|
|
||||||
*
|
|
||||||
* Contributors:
|
|
||||||
* Ian Craggs - initial API and implementation and/or initial documentation
|
|
||||||
*******************************************************************************/
|
|
||||||
|
|
||||||
#if !defined(SUBOPTS_H)
|
|
||||||
#define SUBOPTS_H
|
|
||||||
|
|
||||||
/** The MQTT V5 subscribe options, apart from QoS which existed before V5. */
|
|
||||||
typedef struct MQTTSubscribe_options
|
|
||||||
{
|
|
||||||
/** The eyecatcher for this structure. Must be MQSO. */
|
|
||||||
char struct_id[4];
|
|
||||||
/** The version number of this structure. Must be 0.
|
|
||||||
*/
|
|
||||||
int struct_version;
|
|
||||||
/** To not receive our own publications, set to 1.
|
|
||||||
* 0 is the original MQTT behaviour - all messages matching the subscription are received.
|
|
||||||
*/
|
|
||||||
unsigned char noLocal;
|
|
||||||
/** To keep the retain flag as on the original publish message, set to 1.
|
|
||||||
* If 0, defaults to the original MQTT behaviour where the retain flag is only set on
|
|
||||||
* publications sent by a broker if in response to a subscribe request.
|
|
||||||
*/
|
|
||||||
unsigned char retainAsPublished;
|
|
||||||
/** 0 - send retained messages at the time of the subscribe (original MQTT behaviour)
|
|
||||||
* 1 - send retained messages on subscribe only if the subscription is new
|
|
||||||
* 2 - do not send retained messages at all
|
|
||||||
*/
|
|
||||||
unsigned char retainHandling;
|
|
||||||
} MQTTSubscribe_options;
|
|
||||||
|
|
||||||
#define MQTTSubscribe_options_initializer { {'M', 'Q', 'S', 'O'}, 0, 0, 0, 0 }
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,49 +0,0 @@
|
||||||
/* $Id: igd_desc_parse.h,v 1.12 2014/11/17 17:19:13 nanard Exp $ */
|
|
||||||
/* Project : miniupnp
|
|
||||||
* http://miniupnp.free.fr/
|
|
||||||
* Author : Thomas Bernard
|
|
||||||
* Copyright (c) 2005-2014 Thomas Bernard
|
|
||||||
* This software is subject to the conditions detailed in the
|
|
||||||
* LICENCE file provided in this distribution.
|
|
||||||
* */
|
|
||||||
#ifndef IGD_DESC_PARSE_H_INCLUDED
|
|
||||||
#define IGD_DESC_PARSE_H_INCLUDED
|
|
||||||
|
|
||||||
/* Structure to store the result of the parsing of UPnP
|
|
||||||
* descriptions of Internet Gateway Devices */
|
|
||||||
#define MINIUPNPC_URL_MAXSIZE (128)
|
|
||||||
struct IGDdatas_service {
|
|
||||||
char controlurl[MINIUPNPC_URL_MAXSIZE];
|
|
||||||
char eventsuburl[MINIUPNPC_URL_MAXSIZE];
|
|
||||||
char scpdurl[MINIUPNPC_URL_MAXSIZE];
|
|
||||||
char servicetype[MINIUPNPC_URL_MAXSIZE];
|
|
||||||
/*char devicetype[MINIUPNPC_URL_MAXSIZE];*/
|
|
||||||
};
|
|
||||||
|
|
||||||
struct IGDdatas {
|
|
||||||
char cureltname[MINIUPNPC_URL_MAXSIZE];
|
|
||||||
char urlbase[MINIUPNPC_URL_MAXSIZE];
|
|
||||||
char presentationurl[MINIUPNPC_URL_MAXSIZE];
|
|
||||||
int level;
|
|
||||||
/*int state;*/
|
|
||||||
/* "urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1" */
|
|
||||||
struct IGDdatas_service CIF;
|
|
||||||
/* "urn:schemas-upnp-org:service:WANIPConnection:1"
|
|
||||||
* "urn:schemas-upnp-org:service:WANPPPConnection:1" */
|
|
||||||
struct IGDdatas_service first;
|
|
||||||
/* if both WANIPConnection and WANPPPConnection are present */
|
|
||||||
struct IGDdatas_service second;
|
|
||||||
/* "urn:schemas-upnp-org:service:WANIPv6FirewallControl:1" */
|
|
||||||
struct IGDdatas_service IPv6FC;
|
|
||||||
/* tmp */
|
|
||||||
struct IGDdatas_service tmp;
|
|
||||||
};
|
|
||||||
|
|
||||||
void IGDstartelt(void *, const char *, int);
|
|
||||||
void IGDendelt(void *, const char *, int);
|
|
||||||
void IGDdata(void *, const char *, int);
|
|
||||||
#ifdef DEBUG
|
|
||||||
void printIGD(struct IGDdatas *);
|
|
||||||
#endif /* DEBUG */
|
|
||||||
|
|
||||||
#endif /* IGD_DESC_PARSE_H_INCLUDED */
|
|
17
mailapi.c
17
mailapi.c
|
@ -871,8 +871,9 @@ void SendBBSDataToPktMap()
|
||||||
{
|
{
|
||||||
char Return[4096];
|
char Return[4096];
|
||||||
char Request[64];
|
char Request[64];
|
||||||
char Params[50000];
|
char * Params;
|
||||||
char * ptr = Params;
|
char * ptr;
|
||||||
|
int paramLen;
|
||||||
struct MsgInfo * Msg;
|
struct MsgInfo * Msg;
|
||||||
|
|
||||||
struct UserInfo * ourBBSRec = LookupCall(BBSName);
|
struct UserInfo * ourBBSRec = LookupCall(BBSName);
|
||||||
|
@ -1067,6 +1068,17 @@ int unroutableCount = 0;
|
||||||
tm->tm_year + 1900, tm->tm_mon+1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec);
|
tm->tm_year + 1900, tm->tm_mon+1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec);
|
||||||
|
|
||||||
|
|
||||||
|
paramLen = strlen(Peers) + strlen(MsgQueues) + strlen(Messages) + strlen(Unroutables);
|
||||||
|
|
||||||
|
Params = malloc(paramLen + 1000);
|
||||||
|
|
||||||
|
if (Params == 0)
|
||||||
|
{
|
||||||
|
free(Messages);
|
||||||
|
free(Unroutables);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ptr = Params;
|
ptr = Params;
|
||||||
|
|
||||||
sprintf(Request, "/api/bbsdata/%s", BBSName);
|
sprintf(Request, "/api/bbsdata/%s", BBSName);
|
||||||
|
@ -1092,4 +1104,5 @@ int unroutableCount = 0;
|
||||||
SendWebRequest("packetnodes.spots.radio", Request, Params, Return);
|
SendWebRequest("packetnodes.spots.radio", Request, Params, Return);
|
||||||
free(Messages);
|
free(Messages);
|
||||||
free(Unroutables);
|
free(Unroutables);
|
||||||
|
free(Params);
|
||||||
}
|
}
|
||||||
|
|
153
miniupnpc.h
153
miniupnpc.h
|
@ -1,153 +0,0 @@
|
||||||
/* $Id: miniupnpc.h,v 1.56 2020/12/20 18:07:35 nanard Exp $ */
|
|
||||||
/* vim: tabstop=4 shiftwidth=4 noexpandtab
|
|
||||||
* Project: miniupnp
|
|
||||||
* http://miniupnp.free.fr/
|
|
||||||
* Author: Thomas Bernard
|
|
||||||
* Copyright (c) 2005-2018 Thomas Bernard
|
|
||||||
* This software is subjects to the conditions detailed
|
|
||||||
* in the LICENCE file provided within this distribution */
|
|
||||||
#ifndef MINIUPNPC_H_INCLUDED
|
|
||||||
#define MINIUPNPC_H_INCLUDED
|
|
||||||
|
|
||||||
#include "miniupnpc_declspec.h"
|
|
||||||
#include "igd_desc_parse.h"
|
|
||||||
#include "upnpdev.h"
|
|
||||||
|
|
||||||
/* error codes : */
|
|
||||||
#define UPNPDISCOVER_SUCCESS (0)
|
|
||||||
#define UPNPDISCOVER_UNKNOWN_ERROR (-1)
|
|
||||||
#define UPNPDISCOVER_SOCKET_ERROR (-101)
|
|
||||||
#define UPNPDISCOVER_MEMORY_ERROR (-102)
|
|
||||||
|
|
||||||
/* versions : */
|
|
||||||
#define MINIUPNPC_VERSION "2.2.2"
|
|
||||||
#define MINIUPNPC_API_VERSION 17
|
|
||||||
|
|
||||||
/* Source port:
|
|
||||||
Using "1" as an alias for 1900 for backwards compatibility
|
|
||||||
(presuming one would have used that for the "sameport" parameter) */
|
|
||||||
#define UPNP_LOCAL_PORT_ANY 0
|
|
||||||
#define UPNP_LOCAL_PORT_SAME 1
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Structures definitions : */
|
|
||||||
struct UPNParg { const char * elt; const char * val; };
|
|
||||||
|
|
||||||
char *
|
|
||||||
simpleUPnPcommand(int, const char *, const char *,
|
|
||||||
const char *, struct UPNParg *,
|
|
||||||
int *);
|
|
||||||
|
|
||||||
/* upnpDiscover()
|
|
||||||
* discover UPnP devices on the network.
|
|
||||||
* The discovered devices are returned as a chained list.
|
|
||||||
* It is up to the caller to free the list with freeUPNPDevlist().
|
|
||||||
* delay (in millisecond) is the maximum time for waiting any device
|
|
||||||
* response.
|
|
||||||
* If available, device list will be obtained from MiniSSDPd.
|
|
||||||
* Default path for minissdpd socket will be used if minissdpdsock argument
|
|
||||||
* is NULL.
|
|
||||||
* If multicastif is not NULL, it will be used instead of the default
|
|
||||||
* multicast interface for sending SSDP discover packets.
|
|
||||||
* If localport is set to UPNP_LOCAL_PORT_SAME(1) SSDP packets will be sent
|
|
||||||
* from the source port 1900 (same as destination port), if set to
|
|
||||||
* UPNP_LOCAL_PORT_ANY(0) system assign a source port, any other value will
|
|
||||||
* be attempted as the source port.
|
|
||||||
* "searchalltypes" parameter is useful when searching several types,
|
|
||||||
* if 0, the discovery will stop with the first type returning results.
|
|
||||||
* TTL should default to 2. */
|
|
||||||
MINIUPNP_LIBSPEC struct UPNPDev *
|
|
||||||
upnpDiscover(int delay, const char * multicastif,
|
|
||||||
const char * minissdpdsock, int localport,
|
|
||||||
int ipv6, unsigned char ttl,
|
|
||||||
int * error);
|
|
||||||
|
|
||||||
MINIUPNP_LIBSPEC struct UPNPDev *
|
|
||||||
upnpDiscoverAll(int delay, const char * multicastif,
|
|
||||||
const char * minissdpdsock, int localport,
|
|
||||||
int ipv6, unsigned char ttl,
|
|
||||||
int * error);
|
|
||||||
|
|
||||||
MINIUPNP_LIBSPEC struct UPNPDev *
|
|
||||||
upnpDiscoverDevice(const char * device, int delay, const char * multicastif,
|
|
||||||
const char * minissdpdsock, int localport,
|
|
||||||
int ipv6, unsigned char ttl,
|
|
||||||
int * error);
|
|
||||||
|
|
||||||
MINIUPNP_LIBSPEC struct UPNPDev *
|
|
||||||
upnpDiscoverDevices(const char * const deviceTypes[],
|
|
||||||
int delay, const char * multicastif,
|
|
||||||
const char * minissdpdsock, int localport,
|
|
||||||
int ipv6, unsigned char ttl,
|
|
||||||
int * error,
|
|
||||||
int searchalltypes);
|
|
||||||
|
|
||||||
/* parserootdesc() :
|
|
||||||
* parse root XML description of a UPnP device and fill the IGDdatas
|
|
||||||
* structure. */
|
|
||||||
MINIUPNP_LIBSPEC void parserootdesc(const char *, int, struct IGDdatas *);
|
|
||||||
|
|
||||||
/* structure used to get fast access to urls
|
|
||||||
* controlURL: controlURL of the WANIPConnection
|
|
||||||
* ipcondescURL: url of the description of the WANIPConnection
|
|
||||||
* controlURL_CIF: controlURL of the WANCommonInterfaceConfig
|
|
||||||
* controlURL_6FC: controlURL of the WANIPv6FirewallControl
|
|
||||||
*/
|
|
||||||
struct UPNPUrls {
|
|
||||||
char * controlURL;
|
|
||||||
char * ipcondescURL;
|
|
||||||
char * controlURL_CIF;
|
|
||||||
char * controlURL_6FC;
|
|
||||||
char * rootdescURL;
|
|
||||||
};
|
|
||||||
|
|
||||||
/* UPNP_GetValidIGD() :
|
|
||||||
* return values :
|
|
||||||
* 0 = NO IGD found
|
|
||||||
* 1 = A valid connected IGD has been found
|
|
||||||
* 2 = A valid IGD has been found but it reported as
|
|
||||||
* not connected
|
|
||||||
* 3 = an UPnP device has been found but was not recognized as an IGD
|
|
||||||
*
|
|
||||||
* In any non zero return case, the urls and data structures
|
|
||||||
* passed as parameters are set. Donc forget to call FreeUPNPUrls(urls) to
|
|
||||||
* free allocated memory.
|
|
||||||
*/
|
|
||||||
MINIUPNP_LIBSPEC int
|
|
||||||
UPNP_GetValidIGD(struct UPNPDev * devlist,
|
|
||||||
struct UPNPUrls * urls,
|
|
||||||
struct IGDdatas * data,
|
|
||||||
char * lanaddr, int lanaddrlen);
|
|
||||||
|
|
||||||
/* UPNP_GetIGDFromUrl()
|
|
||||||
* Used when skipping the discovery process.
|
|
||||||
* When succeding, urls, data, and lanaddr arguments are set.
|
|
||||||
* return value :
|
|
||||||
* 0 - Not ok
|
|
||||||
* 1 - OK */
|
|
||||||
MINIUPNP_LIBSPEC int
|
|
||||||
UPNP_GetIGDFromUrl(const char * rootdescurl,
|
|
||||||
struct UPNPUrls * urls,
|
|
||||||
struct IGDdatas * data,
|
|
||||||
char * lanaddr, int lanaddrlen);
|
|
||||||
|
|
||||||
MINIUPNP_LIBSPEC void
|
|
||||||
GetUPNPUrls(struct UPNPUrls *, struct IGDdatas *,
|
|
||||||
const char *, unsigned int);
|
|
||||||
|
|
||||||
MINIUPNP_LIBSPEC void
|
|
||||||
FreeUPNPUrls(struct UPNPUrls *);
|
|
||||||
|
|
||||||
/* return 0 or 1 */
|
|
||||||
MINIUPNP_LIBSPEC int UPNPIGD_IsConnected(struct UPNPUrls *, struct IGDdatas *);
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
/* $Id: miniupnpctypes.h,v 1.2 2012/09/27 15:42:10 nanard Exp $ */
|
|
||||||
/* Miniupnp project : http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org
|
|
||||||
* Author : Thomas Bernard
|
|
||||||
* Copyright (c) 2011 Thomas Bernard
|
|
||||||
* This software is subject to the conditions detailed in the
|
|
||||||
* LICENCE file provided within this distribution */
|
|
||||||
#ifndef MINIUPNPCTYPES_H_INCLUDED
|
|
||||||
#define MINIUPNPCTYPES_H_INCLUDED
|
|
||||||
|
|
||||||
#if (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L)
|
|
||||||
#define UNSIGNED_INTEGER unsigned long long
|
|
||||||
#define STRTOUI strtoull
|
|
||||||
#else
|
|
||||||
#define UNSIGNED_INTEGER unsigned int
|
|
||||||
#define STRTOUI strtoul
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
257
pcap.h
257
pcap.h
|
@ -1,257 +0,0 @@
|
||||||
/* -*- Mode: c; tab-width: 8; indent-tabs-mode: 1; c-basic-offset: 8; -*- */
|
|
||||||
/*
|
|
||||||
* Copyright (c) 1993, 1994, 1995, 1996, 1997
|
|
||||||
* The Regents of the University of California. All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
|
||||||
* documentation and/or other materials provided with the distribution.
|
|
||||||
* 3. All advertising materials mentioning features or use of this software
|
|
||||||
* must display the following acknowledgement:
|
|
||||||
* This product includes software developed by the Computer Systems
|
|
||||||
* Engineering Group at Lawrence Berkeley Laboratory.
|
|
||||||
* 4. Neither the name of the University nor of the Laboratory may be used
|
|
||||||
* to endorse or promote products derived from this software without
|
|
||||||
* specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
||||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
||||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
||||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
||||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
||||||
* SUCH DAMAGE.
|
|
||||||
*
|
|
||||||
* @(#) $Header: /tcpdump/master/libpcap/pcap.h,v 1.45.2.3 2003/11/21 10:20:50 guy Exp $ (LBL)
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef lib_pcap_h
|
|
||||||
#define lib_pcap_h
|
|
||||||
|
|
||||||
#ifdef WIN32
|
|
||||||
//#include "pcap-stdinc.h"
|
|
||||||
#else /* WIN32 */
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/time.h>
|
|
||||||
#endif /* WIN32 */
|
|
||||||
|
|
||||||
#ifndef PCAP_DONT_INCLUDE_PCAP_BPF_H
|
|
||||||
#include "pcap-bpf.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define PCAP_VERSION_MAJOR 2
|
|
||||||
#define PCAP_VERSION_MINOR 4
|
|
||||||
|
|
||||||
#define PCAP_ERRBUF_SIZE 256
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Compatibility for systems that have a bpf.h that
|
|
||||||
* predates the bpf typedefs for 64-bit support.
|
|
||||||
*/
|
|
||||||
#if BPF_RELEASE - 0 < 199406
|
|
||||||
typedef int bpf_int32;
|
|
||||||
typedef u_int bpf_u_int32;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef struct pcap pcap_t;
|
|
||||||
typedef struct pcap_dumper pcap_dumper_t;
|
|
||||||
typedef struct pcap_if pcap_if_t;
|
|
||||||
typedef struct pcap_addr pcap_addr_t;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The first record in the file contains saved values for some
|
|
||||||
* of the flags used in the printout phases of tcpdump.
|
|
||||||
* Many fields here are 32 bit ints so compilers won't insert unwanted
|
|
||||||
* padding; these files need to be interchangeable across architectures.
|
|
||||||
*
|
|
||||||
* Do not change the layout of this structure, in any way (this includes
|
|
||||||
* changes that only affect the length of fields in this structure).
|
|
||||||
*
|
|
||||||
* Also, do not change the interpretation of any of the members of this
|
|
||||||
* structure, in any way (this includes using values other than
|
|
||||||
* LINKTYPE_ values, as defined in "savefile.c", in the "linktype"
|
|
||||||
* field).
|
|
||||||
*
|
|
||||||
* Instead:
|
|
||||||
*
|
|
||||||
* introduce a new structure for the new format, if the layout
|
|
||||||
* of the structure changed;
|
|
||||||
*
|
|
||||||
* send mail to "tcpdump-workers@tcpdump.org", requesting a new
|
|
||||||
* magic number for your new capture file format, and, when
|
|
||||||
* you get the new magic number, put it in "savefile.c";
|
|
||||||
*
|
|
||||||
* use that magic number for save files with the changed file
|
|
||||||
* header;
|
|
||||||
*
|
|
||||||
* make the code in "savefile.c" capable of reading files with
|
|
||||||
* the old file header as well as files with the new file header
|
|
||||||
* (using the magic number to determine the header format).
|
|
||||||
*
|
|
||||||
* Then supply the changes to "patches@tcpdump.org", so that future
|
|
||||||
* versions of libpcap and programs that use it (such as tcpdump) will
|
|
||||||
* be able to read your new capture file format.
|
|
||||||
*/
|
|
||||||
struct pcap_file_header {
|
|
||||||
bpf_u_int32 magic;
|
|
||||||
u_short version_major;
|
|
||||||
u_short version_minor;
|
|
||||||
bpf_int32 thiszone; /* gmt to local correction */
|
|
||||||
bpf_u_int32 sigfigs; /* accuracy of timestamps */
|
|
||||||
bpf_u_int32 snaplen; /* max length saved portion of each pkt */
|
|
||||||
bpf_u_int32 linktype; /* data link type (LINKTYPE_*) */
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Each packet in the dump file is prepended with this generic header.
|
|
||||||
* This gets around the problem of different headers for different
|
|
||||||
* packet interfaces.
|
|
||||||
*/
|
|
||||||
struct pcap_pkthdr {
|
|
||||||
struct timeval ts; /* time stamp */
|
|
||||||
bpf_u_int32 caplen; /* length of portion present */
|
|
||||||
bpf_u_int32 len; /* length this packet (off wire) */
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* As returned by the pcap_stats()
|
|
||||||
*/
|
|
||||||
struct pcap_stat {
|
|
||||||
u_int ps_recv; /* number of packets received */
|
|
||||||
u_int ps_drop; /* number of packets dropped */
|
|
||||||
u_int ps_ifdrop; /* drops by interface XXX not yet supported */
|
|
||||||
#ifdef WIN32
|
|
||||||
u_int bs_capt; /* number of packets that reach the application */
|
|
||||||
#endif /* WIN32 */
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Item in a list of interfaces.
|
|
||||||
*/
|
|
||||||
struct pcap_if {
|
|
||||||
struct pcap_if *next;
|
|
||||||
char *name; /* name to hand to "pcap_open_live()" */
|
|
||||||
char *description; /* textual description of interface, or NULL */
|
|
||||||
struct pcap_addr *addresses;
|
|
||||||
bpf_u_int32 flags; /* PCAP_IF_ interface flags */
|
|
||||||
};
|
|
||||||
|
|
||||||
#define PCAP_IF_LOOPBACK 0x00000001 /* interface is loopback */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Representation of an interface address.
|
|
||||||
*/
|
|
||||||
struct pcap_addr {
|
|
||||||
struct pcap_addr *next;
|
|
||||||
struct sockaddr *addr; /* address */
|
|
||||||
struct sockaddr *netmask; /* netmask for that address */
|
|
||||||
struct sockaddr *broadaddr; /* broadcast address for that address */
|
|
||||||
struct sockaddr *dstaddr; /* P2P destination address for that address */
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef void (*pcap_handler)(u_char *, const struct pcap_pkthdr *,
|
|
||||||
const u_char *);
|
|
||||||
|
|
||||||
char *pcap_lookupdev(char *);
|
|
||||||
int pcap_lookupnet(const char *, bpf_u_int32 *, bpf_u_int32 *, char *);
|
|
||||||
pcap_t *pcap_open_live(const char *, int, int, int, char *);
|
|
||||||
pcap_t *pcap_open_dead(int, int);
|
|
||||||
pcap_t *pcap_open_offline(const char *, char *);
|
|
||||||
void pcap_close(pcap_t *);
|
|
||||||
int pcap_loop(pcap_t *, int, pcap_handler, u_char *);
|
|
||||||
int pcap_dispatch(pcap_t *, int, pcap_handler, u_char *);
|
|
||||||
const u_char*
|
|
||||||
pcap_next(pcap_t *, struct pcap_pkthdr *);
|
|
||||||
int pcap_next_ex(pcap_t *, struct pcap_pkthdr **, const u_char **);
|
|
||||||
void pcap_breakloop(pcap_t *);
|
|
||||||
int pcap_stats(pcap_t *, struct pcap_stat *);
|
|
||||||
int pcap_setfilter(pcap_t *, struct bpf_program *);
|
|
||||||
int pcap_getnonblock(pcap_t *, char *);
|
|
||||||
int pcap_setnonblock(pcap_t *, int, char *);
|
|
||||||
void pcap_perror(pcap_t *, char *);
|
|
||||||
char *pcap_strerror(int);
|
|
||||||
char *pcap_geterr(pcap_t *);
|
|
||||||
int pcap_compile(pcap_t *, struct bpf_program *, char *, int,
|
|
||||||
bpf_u_int32);
|
|
||||||
int pcap_compile_nopcap(int, int, struct bpf_program *,
|
|
||||||
char *, int, bpf_u_int32);
|
|
||||||
void pcap_freecode(struct bpf_program *);
|
|
||||||
int pcap_datalink(pcap_t *);
|
|
||||||
int pcap_list_datalinks(pcap_t *, int **);
|
|
||||||
int pcap_set_datalink(pcap_t *, int);
|
|
||||||
int pcap_datalink_name_to_val(const char *);
|
|
||||||
const char *pcap_datalink_val_to_name(int);
|
|
||||||
const char *pcap_datalink_val_to_description(int);
|
|
||||||
int pcap_snapshot(pcap_t *);
|
|
||||||
int pcap_is_swapped(pcap_t *);
|
|
||||||
int pcap_major_version(pcap_t *);
|
|
||||||
int pcap_minor_version(pcap_t *);
|
|
||||||
|
|
||||||
/* XXX */
|
|
||||||
FILE *pcap_file(pcap_t *);
|
|
||||||
int pcap_fileno(pcap_t *);
|
|
||||||
|
|
||||||
pcap_dumper_t *pcap_dump_open(pcap_t *, const char *);
|
|
||||||
int pcap_dump_flush(pcap_dumper_t *);
|
|
||||||
void pcap_dump_close(pcap_dumper_t *);
|
|
||||||
void pcap_dump(u_char *, const struct pcap_pkthdr *, const u_char *);
|
|
||||||
FILE *pcap_dump_file(pcap_dumper_t *);
|
|
||||||
|
|
||||||
int pcap_findalldevs(pcap_if_t **, char *);
|
|
||||||
void pcap_freealldevs(pcap_if_t *);
|
|
||||||
|
|
||||||
const char *pcap_lib_version(void);
|
|
||||||
|
|
||||||
/* XXX this guy lives in the bpf tree */
|
|
||||||
u_int bpf_filter(struct bpf_insn *, u_char *, u_int, u_int);
|
|
||||||
int bpf_validate(struct bpf_insn *f, int len);
|
|
||||||
char *bpf_image(struct bpf_insn *, int);
|
|
||||||
void bpf_dump(struct bpf_program *, int);
|
|
||||||
|
|
||||||
#ifdef WIN32
|
|
||||||
/*
|
|
||||||
* Win32 definitions
|
|
||||||
*/
|
|
||||||
|
|
||||||
int pcap_setbuff(pcap_t *p, int dim);
|
|
||||||
int pcap_setmode(pcap_t *p, int mode);
|
|
||||||
int pcap_sendpacket(pcap_t *p, u_char *buf, int size);
|
|
||||||
int pcap_setmintocopy(pcap_t *p, int size);
|
|
||||||
|
|
||||||
#ifdef WPCAP
|
|
||||||
/* Include file with the wpcap-specific extensions */
|
|
||||||
#include <Win32-Extensions.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define MODE_CAPT 0
|
|
||||||
#define MODE_STAT 1
|
|
||||||
|
|
||||||
#else
|
|
||||||
/*
|
|
||||||
* UN*X definitions
|
|
||||||
*/
|
|
||||||
|
|
||||||
int pcap_get_selectable_fd(pcap_t *);
|
|
||||||
|
|
||||||
#endif /* WIN32 */
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
348
upnpcommands.h
348
upnpcommands.h
|
@ -1,348 +0,0 @@
|
||||||
/* $Id: upnpcommands.h,v 1.33 2019/02/10 12:29:25 nanard Exp $ */
|
|
||||||
/* Miniupnp project : http://miniupnp.free.fr/
|
|
||||||
* Author : Thomas Bernard
|
|
||||||
* Copyright (c) 2005-2018 Thomas Bernard
|
|
||||||
* This software is subject to the conditions detailed in the
|
|
||||||
* LICENCE file provided within this distribution */
|
|
||||||
#ifndef UPNPCOMMANDS_H_INCLUDED
|
|
||||||
#define UPNPCOMMANDS_H_INCLUDED
|
|
||||||
|
|
||||||
#include "miniupnpc_declspec.h"
|
|
||||||
#include "miniupnpctypes.h"
|
|
||||||
|
|
||||||
/* MiniUPnPc return codes : */
|
|
||||||
#define UPNPCOMMAND_SUCCESS (0)
|
|
||||||
#define UPNPCOMMAND_UNKNOWN_ERROR (-1)
|
|
||||||
#define UPNPCOMMAND_INVALID_ARGS (-2)
|
|
||||||
#define UPNPCOMMAND_HTTP_ERROR (-3)
|
|
||||||
#define UPNPCOMMAND_INVALID_RESPONSE (-4)
|
|
||||||
#define UPNPCOMMAND_MEM_ALLOC_ERROR (-5)
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct PortMappingParserData;
|
|
||||||
|
|
||||||
MINIUPNP_LIBSPEC UNSIGNED_INTEGER
|
|
||||||
UPNP_GetTotalBytesSent(const char * controlURL,
|
|
||||||
const char * servicetype);
|
|
||||||
|
|
||||||
MINIUPNP_LIBSPEC UNSIGNED_INTEGER
|
|
||||||
UPNP_GetTotalBytesReceived(const char * controlURL,
|
|
||||||
const char * servicetype);
|
|
||||||
|
|
||||||
MINIUPNP_LIBSPEC UNSIGNED_INTEGER
|
|
||||||
UPNP_GetTotalPacketsSent(const char * controlURL,
|
|
||||||
const char * servicetype);
|
|
||||||
|
|
||||||
MINIUPNP_LIBSPEC UNSIGNED_INTEGER
|
|
||||||
UPNP_GetTotalPacketsReceived(const char * controlURL,
|
|
||||||
const char * servicetype);
|
|
||||||
|
|
||||||
/* UPNP_GetStatusInfo()
|
|
||||||
* status and lastconnerror are 64 byte buffers
|
|
||||||
* Return values :
|
|
||||||
* UPNPCOMMAND_SUCCESS, UPNPCOMMAND_INVALID_ARGS, UPNPCOMMAND_UNKNOWN_ERROR
|
|
||||||
* or a UPnP Error code */
|
|
||||||
MINIUPNP_LIBSPEC int
|
|
||||||
UPNP_GetStatusInfo(const char * controlURL,
|
|
||||||
const char * servicetype,
|
|
||||||
char * status,
|
|
||||||
unsigned int * uptime,
|
|
||||||
char * lastconnerror);
|
|
||||||
|
|
||||||
/* UPNP_GetConnectionTypeInfo()
|
|
||||||
* argument connectionType is a 64 character buffer
|
|
||||||
* Return Values :
|
|
||||||
* UPNPCOMMAND_SUCCESS, UPNPCOMMAND_INVALID_ARGS, UPNPCOMMAND_UNKNOWN_ERROR
|
|
||||||
* or a UPnP Error code */
|
|
||||||
MINIUPNP_LIBSPEC int
|
|
||||||
UPNP_GetConnectionTypeInfo(const char * controlURL,
|
|
||||||
const char * servicetype,
|
|
||||||
char * connectionType);
|
|
||||||
|
|
||||||
/* UPNP_GetExternalIPAddress() call the corresponding UPNP method.
|
|
||||||
* if the third arg is not null the value is copied to it.
|
|
||||||
* at least 16 bytes must be available
|
|
||||||
*
|
|
||||||
* Return values :
|
|
||||||
* 0 : SUCCESS
|
|
||||||
* NON ZERO : ERROR Either an UPnP error code or an unknown error.
|
|
||||||
*
|
|
||||||
* possible UPnP Errors :
|
|
||||||
* 402 Invalid Args - See UPnP Device Architecture section on Control.
|
|
||||||
* 501 Action Failed - See UPnP Device Architecture section on Control. */
|
|
||||||
MINIUPNP_LIBSPEC int
|
|
||||||
UPNP_GetExternalIPAddress(const char * controlURL,
|
|
||||||
const char * servicetype,
|
|
||||||
char * extIpAdd);
|
|
||||||
|
|
||||||
/* UPNP_GetLinkLayerMaxBitRates()
|
|
||||||
* call WANCommonInterfaceConfig:1#GetCommonLinkProperties
|
|
||||||
*
|
|
||||||
* return values :
|
|
||||||
* UPNPCOMMAND_SUCCESS, UPNPCOMMAND_INVALID_ARGS, UPNPCOMMAND_UNKNOWN_ERROR
|
|
||||||
* or a UPnP Error Code. */
|
|
||||||
MINIUPNP_LIBSPEC int
|
|
||||||
UPNP_GetLinkLayerMaxBitRates(const char* controlURL,
|
|
||||||
const char* servicetype,
|
|
||||||
unsigned int * bitrateDown,
|
|
||||||
unsigned int * bitrateUp);
|
|
||||||
|
|
||||||
/* UPNP_AddPortMapping()
|
|
||||||
* if desc is NULL, it will be defaulted to "libminiupnpc"
|
|
||||||
* remoteHost is usually NULL because IGD don't support it.
|
|
||||||
*
|
|
||||||
* Return values :
|
|
||||||
* 0 : SUCCESS
|
|
||||||
* NON ZERO : ERROR. Either an UPnP error code or an unknown error.
|
|
||||||
*
|
|
||||||
* List of possible UPnP errors for AddPortMapping :
|
|
||||||
* errorCode errorDescription (short) - Description (long)
|
|
||||||
* 402 Invalid Args - See UPnP Device Architecture section on Control.
|
|
||||||
* 501 Action Failed - See UPnP Device Architecture section on Control.
|
|
||||||
* 606 Action not authorized - The action requested REQUIRES authorization and
|
|
||||||
* the sender was not authorized.
|
|
||||||
* 715 WildCardNotPermittedInSrcIP - The source IP address cannot be
|
|
||||||
* wild-carded
|
|
||||||
* 716 WildCardNotPermittedInExtPort - The external port cannot be wild-carded
|
|
||||||
* 718 ConflictInMappingEntry - The port mapping entry specified conflicts
|
|
||||||
* with a mapping assigned previously to another client
|
|
||||||
* 724 SamePortValuesRequired - Internal and External port values
|
|
||||||
* must be the same
|
|
||||||
* 725 OnlyPermanentLeasesSupported - The NAT implementation only supports
|
|
||||||
* permanent lease times on port mappings
|
|
||||||
* 726 RemoteHostOnlySupportsWildcard - RemoteHost must be a wildcard
|
|
||||||
* and cannot be a specific IP address or DNS name
|
|
||||||
* 727 ExternalPortOnlySupportsWildcard - ExternalPort must be a wildcard and
|
|
||||||
* cannot be a specific port value
|
|
||||||
* 728 NoPortMapsAvailable - There are not enough free ports available to
|
|
||||||
* complete port mapping.
|
|
||||||
* 729 ConflictWithOtherMechanisms - Attempted port mapping is not allowed
|
|
||||||
* due to conflict with other mechanisms.
|
|
||||||
* 732 WildCardNotPermittedInIntPort - The internal port cannot be wild-carded
|
|
||||||
*/
|
|
||||||
MINIUPNP_LIBSPEC int
|
|
||||||
UPNP_AddPortMapping(const char * controlURL, const char * servicetype,
|
|
||||||
const char * extPort,
|
|
||||||
const char * inPort,
|
|
||||||
const char * inClient,
|
|
||||||
const char * desc,
|
|
||||||
const char * proto,
|
|
||||||
const char * remoteHost,
|
|
||||||
const char * leaseDuration);
|
|
||||||
|
|
||||||
/* UPNP_AddAnyPortMapping()
|
|
||||||
* if desc is NULL, it will be defaulted to "libminiupnpc"
|
|
||||||
* remoteHost is usually NULL because IGD don't support it.
|
|
||||||
*
|
|
||||||
* Return values :
|
|
||||||
* 0 : SUCCESS
|
|
||||||
* NON ZERO : ERROR. Either an UPnP error code or an unknown error.
|
|
||||||
*
|
|
||||||
* List of possible UPnP errors for AddPortMapping :
|
|
||||||
* errorCode errorDescription (short) - Description (long)
|
|
||||||
* 402 Invalid Args - See UPnP Device Architecture section on Control.
|
|
||||||
* 501 Action Failed - See UPnP Device Architecture section on Control.
|
|
||||||
* 606 Action not authorized - The action requested REQUIRES authorization and
|
|
||||||
* the sender was not authorized.
|
|
||||||
* 715 WildCardNotPermittedInSrcIP - The source IP address cannot be
|
|
||||||
* wild-carded
|
|
||||||
* 716 WildCardNotPermittedInExtPort - The external port cannot be wild-carded
|
|
||||||
* 728 NoPortMapsAvailable - There are not enough free ports available to
|
|
||||||
* complete port mapping.
|
|
||||||
* 729 ConflictWithOtherMechanisms - Attempted port mapping is not allowed
|
|
||||||
* due to conflict with other mechanisms.
|
|
||||||
* 732 WildCardNotPermittedInIntPort - The internal port cannot be wild-carded
|
|
||||||
*/
|
|
||||||
MINIUPNP_LIBSPEC int
|
|
||||||
UPNP_AddAnyPortMapping(const char * controlURL, const char * servicetype,
|
|
||||||
const char * extPort,
|
|
||||||
const char * inPort,
|
|
||||||
const char * inClient,
|
|
||||||
const char * desc,
|
|
||||||
const char * proto,
|
|
||||||
const char * remoteHost,
|
|
||||||
const char * leaseDuration,
|
|
||||||
char * reservedPort);
|
|
||||||
|
|
||||||
/* UPNP_DeletePortMapping()
|
|
||||||
* Use same argument values as what was used for AddPortMapping().
|
|
||||||
* remoteHost is usually NULL because IGD don't support it.
|
|
||||||
* Return Values :
|
|
||||||
* 0 : SUCCESS
|
|
||||||
* NON ZERO : error. Either an UPnP error code or an undefined error.
|
|
||||||
*
|
|
||||||
* List of possible UPnP errors for DeletePortMapping :
|
|
||||||
* 402 Invalid Args - See UPnP Device Architecture section on Control.
|
|
||||||
* 606 Action not authorized - The action requested REQUIRES authorization
|
|
||||||
* and the sender was not authorized.
|
|
||||||
* 714 NoSuchEntryInArray - The specified value does not exist in the array */
|
|
||||||
MINIUPNP_LIBSPEC int
|
|
||||||
UPNP_DeletePortMapping(const char * controlURL, const char * servicetype,
|
|
||||||
const char * extPort, const char * proto,
|
|
||||||
const char * remoteHost);
|
|
||||||
|
|
||||||
/* UPNP_DeletePortRangeMapping()
|
|
||||||
* Use same argument values as what was used for AddPortMapping().
|
|
||||||
* remoteHost is usually NULL because IGD don't support it.
|
|
||||||
* Return Values :
|
|
||||||
* 0 : SUCCESS
|
|
||||||
* NON ZERO : error. Either an UPnP error code or an undefined error.
|
|
||||||
*
|
|
||||||
* List of possible UPnP errors for DeletePortMapping :
|
|
||||||
* 606 Action not authorized - The action requested REQUIRES authorization
|
|
||||||
* and the sender was not authorized.
|
|
||||||
* 730 PortMappingNotFound - This error message is returned if no port
|
|
||||||
* mapping is found in the specified range.
|
|
||||||
* 733 InconsistentParameters - NewStartPort and NewEndPort values are not consistent. */
|
|
||||||
MINIUPNP_LIBSPEC int
|
|
||||||
UPNP_DeletePortMappingRange(const char * controlURL, const char * servicetype,
|
|
||||||
const char * extPortStart, const char * extPortEnd,
|
|
||||||
const char * proto,
|
|
||||||
const char * manage);
|
|
||||||
|
|
||||||
/* UPNP_GetPortMappingNumberOfEntries()
|
|
||||||
* not supported by all routers */
|
|
||||||
MINIUPNP_LIBSPEC int
|
|
||||||
UPNP_GetPortMappingNumberOfEntries(const char * controlURL,
|
|
||||||
const char * servicetype,
|
|
||||||
unsigned int * numEntries);
|
|
||||||
|
|
||||||
/* UPNP_GetSpecificPortMappingEntry()
|
|
||||||
* retrieves an existing port mapping
|
|
||||||
* params :
|
|
||||||
* in extPort
|
|
||||||
* in proto
|
|
||||||
* in remoteHost
|
|
||||||
* out intClient (16 bytes)
|
|
||||||
* out intPort (6 bytes)
|
|
||||||
* out desc (80 bytes)
|
|
||||||
* out enabled (4 bytes)
|
|
||||||
* out leaseDuration (16 bytes)
|
|
||||||
*
|
|
||||||
* return value :
|
|
||||||
* UPNPCOMMAND_SUCCESS, UPNPCOMMAND_INVALID_ARGS, UPNPCOMMAND_UNKNOWN_ERROR
|
|
||||||
* or a UPnP Error Code.
|
|
||||||
*
|
|
||||||
* List of possible UPnP errors for _GetSpecificPortMappingEntry :
|
|
||||||
* 402 Invalid Args - See UPnP Device Architecture section on Control.
|
|
||||||
* 501 Action Failed - See UPnP Device Architecture section on Control.
|
|
||||||
* 606 Action not authorized - The action requested REQUIRES authorization
|
|
||||||
* and the sender was not authorized.
|
|
||||||
* 714 NoSuchEntryInArray - The specified value does not exist in the array.
|
|
||||||
*/
|
|
||||||
MINIUPNP_LIBSPEC int
|
|
||||||
UPNP_GetSpecificPortMappingEntry(const char * controlURL,
|
|
||||||
const char * servicetype,
|
|
||||||
const char * extPort,
|
|
||||||
const char * proto,
|
|
||||||
const char * remoteHost,
|
|
||||||
char * intClient,
|
|
||||||
char * intPort,
|
|
||||||
char * desc,
|
|
||||||
char * enabled,
|
|
||||||
char * leaseDuration);
|
|
||||||
|
|
||||||
/* UPNP_GetGenericPortMappingEntry()
|
|
||||||
* params :
|
|
||||||
* in index
|
|
||||||
* out extPort (6 bytes)
|
|
||||||
* out intClient (16 bytes)
|
|
||||||
* out intPort (6 bytes)
|
|
||||||
* out protocol (4 bytes)
|
|
||||||
* out desc (80 bytes)
|
|
||||||
* out enabled (4 bytes)
|
|
||||||
* out rHost (64 bytes)
|
|
||||||
* out duration (16 bytes)
|
|
||||||
*
|
|
||||||
* return value :
|
|
||||||
* UPNPCOMMAND_SUCCESS, UPNPCOMMAND_INVALID_ARGS, UPNPCOMMAND_UNKNOWN_ERROR
|
|
||||||
* or a UPnP Error Code.
|
|
||||||
*
|
|
||||||
* Possible UPNP Error codes :
|
|
||||||
* 402 Invalid Args - See UPnP Device Architecture section on Control.
|
|
||||||
* 606 Action not authorized - The action requested REQUIRES authorization
|
|
||||||
* and the sender was not authorized.
|
|
||||||
* 713 SpecifiedArrayIndexInvalid - The specified array index is out of bounds
|
|
||||||
*/
|
|
||||||
MINIUPNP_LIBSPEC int
|
|
||||||
UPNP_GetGenericPortMappingEntry(const char * controlURL,
|
|
||||||
const char * servicetype,
|
|
||||||
const char * index,
|
|
||||||
char * extPort,
|
|
||||||
char * intClient,
|
|
||||||
char * intPort,
|
|
||||||
char * protocol,
|
|
||||||
char * desc,
|
|
||||||
char * enabled,
|
|
||||||
char * rHost,
|
|
||||||
char * duration);
|
|
||||||
|
|
||||||
/* UPNP_GetListOfPortMappings() Available in IGD v2
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* Possible UPNP Error codes :
|
|
||||||
* 606 Action not Authorized
|
|
||||||
* 730 PortMappingNotFound - no port mapping is found in the specified range.
|
|
||||||
* 733 InconsistantParameters - NewStartPort and NewEndPort values are not
|
|
||||||
* consistent.
|
|
||||||
*/
|
|
||||||
MINIUPNP_LIBSPEC int
|
|
||||||
UPNP_GetListOfPortMappings(const char * controlURL,
|
|
||||||
const char * servicetype,
|
|
||||||
const char * startPort,
|
|
||||||
const char * endPort,
|
|
||||||
const char * protocol,
|
|
||||||
const char * numberOfPorts,
|
|
||||||
struct PortMappingParserData * data);
|
|
||||||
|
|
||||||
/* IGD:2, functions for service WANIPv6FirewallControl:1 */
|
|
||||||
MINIUPNP_LIBSPEC int
|
|
||||||
UPNP_GetFirewallStatus(const char * controlURL,
|
|
||||||
const char * servicetype,
|
|
||||||
int * firewallEnabled,
|
|
||||||
int * inboundPinholeAllowed);
|
|
||||||
|
|
||||||
MINIUPNP_LIBSPEC int
|
|
||||||
UPNP_GetOutboundPinholeTimeout(const char * controlURL, const char * servicetype,
|
|
||||||
const char * remoteHost,
|
|
||||||
const char * remotePort,
|
|
||||||
const char * intClient,
|
|
||||||
const char * intPort,
|
|
||||||
const char * proto,
|
|
||||||
int * opTimeout);
|
|
||||||
|
|
||||||
MINIUPNP_LIBSPEC int
|
|
||||||
UPNP_AddPinhole(const char * controlURL, const char * servicetype,
|
|
||||||
const char * remoteHost,
|
|
||||||
const char * remotePort,
|
|
||||||
const char * intClient,
|
|
||||||
const char * intPort,
|
|
||||||
const char * proto,
|
|
||||||
const char * leaseTime,
|
|
||||||
char * uniqueID);
|
|
||||||
|
|
||||||
MINIUPNP_LIBSPEC int
|
|
||||||
UPNP_UpdatePinhole(const char * controlURL, const char * servicetype,
|
|
||||||
const char * uniqueID,
|
|
||||||
const char * leaseTime);
|
|
||||||
|
|
||||||
MINIUPNP_LIBSPEC int
|
|
||||||
UPNP_DeletePinhole(const char * controlURL, const char * servicetype, const char * uniqueID);
|
|
||||||
|
|
||||||
MINIUPNP_LIBSPEC int
|
|
||||||
UPNP_CheckPinholeWorking(const char * controlURL, const char * servicetype,
|
|
||||||
const char * uniqueID, int * isWorking);
|
|
||||||
|
|
||||||
MINIUPNP_LIBSPEC int
|
|
||||||
UPNP_GetPinholePackets(const char * controlURL, const char * servicetype,
|
|
||||||
const char * uniqueID, int * packets);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
44
upnpdev.h
44
upnpdev.h
|
@ -1,44 +0,0 @@
|
||||||
/* $Id: upnpdev.h,v 1.3 2020/05/29 15:57:42 nanard Exp $ */
|
|
||||||
/* Project : miniupnp
|
|
||||||
* Web : http://miniupnp.free.fr/ or https://miniupnp.tuxfamily.org/
|
|
||||||
* Author : Thomas BERNARD
|
|
||||||
* copyright (c) 2005-2020 Thomas Bernard
|
|
||||||
* This software is subjet to the conditions detailed in the
|
|
||||||
* provided LICENSE file. */
|
|
||||||
#ifndef UPNPDEV_H_INCLUDED
|
|
||||||
#define UPNPDEV_H_INCLUDED
|
|
||||||
|
|
||||||
#include "miniupnpc_declspec.h"
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct UPNPDev {
|
|
||||||
struct UPNPDev * pNext;
|
|
||||||
char * descURL;
|
|
||||||
char * st;
|
|
||||||
char * usn;
|
|
||||||
unsigned int scope_id;
|
|
||||||
#if defined(__STDC_VERSION) && __STDC_VERSION__ >= 199901L
|
|
||||||
/* C99 flexible array member */
|
|
||||||
char buffer[];
|
|
||||||
#elif defined(__GNUC__)
|
|
||||||
char buffer[0];
|
|
||||||
#else
|
|
||||||
/* Fallback to a hack */
|
|
||||||
char buffer[1];
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
|
|
||||||
/* freeUPNPDevlist()
|
|
||||||
* free list returned by upnpDiscover() */
|
|
||||||
MINIUPNP_LIBSPEC void freeUPNPDevlist(struct UPNPDev * devlist);
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* UPNPDEV_H_INCLUDED */
|
|
26
upnperrors.h
26
upnperrors.h
|
@ -1,26 +0,0 @@
|
||||||
/* $Id: upnperrors.h,v 1.6 2015/07/21 13:16:55 nanard Exp $ */
|
|
||||||
/* (c) 2007-2015 Thomas Bernard
|
|
||||||
* All rights reserved.
|
|
||||||
* MiniUPnP Project.
|
|
||||||
* http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
|
|
||||||
* This software is subjet to the conditions detailed in the
|
|
||||||
* provided LICENCE file. */
|
|
||||||
#ifndef UPNPERRORS_H_INCLUDED
|
|
||||||
#define UPNPERRORS_H_INCLUDED
|
|
||||||
|
|
||||||
#include "miniupnpc_declspec.h"
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* strupnperror()
|
|
||||||
* Return a string description of the UPnP error code
|
|
||||||
* or NULL for undefinded errors */
|
|
||||||
MINIUPNP_LIBSPEC const char * strupnperror(int err);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
333
zconf.h
333
zconf.h
|
@ -1,333 +0,0 @@
|
||||||
/* zconf.h -- configuration of the zlib compression library
|
|
||||||
* Copyright (C) 1995-2005 Jean-loup Gailly.
|
|
||||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* @(#) $Id$ */
|
|
||||||
|
|
||||||
#ifndef ZCONF_H
|
|
||||||
#define ZCONF_H
|
|
||||||
|
|
||||||
/*
|
|
||||||
* If you *really* need a unique prefix for all types and library functions,
|
|
||||||
* compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
|
|
||||||
*/
|
|
||||||
#ifdef Z_PREFIX
|
|
||||||
# define deflateInit_ z_deflateInit_
|
|
||||||
# define deflate z_deflate
|
|
||||||
# define deflateEnd z_deflateEnd
|
|
||||||
# define inflateInit_ z_inflateInit_
|
|
||||||
# define inflate z_inflate
|
|
||||||
# define inflateEnd z_inflateEnd
|
|
||||||
# define deflateInit2_ z_deflateInit2_
|
|
||||||
# define deflateSetDictionary z_deflateSetDictionary
|
|
||||||
# define deflateCopy z_deflateCopy
|
|
||||||
# define deflateReset z_deflateReset
|
|
||||||
# define deflateParams z_deflateParams
|
|
||||||
# define deflateBound z_deflateBound
|
|
||||||
# define deflatePrime z_deflatePrime
|
|
||||||
# define inflateInit2_ z_inflateInit2_
|
|
||||||
# define inflateSetDictionary z_inflateSetDictionary
|
|
||||||
# define inflateSync z_inflateSync
|
|
||||||
# define inflateSyncPoint z_inflateSyncPoint
|
|
||||||
# define inflateCopy z_inflateCopy
|
|
||||||
# define inflateReset z_inflateReset
|
|
||||||
# define inflateBack z_inflateBack
|
|
||||||
# define inflateBackEnd z_inflateBackEnd
|
|
||||||
# define compress z_compress
|
|
||||||
# define compress2 z_compress2
|
|
||||||
# define compressBound z_compressBound
|
|
||||||
# define uncompress z_uncompress
|
|
||||||
# define adler32 z_adler32
|
|
||||||
# define crc32 z_crc32
|
|
||||||
# define get_crc_table z_get_crc_table
|
|
||||||
# define zError z_zError
|
|
||||||
|
|
||||||
# define alloc_func z_alloc_func
|
|
||||||
# define free_func z_free_func
|
|
||||||
# define in_func z_in_func
|
|
||||||
# define out_func z_out_func
|
|
||||||
# define Byte z_Byte
|
|
||||||
# define uInt z_uInt
|
|
||||||
# define uLong z_uLong
|
|
||||||
# define Bytef z_Bytef
|
|
||||||
# define charf z_charf
|
|
||||||
# define intf z_intf
|
|
||||||
# define uIntf z_uIntf
|
|
||||||
# define uLongf z_uLongf
|
|
||||||
# define voidpf z_voidpf
|
|
||||||
# define voidp z_voidp
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__MSDOS__) && !defined(MSDOS)
|
|
||||||
# define MSDOS
|
|
||||||
#endif
|
|
||||||
#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2)
|
|
||||||
# define OS2
|
|
||||||
#endif
|
|
||||||
#if defined(_WINDOWS) && !defined(WINDOWS)
|
|
||||||
# define WINDOWS
|
|
||||||
#endif
|
|
||||||
#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__)
|
|
||||||
# ifndef WIN32
|
|
||||||
# define WIN32
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32)
|
|
||||||
# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__)
|
|
||||||
# ifndef SYS16BIT
|
|
||||||
# define SYS16BIT
|
|
||||||
# endif
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Compile with -DMAXSEG_64K if the alloc function cannot allocate more
|
|
||||||
* than 64k bytes at a time (needed on systems with 16-bit int).
|
|
||||||
*/
|
|
||||||
#ifdef SYS16BIT
|
|
||||||
# define MAXSEG_64K
|
|
||||||
#endif
|
|
||||||
#ifdef MSDOS
|
|
||||||
# define UNALIGNED_OK
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __STDC_VERSION__
|
|
||||||
# ifndef STDC
|
|
||||||
# define STDC
|
|
||||||
# endif
|
|
||||||
# if __STDC_VERSION__ >= 199901L
|
|
||||||
# ifndef STDC99
|
|
||||||
# define STDC99
|
|
||||||
# endif
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus))
|
|
||||||
# define STDC
|
|
||||||
#endif
|
|
||||||
#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__))
|
|
||||||
# define STDC
|
|
||||||
#endif
|
|
||||||
#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32))
|
|
||||||
# define STDC
|
|
||||||
#endif
|
|
||||||
#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__))
|
|
||||||
# define STDC
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */
|
|
||||||
# define STDC
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef STDC
|
|
||||||
# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */
|
|
||||||
# define const /* note: need a more gentle solution here */
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Some Mac compilers merge all .h files incorrectly: */
|
|
||||||
#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__)
|
|
||||||
# define NO_DUMMY_DECL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Maximum value for memLevel in deflateInit2 */
|
|
||||||
#ifndef MAX_MEM_LEVEL
|
|
||||||
# ifdef MAXSEG_64K
|
|
||||||
# define MAX_MEM_LEVEL 8
|
|
||||||
# else
|
|
||||||
# define MAX_MEM_LEVEL 9
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Maximum value for windowBits in deflateInit2 and inflateInit2.
|
|
||||||
* WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files
|
|
||||||
* created by gzip. (Files created by minigzip can still be extracted by
|
|
||||||
* gzip.)
|
|
||||||
*/
|
|
||||||
#ifndef MAX_WBITS
|
|
||||||
# define MAX_WBITS 15 /* 32K LZ77 window */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* The memory requirements for deflate are (in bytes):
|
|
||||||
(1 << (windowBits+2)) + (1 << (memLevel+9))
|
|
||||||
that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values)
|
|
||||||
plus a few kilobytes for small objects. For example, if you want to reduce
|
|
||||||
the default memory requirements from 256K to 128K, compile with
|
|
||||||
make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
|
|
||||||
Of course this will generally degrade compression (there's no free lunch).
|
|
||||||
|
|
||||||
The memory requirements for inflate are (in bytes) 1 << windowBits
|
|
||||||
that is, 32K for windowBits=15 (default value) plus a few kilobytes
|
|
||||||
for small objects.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Type declarations */
|
|
||||||
|
|
||||||
#ifndef OF /* function prototypes */
|
|
||||||
# ifdef STDC
|
|
||||||
# define OF(args) args
|
|
||||||
# else
|
|
||||||
# define OF(args) ()
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* The following definitions for FAR are needed only for MSDOS mixed
|
|
||||||
* model programming (small or medium model with some far allocations).
|
|
||||||
* This was tested only with MSC; for other MSDOS compilers you may have
|
|
||||||
* to define NO_MEMCPY in zutil.h. If you don't need the mixed model,
|
|
||||||
* just define FAR to be empty.
|
|
||||||
*/
|
|
||||||
#ifdef SYS16BIT
|
|
||||||
# if defined(M_I86SM) || defined(M_I86MM)
|
|
||||||
/* MSC small or medium model */
|
|
||||||
# define SMALL_MEDIUM
|
|
||||||
# ifdef _MSC_VER
|
|
||||||
# define FAR _far
|
|
||||||
# else
|
|
||||||
# define FAR far
|
|
||||||
# endif
|
|
||||||
# endif
|
|
||||||
# if (defined(__SMALL__) || defined(__MEDIUM__))
|
|
||||||
/* Turbo C small or medium model */
|
|
||||||
# define SMALL_MEDIUM
|
|
||||||
# ifdef __BORLANDC__
|
|
||||||
# define FAR _far
|
|
||||||
# else
|
|
||||||
# define FAR far
|
|
||||||
# endif
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(WINDOWS) || defined(WIN32)
|
|
||||||
/* If building or using zlib as a DLL, define ZLIB_DLL.
|
|
||||||
* This is not mandatory, but it offers a little performance increase.
|
|
||||||
*/
|
|
||||||
# ifdef ZLIB_DLL
|
|
||||||
# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500))
|
|
||||||
# ifdef ZLIB_INTERNAL
|
|
||||||
# define ZEXTERN extern __declspec(dllexport)
|
|
||||||
# else
|
|
||||||
# define ZEXTERN extern __declspec(dllimport)
|
|
||||||
# endif
|
|
||||||
# endif
|
|
||||||
# endif /* ZLIB_DLL */
|
|
||||||
/* If building or using zlib with the WINAPI/WINAPIV calling convention,
|
|
||||||
* define ZLIB_WINAPI.
|
|
||||||
* Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI.
|
|
||||||
*/
|
|
||||||
# ifdef ZLIB_WINAPI
|
|
||||||
# ifdef FAR
|
|
||||||
# undef FAR
|
|
||||||
# endif
|
|
||||||
# include <windows.h>
|
|
||||||
/* No need for _export, use ZLIB.DEF instead. */
|
|
||||||
/* For complete Windows compatibility, use WINAPI, not __stdcall. */
|
|
||||||
# define ZEXPORT WINAPI
|
|
||||||
# ifdef WIN32
|
|
||||||
# define ZEXPORTVA WINAPIV
|
|
||||||
# else
|
|
||||||
# define ZEXPORTVA FAR CDECL
|
|
||||||
# endif
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#if defined (__BEOS__)
|
|
||||||
# ifdef ZLIB_DLL
|
|
||||||
# ifdef ZLIB_INTERNAL
|
|
||||||
# define ZEXPORT __declspec(dllexport)
|
|
||||||
# define ZEXPORTVA __declspec(dllexport)
|
|
||||||
# else
|
|
||||||
# define ZEXPORT __declspec(dllimport)
|
|
||||||
# define ZEXPORTVA __declspec(dllimport)
|
|
||||||
# endif
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef ZEXTERN
|
|
||||||
# define ZEXTERN extern
|
|
||||||
#endif
|
|
||||||
#ifndef ZEXPORT
|
|
||||||
# define ZEXPORT
|
|
||||||
#endif
|
|
||||||
#ifndef ZEXPORTVA
|
|
||||||
# define ZEXPORTVA
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef FAR
|
|
||||||
# define FAR
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if !defined(__MACTYPES__)
|
|
||||||
typedef unsigned char Byte; /* 8 bits */
|
|
||||||
#endif
|
|
||||||
typedef unsigned int uInt; /* 16 bits or more */
|
|
||||||
typedef unsigned long uLong; /* 32 bits or more */
|
|
||||||
|
|
||||||
#ifdef SMALL_MEDIUM
|
|
||||||
/* Borland C/C++ and some old MSC versions ignore FAR inside typedef */
|
|
||||||
# define Bytef Byte FAR
|
|
||||||
#else
|
|
||||||
typedef Byte FAR Bytef;
|
|
||||||
#endif
|
|
||||||
typedef char FAR charf;
|
|
||||||
typedef int FAR intf;
|
|
||||||
typedef uInt FAR uIntf;
|
|
||||||
typedef uLong FAR uLongf;
|
|
||||||
|
|
||||||
#ifdef STDC
|
|
||||||
typedef void const *voidpc;
|
|
||||||
typedef void FAR *voidpf;
|
|
||||||
typedef void *voidp;
|
|
||||||
#else
|
|
||||||
typedef Byte const *voidpc;
|
|
||||||
typedef Byte FAR *voidpf;
|
|
||||||
typedef Byte *voidp;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if 0 /* HAVE_UNISTD_H -- this line is updated by ./configure */
|
|
||||||
# include <sys/types.h> /* for off_t */
|
|
||||||
# include <unistd.h> /* for SEEK_* and off_t */
|
|
||||||
# ifdef VMS
|
|
||||||
# include <unixio.h> /* for off_t */
|
|
||||||
# endif
|
|
||||||
# define z_off_t off_t
|
|
||||||
#endif
|
|
||||||
#ifndef SEEK_SET
|
|
||||||
# define SEEK_SET 0 /* Seek from beginning of file. */
|
|
||||||
# define SEEK_CUR 1 /* Seek from current position. */
|
|
||||||
# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */
|
|
||||||
#endif
|
|
||||||
#ifndef z_off_t
|
|
||||||
# define z_off_t long
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__OS400__)
|
|
||||||
# define NO_vsnprintf
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__MVS__)
|
|
||||||
# define NO_vsnprintf
|
|
||||||
# ifdef FAR
|
|
||||||
# undef FAR
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* MVS linker does not support external names larger than 8 bytes */
|
|
||||||
#if defined(__MVS__)
|
|
||||||
# pragma map(deflateInit_,"DEIN")
|
|
||||||
# pragma map(deflateInit2_,"DEIN2")
|
|
||||||
# pragma map(deflateEnd,"DEEND")
|
|
||||||
# pragma map(deflateBound,"DEBND")
|
|
||||||
# pragma map(inflateInit_,"ININ")
|
|
||||||
# pragma map(inflateInit2_,"ININ2")
|
|
||||||
# pragma map(inflateEnd,"INEND")
|
|
||||||
# pragma map(inflateSync,"INSY")
|
|
||||||
# pragma map(inflateSetDictionary,"INSEDI")
|
|
||||||
# pragma map(compressBound,"CMBND")
|
|
||||||
# pragma map(inflate_table,"INTABL")
|
|
||||||
# pragma map(inflate_fast,"INFA")
|
|
||||||
# pragma map(inflate_copyright,"INCOPY")
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* ZCONF_H */
|
|
Loading…
Reference in New Issue