forked from osmocom/wireshark
Squelch some compiler warnings (including warnings about the last member
of a structure being an empty array; that is *not* supported by all the compilers that can be used to build Wireshark). svn path=/trunk/; revision=32412
This commit is contained in:
parent
69df32fb11
commit
5c394ee15f
|
@ -402,8 +402,8 @@ struct lowpan_nhdr {
|
||||||
guint8 proto;
|
guint8 proto;
|
||||||
guint length;
|
guint length;
|
||||||
guint reported;
|
guint reported;
|
||||||
guint8 hdr[];
|
|
||||||
};
|
};
|
||||||
|
#define LOWPAN_NHDR_DATA(nhdr) ((guint8 *)(nhdr) + sizeof (struct lowpan_nhdr))
|
||||||
|
|
||||||
/* Dissector prototypes */
|
/* Dissector prototypes */
|
||||||
static void proto_init_6lowpan (void);
|
static void proto_init_6lowpan (void);
|
||||||
|
@ -474,7 +474,7 @@ lowpan_addr16_to_ifcid(guint16 addr, guint16 pan, guint8 *ifcid)
|
||||||
static gboolean
|
static gboolean
|
||||||
lowpan_dlsrc_to_ifcid(packet_info *pinfo, guint8 *ifcid)
|
lowpan_dlsrc_to_ifcid(packet_info *pinfo, guint8 *ifcid)
|
||||||
{
|
{
|
||||||
ieee802154_packet * packet = pinfo->private_data;
|
ieee802154_packet * packet = (ieee802154_packet *)pinfo->private_data;
|
||||||
|
|
||||||
/* Check the link-layer address field. */
|
/* Check the link-layer address field. */
|
||||||
if (pinfo->dl_src.type == AT_EUI64) {
|
if (pinfo->dl_src.type == AT_EUI64) {
|
||||||
|
@ -519,7 +519,7 @@ lowpan_dlsrc_to_ifcid(packet_info *pinfo, guint8 *ifcid)
|
||||||
static gboolean
|
static gboolean
|
||||||
lowpan_dldst_to_ifcid(packet_info *pinfo, guint8 *ifcid)
|
lowpan_dldst_to_ifcid(packet_info *pinfo, guint8 *ifcid)
|
||||||
{
|
{
|
||||||
ieee802154_packet * packet = pinfo->private_data;
|
ieee802154_packet * packet = (ieee802154_packet *)pinfo->private_data;
|
||||||
|
|
||||||
/* Check the link-layer address field. */
|
/* Check the link-layer address field. */
|
||||||
if (pinfo->dl_dst.type == AT_EUI64) {
|
if (pinfo->dl_dst.type == AT_EUI64) {
|
||||||
|
@ -578,13 +578,13 @@ lowpan_reassemble_ipv6(tvbuff_t *tvb, struct ip6_hdr *ipv6, struct lowpan_nhdr *
|
||||||
ipv6->ip6_plen = g_ntohs(reported);
|
ipv6->ip6_plen = g_ntohs(reported);
|
||||||
|
|
||||||
/* Allocate a buffer for the packet and copy in the IPv6 header. */
|
/* Allocate a buffer for the packet and copy in the IPv6 header. */
|
||||||
buffer = g_malloc(length + sizeof(struct ip6_hdr));
|
buffer = (guint8 *)g_malloc(length + sizeof(struct ip6_hdr));
|
||||||
memcpy(buffer, ipv6, sizeof(struct ip6_hdr));
|
memcpy(buffer, ipv6, sizeof(struct ip6_hdr));
|
||||||
cursor = buffer + sizeof(struct ip6_hdr);
|
cursor = buffer + sizeof(struct ip6_hdr);
|
||||||
|
|
||||||
/* Add the next headers into the buffer. */
|
/* Add the next headers into the buffer. */
|
||||||
for (nhdr = nhdr_list; nhdr; nhdr = nhdr->next) {
|
for (nhdr = nhdr_list; nhdr; nhdr = nhdr->next) {
|
||||||
memcpy(cursor, nhdr->hdr, nhdr->length);
|
memcpy(cursor, LOWPAN_NHDR_DATA(nhdr), nhdr->length);
|
||||||
cursor += nhdr->length;
|
cursor += nhdr->length;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1080,15 +1080,15 @@ dissect_6lowpan_hc1(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint dg
|
||||||
/* Construct the next header for the UDP datagram. */
|
/* Construct the next header for the UDP datagram. */
|
||||||
offset = BITS_TO_BYTE_LEN(0, bit_offset);
|
offset = BITS_TO_BYTE_LEN(0, bit_offset);
|
||||||
length = tvb_length_remaining(tvb, offset);
|
length = tvb_length_remaining(tvb, offset);
|
||||||
nhdr_list = ep_alloc(sizeof(struct lowpan_nhdr) + sizeof(struct udp_hdr) + length);
|
nhdr_list = (struct lowpan_nhdr *)ep_alloc(sizeof(struct lowpan_nhdr) + sizeof(struct udp_hdr) + length);
|
||||||
nhdr_list->next = NULL;
|
nhdr_list->next = NULL;
|
||||||
nhdr_list->proto = IP_PROTO_UDP;
|
nhdr_list->proto = IP_PROTO_UDP;
|
||||||
nhdr_list->length = length + sizeof(struct udp_hdr);
|
nhdr_list->length = length + sizeof(struct udp_hdr);
|
||||||
nhdr_list->reported = g_ntohs(udp.length);
|
nhdr_list->reported = g_ntohs(udp.length);
|
||||||
|
|
||||||
/* Copy the UDP header into the buffer. */
|
/* Copy the UDP header into the buffer. */
|
||||||
memcpy(nhdr_list->hdr, &udp, sizeof(struct udp_hdr));
|
memcpy(LOWPAN_NHDR_DATA(nhdr_list), &udp, sizeof(struct udp_hdr));
|
||||||
tvb_memcpy(tvb, nhdr_list->hdr + sizeof(struct udp_hdr), offset, length);
|
tvb_memcpy(tvb, LOWPAN_NHDR_DATA(nhdr_list) + sizeof(struct udp_hdr), offset, length);
|
||||||
}
|
}
|
||||||
/*=====================================================
|
/*=====================================================
|
||||||
* Reconstruct the IPv6 Packet
|
* Reconstruct the IPv6 Packet
|
||||||
|
@ -1096,7 +1096,7 @@ dissect_6lowpan_hc1(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint dg
|
||||||
*/
|
*/
|
||||||
else {
|
else {
|
||||||
offset = BITS_TO_BYTE_LEN(0, bit_offset);
|
offset = BITS_TO_BYTE_LEN(0, bit_offset);
|
||||||
nhdr_list = ep_alloc(sizeof(struct lowpan_nhdr) + tvb_length_remaining(tvb, offset));
|
nhdr_list = (struct lowpan_nhdr *)ep_alloc(sizeof(struct lowpan_nhdr) + tvb_length_remaining(tvb, offset));
|
||||||
nhdr_list->next = NULL;
|
nhdr_list->next = NULL;
|
||||||
nhdr_list->proto = ipv6.ip6_nxt;
|
nhdr_list->proto = ipv6.ip6_nxt;
|
||||||
nhdr_list->length = tvb_length_remaining(tvb, offset);
|
nhdr_list->length = tvb_length_remaining(tvb, offset);
|
||||||
|
@ -1106,7 +1106,7 @@ dissect_6lowpan_hc1(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint dg
|
||||||
else {
|
else {
|
||||||
nhdr_list->reported = dgram_size - sizeof(struct ip6_hdr);
|
nhdr_list->reported = dgram_size - sizeof(struct ip6_hdr);
|
||||||
}
|
}
|
||||||
tvb_memcpy(tvb, nhdr_list->hdr, offset, nhdr_list->length);
|
tvb_memcpy(tvb, LOWPAN_NHDR_DATA(nhdr_list), offset, nhdr_list->length);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Link the reassembled tvbuff together. */
|
/* Link the reassembled tvbuff together. */
|
||||||
|
@ -1492,7 +1492,7 @@ dissect_6lowpan_iphc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint d
|
||||||
}
|
}
|
||||||
/* Create an extension header for the remaining payload. */
|
/* Create an extension header for the remaining payload. */
|
||||||
else {
|
else {
|
||||||
nhdr_list = ep_alloc(sizeof(struct lowpan_nhdr) + tvb_length_remaining(tvb, offset));
|
nhdr_list = (struct lowpan_nhdr *)ep_alloc(sizeof(struct lowpan_nhdr) + tvb_length_remaining(tvb, offset));
|
||||||
nhdr_list->next = NULL;
|
nhdr_list->next = NULL;
|
||||||
nhdr_list->proto = ipv6.ip6_nxt;
|
nhdr_list->proto = ipv6.ip6_nxt;
|
||||||
nhdr_list->length = tvb_length_remaining(tvb, offset);
|
nhdr_list->length = tvb_length_remaining(tvb, offset);
|
||||||
|
@ -1502,7 +1502,7 @@ dissect_6lowpan_iphc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint d
|
||||||
else {
|
else {
|
||||||
nhdr_list->reported = dgram_size - sizeof(struct ip6_hdr);
|
nhdr_list->reported = dgram_size - sizeof(struct ip6_hdr);
|
||||||
}
|
}
|
||||||
tvb_memcpy(tvb, nhdr_list->hdr, offset, nhdr_list->length);
|
tvb_memcpy(tvb, LOWPAN_NHDR_DATA(nhdr_list), offset, nhdr_list->length);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*=====================================================
|
/*=====================================================
|
||||||
|
@ -1587,7 +1587,7 @@ dissect_6lowpan_iphc_nhc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gi
|
||||||
length = (length + 7) & ~0x7;
|
length = (length + 7) & ~0x7;
|
||||||
|
|
||||||
/* Create the next header structure for the IPv6 extension header. */
|
/* Create the next header structure for the IPv6 extension header. */
|
||||||
nhdr = ep_alloc0(sizeof(struct lowpan_nhdr) + length);
|
nhdr = (struct lowpan_nhdr *)ep_alloc0(sizeof(struct lowpan_nhdr) + length);
|
||||||
nhdr->next = NULL;
|
nhdr->next = NULL;
|
||||||
nhdr->proto = ext_proto;
|
nhdr->proto = ext_proto;
|
||||||
nhdr->length = length;
|
nhdr->length = length;
|
||||||
|
@ -1599,7 +1599,7 @@ dissect_6lowpan_iphc_nhc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gi
|
||||||
}
|
}
|
||||||
ipv6_ext.ip6e_len = nhdr->reported>>3; /* Convert to units of 8 bytes. */
|
ipv6_ext.ip6e_len = nhdr->reported>>3; /* Convert to units of 8 bytes. */
|
||||||
ipv6_ext.ip6e_len -= 1; /* Don't include the first 8 bytes. */
|
ipv6_ext.ip6e_len -= 1; /* Don't include the first 8 bytes. */
|
||||||
memcpy(nhdr->hdr, &ipv6_ext, sizeof(struct ip6_ext));
|
memcpy(LOWPAN_NHDR_DATA(nhdr), &ipv6_ext, sizeof(struct ip6_ext));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If the extension header was truncated, display the remainder using
|
* If the extension header was truncated, display the remainder using
|
||||||
|
@ -1611,7 +1611,7 @@ dissect_6lowpan_iphc_nhc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gi
|
||||||
|
|
||||||
/* Copy the remainder, and truncate the real buffer length. */
|
/* Copy the remainder, and truncate the real buffer length. */
|
||||||
nhdr->length = tvb_length_remaining(tvb, offset) + sizeof(struct ip6_ext);
|
nhdr->length = tvb_length_remaining(tvb, offset) + sizeof(struct ip6_ext);
|
||||||
tvb_memcpy(tvb, nhdr->hdr + sizeof(struct ip6_ext), offset, tvb_length_remaining(tvb, offset));
|
tvb_memcpy(tvb, LOWPAN_NHDR_DATA(nhdr) + sizeof(struct ip6_ext), offset, tvb_length_remaining(tvb, offset));
|
||||||
|
|
||||||
/* There is nothing more we can do. */
|
/* There is nothing more we can do. */
|
||||||
return nhdr;
|
return nhdr;
|
||||||
|
@ -1621,7 +1621,7 @@ dissect_6lowpan_iphc_nhc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gi
|
||||||
call_dissector(data_handle, tvb_new_subset(tvb, offset, ext_len, ext_len), pinfo, nhc_tree);
|
call_dissector(data_handle, tvb_new_subset(tvb, offset, ext_len, ext_len), pinfo, nhc_tree);
|
||||||
|
|
||||||
/* Copy the extension header into the struct. */
|
/* Copy the extension header into the struct. */
|
||||||
tvb_memcpy(tvb, nhdr->hdr + sizeof(struct ip6_ext), offset, ext_len);
|
tvb_memcpy(tvb, LOWPAN_NHDR_DATA(nhdr) + sizeof(struct ip6_ext), offset, ext_len);
|
||||||
offset += ext_len;
|
offset += ext_len;
|
||||||
|
|
||||||
if (ext_flags & LOWPAN_NHC_EXT_NHDR) {
|
if (ext_flags & LOWPAN_NHC_EXT_NHDR) {
|
||||||
|
@ -1633,7 +1633,7 @@ dissect_6lowpan_iphc_nhc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gi
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* Create another next header structure for the remaining payload. */
|
/* Create another next header structure for the remaining payload. */
|
||||||
nhdr->next = ep_alloc(sizeof(struct lowpan_nhdr) + tvb_length_remaining(tvb, offset));
|
nhdr->next = (struct lowpan_nhdr *)ep_alloc(sizeof(struct lowpan_nhdr) + tvb_length_remaining(tvb, offset));
|
||||||
nhdr->next->next = NULL;
|
nhdr->next->next = NULL;
|
||||||
nhdr->next->proto = ipv6_ext.ip6e_nxt;
|
nhdr->next->proto = ipv6_ext.ip6e_nxt;
|
||||||
nhdr->next->length = tvb_length_remaining(tvb, offset);
|
nhdr->next->length = tvb_length_remaining(tvb, offset);
|
||||||
|
@ -1643,7 +1643,7 @@ dissect_6lowpan_iphc_nhc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gi
|
||||||
else {
|
else {
|
||||||
nhdr->next->reported = dgram_size - ext_len - sizeof(struct ip6_ext);
|
nhdr->next->reported = dgram_size - ext_len - sizeof(struct ip6_ext);
|
||||||
}
|
}
|
||||||
tvb_memcpy(tvb, nhdr->next->hdr, offset, nhdr->next->length);
|
tvb_memcpy(tvb, LOWPAN_NHDR_DATA(nhdr->next), offset, nhdr->next->length);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Done. */
|
/* Done. */
|
||||||
|
@ -1785,15 +1785,15 @@ dissect_6lowpan_iphc_nhc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gi
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Create the next header structure for the UDP datagram. */
|
/* Create the next header structure for the UDP datagram. */
|
||||||
nhdr = ep_alloc(sizeof(struct lowpan_nhdr) + sizeof(struct udp_hdr) + tvb_length_remaining(tvb, offset));
|
nhdr = (struct lowpan_nhdr *)ep_alloc(sizeof(struct lowpan_nhdr) + sizeof(struct udp_hdr) + tvb_length_remaining(tvb, offset));
|
||||||
nhdr->next = NULL;
|
nhdr->next = NULL;
|
||||||
nhdr->proto = IP_PROTO_UDP;
|
nhdr->proto = IP_PROTO_UDP;
|
||||||
nhdr->length = tvb_length_remaining(tvb, offset) + sizeof(struct udp_hdr);
|
nhdr->length = tvb_length_remaining(tvb, offset) + sizeof(struct udp_hdr);
|
||||||
nhdr->reported = g_ntohs(udp.length);
|
nhdr->reported = g_ntohs(udp.length);
|
||||||
|
|
||||||
/* Copy the UDP header and payload into the buffer. */
|
/* Copy the UDP header and payload into the buffer. */
|
||||||
memcpy(nhdr->hdr, &udp, sizeof(struct udp_hdr));
|
memcpy(LOWPAN_NHDR_DATA(nhdr), &udp, sizeof(struct udp_hdr));
|
||||||
tvb_memcpy(tvb, nhdr->hdr + sizeof(struct udp_hdr), offset, tvb_length_remaining(tvb, offset));
|
tvb_memcpy(tvb, LOWPAN_NHDR_DATA(nhdr) + sizeof(struct udp_hdr), offset, tvb_length_remaining(tvb, offset));
|
||||||
return nhdr;
|
return nhdr;
|
||||||
}
|
}
|
||||||
/*=====================================================
|
/*=====================================================
|
||||||
|
@ -1874,7 +1874,7 @@ dissect_6lowpan_mesh(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
||||||
if (pinfo->layer_names && pinfo->layer_names->str) {
|
if (pinfo->layer_names && pinfo->layer_names->str) {
|
||||||
/* Ensure the MAC layer is IEEE 802.15.4 */
|
/* Ensure the MAC layer is IEEE 802.15.4 */
|
||||||
if (strstr(pinfo->layer_names->str, "wpan") != NULL) {
|
if (strstr(pinfo->layer_names->str, "wpan") != NULL) {
|
||||||
ieee802154_packet * packet = pinfo->private_data;
|
ieee802154_packet * packet = (ieee802154_packet *)pinfo->private_data;
|
||||||
if (packet->src_addr_mode != IEEE802154_FCF_ADDR_NONE) src_pan = packet->src_pan;
|
if (packet->src_addr_mode != IEEE802154_FCF_ADDR_NONE) src_pan = packet->src_pan;
|
||||||
if (packet->dst_addr_mode != IEEE802154_FCF_ADDR_NONE) dst_pan = packet->dst_pan;
|
if (packet->dst_addr_mode != IEEE802154_FCF_ADDR_NONE) dst_pan = packet->dst_pan;
|
||||||
}
|
}
|
||||||
|
@ -1915,11 +1915,13 @@ dissect_6lowpan_mesh(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
guint16 addr16 = tvb_get_ntohs(tvb, offset);
|
guint16 addr16 = tvb_get_ntohs(tvb, offset);
|
||||||
|
guint8 * ifcid;
|
||||||
if (tree) {
|
if (tree) {
|
||||||
proto_tree_add_uint(mesh_tree, hf_6lowpan_mesh_orig16, tvb, offset, sizeof(guint16), addr16);
|
proto_tree_add_uint(mesh_tree, hf_6lowpan_mesh_orig16, tvb, offset, sizeof(guint16), addr16);
|
||||||
}
|
}
|
||||||
src_ifcid = ep_alloc(sizeof(guint64));
|
ifcid = (guint8 *)ep_alloc(sizeof(guint64));
|
||||||
lowpan_addr16_to_ifcid(addr16, src_pan, (guint8 *)src_ifcid);
|
lowpan_addr16_to_ifcid(addr16, src_pan, ifcid);
|
||||||
|
src_ifcid = ifcid;
|
||||||
offset += sizeof(guint16);
|
offset += sizeof(guint16);
|
||||||
}
|
}
|
||||||
SET_ADDRESS(&pinfo->src, AT_EUI64, sizeof(guint64), src_ifcid);
|
SET_ADDRESS(&pinfo->src, AT_EUI64, sizeof(guint64), src_ifcid);
|
||||||
|
@ -1936,11 +1938,13 @@ dissect_6lowpan_mesh(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
guint16 addr16 = tvb_get_ntohs(tvb, offset);
|
guint16 addr16 = tvb_get_ntohs(tvb, offset);
|
||||||
|
guint8 * ifcid;
|
||||||
if (tree) {
|
if (tree) {
|
||||||
proto_tree_add_uint(mesh_tree, hf_6lowpan_mesh_dest16, tvb, offset, sizeof(guint16), addr16);
|
proto_tree_add_uint(mesh_tree, hf_6lowpan_mesh_dest16, tvb, offset, sizeof(guint16), addr16);
|
||||||
}
|
}
|
||||||
dst_ifcid = ep_alloc(sizeof(guint64));
|
ifcid = (guint8 *)ep_alloc(sizeof(guint64));
|
||||||
lowpan_addr16_to_ifcid(addr16, dst_pan, (guint8 *)dst_ifcid);
|
lowpan_addr16_to_ifcid(addr16, dst_pan, ifcid);
|
||||||
|
dst_ifcid = ifcid;
|
||||||
offset += sizeof(guint16);
|
offset += sizeof(guint16);
|
||||||
}
|
}
|
||||||
SET_ADDRESS(&pinfo->dst, AT_EUI64, sizeof(guint64), dst_ifcid);
|
SET_ADDRESS(&pinfo->dst, AT_EUI64, sizeof(guint64), dst_ifcid);
|
||||||
|
|
Loading…
Reference in New Issue