Document the new Copy Profile button.
[obnox/wireshark/wip.git] / epan / address.h
index a977aee04527d5c86ef0944e795135a0107f59b4..c4725024400fc2337a5a605cdea230c266d6ae9d 100644 (file)
@@ -4,8 +4,8 @@
  *
  * $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 */
 
@@ -40,24 +46,27 @@ typedef enum {
   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); \
        }
 
 /*
@@ -104,30 +113,61 @@ typedef struct _address {
        (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__ */