#ifndef __ADDRESS_H__
#define __ADDRESS_H__
+#include "emem.h"
+
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
typedef struct _address {
address_type type; /* type of address */
int len; /* length of address, in bytes */
- const guint8 *data; /* bytes that constitute address */
+ const void *data; /* pointer to address data */
} address;
#define SET_ADDRESS(addr, addr_type, addr_len, addr_data) { \
(addr)->type = (addr_type); \
(addr)->len = (addr_len); \
- (addr)->data = (void *)(addr_data); \
+ (addr)->data = (addr_data); \
}
/*
(to)->data = COPY_ADDRESS_data; \
}
+#define SE_COPY_ADDRESS(to, from) { \
+ guint8 *SE_COPY_ADDRESS_data; \
+ (to)->type = (from)->type; \
+ (to)->len = (from)->len; \
+ SE_COPY_ADDRESS_data = se_alloc((from)->len); \
+ memcpy(SE_COPY_ADDRESS_data, (from)->data, (from)->len); \
+ (to)->data = SE_COPY_ADDRESS_data; \
+ }
+
+/*
+ * Hash an address into a hash value (which must already have been set).
+ */
+#define ADD_ADDRESS_TO_HASH(hash_val, addr) { \
+ const guint8 *ADD_ADDRESS_TO_HASH_data; \
+ int ADD_ADDRESS_TO_HASH_index; \
+ ADD_ADDRESS_TO_HASH_data = (addr)->data; \
+ for (ADD_ADDRESS_TO_HASH_index = 0; \
+ ADD_ADDRESS_TO_HASH_index < (addr)->len; \
+ ADD_ADDRESS_TO_HASH_index++) \
+ hash_val += ADD_ADDRESS_TO_HASH_data[ADD_ADDRESS_TO_HASH_index]; \
+ }
+
/* Types of port numbers Wireshark knows about. */
typedef enum {
PT_NONE, /* no port number */
PT_SBCCS, /* FICON */
PT_IDP, /* XNS IDP sockets */
PT_TIPC, /* TIPC PORT */
- PT_USB /* USB endpoint 0xffff means the host */
+ PT_USB, /* USB endpoint 0xffff means the host */
+ PT_I2C
} port_type;
/* Types of circuit IDs Wireshark knows about. */