aboutsummaryrefslogtreecommitdiffstats
path: root/asn1/goose
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2010-01-11 07:52:17 +0000
committerAnders Broman <anders.broman@ericsson.com>2010-01-11 07:52:17 +0000
commit0d26e8ad2d3dbb5e660d06359bbce15b2e03ccaa (patch)
tree47b2603665066eb20aab929e2685d0e1e5141140 /asn1/goose
parent19beda3affcba6b8779eeaa086c674c916a6db35 (diff)
From Gonzalo Casas:
Corrected utc-time display in goose dissector. https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=4378 svn path=/trunk/; revision=31484
Diffstat (limited to 'asn1/goose')
-rw-r--r--asn1/goose/goose.cnf55
-rw-r--r--asn1/goose/packet-goose-template.c2
2 files changed, 56 insertions, 1 deletions
diff --git a/asn1/goose/goose.cnf b/asn1/goose/goose.cnf
index dc8fa6ebd4..7f613345b1 100644
--- a/asn1/goose/goose.cnf
+++ b/asn1/goose/goose.cnf
@@ -13,6 +13,59 @@
#.TYPE_RENAME
-#.FIELD_RENAME
+#.FN_BODY UtcTime
+
+ guint32 len;
+ proto_item *cause;
+ guint32 seconds;
+ guint32 fraction;
+ guint32 nanoseconds;
+ nstime_t ts;
+ gchar * ptime;
+
+ len = tvb_length_remaining(tvb, offset);
+
+ if(len != 8)
+ {
+ cause = proto_tree_add_text(tree, tvb, offset, len,
+ "BER Error: malformed UTCTime encoding, "
+ "length must be 8 bytes");
+ proto_item_set_expert_flags(cause, PI_MALFORMED, PI_WARN);
+ expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "BER Error: malformed UTCTime encoding");
+ 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_GINT64_CONSTANT(1000000000U)) / G_GINT64_CONSTANT(0x100000000U) ) ;
+
+ ts.secs = seconds;
+ ts.nsecs = nanoseconds;
+
+ ptime = abs_time_to_str(&ts, 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
#.END
diff --git a/asn1/goose/packet-goose-template.c b/asn1/goose/packet-goose-template.c
index 10e31a6b1c..01996bf7d4 100644
--- a/asn1/goose/packet-goose-template.c
+++ b/asn1/goose/packet-goose-template.c
@@ -31,6 +31,8 @@
#include <epan/packet.h>
#include <epan/asn1.h>
#include <epan/etypes.h>
+#include <epan/expert.h>
+#include <epan/nstime.h>
#include <stdio.h>
#include <string.h>