aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-cpfi.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2007-04-25 22:04:46 +0000
committerGuy Harris <guy@alum.mit.edu>2007-04-25 22:04:46 +0000
commite26198a1f71071c7dbbeab8d7141c3560c3dc72a (patch)
tree35025a7eef00f34f98fff02eada323a2916e42b3 /epan/dissectors/packet-cpfi.c
parent2361eb46de89ba6381650575abb1e7be01ac62b3 (diff)
The data field of an address structure is now a void *; convert it as
appropriate. Also, throw in a check for the types of the addresses. svn path=/trunk/; revision=21567
Diffstat (limited to 'epan/dissectors/packet-cpfi.c')
-rw-r--r--epan/dissectors/packet-cpfi.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/epan/dissectors/packet-cpfi.c b/epan/dissectors/packet-cpfi.c
index b2f4e85c3c..9c06ef5f1b 100644
--- a/epan/dissectors/packet-cpfi.c
+++ b/epan/dissectors/packet-cpfi.c
@@ -190,7 +190,14 @@ dissect_cpfi_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
else
{
- src_instance = pinfo->src.data[2]-1;
+ if (pinfo->src.type == AT_ETHER) {
+ const guint8 *srcmac = pinfo->src.data;
+
+ src_instance = srcmac[2]-1;
+ } else {
+ /* XXX - what to do here? */
+ src_instance = 0;
+ }
src_board = tda >> 4;
src_port = tda & 0x0f;
src = (1 << 24) + (src_instance << 16) + (src_board << 8) + src_port;
@@ -206,7 +213,14 @@ dissect_cpfi_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
else
{
- dst_instance = pinfo->dst.data[2]-1;
+ if (pinfo->dst.type == AT_ETHER) {
+ const guint8 *dstmac = pinfo->dst.data;
+
+ dst_instance = dstmac[2]-1;
+ } else {
+ /* XXX - what to do here? */
+ dst_instance = 0;
+ }
dst_board = tda >> 4;
dst_port = tda & 0x0f;
dst = (1 << 24) + (dst_instance << 16) + (dst_board << 8) + dst_port;