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 = 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 */