|
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 { |