Source code

Revision control

Copy as Markdown

Other Tools

/* 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/. */
#ifndef _CPR_TYPES_H_
#define _CPR_TYPES_H_
#include <inttypes.h>
#if defined SIP_OS_LINUX
#include "cpr_linux_types.h"
#elif defined SIP_OS_WINDOWS
#include "cpr_win_types.h"
#elif defined SIP_OS_OSX
#include "cpr_darwin_types.h"
#else
//lol
//#error "Unsupported platform"
#endif
#ifdef __cplusplus
extern "C" {
#endif
/*
* CPR Return Codes
*/
typedef enum
{
CPR_SUCCESS,
CPR_FAILURE
} cpr_status_e;
typedef cpr_status_e cprRC_t;
/*
* IPv4 address structure
*/
typedef uint32_t cpr_in_addr_t;
struct in_addr_s
{
#ifdef s_addr
/* can occur with Windows winsock.h */
union {
struct {
unsigned char s_b1, s_b2, sb_b3, s_b4;
} S_un_b;
cpr_in_addr_t S_addr;
} S_un;
#else
cpr_in_addr_t s_addr;
#endif
};
/*
* IPv6 address structure
*/
typedef struct
{
union
{
uint8_t base8[16];
uint16_t base16[8];
uint32_t base32[4];
} addr;
} cpr_in6_addr_t;
#ifndef s6_addr
#define s6_addr addr.base8
#endif
#ifndef s6_addr16
#define s6_addr16 addr.base16
#endif
#ifndef s6_addr32
#define s6_addr32 addr.base32
#endif
typedef enum
{
CPR_IP_ADDR_INVALID=0,
CPR_IP_ADDR_IPV4,
CPR_IP_ADDR_IPV6
} cpr_ip_type;
typedef enum
{
CPR_IP_MODE_IPV4 = 0,
CPR_IP_MODE_IPV6,
CPR_IP_MODE_DUAL
}
cpr_ip_mode_e;
/*
* IP address structure
*/
typedef struct
{
cpr_ip_type type;
union
{
cpr_in_addr_t ip4;
cpr_in6_addr_t ip6;
} u;
} cpr_ip_addr_t;
extern const cpr_ip_addr_t ip_addr_invalid;
#define MAX_IPADDR_STR_LEN 48
#define CPR_IP_ADDR_INIT(a) a.type = CPR_IP_ADDR_INVALID;
/*
* !!! NOTE !!!
*
* The strings of type string_t are actually very special blocks
* of memory that have a "hidden" header block immediately preceding
* the pointer. You MUST use the functions in string_lib.c to
* create, manipulate, destroy, copy, or otherwise work with these
* strings.
*/
typedef const char *string_t;
#ifdef __cplusplus
}
#endif
#endif