version 1.18.2.5, 2012/05/23 14:06:08
|
version 1.20.2.2, 2012/07/22 10:04:27
|
Line 49 SUCH DAMAGE.
|
Line 49 SUCH DAMAGE.
|
|
|
#define COMPAT_43TTY |
#define COMPAT_43TTY |
|
|
#include <atree.h> |
|
#include <ampool.h> |
|
#include <assert.h> |
#include <assert.h> |
#include <openssl/evp.h> |
#include <openssl/evp.h> |
#include <openssl/aes.h> |
#include <openssl/aes.h> |
Line 60 SUCH DAMAGE.
|
Line 58 SUCH DAMAGE.
|
#include <sys/un.h> |
#include <sys/un.h> |
#include <net/if_dl.h> |
#include <net/if_dl.h> |
#include <netinet/in.h> |
#include <netinet/in.h> |
|
#include <atree.h> |
|
#include <ampool.h> |
|
|
|
|
|
#ifndef STRSIZ |
|
#define STRSIZ 256 |
|
#endif |
|
|
#define IO_SYSM 0 |
#define IO_SYSM 0 |
#define IO_MPOOL 1 |
#define IO_MPOOL 1 |
|
|
Line 96 typedef enum {
|
Line 100 typedef enum {
|
|
|
typedef struct { |
typedef struct { |
uint8_t val_type; |
uint8_t val_type; |
uint8_t val_pad; | union { |
| struct { |
| uint8_t val_zcpy:1; |
| uint8_t val_be:1; |
| uint8_t val_le:1; |
| uint8_t val_pad:5; |
| }; |
| uint8_t val_opt; |
| }; |
uint16_t val_key; |
uint16_t val_key; |
uint32_t val_len; |
uint32_t val_len; |
union { |
union { |
Line 118 typedef struct {
|
Line 130 typedef struct {
|
int64_t i64; |
int64_t i64; |
} val; |
} val; |
uint8_t val_data[0]; |
uint8_t val_data[0]; |
} __packed ait_val_t; | } __packed ait_val_t; /* sizeof 16 bytes */ |
|
|
#define AIT_TYPE(_vl) ((ait_type_t) (_vl)->val_type) |
#define AIT_TYPE(_vl) ((ait_type_t) (_vl)->val_type) |
#define AIT_LEN(_vl) (_vl)->val_len |
#define AIT_LEN(_vl) (_vl)->val_len |
#define AIT_KEY(_vl) (_vl)->val_key |
#define AIT_KEY(_vl) (_vl)->val_key |
#define AIT_RAW(_vl) (_vl)->val.net |
#define AIT_RAW(_vl) (_vl)->val.net |
#define AIT_ADDR(_vl) (_vl)->val.ptr |
#define AIT_ADDR(_vl) (_vl)->val.ptr |
|
#define AIT_ZEROCOPY(_vl) (_vl)->val_zcpy |
|
#define AIT_BE(_vl) (_vl)->val_be |
|
#define AIT_LE(_vl) (_vl)->val_le |
#define AIT_BLOB_CHUNKS(_vl, _n) (AIT_LEN((_vl)) / _n + (AIT_LEN((_vl)) % _n) ? 1 : 0) |
#define AIT_BLOB_CHUNKS(_vl, _n) (AIT_LEN((_vl)) / _n + (AIT_LEN((_vl)) % _n) ? 1 : 0) |
#define AIT_ISEMPTY(_vl) (AIT_TYPE((_vl)) == empty) |
#define AIT_ISEMPTY(_vl) (AIT_TYPE((_vl)) == empty) |
|
|
Line 156 typedef struct {
|
Line 171 typedef struct {
|
(_vl) = __val; \ |
(_vl) = __val; \ |
} while (0); |
} while (0); |
#define AIT_SET_PTR(_vl, _p, _len) do { ait_val_t *__val = (_vl); assert(__val); \ |
#define AIT_SET_PTR(_vl, _p, _len) do { ait_val_t *__val = (_vl); assert(__val); \ |
__val->val_type = ptr; AIT_LEN(__val) = _len; \ | __val->val_type = ptr; __val->val.ptr = _p; \ |
__val->val.ptr = _p; } while (0) | AIT_LEN(__val) = _len; } while (0) |
#define AIT_RE_BUF(_vl, _len) do { ait_val_t *__val = (_vl); assert(__val); \ |
#define AIT_RE_BUF(_vl, _len) do { ait_val_t *__val = (_vl); assert(__val); \ |
void *__ptr = io_realloc(AIT_GET_BUF(__val), _len); \ |
void *__ptr = io_realloc(AIT_GET_BUF(__val), _len); \ |
if (__ptr) { \ |
if (__ptr) { \ |
Line 195 typedef struct {
|
Line 210 typedef struct {
|
AIT_LEN(__val)); \ |
AIT_LEN(__val)); \ |
} } while (0) |
} } while (0) |
#define AIT_SET_BLOB(_vl, _n, _len) do { ait_val_t *__val = (_vl); assert(__val); \ |
#define AIT_SET_BLOB(_vl, _n, _len) do { ait_val_t *__val = (_vl); assert(__val); \ |
__val->val_type = blob; AIT_LEN(__val) = _len; \ | __val->val_type = blob; __val->val.blob = _n; \ |
__val->val.blob = _n; } while (0) | AIT_LEN(__val) = _len; } while (0) |
#define AIT_SET_BLOB2(_vl, _bv) do { ait_val_t *__val = (_vl); assert(__val); assert((_bv)); \ |
#define AIT_SET_BLOB2(_vl, _bv) do { ait_val_t *__val = (_vl); assert(__val); assert((_bv)); \ |
__val->val_type = blob; AIT_LEN(__val) = (_bv)->blob_len; \ |
__val->val_type = blob; AIT_LEN(__val) = (_bv)->blob_len; \ |
__val->val.blob = (_bv)->blob_var; } while (0) |
__val->val.blob = (_bv)->blob_var; } while (0) |
Line 255 typedef struct {
|
Line 270 typedef struct {
|
#define AIT_FREE_VAL(_vl) do { ait_val_t *__val = (_vl); assert(__val); \ |
#define AIT_FREE_VAL(_vl) do { ait_val_t *__val = (_vl); assert(__val); \ |
switch (AIT_TYPE(__val)) { \ |
switch (AIT_TYPE(__val)) { \ |
case buffer: \ |
case buffer: \ |
if (__val->val.buffer) { \ | if (!__val->val_zcpy && \ |
| __val->val.buffer) \ |
io_free(__val->val.buffer); \ |
io_free(__val->val.buffer); \ |
__val->val.buffer = NULL; \ | __val->val.buffer = NULL; \ |
} \ | |
break; \ |
break; \ |
case string: \ |
case string: \ |
if (__val->val.string) { \ | if (!__val->val_zcpy && \ |
| __val->val.string) \ |
io_free(__val->val.string); \ |
io_free(__val->val.string); \ |
__val->val.string = NULL; \ | __val->val.string = NULL; \ |
} \ | |
break; \ |
break; \ |
default: \ |
default: \ |
break; \ |
break; \ |
} \ |
} \ |
__val->val_type = empty; \ |
__val->val_type = empty; \ |
|
__val->val_opt ^= __val->val_opt; \ |
AIT_LEN(__val) = 0; \ |
AIT_LEN(__val) = 0; \ |
|
AIT_KEY(__val) = 0; \ |
} while (0) |
} while (0) |
|
|
struct io_ether_addr { |
struct io_ether_addr { |