*
* $Id$
*
- * Ethereal - Network traffic analyzer
- * By Gerald Combs <gerald@ethereal.com>
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
* This program is free software; you can redistribute it and/or
#ifndef __ADDRESS_H__
#define __ADDRESS_H__
-/* Types of addresses Ethereal knows about. */
+#include "emem.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/* Types of addresses Wireshark knows about. */
/* If a new address type is added here, a string representation procedure should */
/* also be included in address_to_str_buf defined in to_str.c, for presentation purposes */
AT_ATALK, /* Appletalk DDP */
AT_VINES, /* Banyan Vines */
AT_OSI, /* OSI NSAP */
- AT_ARCNET, /* ARCNET */
+ AT_ARCNET, /* ARCNET */
AT_FC, /* Fibre Channel */
AT_SS7PC, /* SS7 Point Code */
- AT_STRINGZ, /* null-terminated string */
+ AT_STRINGZ, /* null-terminated string */
AT_EUI64, /* IEEE EUI-64 */
- AT_URI /* URI/URL/URN */
+ AT_URI, /* URI/URL/URN */
+ AT_TIPC, /* TIPC Address Zone,Subnetwork,Processor */
+ AT_USB /* USB Device address
+ * (0xffffffff represents the host) */
} address_type;
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; \
}
-/* Types of port numbers Ethereal knows about. */
+#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_SCTP, /* SCTP */
PT_TCP, /* TCP */
PT_UDP, /* UDP */
+ PT_DCCP, /* DCCP */
PT_IPX, /* IPX sockets */
PT_NCP, /* NCP connection */
PT_EXCHG, /* Fibre Channel exchange */
PT_DDP, /* DDP AppleTalk connection */
PT_SBCCS, /* FICON */
- PT_IDP /* XNS IDP sockets */
+ PT_IDP, /* XNS IDP sockets */
+ PT_TIPC, /* TIPC PORT */
+ PT_USB, /* USB endpoint 0xffff means the host */
+ PT_I2C
} port_type;
-/* Types of circuit IDs Ethereal knows about. */
+/* Types of circuit IDs Wireshark knows about. */
typedef enum {
CT_NONE, /* no circuit type */
CT_DLCI, /* Frame Relay DLCI */
CT_ISDN, /* ISDN channel number */
CT_X25, /* X.25 logical channel number */
CT_ISUP, /* ISDN User Part CIC */
- CT_IAX2 /* IAX2 call id */
+ CT_IAX2, /* IAX2 call id */
+ CT_H223, /* H.223 logical channel number */
+ CT_BICC /* BICC Circuit identifier */
/* Could also have ATM VPI/VCI pairs */
} circuit_type;
-#endif /* __ADDRESS_H__ */
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+#endif /* __ADDRESS_H__ */