aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-json.c
diff options
context:
space:
mode:
authorJakub Zawadzki <darkjames-ws@darkjames.pl>2013-08-16 21:52:35 +0000
committerJakub Zawadzki <darkjames-ws@darkjames.pl>2013-08-16 21:52:35 +0000
commit1356d07e8593b7b9828074465c0663af5eeadc56 (patch)
treed717177fc6fbe82afd72b60b79fd08a7ba5be2c2 /epan/dissectors/packet-json.c
parent9d79b3233a940a393c88d90f86511592048692cd (diff)
Convert my dissectors to new proto API.
svn path=/trunk/; revision=51397
Diffstat (limited to 'epan/dissectors/packet-json.c')
-rw-r--r--epan/dissectors/packet-json.c105
1 files changed, 53 insertions, 52 deletions
diff --git a/epan/dissectors/packet-json.c b/epan/dissectors/packet-json.c
index 83cdf28a15..fe72b24ce3 100644
--- a/epan/dissectors/packet-json.c
+++ b/epan/dissectors/packet-json.c
@@ -27,6 +27,8 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
+#define NEW_PROTO_TREE_API
+
#include "config.h"
#include <glib.h>
@@ -42,16 +44,36 @@ static gint ett_json_array = -1;
static gint ett_json_object = -1;
static gint ett_json_member = -1;
-static gint hf_json_array = -1;
-static gint hf_json_object = -1;
-static gint hf_json_member = -1;
-/* XXX, static gint hf_json_member_key = -1; */
+static header_field_info hfi_json_array HFI_INIT(proto_json) =
+ { "Array", "json.array", FT_NONE, BASE_NONE, NULL, 0x00, "JSON array", HFILL };
+
+static header_field_info hfi_json_object HFI_INIT(proto_json) =
+ { "Object", "json.object", FT_NONE, BASE_NONE, NULL, 0x00, "JSON object", HFILL };
+
+static header_field_info hfi_json_member HFI_INIT(proto_json) =
+ { "Member", "json.member", FT_NONE, BASE_NONE, NULL, 0x00, "JSON object member", HFILL };
+
+#if 0
+/* XXX */
+static header_field_info hfi_json_member_key HFI_INIT(proto_json) =
+ { "Key", "json.member.key", FT_NONE, BASE_NONE, NULL, 0x00, NULL, HFILL };
+#endif
+
+static header_field_info hfi_json_value_string HFI_INIT(proto_json) = /* FT_STRINGZ? */
+ { "String value", "json.value.string", FT_STRING, BASE_NONE, NULL, 0x00, "JSON string value", HFILL };
+
+static header_field_info hfi_json_value_number HFI_INIT(proto_json) = /* FT_DOUBLE/ FT_INT64? */
+ { "Number value", "json.value.number", FT_STRING, BASE_NONE, NULL, 0x00, "JSON number value", HFILL };
+
+static header_field_info hfi_json_value_false HFI_INIT(proto_json) =
+ { "False value", "json.value.false", FT_NONE, BASE_NONE, NULL, 0x00, "JSON false value", HFILL };
+
+static header_field_info hfi_json_value_null HFI_INIT(proto_json) =
+ { "Null value", "json.value.null", FT_NONE, BASE_NONE, NULL, 0x00, "JSON null value", HFILL };
+
+static header_field_info hfi_json_value_true HFI_INIT(proto_json) =
+ { "True value", "json.value.true", FT_NONE, BASE_NONE, NULL, 0x00, "JSON true value", HFILL };
-static gint hf_json_value_string = -1;
-static gint hf_json_value_number = -1;
-static gint hf_json_value_false = -1;
-static gint hf_json_value_null = -1;
-static gint hf_json_value_true = -1;
static tvbparse_wanted_t* want;
static tvbparse_wanted_t* want_ignore;
@@ -104,7 +126,7 @@ dissect_json(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
if (tree) {
- ti = proto_tree_add_item(tree, proto_json, tvb, 0, -1, ENC_NA);
+ ti = proto_tree_add_item_old(tree, proto_json, tvb, 0, -1, ENC_NA);
json_tree = proto_item_add_subtree(ti, ett_json);
if (data_name)
@@ -149,7 +171,7 @@ static void before_object(void *tvbparse_data, const void *wanted_data _U_, tvbp
proto_tree *subtree;
proto_item *ti;
- ti = proto_tree_add_item(tree, hf_json_object, tok->tvb, tok->offset, tok->len, ENC_NA);
+ ti = proto_tree_add_item(tree, &hfi_json_object, tok->tvb, tok->offset, tok->len, ENC_NA);
subtree = proto_item_add_subtree(ti, ett_json_object);
ep_stack_push(data->stack, subtree);
@@ -168,7 +190,7 @@ static void before_member(void *tvbparse_data, const void *wanted_data _U_, tvbp
proto_tree *subtree;
proto_item *ti;
- ti = proto_tree_add_item(tree, hf_json_member, tok->tvb, tok->offset, tok->len, ENC_NA);
+ ti = proto_tree_add_item(tree, &hfi_json_member, tok->tvb, tok->offset, tok->len, ENC_NA);
subtree = proto_item_add_subtree(ti, ett_json_member);
ep_stack_push(data->stack, subtree);
@@ -187,7 +209,7 @@ static void after_member(void *tvbparse_data, const void *wanted_data _U_, tvbpa
proto_item_append_text(tree, " Key: %s", key);
}
- /* XXX, hf_json_member_key */
+ /* XXX, &hfi_json_member_key */
}
}
@@ -198,7 +220,7 @@ static void before_array(void *tvbparse_data, const void *wanted_data _U_, tvbpa
proto_tree *subtree;
proto_item *ti;
- ti = proto_tree_add_item(tree, hf_json_array, tok->tvb, tok->offset, tok->len, ENC_NA);
+ ti = proto_tree_add_item(tree, &hfi_json_array, tok->tvb, tok->offset, tok->len, ENC_NA);
subtree = proto_item_add_subtree(ti, ett_json_array);
ep_stack_push(data->stack, subtree);
@@ -359,26 +381,26 @@ static void after_value(void *tvbparse_data, const void *wanted_data _U_, tvbpar
switch (value_id) {
case JSON_TOKEN_STRING:
if (tok->len >= 2)
- proto_tree_add_unicode_string(tree, hf_json_value_string, tok->tvb, tok->offset, tok->len, json_string_unescape(tok));
+ proto_tree_add_unicode_string(tree, hfi_json_value_string.id, tok->tvb, tok->offset, tok->len, json_string_unescape(tok));
else
- proto_tree_add_item(tree, hf_json_value_string, tok->tvb, tok->offset, tok->len, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(tree, &hfi_json_value_string, tok->tvb, tok->offset, tok->len, ENC_ASCII|ENC_NA);
break;
case JSON_TOKEN_NUMBER:
/* XXX, convert to number */
- proto_tree_add_item(tree, hf_json_value_number, tok->tvb, tok->offset, tok->len, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(tree, &hfi_json_value_number, tok->tvb, tok->offset, tok->len, ENC_ASCII|ENC_NA);
break;
case JSON_TOKEN_FALSE:
- proto_tree_add_item(tree, hf_json_value_false, tok->tvb, tok->offset, tok->len, ENC_NA);
+ proto_tree_add_item(tree, &hfi_json_value_false, tok->tvb, tok->offset, tok->len, ENC_NA);
break;
case JSON_TOKEN_NULL:
- proto_tree_add_item(tree, hf_json_value_null, tok->tvb, tok->offset, tok->len, ENC_NA);
+ proto_tree_add_item(tree, &hfi_json_value_null, tok->tvb, tok->offset, tok->len, ENC_NA);
break;
case JSON_TOKEN_TRUE:
- proto_tree_add_item(tree, hf_json_value_true, tok->tvb, tok->offset, tok->len, ENC_NA);
+ proto_tree_add_item(tree, &hfi_json_value_true, tok->tvb, tok->offset, tok->len, ENC_NA);
break;
case JSON_OBJECT:
@@ -534,42 +556,21 @@ proto_register_json(void) {
&ett_json_member
};
- static hf_register_info hf[] = {
- { &hf_json_array,
- { "Array", "json.array", FT_NONE, BASE_NONE, NULL, 0x00, "JSON array", HFILL }
- },
- { &hf_json_object,
- { "Object", "json.object", FT_NONE, BASE_NONE, NULL, 0x00, "JSON object", HFILL }
- },
- { &hf_json_member,
- { "Member", "json.member", FT_NONE, BASE_NONE, NULL, 0x00, "JSON object member", HFILL },
- },
-/* XXX
- { &hf_json_member_key,
- { "Key", "json.member.key", FT_NONE, BASE_NONE, NULL, 0x00, NULL, HFILL },
- },
-*/
- { &hf_json_value_string, /* FT_STRINGZ? */
- { "String value", "json.value.string", FT_STRING, BASE_NONE, NULL, 0x00, "JSON string value", HFILL },
- },
- { &hf_json_value_number, /* FT_DOUBLE/ FT_INT64? */
- { "Number value", "json.value.number", FT_STRING, BASE_NONE, NULL, 0x00, "JSON number value", HFILL },
- },
- { &hf_json_value_false,
- { "False value", "json.value.false", FT_NONE, BASE_NONE, NULL, 0x00, "JSON false value", HFILL },
- },
- { &hf_json_value_null,
- { "Null value", "json.value.null", FT_NONE, BASE_NONE, NULL, 0x00, "JSON null value", HFILL },
- },
- { &hf_json_value_true,
- { "True value", "json.value.true", FT_NONE, BASE_NONE, NULL, 0x00, "JSON true value", HFILL },
- },
-
+ static header_field_info *hfi[] = {
+ &hfi_json_array,
+ &hfi_json_object,
+ &hfi_json_member,
+ /* &hfi_json_member_key, */
+ &hfi_json_value_string,
+ &hfi_json_value_number,
+ &hfi_json_value_false,
+ &hfi_json_value_null,
+ &hfi_json_value_true,
};
proto_json = proto_register_protocol("JavaScript Object Notation", "JSON", "json");
- proto_register_field_array(proto_json, hf, array_length(hf));
+ proto_register_fields(proto_json, hfi, array_length(hfi));
proto_register_subtree_array(ett, array_length(ett));
register_dissector("json", dissect_json, proto_json);