diff options
Diffstat (limited to 'epan/dissectors/asn1/goose/goose.cnf')
-rw-r--r-- | epan/dissectors/asn1/goose/goose.cnf | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/epan/dissectors/asn1/goose/goose.cnf b/epan/dissectors/asn1/goose/goose.cnf new file mode 100644 index 0000000000..3331736ca2 --- /dev/null +++ b/epan/dissectors/asn1/goose/goose.cnf @@ -0,0 +1,70 @@ +# goose.cnf +# goose conformation file + +#.MODULE_IMPORT + +#.EXPORTS + +#.PDU + +#.NO_EMIT ONLY_VALS +GOOSEpdu + +#.TYPE_RENAME + + +#.FN_BODY UtcTime + + guint32 len; + guint32 seconds; + guint32 fraction; + guint32 nanoseconds; + nstime_t ts; + gchar * ptime; + + len = tvb_reported_length_remaining(tvb, offset); + + if(len != 8) + { + proto_tree_add_expert(tree, actx->pinfo, &ei_goose_mal_utctime, tvb, offset, len); + if(hf_index >= 0) + { + proto_tree_add_string(tree, hf_index, tvb, offset, len, "????"); + } + return offset; + } + + seconds = tvb_get_ntohl(tvb, offset); + fraction = tvb_get_ntoh24(tvb, offset+4) * 0x100; /* Only 3 bytes are recommended */ + nanoseconds = (guint32)( ((guint64)fraction * G_GUINT64_CONSTANT(1000000000)) / G_GUINT64_CONSTANT(0x100000000) ) ; + + ts.secs = seconds; + ts.nsecs = nanoseconds; + + ptime = abs_time_to_str(wmem_packet_scope(), &ts, ABSOLUTE_TIME_UTC, TRUE); + + if(hf_index >= 0) + { + proto_tree_add_string(tree, hf_index, tvb, offset, len, ptime); + } + + return offset; + + + +#.TYPE_ATTR +UtcTime TYPE = FT_STRING DISPLAY = BASE_NONE + + +#.FIELD_RENAME +GetReferenceRequestPdu/offset getReferenceRequestPDU_offset +GSEMngtResponses/getGsReference gseMngtResponses_GetGSReference +GSEMngtResponses/getGoReference gseMngtResponses_GetGOReference +GSEMngtResponses/getGSSEDataOffset gseMngtResponses_GetGSSEDataOffset +GSEMngtResponses/getGOOSEElementNumber gseMngtResponses_GetGOOSEElementNumber + +#.FIELD_ATTR +IECGoosePdu/stNum TYPE = FT_UINT32 DISPLAY = BASE_DEC +IECGoosePdu/sqNum TYPE = FT_UINT32 DISPLAY = BASE_DEC + +#.END |