aboutsummaryrefslogtreecommitdiffstats
path: root/epan/address.h
diff options
context:
space:
mode:
authorGerald Combs <gerald@wireshark.org>2013-09-17 18:42:36 +0000
committerGerald Combs <gerald@wireshark.org>2013-09-17 18:42:36 +0000
commitb1a7fc361fe264ac2c60193ceefdbd448e04cbfd (patch)
treefc10adcb198005b5f033acdb8e061abc3bc2bccf /epan/address.h
parent3bb06ab6a5f29016feb9e7d05b36e90ef2f15c5c (diff)
Switch the inline functions that use tvbuffs and emem back to macros.
This should hopefully fix linking with Solaris Studio, which doesn't remove unused inline functions by default. Fix a copy+paste error. svn path=/trunk/; revision=52122
Diffstat (limited to 'epan/address.h')
-rw-r--r--epan/address.h50
1 files changed, 17 insertions, 33 deletions
diff --git a/epan/address.h b/epan/address.h
index 93473db3f0..5fdbc7eaf7 100644
--- a/epan/address.h
+++ b/epan/address.h
@@ -28,9 +28,6 @@
#include <string.h> /* for memcmp */
-#include "emem.h"
-#include "tvbuff.h"
-
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
@@ -104,16 +101,11 @@ set_address(address *addr, address_type addr_type, int addr_len, const void * ad
* @param addr_len[in] The length in bytes of the address data. For example, 4 for
* AT_IPv4 or sizeof(struct e_in6_addr) for AT_IPv6.
*/
-static inline void
-tvb_set_address(address *addr, address_type addr_type, tvbuff_t *tvb, const gint offset, int addr_len) {
- const void *data = tvb_get_ptr(tvb, offset, addr_len);
- addr->data = data;
- addr->type = addr_type;
- addr->hf = -1;
- addr->len = addr_len;
-}
#define TVB_SET_ADDRESS(addr, addr_type, tvb, offset, addr_len) \
- tvb_set_address((addr), (addr_type), (tvb), (offset), (addr_len))
+ do { \
+ const void *TVB_SET_ADDRESS_data = (void *)tvb_get_ptr(tvb, offset, addr_len); \
+ set_address((addr), (addr_type), (addr_len), TVB_SET_ADDRESS_data); \
+ } while (0)
/** Initialize an address with the given values including an associated field.
*
@@ -132,7 +124,7 @@ set_address_hf(address *addr, address_type addr_type, int addr_len, const void *
addr->len = addr_len;
}
#define SET_ADDRESS_HF(addr, addr_type, addr_len, addr_data, addr_hf) \
- set_address_hf((addr), (addr_type), (tvb), (offset), (addr_len), (addr_hf))
+ set_address_hf((addr), (addr_type), (addr_len), (addr_hf))
/** Initialize an address from TVB data including an associated field.
*
@@ -150,16 +142,11 @@ set_address_hf(address *addr, address_type addr_type, int addr_len, const void *
* AT_IPv4 or sizeof(struct e_in6_addr) for AT_IPv6.
* @param addr_hf[in] The header field index to associate with the address.
*/
-static inline void
-tvb_set_address_hf(address *addr, address_type addr_type, tvbuff_t *tvb, const gint offset, int addr_len, int addr_hf) {
- const void *data = tvb_get_ptr(tvb, offset, addr_len);
- addr->data = data;
- addr->type = addr_type;
- addr->hf = addr_hf;
- addr->len = addr_len;
-}
#define TVB_SET_ADDRESS_HF(addr, addr_type, tvb, offset, addr_len, addr_hf) \
- tvb_set_address_hf((addr), (addr_type), (tvb), (offset), (addr_len), (addr_hf))
+ do { \
+ const void *TVB_SET_ADDRESS_data = (void *) tvb_get_ptr(tvb, offset, addr_len); \
+ set_address_hf((addr), (addr_type), (addr_len), TVB_SET_ADDRESS_data, (addr_hf)); \
+ } while (0)
/** Compare two addresses.
*
@@ -245,18 +232,15 @@ copy_address_shallow(address *to, const address *from) {
* @param to[in,out] The destination address.
* @param from[in] The source address.
*/
-static inline void
-se_copy_address(address *to, const address *from) {
- guint8 *to_data;
+#define SE_COPY_ADDRESS(to, from) \
+ do { \
+ void *SE_COPY_ADDRESS_data; \
+ copy_address_shallow((to), (from)); \
+ SE_COPY_ADDRESS_data = se_alloc((from)->len); \
+ memcpy(SE_COPY_ADDRESS_data, (from)->data, (from)->len); \
+ (to)->data = SE_COPY_ADDRESS_data; \
+ } while (0)
- to->type = from->type;
- to->len = from->len;
- to->hf = from->hf;
- to_data = (guint8 *)se_alloc(from->len);
- memcpy(to_data, from->data, from->len);
- to->data = to_data;
-}
-#define SE_COPY_ADDRESS(to, from) se_copy_address((to), (from))
/** Hash an address into a hash value (which must already have been set).
*