Various minor mods;

- check-col() not needed;
- use tvb_new_subset_remaining() iso tvb_new();
- #if 0 (currently ?) unused 'erf_handle';
- Convert some '4 space tabs' to 4 spaces;
- other reformatting.

svn path=/trunk/; revision=40446
This commit is contained in:
Bill Meier 2012-01-12 22:25:42 +00:00
parent d412a94dd5
commit 77a5dfa8e6
2 changed files with 99 additions and 97 deletions

View file

@ -85,7 +85,9 @@ static dissector_handle_t nbap_handle;
static dissector_handle_t ethwithfcs_handle;
static dissector_handle_t ethwithoutfcs_handle;
static dissector_handle_t fphint_handle;
#if 0
static dissector_handle_t erf_handle;
#endif
static dissector_table_t meta_dissector_table;
@ -165,16 +167,16 @@ static const value_string meta_direction_vals[] = {
static guint16 skip_item(proto_tree *meta_tree, tvbuff_t *tvb, packet_info *pinfo _U_, guint16 offs)
{
guint16 id;
guint8 type, len, aligned_len, total_len;
guint16 id;
guint8 type, len, aligned_len, total_len;
proto_tree *item_tree;
proto_item *subti;
id = tvb_get_letohs(tvb, offs); offs += 2;
type = tvb_get_guint8(tvb, offs); offs++;
len = tvb_get_guint8(tvb, offs); offs++;
id = tvb_get_letohs(tvb, offs); offs += 2;
type = tvb_get_guint8(tvb, offs); offs++;
len = tvb_get_guint8(tvb, offs); offs++;
aligned_len = (len + 3) & 0xfffc;
total_len = aligned_len + 4; /* 4: id, type, len fields */
total_len = aligned_len + 4; /* 4: id, type, len fields */
subti = proto_tree_add_item(meta_tree, hf_meta_item, tvb, offs - 4,
aligned_len + 4, ENC_NA);
@ -195,13 +197,13 @@ static guint16 skip_item(proto_tree *meta_tree, tvbuff_t *tvb, packet_info *pinf
*/
static guint16 evaluate_meta_item_pcap(proto_tree *meta_tree, tvbuff_t *tvb, packet_info *pinfo, guint16 offs)
{
guint16 id;
guint8 type, len, aligned_len, total_len;
guint16 id;
guint8 type, len, aligned_len, total_len;
proto_tree *item_tree;
proto_item *subti;
/* field values */
guint8 dir;
guint64 ts;
guint8 dir;
guint64 ts;
id = tvb_get_letohs(tvb, offs); offs += 2;
type = tvb_get_guint8(tvb, offs); offs++;
@ -247,19 +249,19 @@ static guint16 evaluate_meta_item_pcap(proto_tree *meta_tree, tvbuff_t *tvb, pac
*/
static guint16 evaluate_meta_item_dxt(proto_tree *meta_tree, tvbuff_t *tvb, packet_info *pinfo, guint16 offs)
{
guint16 id;
guint8 type, len, aligned_len, total_len;
proto_tree *item_tree;
proto_item *subti;
guint16 id;
guint8 type, len, aligned_len, total_len;
proto_tree *item_tree;
proto_item *subti;
/* field values */
guint8 dir, nsapi, rat, aal5proto, *apn, *calling, *called;
guint16 phylinkid, localdevid, remotedevid, tapgroupid;
guint32 tlli;
guint64 ts, imsi, imei, cell;
guint8 dir, nsapi, rat, aal5proto, *apn, *calling, *called;
guint16 phylinkid, localdevid, remotedevid, tapgroupid;
guint32 tlli;
guint64 ts, imsi, imei, cell;
sscop_payload_info *p_sscop_info;
const gchar *imsi_str, *imei_str;
proto_item *cell_item;
proto_tree *cell_tree = NULL;
const gchar *imsi_str, *imei_str;
proto_item *cell_item;
proto_tree *cell_tree = NULL;
id = tvb_get_letohs(tvb, offs); offs += 2;
type = tvb_get_guint8(tvb, offs); offs++;
@ -270,7 +272,7 @@ static guint16 evaluate_meta_item_dxt(proto_tree *meta_tree, tvbuff_t *tvb, pack
switch (id) {
case META_ID_DIRECTION:
dir = tvb_get_guint8(tvb, offs);
pinfo->p2p_dir = dir == META_DIR_UP ? P2P_DIR_RECV : P2P_DIR_SENT;
pinfo->p2p_dir = (dir == META_DIR_UP ? P2P_DIR_RECV : P2P_DIR_SENT);
proto_tree_add_uint(meta_tree, hf_meta_item_direction, tvb, offs, 1, dir);
break;
case META_ID_TIMESTAMP64:
@ -289,16 +291,16 @@ static guint16 evaluate_meta_item_dxt(proto_tree *meta_tree, tvbuff_t *tvb, pack
offs, 1, nsapi);
break;
case META_ID_IMSI:
imsi = tvb_get_letoh64(tvb, offs);
imsi_str = tvb_bcd_dig_to_ep_str(tvb, offs, 8, NULL, FALSE);
proto_tree_add_uint64_format(meta_tree, hf_meta_item_imsi,
tvb, offs, 8, imsi, "IMSI: %s", imsi_str);
imsi = tvb_get_letoh64(tvb, offs);
imsi_str = tvb_bcd_dig_to_ep_str(tvb, offs, 8, NULL, FALSE);
proto_tree_add_uint64_format(meta_tree, hf_meta_item_imsi,
tvb, offs, 8, imsi, "IMSI: %s", imsi_str);
break;
case META_ID_IMEI:
imei = tvb_get_letoh64(tvb, offs);
imei_str = tvb_bcd_dig_to_ep_str(tvb, offs, 8, NULL, FALSE);
proto_tree_add_uint64_format(meta_tree, hf_meta_item_imei,
tvb, offs, 8, imei, "IMEI: %s", imei_str);
imei = tvb_get_letoh64(tvb, offs);
imei_str = tvb_bcd_dig_to_ep_str(tvb, offs, 8, NULL, FALSE);
proto_tree_add_uint64_format(meta_tree, hf_meta_item_imei,
tvb, offs, 8, imei, "IMEI: %s", imei_str);
break;
case META_ID_APN:
apn = tvb_get_string(tvb, offs, len);
@ -313,15 +315,15 @@ static guint16 evaluate_meta_item_dxt(proto_tree *meta_tree, tvbuff_t *tvb, pack
break;
case META_ID_CELL:
cell = tvb_get_ntoh64(tvb, offs);
cell_item = proto_tree_add_uint64_format(meta_tree, hf_meta_item_cell,
tvb, offs, 8, cell, "Mobile Cell");
cell_tree = proto_item_add_subtree(cell_item, ett_meta_cell);
de_gmm_rai(tvb, cell_tree, pinfo, offs, 8, NULL, 0);
de_cell_id(tvb, cell_tree, pinfo, offs + 6, 2, NULL, 0);
cell_item = proto_tree_add_uint64_format(meta_tree, hf_meta_item_cell,
tvb, offs, 8, cell, "Mobile Cell");
cell_tree = proto_item_add_subtree(cell_item, ett_meta_cell);
de_gmm_rai(tvb, cell_tree, pinfo, offs, 8, NULL, 0);
de_cell_id(tvb, cell_tree, pinfo, offs + 6, 2, NULL, 0);
break;
case META_ID_SIGNALING:
proto_tree_add_boolean(meta_tree, hf_meta_item_signaling, tvb,
offs, 0, 1);
offs, 0, 1);
break;
case META_ID_INCOMPLETE:
proto_tree_add_boolean(meta_tree, hf_meta_item_incomplete, tvb,
@ -445,20 +447,19 @@ static void
dissect_meta(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
#define META_HEADER_SIZE 8
guint16 schema, proto, hdrlen, reserved;
gint32 item_len;
guint32 aal2_ext, atm_hdr;
proto_tree *meta_tree = NULL;
proto_item *ti = NULL;
tvbuff_t *next_tvb;
dissector_handle_t next_dissector = NULL;
guint16 schema, proto, hdrlen, reserved;
gint32 item_len;
guint32 aal2_ext, atm_hdr;
proto_tree *meta_tree = NULL;
proto_item *ti = NULL;
tvbuff_t *next_tvb;
dissector_handle_t next_dissector = NULL;
if (check_col(pinfo->cinfo, COL_PROTOCOL))
col_set_str(pinfo->cinfo, COL_PROTOCOL, "META");
col_set_str(pinfo->cinfo, COL_PROTOCOL, "META");
schema = tvb_get_letohs(tvb, 0);
hdrlen = tvb_get_letohs(tvb, 2);
proto = tvb_get_letohs(tvb, 4);
schema = tvb_get_letohs(tvb, 0);
hdrlen = tvb_get_letohs(tvb, 2);
proto = tvb_get_letohs(tvb, 4);
reserved = tvb_get_letohs(tvb, 6);
if (tree) {
@ -500,17 +501,17 @@ dissect_meta(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
break;
case META_PROTO_DXT_ATM:
next_dissector = atm_untrunc_handle;
pinfo->pseudo_header->atm.aal = AAL_OAMCELL;
pinfo->pseudo_header->atm.aal = AAL_OAMCELL;
pinfo->pseudo_header->atm.type = TRAF_UNKNOWN;
break;
case META_PROTO_DXT_ATM_AAL2:
aal2_ext = tvb_get_ntohl(tvb, item_len + META_HEADER_SIZE); item_len += 4;
atm_hdr = tvb_get_ntohl(tvb, item_len + META_HEADER_SIZE); item_len += 4;
atm_hdr = tvb_get_ntohl(tvb, item_len + META_HEADER_SIZE); item_len += 4;
memset(&pinfo->pseudo_header->atm, 0, sizeof(pinfo->pseudo_header->atm));
pinfo->pseudo_header->atm.aal = AAL_2;
/* pinfo->pseudo_header->atm.flags = pinfo->p2p_dir; */
pinfo->pseudo_header->atm.vpi = ((atm_hdr & 0x0ff00000) >> 20);
pinfo->pseudo_header->atm.vci = ((atm_hdr & 0x000ffff0) >> 4);
pinfo->pseudo_header->atm.vpi = ((atm_hdr & 0x0ff00000) >> 20);
pinfo->pseudo_header->atm.vci = ((atm_hdr & 0x000ffff0) >> 4);
pinfo->pseudo_header->atm.aal2_cid = aal2_ext & 0x000000ff;
pinfo->pseudo_header->atm.type = TRAF_UMTS_FP;
next_dissector = atm_untrunc_handle;
@ -527,7 +528,7 @@ dissect_meta(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
dissector_get_uint_handle(meta_dissector_table, proto);
}
}
next_tvb = tvb_new_subset(tvb, item_len + META_HEADER_SIZE, -1, -1);
next_tvb = tvb_new_subset_remaining(tvb, item_len + META_HEADER_SIZE);
call_dissector(next_dissector ? next_dissector : data_handle,
next_tvb, pinfo, tree);
}
@ -575,7 +576,7 @@ proto_register_meta(void)
static gint *ett[] = {
&ett_meta,
&ett_meta_item,
&ett_meta_cell
&ett_meta_cell
};
proto_meta = proto_register_protocol("Metadata", "META", "meta");
@ -605,5 +606,7 @@ proto_reg_handoff_meta(void)
ethwithfcs_handle = find_dissector("eth_withfcs");
ethwithoutfcs_handle = find_dissector("eth_withoutfcs");
fphint_handle = find_dissector("fp_hint");
#if 0
erf_handle = find_dissector("erf");
#endif
}

View file

@ -22,55 +22,54 @@
*/
/* schemas */
#define META_SCHEMA_PCAP 1
#define META_SCHEMA_DXT 2
#define META_SCHEMA_PCAP 1
#define META_SCHEMA_DXT 2
/* protocols */
#define META_PROTO_DXT_ETHERNET 1
#define META_PROTO_DXT_ETHERNET_CRC 36
#define META_PROTO_DXT_ATM 41
#define META_PROTO_DXT_ERF_AAL5 49
#define META_PROTO_DXT_M3UA 61
#define META_PROTO_DXT_NBAP 69
#define META_PROTO_DXT_ATM_AAL2 76
#define META_PROTO_DXT_FP_HINT 82
#define META_PROTO_DXT_CONTAINER 127
#define META_PROTO_DXT_FP_CAPTURE 193
#define META_PROTO_DXT_ETHERNET 1
#define META_PROTO_DXT_ETHERNET_CRC 36
#define META_PROTO_DXT_ATM 41
#define META_PROTO_DXT_ERF_AAL5 49
#define META_PROTO_DXT_M3UA 61
#define META_PROTO_DXT_NBAP 69
#define META_PROTO_DXT_ATM_AAL2 76
#define META_PROTO_DXT_FP_HINT 82
#define META_PROTO_DXT_CONTAINER 127
#define META_PROTO_DXT_FP_CAPTURE 193
#define META_PROTO_DXT_UTRAN_CAPSULE 194
/* data types */
#define META_TYPE_NONE 0
#define META_TYPE_BOOLEAN 1
#define META_TYPE_UINT8 2
#define META_TYPE_UINT16 3
#define META_TYPE_UINT32 4
#define META_TYPE_UINT64 5
#define META_TYPE_STRING 16
#define META_TYPE_NONE 0
#define META_TYPE_BOOLEAN 1
#define META_TYPE_UINT8 2
#define META_TYPE_UINT16 3
#define META_TYPE_UINT32 4
#define META_TYPE_UINT64 5
#define META_TYPE_STRING 16
/* item ids */
#define META_ID_NULL 0
#define META_ID_DIRECTION 1
#define META_ID_SIGNALING 2
#define META_ID_INCOMPLETE 3
#define META_ID_DECIPHERED 4
#define META_ID_PAYLOADCUT 5
#define META_ID_TIMESTAMP64 6
#define META_ID_AAL5PROTO 7
#define META_ID_PHYLINKID 256
#define META_ID_LOCALDEVID 257
#define META_ID_REMOTEDEVID 258
#define META_ID_TAPGROUPID 259
#define META_ID_IMSI 1024
#define META_ID_IMEI 1025
#define META_ID_CELL 1026
#define META_ID_TLLI 1027
#define META_ID_NSAPI 1028
#define META_ID_APN 1029
#define META_ID_RAT 1030
#define META_ID_CALLING 1031
#define META_ID_CALLED 1032
#define META_ID_NULL 0
#define META_ID_DIRECTION 1
#define META_ID_SIGNALING 2
#define META_ID_INCOMPLETE 3
#define META_ID_DECIPHERED 4
#define META_ID_PAYLOADCUT 5
#define META_ID_TIMESTAMP64 6
#define META_ID_AAL5PROTO 7
#define META_ID_PHYLINKID 256
#define META_ID_LOCALDEVID 257
#define META_ID_REMOTEDEVID 258
#define META_ID_TAPGROUPID 259
#define META_ID_IMSI 1024
#define META_ID_IMEI 1025
#define META_ID_CELL 1026
#define META_ID_TLLI 1027
#define META_ID_NSAPI 1028
#define META_ID_APN 1029
#define META_ID_RAT 1030
#define META_ID_CALLING 1031
#define META_ID_CALLED 1032
enum meta_direction {
META_DIR_UP,
META_DIR_DOWN
META_DIR_UP,
META_DIR_DOWN
};