/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ File: octvc1_common.c Copyright (c) 2014 Octasic Inc. All rights reserved. Description: Contain the wireshark module dissector related functions This program is free software; you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . Release: Octasic Application Development Framework OCTADF-01.00.01-B497 (2014/01/09) $Octasic_Revision: $ \*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ /***************************** INCLUDE FILES *******************************/ #include #include #include "../../../include/oct_ws_macro.h" #include "../include/module.h" #include "../include/octvc1_common.h" #include /**************************************************************************** MODULE API ENUMERATION STRING VALUES ****************************************************************************/ const value_string vals_tOCTVC1_OBJECT_CURSOR_ENUM[] = { { cOCTVC1_OBJECT_CURSOR_ENUM_DONE, "cOCTVC1_OBJECT_CURSOR_ENUM_DONE" }, { cOCTVC1_OBJECT_CURSOR_ENUM_SPECIFIC, "cOCTVC1_OBJECT_CURSOR_ENUM_SPECIFIC" }, { cOCTVC1_OBJECT_CURSOR_ENUM_FIRST, "cOCTVC1_OBJECT_CURSOR_ENUM_FIRST" }, { cOCTVC1_OBJECT_CURSOR_ENUM_NEXT, "cOCTVC1_OBJECT_CURSOR_ENUM_NEXT" }, { cOCTVC1_OBJECT_CURSOR_ENUM_SUB_OBJECT_FIRST, "cOCTVC1_OBJECT_CURSOR_ENUM_SUB_OBJECT_FIRST" }, { cOCTVC1_OBJECT_CURSOR_ENUM_SUB_OBJECT_NEXT, "cOCTVC1_OBJECT_CURSOR_ENUM_SUB_OBJECT_NEXT" }, { 0, NULL } }; /**************************************************************************** COMMON Registered ****************************************************************************/ int ahf_tOCTVC1_CURSOR_HANDLE_GET[2]; tWS_ENTITY_HANDLE ws_htOCTVC1_CURSOR_HANDLE_GET; void register_tOCTVC1_CURSOR_HANDLE_GET(void) { static hf_register_info hf[] = { { &ahf_tOCTVC1_CURSOR_HANDLE_GET[0], { "hObject", "octvc1.cursor.handle_get.hobject", FT_NONE, BASE_NONE, NULL, 0x0, "hObject",HFILL } }, { &ahf_tOCTVC1_CURSOR_HANDLE_GET[1], { "ulGetMode", "octvc1.cursor.handle_get.ulgetmode", FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_OBJECT_CURSOR_ENUM), 0x0, "ulGetMode",HFILL } }, }; static gint* ett[] = { &ws_htOCTVC1_CURSOR_HANDLE_GET.ett }; proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); }; int ahf_tOCTVC1_CURSOR_HANDLE_GET_HANDLE[3]; tWS_ENTITY_HANDLE ws_htOCTVC1_CURSOR_HANDLE_GET_HANDLE; void register_tOCTVC1_CURSOR_HANDLE_GET_HANDLE(void) { static hf_register_info hf[] = { { &ahf_tOCTVC1_CURSOR_HANDLE_GET_HANDLE[0], { "hObject", "octvc1.cursor.handle_get_handle.hobject", FT_NONE, BASE_NONE, NULL, 0x0, "hObject",HFILL } }, { &ahf_tOCTVC1_CURSOR_HANDLE_GET_HANDLE[1], { "ulGetMode", "octvc1.cursor.handle_get_handle.ulgetmode", FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_OBJECT_CURSOR_ENUM), 0x0, "ulGetMode",HFILL } }, { &ahf_tOCTVC1_CURSOR_HANDLE_GET_HANDLE[2], { "hSubObject", "octvc1.cursor.handle_get_handle.hsubobject", FT_NONE, BASE_NONE, NULL, 0x0, "hSubObject",HFILL } }, }; static gint* ett[] = { &ws_htOCTVC1_CURSOR_HANDLE_GET_HANDLE.ett }; proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); }; int ahf_tOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT[3]; tWS_ENTITY_HANDLE ws_htOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT; void register_tOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT(void) { static hf_register_info hf[] = { { &ahf_tOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT[0], { "hObject", "octvc1.cursor.handle_get_handle_object.hobject", FT_NONE, BASE_NONE, NULL, 0x0, "hObject",HFILL } }, { &ahf_tOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT[1], { "ulGetMode", "octvc1.cursor.handle_get_handle_object.ulgetmode", FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_OBJECT_CURSOR_ENUM), 0x0, "ulGetMode",HFILL } }, { &ahf_tOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT[2], { "hHandleObject", "octvc1.cursor.handle_get_handle_object.hhandleobject", FT_UINT32,BASE_HEX, NULL, 0x0, "hHandleObject",HFILL } }, }; static gint* ett[] = { &ws_htOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT.ett }; proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); }; int ahf_tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID[3]; tWS_ENTITY_HANDLE ws_htOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID; void register_tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID(void) { static hf_register_info hf[] = { { &ahf_tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID[0], { "hObject", "octvc1.cursor.handle_get_sub_object_id.hobject", FT_NONE, BASE_NONE, NULL, 0x0, "hObject",HFILL } }, { &ahf_tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID[1], { "ulGetMode", "octvc1.cursor.handle_get_sub_object_id.ulgetmode", FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_OBJECT_CURSOR_ENUM), 0x0, "ulGetMode",HFILL } }, { &ahf_tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID[2], { "ulSubObjectId", "octvc1.cursor.handle_get_sub_object_id.ulsubobjectid", FT_UINT32,BASE_HEX, NULL, 0x0, "ulSubObjectId",HFILL } }, }; static gint* ett[] = { &ws_htOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID.ett }; proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); }; int ahf_tOCTVC1_CURSOR_HANDLE_OBJECT_GET[2]; tWS_ENTITY_HANDLE ws_htOCTVC1_CURSOR_HANDLE_OBJECT_GET; void register_tOCTVC1_CURSOR_HANDLE_OBJECT_GET(void) { static hf_register_info hf[] = { { &ahf_tOCTVC1_CURSOR_HANDLE_OBJECT_GET[0], { "hObject", "octvc1.cursor.handle_object_get.hobject", FT_UINT32,BASE_HEX, NULL, 0x0, "hObject",HFILL } }, { &ahf_tOCTVC1_CURSOR_HANDLE_OBJECT_GET[1], { "ulGetMode", "octvc1.cursor.handle_object_get.ulgetmode", FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_OBJECT_CURSOR_ENUM), 0x0, "ulGetMode",HFILL } }, }; static gint* ett[] = { &ws_htOCTVC1_CURSOR_HANDLE_OBJECT_GET.ett }; proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); }; int ahf_tOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT[3]; tWS_ENTITY_HANDLE ws_htOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT; void register_tOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT(void) { static hf_register_info hf[] = { { &ahf_tOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT[0], { "hObject", "octvc1.cursor.handle_object_get_handle_object.hobject", FT_UINT32,BASE_HEX, NULL, 0x0, "hObject",HFILL } }, { &ahf_tOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT[1], { "ulGetMode", "octvc1.cursor.handle_object_get_handle_object.ulgetmode", FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_OBJECT_CURSOR_ENUM), 0x0, "ulGetMode",HFILL } }, { &ahf_tOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT[2], { "hHandleObjectGet", "octvc1.cursor.handle_object_get_handle_object.hhandleobjectget", FT_UINT32,BASE_HEX, NULL, 0x0, "hHandleObjectGet",HFILL } }, }; static gint* ett[] = { &ws_htOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT.ett }; proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); }; int ahf_tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID[3]; tWS_ENTITY_HANDLE ws_htOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID; void register_tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID(void) { static hf_register_info hf[] = { { &ahf_tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID[0], { "hObject", "octvc1.cursor.handle_object_get_sub_object_id.hobject", FT_UINT32,BASE_HEX, NULL, 0x0, "hObject",HFILL } }, { &ahf_tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID[1], { "ulGetMode", "octvc1.cursor.handle_object_get_sub_object_id.ulgetmode", FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_OBJECT_CURSOR_ENUM), 0x0, "ulGetMode",HFILL } }, { &ahf_tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID[2], { "ulSubObjectId", "octvc1.cursor.handle_object_get_sub_object_id.ulsubobjectid", FT_UINT32,BASE_HEX, NULL, 0x0, "ulSubObjectId",HFILL } }, }; static gint* ett[] = { &ws_htOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID.ett }; proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); }; int ahf_tOCTVC1_CURSOR_INDEX_GET[2]; tWS_ENTITY_HANDLE ws_htOCTVC1_CURSOR_INDEX_GET; void register_tOCTVC1_CURSOR_INDEX_GET(void) { static hf_register_info hf[] = { { &ahf_tOCTVC1_CURSOR_INDEX_GET[0], { "ulIndex", "octvc1.cursor.index_get.ulindex", FT_UINT32,BASE_HEX, NULL, 0x0, "ulIndex",HFILL } }, { &ahf_tOCTVC1_CURSOR_INDEX_GET[1], { "ulGetMode", "octvc1.cursor.index_get.ulgetmode", FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_OBJECT_CURSOR_ENUM), 0x0, "ulGetMode",HFILL } }, }; static gint* ett[] = { &ws_htOCTVC1_CURSOR_INDEX_GET.ett }; proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); }; /**************************************************************************** COMMON dissectors ****************************************************************************/ unsigned int dissect_tOCTVC1_CURSOR_HANDLE_GET(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtValue ) { proto_tree *field_tree = tree; unsigned int offset_0 = offset; gint bytes = tvb_length_remaining(tvb, offset); if (bytes < (gint)(sizeof(tOCTVC1_CURSOR_HANDLE_GET))) { proto_tree_add_text(tree, tvb, offset, bytes, "tOCTVC1_CURSOR_HANDLE_GET (%d byte%s) - Malformated packet...expected(%ld)", bytes, plurality(bytes, "", "s"), sizeof(tOCTVC1_CURSOR_HANDLE_GET)); return 1; } else { int temp_data = 0; proto_item *ti; bytes = sizeof(tOCTVC1_CURSOR_HANDLE_GET); ti = proto_tree_add_text(field_tree, tvb, offset, mWS_FIELDSIZE(tOCTVC1_CURSOR_HANDLE_GET, hObject), "hObject:tOCTVC1_HANDLE"); { proto_tree* sub_tree2; sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); offset = dissect_tOCTVC1_HANDLE( tvb, pinfo, sub_tree2, offset, pExtValue ); } temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CURSOR_HANDLE_GET[1], tvb, offset, mWS_FIELDSIZE(tOCTVC1_CURSOR_HANDLE_GET, ulGetMode), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CURSOR_HANDLE_GET[1], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_CURSOR_HANDLE_GET, ulGetMode); } return offset; }; unsigned int dissect_tOCTVC1_CURSOR_HANDLE_GET_HANDLE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtValue ) { proto_tree *field_tree = tree; unsigned int offset_0 = offset; gint bytes = tvb_length_remaining(tvb, offset); if (bytes < (gint)(sizeof(tOCTVC1_CURSOR_HANDLE_GET_HANDLE))) { proto_tree_add_text(tree, tvb, offset, bytes, "tOCTVC1_CURSOR_HANDLE_GET_HANDLE (%d byte%s) - Malformated packet...expected(%ld)", bytes, plurality(bytes, "", "s"), sizeof(tOCTVC1_CURSOR_HANDLE_GET_HANDLE)); return 1; } else { int temp_data = 0; proto_item *ti; bytes = sizeof(tOCTVC1_CURSOR_HANDLE_GET_HANDLE); ti = proto_tree_add_text(field_tree, tvb, offset, mWS_FIELDSIZE(tOCTVC1_CURSOR_HANDLE_GET_HANDLE, hObject), "hObject:tOCTVC1_HANDLE"); { proto_tree* sub_tree2; sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); offset = dissect_tOCTVC1_HANDLE( tvb, pinfo, sub_tree2, offset, pExtValue ); } temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CURSOR_HANDLE_GET_HANDLE[1], tvb, offset, mWS_FIELDSIZE(tOCTVC1_CURSOR_HANDLE_GET_HANDLE, ulGetMode), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CURSOR_HANDLE_GET_HANDLE[1], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_CURSOR_HANDLE_GET_HANDLE, ulGetMode); ti = proto_tree_add_text(field_tree, tvb, offset, mWS_FIELDSIZE(tOCTVC1_CURSOR_HANDLE_GET_HANDLE, hSubObject), "hSubObject:tOCTVC1_HANDLE"); { proto_tree* sub_tree2; sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); offset = dissect_tOCTVC1_HANDLE( tvb, pinfo, sub_tree2, offset, pExtValue ); } } return offset; }; unsigned int dissect_tOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtValue ) { proto_tree *field_tree = tree; unsigned int offset_0 = offset; gint bytes = tvb_length_remaining(tvb, offset); if (bytes < (gint)(sizeof(tOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT))) { proto_tree_add_text(tree, tvb, offset, bytes, "tOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT (%d byte%s) - Malformated packet...expected(%ld)", bytes, plurality(bytes, "", "s"), sizeof(tOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT)); return 1; } else { int temp_data = 0; proto_item *ti; bytes = sizeof(tOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT); ti = proto_tree_add_text(field_tree, tvb, offset, mWS_FIELDSIZE(tOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT, hObject), "hObject:tOCTVC1_HANDLE"); { proto_tree* sub_tree2; sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); offset = dissect_tOCTVC1_HANDLE( tvb, pinfo, sub_tree2, offset, pExtValue ); } temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT[1], tvb, offset, mWS_FIELDSIZE(tOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT, ulGetMode), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT[1], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT, ulGetMode); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT[2], tvb, offset, mWS_FIELDSIZE(tOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT, hHandleObject), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT[2], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT, hHandleObject); } return offset; }; unsigned int dissect_tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtValue ) { proto_tree *field_tree = tree; unsigned int offset_0 = offset; gint bytes = tvb_length_remaining(tvb, offset); if (bytes < (gint)(sizeof(tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID))) { proto_tree_add_text(tree, tvb, offset, bytes, "tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID (%d byte%s) - Malformated packet...expected(%ld)", bytes, plurality(bytes, "", "s"), sizeof(tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID)); return 1; } else { int temp_data = 0; proto_item *ti; bytes = sizeof(tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID); ti = proto_tree_add_text(field_tree, tvb, offset, mWS_FIELDSIZE(tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID, hObject), "hObject:tOCTVC1_HANDLE"); { proto_tree* sub_tree2; sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); offset = dissect_tOCTVC1_HANDLE( tvb, pinfo, sub_tree2, offset, pExtValue ); } temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID[1], tvb, offset, mWS_FIELDSIZE(tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID, ulGetMode), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID[1], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID, ulGetMode); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID[2], tvb, offset, mWS_FIELDSIZE(tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID, ulSubObjectId), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID[2], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID, ulSubObjectId); } return offset; }; unsigned int dissect_tOCTVC1_CURSOR_HANDLE_OBJECT_GET(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtValue ) { proto_tree *field_tree = tree; unsigned int offset_0 = offset; gint bytes = tvb_length_remaining(tvb, offset); if (bytes < (gint)(sizeof(tOCTVC1_CURSOR_HANDLE_OBJECT_GET))) { proto_tree_add_text(tree, tvb, offset, bytes, "tOCTVC1_CURSOR_HANDLE_OBJECT_GET (%d byte%s) - Malformated packet...expected(%ld)", bytes, plurality(bytes, "", "s"), sizeof(tOCTVC1_CURSOR_HANDLE_OBJECT_GET)); return 1; } else { int temp_data = 0; proto_item *ti; bytes = sizeof(tOCTVC1_CURSOR_HANDLE_OBJECT_GET); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CURSOR_HANDLE_OBJECT_GET[0], tvb, offset, mWS_FIELDSIZE(tOCTVC1_CURSOR_HANDLE_OBJECT_GET, hObject), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CURSOR_HANDLE_OBJECT_GET[0], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_CURSOR_HANDLE_OBJECT_GET, hObject); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CURSOR_HANDLE_OBJECT_GET[1], tvb, offset, mWS_FIELDSIZE(tOCTVC1_CURSOR_HANDLE_OBJECT_GET, ulGetMode), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CURSOR_HANDLE_OBJECT_GET[1], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_CURSOR_HANDLE_OBJECT_GET, ulGetMode); } return offset; }; unsigned int dissect_tOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtValue ) { proto_tree *field_tree = tree; unsigned int offset_0 = offset; gint bytes = tvb_length_remaining(tvb, offset); if (bytes < (gint)(sizeof(tOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT))) { proto_tree_add_text(tree, tvb, offset, bytes, "tOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT (%d byte%s) - Malformated packet...expected(%ld)", bytes, plurality(bytes, "", "s"), sizeof(tOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT)); return 1; } else { int temp_data = 0; proto_item *ti; bytes = sizeof(tOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT[0], tvb, offset, mWS_FIELDSIZE(tOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT, hObject), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT[0], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT, hObject); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT[1], tvb, offset, mWS_FIELDSIZE(tOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT, ulGetMode), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT[1], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT, ulGetMode); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT[2], tvb, offset, mWS_FIELDSIZE(tOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT, hHandleObjectGet), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT[2], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT, hHandleObjectGet); } return offset; }; unsigned int dissect_tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtValue ) { proto_tree *field_tree = tree; unsigned int offset_0 = offset; gint bytes = tvb_length_remaining(tvb, offset); if (bytes < (gint)(sizeof(tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID))) { proto_tree_add_text(tree, tvb, offset, bytes, "tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID (%d byte%s) - Malformated packet...expected(%ld)", bytes, plurality(bytes, "", "s"), sizeof(tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID)); return 1; } else { int temp_data = 0; proto_item *ti; bytes = sizeof(tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID[0], tvb, offset, mWS_FIELDSIZE(tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID, hObject), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID[0], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID, hObject); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID[1], tvb, offset, mWS_FIELDSIZE(tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID, ulGetMode), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID[1], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID, ulGetMode); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID[2], tvb, offset, mWS_FIELDSIZE(tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID, ulSubObjectId), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID[2], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID, ulSubObjectId); } return offset; }; unsigned int dissect_tOCTVC1_CURSOR_INDEX_GET(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtValue ) { proto_tree *field_tree = tree; unsigned int offset_0 = offset; gint bytes = tvb_length_remaining(tvb, offset); if (bytes < (gint)(sizeof(tOCTVC1_CURSOR_INDEX_GET))) { proto_tree_add_text(tree, tvb, offset, bytes, "tOCTVC1_CURSOR_INDEX_GET (%d byte%s) - Malformated packet...expected(%ld)", bytes, plurality(bytes, "", "s"), sizeof(tOCTVC1_CURSOR_INDEX_GET)); return 1; } else { int temp_data = 0; proto_item *ti; bytes = sizeof(tOCTVC1_CURSOR_INDEX_GET); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CURSOR_INDEX_GET[0], tvb, offset, mWS_FIELDSIZE(tOCTVC1_CURSOR_INDEX_GET, ulIndex), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CURSOR_INDEX_GET[0], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_CURSOR_INDEX_GET, ulIndex); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CURSOR_INDEX_GET[1], tvb, offset, mWS_FIELDSIZE(tOCTVC1_CURSOR_INDEX_GET, ulGetMode), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CURSOR_INDEX_GET[1], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_CURSOR_INDEX_GET, ulGetMode); } return offset; }; #include /**************************************************************************** MODULE API ENUMERATION STRING VALUES ****************************************************************************/ const value_string vals_tOCTVC1_BUFFER_FORMAT_ENUM[] = { { cOCTVC1_BUFFER_FORMAT_ENUM_UNKNOWN, "cOCTVC1_BUFFER_FORMAT_ENUM_UNKNOWN" }, { cOCTVC1_BUFFER_FORMAT_MAIN_ENUM_PCAP_TRACE, "cOCTVC1_BUFFER_FORMAT_MAIN_ENUM_PCAP_TRACE" }, { cOCTVC1_BUFFER_FORMAT_MAIN_ENUM_FILE_SYS, "cOCTVC1_BUFFER_FORMAT_MAIN_ENUM_FILE_SYS" }, { 0, NULL } }; #include /**************************************************************************** MODULE API ENUMERATION STRING VALUES ****************************************************************************/ const value_string vals_tOCTVC1_ETH_PORT_ID_ENUM[] = { { cOCTVC1_ETH_PORT_ID_ENUM_0, "cOCTVC1_ETH_PORT_ID_ENUM_0" }, { cOCTVC1_ETH_PORT_ID_ENUM_1, "cOCTVC1_ETH_PORT_ID_ENUM_1" }, { cOCTVC1_ETH_PORT_ID_ENUM_2, "cOCTVC1_ETH_PORT_ID_ENUM_2" }, { cOCTVC1_ETH_PORT_ID_ENUM_3, "cOCTVC1_ETH_PORT_ID_ENUM_3" }, { cOCTVC1_ETH_PORT_ID_ENUM_INVALID, "cOCTVC1_ETH_PORT_ID_ENUM_INVALID" }, { 0, NULL } }; #include /**************************************************************************** MODULE API ENUMERATION STRING VALUES ****************************************************************************/ const value_string vals_tOCTVC1_IP_VERSION_ENUM[] = { { cOCTVC1_IP_VERSION_ENUM_4, "cOCTVC1_IP_VERSION_ENUM_4" }, { cOCTVC1_IP_VERSION_ENUM_6, "cOCTVC1_IP_VERSION_ENUM_6" }, { cOCTVC1_IP_VERSION_ENUM_INVALID, "cOCTVC1_IP_VERSION_ENUM_INVALID" }, { 0, NULL } }; #include #include /**************************************************************************** MODULE API ENUMERATION STRING VALUES ****************************************************************************/ const value_string vals_tOCTVC1_VLAN_PROTOCOL_ID_ENUM[] = { { cOCTVC1_VLAN_PROTOCOL_ID_ENUM_8100, "cOCTVC1_VLAN_PROTOCOL_ID_ENUM_8100" }, { cOCTVC1_VLAN_PROTOCOL_ID_ENUM_88A8, "cOCTVC1_VLAN_PROTOCOL_ID_ENUM_88A8" }, { cOCTVC1_VLAN_PROTOCOL_ID_ENUM_9100, "cOCTVC1_VLAN_PROTOCOL_ID_ENUM_9100" }, { cOCTVC1_VLAN_PROTOCOL_ID_ENUM_9200, "cOCTVC1_VLAN_PROTOCOL_ID_ENUM_9200" }, { 0, NULL } }; /**************************************************************************** COMMON Registered ****************************************************************************/ int ahf_tOCTVC1_VLAN_TAG[3]; tWS_ENTITY_HANDLE ws_htOCTVC1_VLAN_TAG; void register_tOCTVC1_VLAN_TAG(void) { static hf_register_info hf[] = { { &ahf_tOCTVC1_VLAN_TAG[0], { "ulPriority", "octvc1.vlan.tag.ulpriority", FT_UINT32,BASE_HEX, NULL, 0x0, "ulPriority",HFILL } }, { &ahf_tOCTVC1_VLAN_TAG[1], { "ulVlanId", "octvc1.vlan.tag.ulvlanid", FT_UINT32,BASE_HEX, NULL, 0x0, "ulVlanId",HFILL } }, { &ahf_tOCTVC1_VLAN_TAG[2], { "ulProtocolId", "octvc1.vlan.tag.ulprotocolid", FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_VLAN_PROTOCOL_ID_ENUM), 0x0, "ulProtocolId",HFILL } }, }; static gint* ett[] = { &ws_htOCTVC1_VLAN_TAG.ett }; proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); }; int ahf_tOCTVC1_VLAN_HEADER_INFO[2]; tWS_ENTITY_HANDLE ws_htOCTVC1_VLAN_HEADER_INFO; void register_tOCTVC1_VLAN_HEADER_INFO(void) { static hf_register_info hf[] = { { &ahf_tOCTVC1_VLAN_HEADER_INFO[0], { "ulNumVlanTag", "octvc1.vlan.header_info.ulnumvlantag", FT_UINT32,BASE_HEX, NULL, 0x0, "ulNumVlanTag",HFILL } }, { &ahf_tOCTVC1_VLAN_HEADER_INFO[1], { "aVlanTag", "octvc1.vlan.header_info.avlantag", FT_NONE, BASE_NONE, NULL, 0x0, "aVlanTag",HFILL } }, }; static gint* ett[] = { &ws_htOCTVC1_VLAN_HEADER_INFO.ett }; proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); }; /**************************************************************************** COMMON dissectors ****************************************************************************/ unsigned int dissect_tOCTVC1_VLAN_TAG(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtValue ) { proto_tree *field_tree = tree; unsigned int offset_0 = offset; gint bytes = tvb_length_remaining(tvb, offset); if (bytes < (gint)(sizeof(tOCTVC1_VLAN_TAG))) { proto_tree_add_text(tree, tvb, offset, bytes, "tOCTVC1_VLAN_TAG (%d byte%s) - Malformated packet...expected(%ld)", bytes, plurality(bytes, "", "s"), sizeof(tOCTVC1_VLAN_TAG)); return 1; } else { int temp_data = 0; proto_item *ti; bytes = sizeof(tOCTVC1_VLAN_TAG); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_VLAN_TAG[0], tvb, offset, mWS_FIELDSIZE(tOCTVC1_VLAN_TAG, ulPriority), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_VLAN_TAG[0], tvb, offset, 4, temp_data); if( ( (unsigned int)temp_data < 0) || ( (unsigned int)temp_data > 7 ) ) { proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); proto_item_append_text(ti," [Out of range - (0..7)]" ); } } offset += mWS_FIELDSIZE(tOCTVC1_VLAN_TAG, ulPriority); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_VLAN_TAG[1], tvb, offset, mWS_FIELDSIZE(tOCTVC1_VLAN_TAG, ulVlanId), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_VLAN_TAG[1], tvb, offset, 4, temp_data); if( ( (unsigned int)temp_data < 0) || ( (unsigned int)temp_data > 4095 ) ) { proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); proto_item_append_text(ti," [Out of range - (0..4095)]" ); } } offset += mWS_FIELDSIZE(tOCTVC1_VLAN_TAG, ulVlanId); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_VLAN_TAG[2], tvb, offset, mWS_FIELDSIZE(tOCTVC1_VLAN_TAG, ulProtocolId), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_VLAN_TAG[2], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_VLAN_TAG, ulProtocolId); } return offset; }; unsigned int dissect_tOCTVC1_VLAN_HEADER_INFO(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtValue ) { proto_tree *field_tree = tree; unsigned int offset_0 = offset; gint bytes = tvb_length_remaining(tvb, offset); if (bytes < (gint)(sizeof(tOCTVC1_VLAN_HEADER_INFO))) { proto_tree_add_text(tree, tvb, offset, bytes, "tOCTVC1_VLAN_HEADER_INFO (%d byte%s) - Malformated packet...expected(%ld)", bytes, plurality(bytes, "", "s"), sizeof(tOCTVC1_VLAN_HEADER_INFO)); return 1; } else { int temp_data = 0; proto_item *ti; bytes = sizeof(tOCTVC1_VLAN_HEADER_INFO); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_VLAN_HEADER_INFO[0], tvb, offset, mWS_FIELDSIZE(tOCTVC1_VLAN_HEADER_INFO, ulNumVlanTag), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_VLAN_HEADER_INFO[0], tvb, offset, 4, temp_data); if( ( (unsigned int)temp_data < 0) || ( (unsigned int)temp_data > cOCTVC1_VLAN_MAX_TAG ) ) { proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); proto_item_append_text(ti," [Out of range - (0..cOCTVC1_VLAN_MAX_TAG)]" ); } } offset += mWS_FIELDSIZE(tOCTVC1_VLAN_HEADER_INFO, ulNumVlanTag); ti = proto_tree_add_text(field_tree, tvb, offset, mWS_FIELDSIZE(tOCTVC1_VLAN_HEADER_INFO, aVlanTag), "aVlanTag:tOCTVC1_VLAN_TAG"); { int i, ofs=offset; proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); for( i=0; i<4; i++ ) { { proto_tree* sub_tree2; ti = proto_tree_add_text(sub_tree, tvb, offset, sizeof(tOCTVC1_VLAN_TAG), "[%d]:", i); sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); offset = dissect_tOCTVC1_VLAN_TAG( tvb, pinfo, sub_tree2, offset, pExtValue ); } } } } return offset; }; #include #include /**************************************************************************** COMMON Registered ****************************************************************************/ int ahf_tOCTVC1_LIST_HANDLE_GET[2]; tWS_ENTITY_HANDLE ws_htOCTVC1_LIST_HANDLE_GET; void register_tOCTVC1_LIST_HANDLE_GET(void) { static hf_register_info hf[] = { { &ahf_tOCTVC1_LIST_HANDLE_GET[0], { "ulNumHandle", "octvc1.list.handle_get.ulnumhandle", FT_UINT32,BASE_HEX, NULL, 0x0, "ulNumHandle",HFILL } }, { &ahf_tOCTVC1_LIST_HANDLE_GET[1], { "aHandle", "octvc1.list.handle_get.ahandle", FT_NONE, BASE_NONE, NULL, 0x0, "aHandle",HFILL } }, }; static gint* ett[] = { &ws_htOCTVC1_LIST_HANDLE_GET.ett }; proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); }; int ahf_tOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID[3]; tWS_ENTITY_HANDLE ws_htOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID; void register_tOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID(void) { static hf_register_info hf[] = { { &ahf_tOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID[0], { "hParent", "octvc1.list.handle_get_sub_object_id.hparent", FT_NONE, BASE_NONE, NULL, 0x0, "hParent",HFILL } }, { &ahf_tOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID[1], { "ulNumSubObjectId", "octvc1.list.handle_get_sub_object_id.ulnumsubobjectid", FT_UINT32,BASE_HEX, NULL, 0x0, "ulNumSubObjectId",HFILL } }, { &ahf_tOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID[2], { "aSubObjectId", "octvc1.list.handle_get_sub_object_id.asubobjectid", FT_UINT32,BASE_HEX, NULL, 0x0, "aSubObjectId",HFILL } }, }; static gint* ett[] = { &ws_htOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID.ett }; proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); }; int ahf_tOCTVC1_LIST_HANDLE_OBJECT_GET[2]; tWS_ENTITY_HANDLE ws_htOCTVC1_LIST_HANDLE_OBJECT_GET; void register_tOCTVC1_LIST_HANDLE_OBJECT_GET(void) { static hf_register_info hf[] = { { &ahf_tOCTVC1_LIST_HANDLE_OBJECT_GET[0], { "ulNumHandleObject", "octvc1.list.handle_object_get.ulnumhandleobject", FT_UINT32,BASE_HEX, NULL, 0x0, "ulNumHandleObject",HFILL } }, { &ahf_tOCTVC1_LIST_HANDLE_OBJECT_GET[1], { "aHandleObject", "octvc1.list.handle_object_get.ahandleobject", FT_UINT32,BASE_HEX, NULL, 0x0, "aHandleObject",HFILL } }, }; static gint* ett[] = { &ws_htOCTVC1_LIST_HANDLE_OBJECT_GET.ett }; proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); }; int ahf_tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID[3]; tWS_ENTITY_HANDLE ws_htOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID; void register_tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID(void) { static hf_register_info hf[] = { { &ahf_tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID[0], { "hParent", "octvc1.list.handle_object_get_sub_object_id.hparent", FT_UINT32,BASE_HEX, NULL, 0x0, "hParent",HFILL } }, { &ahf_tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID[1], { "ulNumSubObjectId", "octvc1.list.handle_object_get_sub_object_id.ulnumsubobjectid", FT_UINT32,BASE_HEX, NULL, 0x0, "ulNumSubObjectId",HFILL } }, { &ahf_tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID[2], { "aSubObjectId", "octvc1.list.handle_object_get_sub_object_id.asubobjectid", FT_UINT32,BASE_HEX, NULL, 0x0, "aSubObjectId",HFILL } }, }; static gint* ett[] = { &ws_htOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID.ett }; proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); }; int ahf_tOCTVC1_LIST_INDEX_GET[2]; tWS_ENTITY_HANDLE ws_htOCTVC1_LIST_INDEX_GET; void register_tOCTVC1_LIST_INDEX_GET(void) { static hf_register_info hf[] = { { &ahf_tOCTVC1_LIST_INDEX_GET[0], { "ulNumIndex", "octvc1.list.index_get.ulnumindex", FT_UINT32,BASE_HEX, NULL, 0x0, "ulNumIndex",HFILL } }, { &ahf_tOCTVC1_LIST_INDEX_GET[1], { "aIndex", "octvc1.list.index_get.aindex", FT_UINT32,BASE_HEX, NULL, 0x0, "aIndex",HFILL } }, }; static gint* ett[] = { &ws_htOCTVC1_LIST_INDEX_GET.ett }; proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); }; /**************************************************************************** COMMON dissectors ****************************************************************************/ unsigned int dissect_tOCTVC1_LIST_HANDLE_GET(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtValue ) { proto_tree *field_tree = tree; unsigned int offset_0 = offset; gint bytes = tvb_length_remaining(tvb, offset); if (bytes < (gint)(sizeof(tOCTVC1_LIST_HANDLE_GET))) { proto_tree_add_text(tree, tvb, offset, bytes, "tOCTVC1_LIST_HANDLE_GET (%d byte%s) - Malformated packet...expected(%ld)", bytes, plurality(bytes, "", "s"), sizeof(tOCTVC1_LIST_HANDLE_GET)); return 1; } else { int temp_data = 0; proto_item *ti; bytes = sizeof(tOCTVC1_LIST_HANDLE_GET); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_LIST_HANDLE_GET[0], tvb, offset, mWS_FIELDSIZE(tOCTVC1_LIST_HANDLE_GET, ulNumHandle), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_LIST_HANDLE_GET[0], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_LIST_HANDLE_GET, ulNumHandle); ti = proto_tree_add_text(field_tree, tvb, offset, mWS_FIELDSIZE(tOCTVC1_LIST_HANDLE_GET, aHandle), "aHandle:tOCTVC1_HANDLE"); { int i, ofs=offset; proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); for( i=0; i<100; i++ ) { { proto_tree* sub_tree2; ti = proto_tree_add_text(sub_tree, tvb, offset, sizeof(tOCTVC1_HANDLE), "[%d]:", i); sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); offset = dissect_tOCTVC1_HANDLE( tvb, pinfo, sub_tree2, offset, pExtValue ); } } } } return offset; }; unsigned int dissect_tOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtValue ) { proto_tree *field_tree = tree; unsigned int offset_0 = offset; gint bytes = tvb_length_remaining(tvb, offset); if (bytes < (gint)(sizeof(tOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID))) { proto_tree_add_text(tree, tvb, offset, bytes, "tOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID (%d byte%s) - Malformated packet...expected(%ld)", bytes, plurality(bytes, "", "s"), sizeof(tOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID)); return 1; } else { int temp_data = 0; proto_item *ti; bytes = sizeof(tOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID); ti = proto_tree_add_text(field_tree, tvb, offset, mWS_FIELDSIZE(tOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID, hParent), "hParent:tOCTVC1_HANDLE"); { proto_tree* sub_tree2; sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); offset = dissect_tOCTVC1_HANDLE( tvb, pinfo, sub_tree2, offset, pExtValue ); } temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID[1], tvb, offset, mWS_FIELDSIZE(tOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID, ulNumSubObjectId), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID[1], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID, ulNumSubObjectId); ti = proto_tree_add_text(field_tree, tvb, offset, mWS_FIELDSIZE(tOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID, aSubObjectId), "aSubObjectId"); { int i, ofs=offset; proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); for( i=0; i<100; i++ ) { temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(sub_tree, ahf_tOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID[2], tvb, offset, mWS_FIELDSIZE(tOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID, aSubObjectId), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID[2], tvb, offset, 4, temp_data, "[%d]: 0x%08x", i, temp_data ); } offset+=4; } } } return offset; }; unsigned int dissect_tOCTVC1_LIST_HANDLE_OBJECT_GET(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtValue ) { proto_tree *field_tree = tree; unsigned int offset_0 = offset; gint bytes = tvb_length_remaining(tvb, offset); if (bytes < (gint)(sizeof(tOCTVC1_LIST_HANDLE_OBJECT_GET))) { proto_tree_add_text(tree, tvb, offset, bytes, "tOCTVC1_LIST_HANDLE_OBJECT_GET (%d byte%s) - Malformated packet...expected(%ld)", bytes, plurality(bytes, "", "s"), sizeof(tOCTVC1_LIST_HANDLE_OBJECT_GET)); return 1; } else { int temp_data = 0; proto_item *ti; bytes = sizeof(tOCTVC1_LIST_HANDLE_OBJECT_GET); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_LIST_HANDLE_OBJECT_GET[0], tvb, offset, mWS_FIELDSIZE(tOCTVC1_LIST_HANDLE_OBJECT_GET, ulNumHandleObject), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_LIST_HANDLE_OBJECT_GET[0], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_LIST_HANDLE_OBJECT_GET, ulNumHandleObject); ti = proto_tree_add_text(field_tree, tvb, offset, mWS_FIELDSIZE(tOCTVC1_LIST_HANDLE_OBJECT_GET, aHandleObject), "aHandleObject"); { int i, ofs=offset; proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); for( i=0; i<100; i++ ) { temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(sub_tree, ahf_tOCTVC1_LIST_HANDLE_OBJECT_GET[1], tvb, offset, mWS_FIELDSIZE(tOCTVC1_LIST_HANDLE_OBJECT_GET, aHandleObject), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_LIST_HANDLE_OBJECT_GET[1], tvb, offset, 4, temp_data, "[%d]: 0x%08x", i, temp_data ); } offset+=4; } } } return offset; }; unsigned int dissect_tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtValue ) { proto_tree *field_tree = tree; unsigned int offset_0 = offset; gint bytes = tvb_length_remaining(tvb, offset); if (bytes < (gint)(sizeof(tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID))) { proto_tree_add_text(tree, tvb, offset, bytes, "tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID (%d byte%s) - Malformated packet...expected(%ld)", bytes, plurality(bytes, "", "s"), sizeof(tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID)); return 1; } else { int temp_data = 0; proto_item *ti; bytes = sizeof(tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID[0], tvb, offset, mWS_FIELDSIZE(tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID, hParent), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID[0], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID, hParent); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID[1], tvb, offset, mWS_FIELDSIZE(tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID, ulNumSubObjectId), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID[1], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID, ulNumSubObjectId); ti = proto_tree_add_text(field_tree, tvb, offset, mWS_FIELDSIZE(tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID, aSubObjectId), "aSubObjectId"); { int i, ofs=offset; proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); for( i=0; i<100; i++ ) { temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(sub_tree, ahf_tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID[2], tvb, offset, mWS_FIELDSIZE(tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID, aSubObjectId), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID[2], tvb, offset, 4, temp_data, "[%d]: 0x%08x", i, temp_data ); } offset+=4; } } } return offset; }; unsigned int dissect_tOCTVC1_LIST_INDEX_GET(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtValue ) { proto_tree *field_tree = tree; unsigned int offset_0 = offset; gint bytes = tvb_length_remaining(tvb, offset); if (bytes < (gint)(sizeof(tOCTVC1_LIST_INDEX_GET))) { proto_tree_add_text(tree, tvb, offset, bytes, "tOCTVC1_LIST_INDEX_GET (%d byte%s) - Malformated packet...expected(%ld)", bytes, plurality(bytes, "", "s"), sizeof(tOCTVC1_LIST_INDEX_GET)); return 1; } else { int temp_data = 0; proto_item *ti; bytes = sizeof(tOCTVC1_LIST_INDEX_GET); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_LIST_INDEX_GET[0], tvb, offset, mWS_FIELDSIZE(tOCTVC1_LIST_INDEX_GET, ulNumIndex), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_LIST_INDEX_GET[0], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_LIST_INDEX_GET, ulNumIndex); ti = proto_tree_add_text(field_tree, tvb, offset, mWS_FIELDSIZE(tOCTVC1_LIST_INDEX_GET, aIndex), "aIndex"); { int i, ofs=offset; proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); for( i=0; i<100; i++ ) { temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(sub_tree, ahf_tOCTVC1_LIST_INDEX_GET[1], tvb, offset, mWS_FIELDSIZE(tOCTVC1_LIST_INDEX_GET, aIndex), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_LIST_INDEX_GET[1], tvb, offset, 4, temp_data, "[%d]: 0x%08x", i, temp_data ); } offset+=4; } } } return offset; }; #include /**************************************************************************** MODULE API ENUMERATION STRING VALUES ****************************************************************************/ const value_string vals_tOCTVC1_MSG_FLAGS_MASK[] = { { cOCTVC1_MSG_FLAGS_MASK_RETRANSMIT, "cOCTVC1_MSG_FLAGS_MASK_RETRANSMIT" }, { cOCTVC1_MSG_FLAGS_MASK_NO_RESPONSE, "cOCTVC1_MSG_FLAGS_MASK_NO_RESPONSE" }, { cOCTVC1_MSG_FLAGS_MASK_LONG_PROCESSING, "cOCTVC1_MSG_FLAGS_MASK_LONG_PROCESSING" }, { 0, NULL } }; /**************************************************************************** COMMON Registered ****************************************************************************/ int ahf_tOCTVC1_MSG_HEADER[6]; tWS_ENTITY_HANDLE ws_htOCTVC1_MSG_HEADER; void register_tOCTVC1_MSG_HEADER(void) { static hf_register_info hf[] = { { &ahf_tOCTVC1_MSG_HEADER[0], { "ulLength", "octvc1.msg.header.ullength", FT_UINT32,BASE_HEX, NULL, 0x0, "ulLength",HFILL } }, { &ahf_tOCTVC1_MSG_HEADER[1], { "ulTransactionId", "octvc1.msg.header.ultransactionid", FT_UINT32,BASE_HEX, NULL, 0x0, "ulTransactionId",HFILL } }, { &ahf_tOCTVC1_MSG_HEADER[2], { "ul_Type_R_CmdId", "octvc1.msg.header.ul_type_r_cmdid", FT_UINT32,BASE_HEX, NULL, 0x0, "ul_Type_R_CmdId",HFILL } }, { &ahf_tOCTVC1_MSG_HEADER[3], { "ulSessionId", "octvc1.msg.header.ulsessionid", FT_UINT32,BASE_HEX, NULL, 0x0, "ulSessionId",HFILL } }, { &ahf_tOCTVC1_MSG_HEADER[4], { "ulReturnCode", "octvc1.msg.header.ulreturncode", FT_UINT32,BASE_HEX, NULL, 0x0, "ulReturnCode",HFILL } }, { &ahf_tOCTVC1_MSG_HEADER[5], { "ulUserInfo", "octvc1.msg.header.uluserinfo", FT_UINT32,BASE_HEX, NULL, 0x0, "ulUserInfo",HFILL } }, }; static gint* ett[] = { &ws_htOCTVC1_MSG_HEADER.ett }; proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); }; int ahf_tOCTVC1_EVENT_HEADER[3]; tWS_ENTITY_HANDLE ws_htOCTVC1_EVENT_HEADER; void register_tOCTVC1_EVENT_HEADER(void) { static hf_register_info hf[] = { { &ahf_tOCTVC1_EVENT_HEADER[0], { "ulLength", "octvc1.msg.toctvc1_event_header.ullength", FT_UINT32,BASE_HEX, NULL, 0x0, "ulLength",HFILL } }, { &ahf_tOCTVC1_EVENT_HEADER[1], { "ulEventId", "octvc1.msg.toctvc1_event_header.uleventid", FT_UINT32,BASE_HEX, NULL, 0x0, "ulEventId",HFILL } }, { &ahf_tOCTVC1_EVENT_HEADER[2], { "ulUserEventId", "octvc1.msg.toctvc1_event_header.ulusereventid", FT_UINT32,BASE_HEX, NULL, 0x0, "ulUserEventId",HFILL } }, }; static gint* ett[] = { &ws_htOCTVC1_EVENT_HEADER.ett }; proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); }; /**************************************************************************** COMMON dissectors ****************************************************************************/ unsigned int dissect_tOCTVC1_MSG_HEADER(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtValue ) { proto_tree *field_tree = tree; unsigned int offset_0 = offset; gint bytes = tvb_length_remaining(tvb, offset); if (bytes < (gint)(sizeof(tOCTVC1_MSG_HEADER))) { proto_tree_add_text(tree, tvb, offset, bytes, "tOCTVC1_MSG_HEADER (%d byte%s) - Malformated packet...expected(%ld)", bytes, plurality(bytes, "", "s"), sizeof(tOCTVC1_MSG_HEADER)); return 1; } else { int temp_data = 0; proto_item *ti; bytes = sizeof(tOCTVC1_MSG_HEADER); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MSG_HEADER[0], tvb, offset, mWS_FIELDSIZE(tOCTVC1_MSG_HEADER, ulLength), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MSG_HEADER[0], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_MSG_HEADER, ulLength); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MSG_HEADER[1], tvb, offset, mWS_FIELDSIZE(tOCTVC1_MSG_HEADER, ulTransactionId), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MSG_HEADER[1], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_MSG_HEADER, ulTransactionId); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MSG_HEADER[2], tvb, offset, mWS_FIELDSIZE(tOCTVC1_MSG_HEADER, ul_Type_R_CmdId), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MSG_HEADER[2], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_MSG_HEADER, ul_Type_R_CmdId); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MSG_HEADER[3], tvb, offset, mWS_FIELDSIZE(tOCTVC1_MSG_HEADER, ulSessionId), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MSG_HEADER[3], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_MSG_HEADER, ulSessionId); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MSG_HEADER[4], tvb, offset, mWS_FIELDSIZE(tOCTVC1_MSG_HEADER, ulReturnCode), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MSG_HEADER[4], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_MSG_HEADER, ulReturnCode); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MSG_HEADER[5], tvb, offset, mWS_FIELDSIZE(tOCTVC1_MSG_HEADER, ulUserInfo), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MSG_HEADER[5], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_MSG_HEADER, ulUserInfo); } return offset; }; unsigned int dissect_tOCTVC1_EVENT_HEADER(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtValue ) { proto_tree *field_tree = tree; unsigned int offset_0 = offset; gint bytes = tvb_length_remaining(tvb, offset); if (bytes < (gint)(sizeof(tOCTVC1_EVENT_HEADER))) { proto_tree_add_text(tree, tvb, offset, bytes, "tOCTVC1_EVENT_HEADER (%d byte%s) - Malformated packet...expected(%ld)", bytes, plurality(bytes, "", "s"), sizeof(tOCTVC1_EVENT_HEADER)); return 1; } else { int temp_data = 0; proto_item *ti; bytes = sizeof(tOCTVC1_EVENT_HEADER); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_EVENT_HEADER[0], tvb, offset, mWS_FIELDSIZE(tOCTVC1_EVENT_HEADER, ulLength), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_EVENT_HEADER[0], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_EVENT_HEADER, ulLength); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_EVENT_HEADER[1], tvb, offset, mWS_FIELDSIZE(tOCTVC1_EVENT_HEADER, ulEventId), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_EVENT_HEADER[1], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_EVENT_HEADER, ulEventId); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_EVENT_HEADER[2], tvb, offset, mWS_FIELDSIZE(tOCTVC1_EVENT_HEADER, ulUserEventId), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_EVENT_HEADER[2], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_EVENT_HEADER, ulUserEventId); } return offset; }; #include /**************************************************************************** MODULE API ENUMERATION STRING VALUES ****************************************************************************/ const value_string vals_tOCTVC1_LOG_TYPE_ENUM[] = { { cOCTVC1_LOG_TYPE_ENUM_LOG, "cOCTVC1_LOG_TYPE_ENUM_LOG" }, { cOCTVC1_LOG_TYPE_ENUM_TRACE, "cOCTVC1_LOG_TYPE_ENUM_TRACE" }, { 0, NULL } }; const value_string vals_tOCTVC1_LOG_LEVEL_ENUM[] = { { cOCTVC1_LOG_LEVEL_ENUM_EMERGENCY, "cOCTVC1_LOG_LEVEL_ENUM_EMERGENCY" }, { cOCTVC1_LOG_LEVEL_ENUM_ALERT, "cOCTVC1_LOG_LEVEL_ENUM_ALERT" }, { cOCTVC1_LOG_LEVEL_ENUM_CRITICAL, "cOCTVC1_LOG_LEVEL_ENUM_CRITICAL" }, { cOCTVC1_LOG_LEVEL_ENUM_ERROR, "cOCTVC1_LOG_LEVEL_ENUM_ERROR" }, { cOCTVC1_LOG_LEVEL_ENUM_WARNING, "cOCTVC1_LOG_LEVEL_ENUM_WARNING" }, { cOCTVC1_LOG_LEVEL_ENUM_NOTICE, "cOCTVC1_LOG_LEVEL_ENUM_NOTICE" }, { 0, NULL } }; const value_string vals_tOCTVC1_LOG_TRACE_MASK[] = { { cOCTVC1_LOG_TRACE_MASK_FNC_IN, "cOCTVC1_LOG_TRACE_MASK_FNC_IN" }, { cOCTVC1_LOG_TRACE_MASK_FNC_OUT, "cOCTVC1_LOG_TRACE_MASK_FNC_OUT" }, { cOCTVC1_LOG_TRACE_MASK_INFO, "cOCTVC1_LOG_TRACE_MASK_INFO" }, { cOCTVC1_LOG_TRACE_MASK_DEBUG, "cOCTVC1_LOG_TRACE_MASK_DEBUG" }, { cOCTVC1_LOG_TRACE_MASK_USER_0, "cOCTVC1_LOG_TRACE_MASK_USER_0" }, { cOCTVC1_LOG_TRACE_MASK_USER_1, "cOCTVC1_LOG_TRACE_MASK_USER_1" }, { cOCTVC1_LOG_TRACE_MASK_USER_2, "cOCTVC1_LOG_TRACE_MASK_USER_2" }, { cOCTVC1_LOG_TRACE_MASK_USER_3, "cOCTVC1_LOG_TRACE_MASK_USER_3" }, { cOCTVC1_LOG_TRACE_MASK_NONE, "cOCTVC1_LOG_TRACE_MASK_NONE" }, { cOCTVC1_LOG_TRACE_MASK_ALL, "cOCTVC1_LOG_TRACE_MASK_ALL" }, { 0, NULL } }; /**************************************************************************** COMMON Registered ****************************************************************************/ int ahf_tOCTVC1_LOG_HEADER[4]; tWS_ENTITY_HANDLE ws_htOCTVC1_LOG_HEADER; void register_tOCTVC1_LOG_HEADER(void) { static hf_register_info hf[] = { { &ahf_tOCTVC1_LOG_HEADER[0], { "ulId", "octvc1.log.header.ulid", FT_UINT32,BASE_HEX, NULL, 0x0, "ulId",HFILL } }, { &ahf_tOCTVC1_LOG_HEADER[1], { "ulTime", "octvc1.log.header.ultime", FT_UINT32,BASE_HEX, NULL, 0x0, "ulTime",HFILL } }, { &ahf_tOCTVC1_LOG_HEADER[2], { "hProcess", "octvc1.log.header.hprocess", FT_UINT32,BASE_HEX, NULL, 0x0, "hProcess",HFILL } }, { &ahf_tOCTVC1_LOG_HEADER[3], { "ul_Type_Info_Length", "octvc1.log.header.ul_type_info_length", FT_UINT32,BASE_HEX, NULL, 0x0, "ul_Type_Info_Length",HFILL } }, }; static gint* ett[] = { &ws_htOCTVC1_LOG_HEADER.ett }; proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); }; /**************************************************************************** COMMON dissectors ****************************************************************************/ unsigned int dissect_tOCTVC1_LOG_HEADER(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtValue ) { proto_tree *field_tree = tree; unsigned int offset_0 = offset; gint bytes = tvb_length_remaining(tvb, offset); if (bytes < (gint)(sizeof(tOCTVC1_LOG_HEADER))) { proto_tree_add_text(tree, tvb, offset, bytes, "tOCTVC1_LOG_HEADER (%d byte%s) - Malformated packet...expected(%ld)", bytes, plurality(bytes, "", "s"), sizeof(tOCTVC1_LOG_HEADER)); return 1; } else { int temp_data = 0; proto_item *ti; bytes = sizeof(tOCTVC1_LOG_HEADER); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_LOG_HEADER[0], tvb, offset, mWS_FIELDSIZE(tOCTVC1_LOG_HEADER, ulId), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_LOG_HEADER[0], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_LOG_HEADER, ulId); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_LOG_HEADER[1], tvb, offset, mWS_FIELDSIZE(tOCTVC1_LOG_HEADER, ulTime), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_LOG_HEADER[1], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_LOG_HEADER, ulTime); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_LOG_HEADER[2], tvb, offset, mWS_FIELDSIZE(tOCTVC1_LOG_HEADER, hProcess), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_LOG_HEADER[2], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_LOG_HEADER, hProcess); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_LOG_HEADER[3], tvb, offset, mWS_FIELDSIZE(tOCTVC1_LOG_HEADER, ul_Type_Info_Length), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_LOG_HEADER[3], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_LOG_HEADER, ul_Type_Info_Length); } return offset; }; #include /**************************************************************************** MODULE API ENUMERATION STRING VALUES ****************************************************************************/ const value_string vals_tOCTVC1_FILE_TYPE_ENUM[] = { { cOCTVC1_FILE_TYPE_ENUM_NONE, "cOCTVC1_FILE_TYPE_ENUM_NONE" }, { cOCTVC1_FILE_TYPE_ENUM_TEXT, "cOCTVC1_FILE_TYPE_ENUM_TEXT" }, { cOCTVC1_FILE_TYPE_ENUM_BIN, "cOCTVC1_FILE_TYPE_ENUM_BIN" }, { 0, NULL } }; const value_string vals_tOCTVC1_FILE_FORMAT_ENUM[] = { { cOCTVC1_FILE_FORMAT_ENUM_NONE, "cOCTVC1_FILE_FORMAT_ENUM_NONE" }, { cOCTVC1_FILE_FORMAT_ENUM_LOG, "cOCTVC1_FILE_FORMAT_ENUM_LOG" }, { 0, NULL } }; /**************************************************************************** COMMON Registered ****************************************************************************/ int ahf_tOCTVC1_FILE_HEADER[4]; tWS_ENTITY_HANDLE ws_htOCTVC1_FILE_HEADER; void register_tOCTVC1_FILE_HEADER(void) { static hf_register_info hf[] = { { &ahf_tOCTVC1_FILE_HEADER[0], { "ulMagic", "octvc1.file.header.ulmagic", FT_UINT32,BASE_HEX, NULL, 0x0, "ulMagic",HFILL } }, { &ahf_tOCTVC1_FILE_HEADER[1], { "ul_Type_Ver", "octvc1.file.header.ul_type_ver", FT_UINT32,BASE_HEX, NULL, 0x0, "ul_Type_Ver",HFILL } }, { &ahf_tOCTVC1_FILE_HEADER[2], { "ulReserved", "octvc1.file.header.ulreserved", FT_UINT32,BASE_HEX, NULL, 0x0, "ulReserved",HFILL } }, { &ahf_tOCTVC1_FILE_HEADER[3], { "ulHeaderSize", "octvc1.file.header.ulheadersize", FT_UINT32,BASE_HEX, NULL, 0x0, "ulHeaderSize",HFILL } }, }; static gint* ett[] = { &ws_htOCTVC1_FILE_HEADER.ett }; proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); }; /**************************************************************************** COMMON dissectors ****************************************************************************/ unsigned int dissect_tOCTVC1_FILE_HEADER(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtValue ) { proto_tree *field_tree = tree; unsigned int offset_0 = offset; gint bytes = tvb_length_remaining(tvb, offset); if (bytes < (gint)(sizeof(tOCTVC1_FILE_HEADER))) { proto_tree_add_text(tree, tvb, offset, bytes, "tOCTVC1_FILE_HEADER (%d byte%s) - Malformated packet...expected(%ld)", bytes, plurality(bytes, "", "s"), sizeof(tOCTVC1_FILE_HEADER)); return 1; } else { int temp_data = 0; proto_item *ti; bytes = sizeof(tOCTVC1_FILE_HEADER); temp_data = tvb_get_ntohl( tvb, offset ); if( temp_data == cOCTVC1_FILE_MAGIC_BIG_ENDIAN) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_FILE_HEADER[0], tvb, offset, mWS_FIELDSIZE(tOCTVC1_FILE_HEADER, ulMagic),temp_data, "cOCTVC1_FILE_MAGIC_BIG_ENDIAN (0x%08x)",temp_data); }else { if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_FILE_HEADER[0], tvb, offset, mWS_FIELDSIZE(tOCTVC1_FILE_HEADER, ulMagic), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_FILE_HEADER[0], tvb, offset, 4, temp_data); } } offset += mWS_FIELDSIZE(tOCTVC1_FILE_HEADER, ulMagic); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_FILE_HEADER[1], tvb, offset, mWS_FIELDSIZE(tOCTVC1_FILE_HEADER, ul_Type_Ver), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_FILE_HEADER[1], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_FILE_HEADER, ul_Type_Ver); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_FILE_HEADER[2], tvb, offset, mWS_FIELDSIZE(tOCTVC1_FILE_HEADER, ulReserved), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_FILE_HEADER[2], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_FILE_HEADER, ulReserved); temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_FILE_HEADER[3], tvb, offset, mWS_FIELDSIZE(tOCTVC1_FILE_HEADER, ulHeaderSize), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_FILE_HEADER[3], tvb, offset, 4, temp_data); } offset += mWS_FIELDSIZE(tOCTVC1_FILE_HEADER, ulHeaderSize); } return offset; }; #include /**************************************************************************** COMMON Registered ****************************************************************************/ int ahf_tOCTVC1_HANDLE[1]; tWS_ENTITY_HANDLE ws_htOCTVC1_HANDLE; void register_tOCTVC1_HANDLE(void) { static hf_register_info hf[] = { { &ahf_tOCTVC1_HANDLE[0], { "aulHandle", "octvc1.handle.toctvc1_handle.aulhandle", FT_UINT32,BASE_HEX, NULL, 0x0, "aulHandle",HFILL } }, }; static gint* ett[] = { &ws_htOCTVC1_HANDLE.ett }; proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); }; /**************************************************************************** COMMON dissectors ****************************************************************************/ unsigned int dissect_tOCTVC1_HANDLE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtValue ) { proto_tree *field_tree = tree; unsigned int offset_0 = offset; gint bytes = tvb_length_remaining(tvb, offset); if (bytes < (gint)(sizeof(tOCTVC1_HANDLE))) { proto_tree_add_text(tree, tvb, offset, bytes, "tOCTVC1_HANDLE (%d byte%s) - Malformated packet...expected(%ld)", bytes, plurality(bytes, "", "s"), sizeof(tOCTVC1_HANDLE)); return 1; } else { int temp_data = 0; proto_item *ti; bytes = sizeof(tOCTVC1_HANDLE); ti = proto_tree_add_text(field_tree, tvb, offset, mWS_FIELDSIZE(tOCTVC1_HANDLE, aulHandle), "aulHandle"); { int i, ofs=offset; proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); for( i=0; i<3; i++ ) { temp_data = tvb_get_ntohl( tvb, offset ); if( pExtValue && (pExtValue->lValue == temp_data ) ) { ti = proto_tree_add_uint_format_value(sub_tree, ahf_tOCTVC1_HANDLE[0], tvb, offset, mWS_FIELDSIZE(tOCTVC1_HANDLE, aulHandle), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); }else { ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_HANDLE[0], tvb, offset, 4, temp_data, "[%d]: 0x%08x", i, temp_data ); } offset+=4; } } } return offset; }; /**************************************************************************** MODULE REGISTERED EXPORTED FUNCTION ****************************************************************************/ void ws_register_OCTVC1_common(void) { register_tOCTVC1_CURSOR_HANDLE_GET(); register_tOCTVC1_CURSOR_HANDLE_GET_HANDLE(); register_tOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT(); register_tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID(); register_tOCTVC1_CURSOR_HANDLE_OBJECT_GET(); register_tOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT(); register_tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID(); register_tOCTVC1_CURSOR_INDEX_GET(); register_tOCTVC1_VLAN_TAG(); register_tOCTVC1_VLAN_HEADER_INFO(); register_tOCTVC1_LIST_HANDLE_GET(); register_tOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID(); register_tOCTVC1_LIST_HANDLE_OBJECT_GET(); register_tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID(); register_tOCTVC1_LIST_INDEX_GET(); register_tOCTVC1_MSG_HEADER(); register_tOCTVC1_EVENT_HEADER(); register_tOCTVC1_LOG_HEADER(); register_tOCTVC1_FILE_HEADER(); register_tOCTVC1_HANDLE(); }