summaryrefslogtreecommitdiff
path: root/epan/dissectors/packet-esio.c
diff options
context:
space:
mode:
authorBill Meier <wmeier@newsguy.com>2010-08-28 19:50:00 +0000
committerBill Meier <wmeier@newsguy.com>2010-08-28 19:50:00 +0000
commitb3ed77c1b08811957b1499a3a130fd0a872ff6eb (patch)
treeb2b8f7b09fbee92df7079f8e46dd0f19ab72de91 /epan/dissectors/packet-esio.c
parent5fb37af39a7a79e667ef2b8e694e106187bab7b1 (diff)
downloadwireshark-b3ed77c1b08811957b1499a3a130fd0a872ff6eb.tar.gz
#inlude <emem.h> not req'd;
Use tvb_strncmp to compare for "ESIO" string in packet; Use consistent indentation conforming to the "editor modelines"; Minor other whitespce cleanup. svn path=/trunk/; revision=33983
Diffstat (limited to 'epan/dissectors/packet-esio.c')
-rw-r--r--epan/dissectors/packet-esio.c309
1 files changed, 154 insertions, 155 deletions
diff --git a/epan/dissectors/packet-esio.c b/epan/dissectors/packet-esio.c
index 15bfbff242..7f35ecd384 100644
--- a/epan/dissectors/packet-esio.c
+++ b/epan/dissectors/packet-esio.c
@@ -29,7 +29,6 @@
#include <glib.h>
#include <epan/packet.h>
-#include <epan/emem.h>
#include <epan/expert.h>
/* Telegram types*/
@@ -84,34 +83,34 @@ static const value_string esio_sts_types[] = {
static gboolean
is_esio_pdu(tvbuff_t *tvb)
{
- /* we need at least 8 bytes to determine whether this is
- Ether-S-I/O or not*/
- /* minimal length is 20 bytes*/
- if(tvb_length(tvb)<20){
- return FALSE;
- }
- /* First four byte must be "ESIO"*/
- if (tvb_get_ntohl(tvb, 0) != 0x4553494F) {
- return (FALSE);
- }
- /* fifth byte must be 0*/
- if (tvb_get_guint8(tvb, 4) > 0x00) {
- return (FALSE);
- }
- /* sixth byte indicates telegram type and must be 0, 1 or 2*/
- if (tvb_get_guint8(tvb, 5) > 0x02) {
- return (FALSE);
- }
- /* seventh byte must be 0*/
- if (tvb_get_guint8(tvb, 6) > 0x00) {
- return (FALSE);
- }
- /* eight byte indicates telegram version and must be 0 (up to now)*/
- if (tvb_get_guint8(tvb, 7) > 0x00) {
- return (FALSE);
- }
- /*header seems to be Ether-S-I/O*/
- return TRUE;
+ /* we need at least 8 bytes to determine whether this is
+ Ether-S-I/O or not*/
+ /* minimal length is 20 bytes*/
+ if (tvb_length(tvb) < 20) {
+ return FALSE;
+ }
+ /* First four bytes must be "ESIO"*/
+ if (tvb_strneql(tvb, 0, "ESIO", 4) != 0) {
+ return FALSE;
+ }
+ /* fifth byte must be 0*/
+ if (tvb_get_guint8(tvb, 4) > 0x00) {
+ return FALSE;
+ }
+ /* sixth byte indicates telegram type and must be 0, 1 or 2*/
+ if (tvb_get_guint8(tvb, 5) > 0x02) {
+ return FALSE;
+ }
+ /* seventh byte must be 0*/
+ if (tvb_get_guint8(tvb, 6) > 0x00) {
+ return FALSE;
+ }
+ /* eight byte indicates telegram version and must be 0 (up to now)*/
+ if (tvb_get_guint8(tvb, 7) > 0x00) {
+ return FALSE;
+ }
+ /*header seems to be Ether-S-I/O*/
+ return TRUE;
}
/*Dissect the telegram*/
@@ -121,12 +120,12 @@ dissect_esio(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Set up structures needed to add the protocol subtree and manage it */
proto_item *ti, *et, *hi;
- proto_tree *esio_tree, *esio_header_tree, *esio_transfer_header_tree,
- *esio_data_tansfer_tree, *esio_data_tree;
+ proto_tree *esio_tree, *esio_header_tree, *esio_transfer_header_tree,
+ *esio_data_tansfer_tree, *esio_data_tree;
- gint i;
- gint offset;
- guint8 esio_nbr_data_transfers;
+ gint i;
+ gint offset;
+ guint8 esio_nbr_data_transfers;
guint16 esio_telegram_type;
guint16 esio_tlg_type;
guint16 esio_transfer_length;
@@ -135,8 +134,8 @@ dissect_esio(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
guint32 esio_dst_id;
/* does this look like an sbus pdu? */
- if(!is_esio_pdu(tvb)){
- return 0;
+ if (!is_esio_pdu(tvb)) {
+ return 0;
}
/* Make entries in Protocol column and Info column on summary display */
@@ -144,134 +143,134 @@ dissect_esio(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
col_clear(pinfo->cinfo, COL_INFO);
esio_telegram_type = tvb_get_guint8(tvb,5);
if (check_col(pinfo->cinfo, COL_INFO)) {
- switch (esio_telegram_type){
+ switch (esio_telegram_type) {
case ESIO_TRANSFER:
- esio_src_id = tvb_get_ntohl(tvb,16);
- esio_nbr_data_transfers = tvb_get_guint8(tvb, 20);
- esio_dst_id = tvb_get_ntohl(tvb,26);
- col_add_fstr( pinfo->cinfo, COL_INFO,
- "Data transfer: Src ID: %d, Dst ID(s): %d",
- esio_src_id, esio_dst_id);
- if (esio_nbr_data_transfers>1) {
- col_append_fstr( pinfo->cinfo, COL_INFO,
- " ...");
- }
- break;
+ esio_src_id = tvb_get_ntohl(tvb,16);
+ esio_nbr_data_transfers = tvb_get_guint8(tvb, 20);
+ esio_dst_id = tvb_get_ntohl(tvb,26);
+ col_add_fstr( pinfo->cinfo, COL_INFO,
+ "Data transfer: Src ID: %d, Dst ID(s): %d",
+ esio_src_id, esio_dst_id);
+ if (esio_nbr_data_transfers > 1) {
+ col_append_fstr( pinfo->cinfo, COL_INFO,
+ " ...");
+ }
+ break;
case ESIO_STATUS:
- esio_src_id = tvb_get_ntohl(tvb,16);
- col_add_fstr( pinfo->cinfo, COL_INFO,
- "Status/diag telegram: Src ID: %d",
- esio_src_id);
- break;
+ esio_src_id = tvb_get_ntohl(tvb,16);
+ col_add_fstr( pinfo->cinfo, COL_INFO,
+ "Status/diag telegram: Src ID: %d",
+ esio_src_id);
+ break;
default:
- /* All other telegrams */
- col_add_str( pinfo->cinfo, COL_INFO,
- "Unknown telegram");
- break;
+ /* All other telegrams */
+ col_set_str( pinfo->cinfo, COL_INFO,
+ "Unknown telegram");
+ break;
}
}
/* create display subtree for the protocol */
- if (tree) {
- offset =0;
- ti = proto_tree_add_item(tree, proto_esio, tvb, offset, -1, FALSE);
- esio_tree = proto_item_add_subtree(ti, ett_esio);
+ if (tree) {
+ offset =0;
+ ti = proto_tree_add_item(tree, proto_esio, tvb, offset, -1, FALSE);
+ esio_tree = proto_item_add_subtree(ti, ett_esio);
/*Add subtree for Ether-S-I/O header*/
- et = proto_tree_add_text(esio_tree, tvb, offset, 12, "Ether-S-I/O header");
- esio_header_tree = proto_item_add_subtree(et, ett_esio_header);
- offset +=4; /*first four bytes are "ESIO"*/
+ et = proto_tree_add_text(esio_tree, tvb, offset, 12, "Ether-S-I/O header");
+ esio_header_tree = proto_item_add_subtree(et, ett_esio_header);
+ offset +=4; /*first four bytes are "ESIO"*/
/* add items to the Ether-S-I/O header subtree*/
- esio_tlg_type = tvb_get_ntohs(tvb,offset);
- proto_tree_add_item(esio_header_tree,
- hf_esio_type, tvb, offset, 2, FALSE);
- offset += 2;
- proto_tree_add_item(esio_header_tree,
- hf_esio_version, tvb, offset, 2, FALSE);
- offset += 2;
- proto_tree_add_item(esio_header_tree,
- hf_esio_length, tvb, offset, 2, FALSE);
- offset += 2;
- proto_tree_add_item(esio_header_tree,
- hf_esio_transaction_id, tvb, offset, 2, FALSE);
- offset += 2;
- switch (esio_tlg_type){
- case ESIO_TRANSFER:
- /*Add subtree for Ether-S-I/O header*/
- et = proto_tree_add_text(esio_tree, tvb, offset, 12, "Transfer header");
- esio_transfer_header_tree = proto_item_add_subtree(et, ett_esio_transfer_header);
- proto_tree_add_item(esio_transfer_header_tree,
- hf_esio_tlg_id, tvb, offset, 4, FALSE);
- offset += 4;
- proto_tree_add_item(esio_transfer_header_tree,
- hf_esio_src_stn_id, tvb, offset, 4, FALSE);
- offset += 4;
- esio_nbr_data_transfers = tvb_get_guint8(tvb,offset);
- proto_tree_add_item(esio_transfer_header_tree,
- hf_esio_data_nbr, tvb, offset, 1, FALSE);
- offset += 1;
- proto_tree_add_item(esio_transfer_header_tree,
- hf_esio_data_flags, tvb, offset, 1, FALSE);
- offset += 1;
- for (i=((esio_nbr_data_transfers)); i>0; i--) {
- /*Add subtree(s) for Ether-S-I/O data transfers*/
- esio_transfer_dest_id = tvb_get_ntohl(tvb,(offset+4));
- esio_transfer_length = tvb_get_ntohs(tvb,(offset+8));
- et = proto_tree_add_text(esio_tree, tvb, offset,
- (esio_transfer_length + 10), "Data transfer to ID: %d ",
- esio_transfer_dest_id);
- esio_data_tansfer_tree = proto_item_add_subtree(et, ett_esio_transfer_data);
- proto_tree_add_item(esio_data_tansfer_tree,
- hf_esio_data_transfer_id, tvb, offset, 4, FALSE);
- offset += 4;
- proto_tree_add_item(esio_data_tansfer_tree,
- hf_esio_data_dest_id, tvb, offset, 4, FALSE);
- offset += 4;
- proto_tree_add_item(esio_data_tansfer_tree,
- hf_esio_data_length, tvb, offset, 2, FALSE);
- offset += 2;
- /*here comes the data*/
- et = proto_tree_add_text(esio_data_tansfer_tree, tvb, offset,
- esio_transfer_length, "Data bytes ");
- esio_data_tree = proto_item_add_subtree(et, ett_esio_data);
- for (i=((esio_transfer_length)); i>0; i--) {
- proto_tree_add_item(esio_data_tree,
- hf_esio_data, tvb, offset,
- 1, FALSE);
- offset += 1;
- }
- }
- break;
- case ESIO_STATUS:
- proto_tree_add_item(esio_tree,
- hf_esio_sts_type, tvb, offset, 2, FALSE);
- offset += 2;
- proto_tree_add_item(esio_tree,
- hf_esio_sts_size, tvb, offset, 2, FALSE);
- offset += 2;
- proto_tree_add_item(esio_tree,
- hf_esio_src_stn_id, tvb, offset, 4, FALSE);
- offset += 4;
- proto_tree_add_item(esio_tree,
- hf_esio_rio_sts, tvb, offset,
- 1, FALSE);
- offset += 1;
- hi = proto_tree_add_item(esio_tree,
- hf_esio_rio_tlgs_lost, tvb, offset,
- 1, FALSE);
- expert_add_info_format(pinfo, hi, PI_SEQUENCE, PI_NOTE,
- "Telegram(s) lost");
- offset += 1;
- proto_tree_add_item(esio_tree,
- hf_esio_rio_diag, tvb, offset,
- 1, FALSE);
- offset += 1;
- proto_tree_add_item(esio_tree,
- hf_esio_rio_flags, tvb, offset, 1, FALSE);
- offset += 1;
- break;
- default:
- break;
- }
+ esio_tlg_type = tvb_get_ntohs(tvb,offset);
+ proto_tree_add_item(esio_header_tree,
+ hf_esio_type, tvb, offset, 2, FALSE);
+ offset += 2;
+ proto_tree_add_item(esio_header_tree,
+ hf_esio_version, tvb, offset, 2, FALSE);
+ offset += 2;
+ proto_tree_add_item(esio_header_tree,
+ hf_esio_length, tvb, offset, 2, FALSE);
+ offset += 2;
+ proto_tree_add_item(esio_header_tree,
+ hf_esio_transaction_id, tvb, offset, 2, FALSE);
+ offset += 2;
+ switch (esio_tlg_type) {
+ case ESIO_TRANSFER:
+ /*Add subtree for Ether-S-I/O header*/
+ et = proto_tree_add_text(esio_tree, tvb, offset, 12, "Transfer header");
+ esio_transfer_header_tree = proto_item_add_subtree(et, ett_esio_transfer_header);
+ proto_tree_add_item(esio_transfer_header_tree,
+ hf_esio_tlg_id, tvb, offset, 4, FALSE);
+ offset += 4;
+ proto_tree_add_item(esio_transfer_header_tree,
+ hf_esio_src_stn_id, tvb, offset, 4, FALSE);
+ offset += 4;
+ esio_nbr_data_transfers = tvb_get_guint8(tvb,offset);
+ proto_tree_add_item(esio_transfer_header_tree,
+ hf_esio_data_nbr, tvb, offset, 1, FALSE);
+ offset += 1;
+ proto_tree_add_item(esio_transfer_header_tree,
+ hf_esio_data_flags, tvb, offset, 1, FALSE);
+ offset += 1;
+ for (i=((esio_nbr_data_transfers)); i>0; i--) {
+ /*Add subtree(s) for Ether-S-I/O data transfers*/
+ esio_transfer_dest_id = tvb_get_ntohl(tvb,(offset+4));
+ esio_transfer_length = tvb_get_ntohs(tvb,(offset+8));
+ et = proto_tree_add_text(esio_tree, tvb, offset,
+ (esio_transfer_length + 10), "Data transfer to ID: %d ",
+ esio_transfer_dest_id);
+ esio_data_tansfer_tree = proto_item_add_subtree(et, ett_esio_transfer_data);
+ proto_tree_add_item(esio_data_tansfer_tree,
+ hf_esio_data_transfer_id, tvb, offset, 4, FALSE);
+ offset += 4;
+ proto_tree_add_item(esio_data_tansfer_tree,
+ hf_esio_data_dest_id, tvb, offset, 4, FALSE);
+ offset += 4;
+ proto_tree_add_item(esio_data_tansfer_tree,
+ hf_esio_data_length, tvb, offset, 2, FALSE);
+ offset += 2;
+ /*here comes the data*/
+ et = proto_tree_add_text(esio_data_tansfer_tree, tvb, offset,
+ esio_transfer_length, "Data bytes ");
+ esio_data_tree = proto_item_add_subtree(et, ett_esio_data);
+ for (i=((esio_transfer_length)); i>0; i--) {
+ proto_tree_add_item(esio_data_tree,
+ hf_esio_data, tvb, offset,
+ 1, FALSE);
+ offset += 1;
+ }
+ }
+ break;
+ case ESIO_STATUS:
+ proto_tree_add_item(esio_tree,
+ hf_esio_sts_type, tvb, offset, 2, FALSE);
+ offset += 2;
+ proto_tree_add_item(esio_tree,
+ hf_esio_sts_size, tvb, offset, 2, FALSE);
+ offset += 2;
+ proto_tree_add_item(esio_tree,
+ hf_esio_src_stn_id, tvb, offset, 4, FALSE);
+ offset += 4;
+ proto_tree_add_item(esio_tree,
+ hf_esio_rio_sts, tvb, offset,
+ 1, FALSE);
+ offset += 1;
+ hi = proto_tree_add_item(esio_tree,
+ hf_esio_rio_tlgs_lost, tvb, offset,
+ 1, FALSE);
+ expert_add_info_format(pinfo, hi, PI_SEQUENCE, PI_NOTE,
+ "Telegram(s) lost");
+ offset += 1;
+ proto_tree_add_item(esio_tree,
+ hf_esio_rio_diag, tvb, offset,
+ 1, FALSE);
+ offset += 1;
+ proto_tree_add_item(esio_tree,
+ hf_esio_rio_flags, tvb, offset, 1, FALSE);
+ offset += 1;
+ break;
+ default:
+ break;
+ }
} /*end of tree*/
return tvb_length(tvb);
/*End of dissect_sbus*/