From 685b5a2bcfe0b6bc45e5fce93a3f0bd12f47ec95 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Wed, 20 Jan 2016 18:05:21 +0100 Subject: [PATCH] Import OCTSDR-2G-01.08.05-B29_Wireshark_Source --- GNU General Public Licence.txt | 340 + application/tool/wireshark/1.2.6/config.h | 293 + .../tool/wireshark/1.2.6/config.h.win32 | 293 + application/tool/wireshark/1.2.6/config.nmake | 964 + application/tool/wireshark/1.2.6/configure.in | 1852 ++ .../tool/wireshark/1.2.6/oct_readme.txt | 84 + application/tool/wireshark/1.6.5/config.h | 278 + .../tool/wireshark/1.6.5/config.h.win32 | 278 + application/tool/wireshark/1.6.5/config.nmake | 1383 ++ application/tool/wireshark/1.6.5/configure.in | 2182 ++ .../tool/wireshark/1.6.5/oct_readme.txt | 101 + .../tool/wireshark/plugins/Makefile.am | 54 + .../wireshark/plugins/octasic/MakeRules.nmake | 150 + .../plugins/octasic/include/oct_ws_macro.h | 67 + .../plugins/octasic/include/oct_ws_priv.h | 45 + .../plugins/octasic/include/oct_ws_version.h | 40 + .../plugins/octasic/octpkt_ws/Makefile.am | 104 + .../plugins/octasic/octpkt_ws/Makefile.common | 40 + .../plugins/octasic/octpkt_ws/Makefile.nmake | 58 + .../octpkt_ws/Release_1.6.5/octpkt.obj | Bin 0 -> 24873 bytes .../octpkt_ws/Release_1.6.5/octpkt_ws.dll | Bin 0 -> 9216 bytes .../octpkt_ws/Release_1.6.5/octpkt_ws.exp | Bin 0 -> 904 bytes .../octpkt_ws/Release_1.6.5/octpkt_ws.lib | Bin 0 -> 2126 bytes .../octpkt_ws/Release_1.6.5/octpkt_ws.pdb | Bin 0 -> 240640 bytes .../octpkt_ws/Release_1.6.5/octpkt_ws.rc | 0 .../octpkt_ws/Release_1.6.5/octpkt_ws.res | Bin 0 -> 32 bytes .../octpkt_ws/Release_1.6.5/plugin.obj | Bin 0 -> 13132 bytes .../octasic/octpkt_ws/Release_1.6.5/vc90.pdb | Bin 0 -> 86016 bytes .../octasic/octpkt_ws/include/moduleinfo.h | 56 + .../octasic/octpkt_ws/source/octpkr.rc | 34 + .../plugins/octasic/octpkt_ws/source/octpkt.c | 265 + .../plugins/octasic/octpkt_ws/source/plugin.c | 62 + .../plugins/octasic/octsdr/makefile.nmake | 24 + .../octasic/octsdr/octvc1/MakeSmoke.nmake | 25 + .../octasic/octsdr/octvc1/MakeSmokeApp.nmake | 96 + .../plugins/octasic/octsdr/octvc1/Makefile.am | 103 + .../octasic/octsdr/octvc1/Makefile.common | 16 + .../octvc1/Release_1.6.5/octdev_common.obj | Bin 0 -> 16109 bytes .../octvc1/Release_1.6.5/octpkt_common.obj | Bin 0 -> 18118 bytes .../octvc1_cid_eid_value_string.obj | Bin 0 -> 36343 bytes .../octvc1/Release_1.6.5/octvc1_common.obj | Bin 0 -> 92538 bytes .../Release_1.6.5/octvc1_module_cpp.obj | Bin 0 -> 168913 bytes .../Release_1.6.5/octvc1_module_ctrl.obj | Bin 0 -> 24138 bytes .../Release_1.6.5/octvc1_module_gsm.obj | Bin 0 -> 296961 bytes .../Release_1.6.5/octvc1_module_main.obj | Bin 0 -> 445999 bytes .../Release_1.6.5/octvc1_module_net.obj | Bin 0 -> 628702 bytes .../octvc1/Release_1.6.5/octvc1_msg_ctrl.obj | Bin 0 -> 113950 bytes .../octvc1/Release_1.6.5/octvc1_msg_event.obj | Bin 0 -> 29011 bytes .../octvc1/Release_1.6.5/octvc1_plugin.obj | Bin 0 -> 29936 bytes .../octsdr/octvc1/Release_1.6.5/octvc1_ws.dll | Bin 0 -> 634368 bytes .../octsdr/octvc1/Release_1.6.5/octvc1_ws.exp | Bin 0 -> 908 bytes .../octsdr/octvc1/Release_1.6.5/octvc1_ws.lib | Bin 0 -> 2126 bytes .../octsdr/octvc1/Release_1.6.5/octvc1_ws.pdb | Bin 0 -> 994304 bytes .../octsdr/octvc1/Release_1.6.5/octvc1_ws.rc | 0 .../octsdr/octvc1/Release_1.6.5/octvc1_ws.res | Bin 0 -> 32 bytes .../octvc1/Release_1.6.5/octvocnet_common.obj | Bin 0 -> 19300 bytes .../octsdr/octvc1/Release_1.6.5/plugin.obj | Bin 0 -> 15764 bytes .../octsdr/octvc1/Release_1.6.5/vc90.pdb | Bin 0 -> 86016 bytes .../octsdr/octvc1/Release_1.6.5/ws_util.obj | Bin 0 -> 18870 bytes .../octasic/octsdr/octvc1/include/module.h | 59 + .../octsdr/octvc1/include/octdev_common.h | 43 + .../octsdr/octvc1/include/octpkt_common.h | 42 + .../octsdr/octvc1/include/octvc1_common.h | 101 + .../octsdr/octvc1/include/octvocnet_common.h | 41 + .../octsdr/octvc1/include/plugin_info.h | 77 + .../octasic/octsdr/octvc1/include/ws_util.h | 78 + .../octasic/octsdr/octvc1/makefile.nmake | 62 + .../octasic/octsdr/octvc1/oasis2ws.nmake | 141 + .../octasic/octsdr/octvc1/oasis_pkgCommon.xml | 7 + .../plugins/octasic/octsdr/octvc1/octvc1.pcap | Bin 0 -> 75582 bytes .../octsdr/octvc1/source/octdev_common.c | 60 + .../octsdr/octvc1/source/octpkt_common.c | 89 + .../source/octvc1_cid_eid_value_string.c | 282 + .../octsdr/octvc1/source/octvc1_common.c | 2261 +++ .../octsdr/octvc1/source/octvc1_module_cpp.c | 4396 ++++ .../octsdr/octvc1/source/octvc1_module_ctrl.c | 202 + .../octsdr/octvc1/source/octvc1_module_gsm.c | 7362 +++++++ .../octsdr/octvc1/source/octvc1_module_main.c | 11076 ++++++++++ .../octsdr/octvc1/source/octvc1_module_net.c | 16794 ++++++++++++++++ .../octsdr/octvc1/source/octvc1_msg_ctrl.c | 740 + .../octsdr/octvc1/source/octvc1_msg_event.c | 315 + .../octsdr/octvc1/source/octvc1_plugin.c | 404 + .../octsdr/octvc1/source/octvocnet_common.c | 101 + .../octasic/octsdr/octvc1/source/plugin.c | 61 + .../octasic/octsdr/octvc1/source/ws_util.c | 85 + .../wireshark/plugins/octasic/plugin.rc.in | 34 + application/tool/wireshark/ws_dev_root.nmake | 1 + readme.txt | 7 + software/include/octdev_devices.h | 63 + software/include/octdev_macro.h | 91 + software/include/octdev_opus_rev.h | 105 + software/include/octdev_rc_base.h | 39 + software/include/octdev_types.h | 277 + software/include/octdev_types_swap.h | 67 + software/include/octpkt/octpkt_hdr.h | 91 + software/include/octpkt/octpkt_hdr_swap.h | 42 + software/include/octpkt/octpkt_hdrxl.h | 85 + software/include/octpkt/octpkt_hdrxl_swap.h | 51 + software/include/vocallo/cpp/octvc1_cpp_api.h | 930 + .../include/vocallo/cpp/octvc1_cpp_api_swap.h | 551 + .../include/vocallo/cpp/octvc1_cpp_default.h | 541 + software/include/vocallo/cpp/octvc1_cpp_id.h | 43 + software/include/vocallo/cpp/octvc1_cpp_rc.h | 95 + .../include/vocallo/cpp/octvc1_cpp_version.h | 39 + .../include/vocallo/ctrl/octvc1_ctrl_api.h | 60 + .../vocallo/ctrl/octvc1_ctrl_api_swap.h | 45 + .../include/vocallo/ctrl/octvc1_ctrl_id.h | 34 + .../vocallo/ctrl/octvc1_ctrl_version.h | 39 + software/include/vocallo/gsm/octvc1_gsm_api.h | 1327 ++ .../include/vocallo/gsm/octvc1_gsm_api_swap.h | 604 + .../include/vocallo/gsm/octvc1_gsm_default.h | 5186 +++++ software/include/vocallo/gsm/octvc1_gsm_evt.h | 445 + .../include/vocallo/gsm/octvc1_gsm_evt_swap.h | 249 + software/include/vocallo/gsm/octvc1_gsm_id.h | 78 + software/include/vocallo/gsm/octvc1_gsm_rc.h | 120 + .../include/vocallo/gsm/octvc1_gsm_version.h | 39 + .../include/vocallo/main/octvc1_main_api.h | 3264 +++ .../vocallo/main/octvc1_main_api_swap.h | 1628 ++ .../vocallo/main/octvc1_main_default.h | 2144 ++ .../include/vocallo/main/octvc1_main_evt.h | 164 + .../vocallo/main/octvc1_main_evt_swap.h | 119 + .../include/vocallo/main/octvc1_main_id.h | 107 + .../include/vocallo/main/octvc1_main_rc.h | 178 + .../vocallo/main/octvc1_main_version.h | 39 + software/include/vocallo/net/octvc1_net_api.h | 3233 +++ .../include/vocallo/net/octvc1_net_api_swap.h | 1628 ++ .../include/vocallo/net/octvc1_net_default.h | 2774 +++ software/include/vocallo/net/octvc1_net_evt.h | 460 + .../include/vocallo/net/octvc1_net_evt_swap.h | 319 + software/include/vocallo/net/octvc1_net_id.h | 90 + software/include/vocallo/net/octvc1_net_rc.h | 354 + .../include/vocallo/net/octvc1_net_version.h | 39 + software/include/vocallo/octvc1_app.h | 33 + software/include/vocallo/octvc1_base.h | 92 + software/include/vocallo/octvc1_buffer.h | 49 + software/include/vocallo/octvc1_cursor.h | 238 + software/include/vocallo/octvc1_cursor_swap.h | 132 + software/include/vocallo/octvc1_eth.h | 46 + software/include/vocallo/octvc1_fifo.h | 36 + software/include/vocallo/octvc1_file.h | 107 + software/include/vocallo/octvc1_file_swap.h | 48 + software/include/vocallo/octvc1_generic_rc.h | 79 + software/include/vocallo/octvc1_handle.h | 118 + software/include/vocallo/octvc1_handle_swap.h | 45 + software/include/vocallo/octvc1_id2string.h | 276 + .../include/vocallo/octvc1_id2string_priv.h | 183 + software/include/vocallo/octvc1_ip.h | 51 + .../include/vocallo/octvc1_licensing_rc.h | 31 + software/include/vocallo/octvc1_list.h | 127 + software/include/vocallo/octvc1_list_swap.h | 105 + software/include/vocallo/octvc1_log.h | 134 + software/include/vocallo/octvc1_log_swap.h | 47 + software/include/vocallo/octvc1_mac.h | 42 + software/include/vocallo/octvc1_macro.h | 70 + software/include/vocallo/octvc1_msg.h | 148 + software/include/vocallo/octvc1_msg_swap.h | 63 + software/include/vocallo/octvc1_privacy.h | 24 + software/include/vocallo/octvc1_rc2string.h | 336 + software/include/vocallo/octvc1_swap_hdrs.h | 51 + software/include/vocallo/octvc1_udp.h | 44 + software/include/vocallo/octvc1_vlan.h | 82 + software/include/vocallo/octvc1_vlan_swap.h | 59 + software/include/vocallo/octvocnet_pkt.h | 464 + software/include/vocallo/octvocnet_pkt_swap.h | 144 + .../include/vocallo/pkt_api/octvc1_pkt_api.h | 982 + .../vocallo/pkt_api/octvc1_pkt_api_default.h | 379 + .../vocallo/pkt_api/octvc1_pkt_api_rc.h | 51 + .../vocallo/pkt_api/octvc1_pkt_api_version.h | 58 + 168 files changed, 87058 insertions(+) create mode 100644 GNU General Public Licence.txt create mode 100644 application/tool/wireshark/1.2.6/config.h create mode 100644 application/tool/wireshark/1.2.6/config.h.win32 create mode 100644 application/tool/wireshark/1.2.6/config.nmake create mode 100644 application/tool/wireshark/1.2.6/configure.in create mode 100644 application/tool/wireshark/1.2.6/oct_readme.txt create mode 100644 application/tool/wireshark/1.6.5/config.h create mode 100644 application/tool/wireshark/1.6.5/config.h.win32 create mode 100644 application/tool/wireshark/1.6.5/config.nmake create mode 100644 application/tool/wireshark/1.6.5/configure.in create mode 100644 application/tool/wireshark/1.6.5/oct_readme.txt create mode 100644 application/tool/wireshark/plugins/Makefile.am create mode 100644 application/tool/wireshark/plugins/octasic/MakeRules.nmake create mode 100644 application/tool/wireshark/plugins/octasic/include/oct_ws_macro.h create mode 100644 application/tool/wireshark/plugins/octasic/include/oct_ws_priv.h create mode 100644 application/tool/wireshark/plugins/octasic/include/oct_ws_version.h create mode 100644 application/tool/wireshark/plugins/octasic/octpkt_ws/Makefile.am create mode 100644 application/tool/wireshark/plugins/octasic/octpkt_ws/Makefile.common create mode 100644 application/tool/wireshark/plugins/octasic/octpkt_ws/Makefile.nmake create mode 100644 application/tool/wireshark/plugins/octasic/octpkt_ws/Release_1.6.5/octpkt.obj create mode 100644 application/tool/wireshark/plugins/octasic/octpkt_ws/Release_1.6.5/octpkt_ws.dll create mode 100644 application/tool/wireshark/plugins/octasic/octpkt_ws/Release_1.6.5/octpkt_ws.exp create mode 100644 application/tool/wireshark/plugins/octasic/octpkt_ws/Release_1.6.5/octpkt_ws.lib create mode 100644 application/tool/wireshark/plugins/octasic/octpkt_ws/Release_1.6.5/octpkt_ws.pdb create mode 100644 application/tool/wireshark/plugins/octasic/octpkt_ws/Release_1.6.5/octpkt_ws.rc create mode 100644 application/tool/wireshark/plugins/octasic/octpkt_ws/Release_1.6.5/octpkt_ws.res create mode 100644 application/tool/wireshark/plugins/octasic/octpkt_ws/Release_1.6.5/plugin.obj create mode 100644 application/tool/wireshark/plugins/octasic/octpkt_ws/Release_1.6.5/vc90.pdb create mode 100644 application/tool/wireshark/plugins/octasic/octpkt_ws/include/moduleinfo.h create mode 100644 application/tool/wireshark/plugins/octasic/octpkt_ws/source/octpkr.rc create mode 100644 application/tool/wireshark/plugins/octasic/octpkt_ws/source/octpkt.c create mode 100644 application/tool/wireshark/plugins/octasic/octpkt_ws/source/plugin.c create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/makefile.nmake create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/MakeSmoke.nmake create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/MakeSmokeApp.nmake create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/Makefile.am create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/Makefile.common create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octdev_common.obj create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octpkt_common.obj create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_cid_eid_value_string.obj create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_common.obj create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_module_cpp.obj create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_module_ctrl.obj create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_module_gsm.obj create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_module_main.obj create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_module_net.obj create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_msg_ctrl.obj create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_msg_event.obj create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_plugin.obj create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_ws.dll create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_ws.exp create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_ws.lib create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_ws.pdb create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_ws.rc create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_ws.res create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvocnet_common.obj create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/plugin.obj create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/vc90.pdb create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/ws_util.obj create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/include/module.h create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/include/octdev_common.h create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/include/octpkt_common.h create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/include/octvc1_common.h create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/include/octvocnet_common.h create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/include/plugin_info.h create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/include/ws_util.h create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/makefile.nmake create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/oasis2ws.nmake create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/oasis_pkgCommon.xml create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/octvc1.pcap create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octdev_common.c create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octpkt_common.c create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_cid_eid_value_string.c create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_common.c create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_module_cpp.c create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_module_ctrl.c create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_module_gsm.c create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_module_main.c create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_module_net.c create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_msg_ctrl.c create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_msg_event.c create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_plugin.c create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvocnet_common.c create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/plugin.c create mode 100644 application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/ws_util.c create mode 100644 application/tool/wireshark/plugins/octasic/plugin.rc.in create mode 100644 application/tool/wireshark/ws_dev_root.nmake create mode 100644 readme.txt create mode 100644 software/include/octdev_devices.h create mode 100644 software/include/octdev_macro.h create mode 100644 software/include/octdev_opus_rev.h create mode 100644 software/include/octdev_rc_base.h create mode 100644 software/include/octdev_types.h create mode 100644 software/include/octdev_types_swap.h create mode 100644 software/include/octpkt/octpkt_hdr.h create mode 100644 software/include/octpkt/octpkt_hdr_swap.h create mode 100644 software/include/octpkt/octpkt_hdrxl.h create mode 100644 software/include/octpkt/octpkt_hdrxl_swap.h create mode 100644 software/include/vocallo/cpp/octvc1_cpp_api.h create mode 100644 software/include/vocallo/cpp/octvc1_cpp_api_swap.h create mode 100644 software/include/vocallo/cpp/octvc1_cpp_default.h create mode 100644 software/include/vocallo/cpp/octvc1_cpp_id.h create mode 100644 software/include/vocallo/cpp/octvc1_cpp_rc.h create mode 100644 software/include/vocallo/cpp/octvc1_cpp_version.h create mode 100644 software/include/vocallo/ctrl/octvc1_ctrl_api.h create mode 100644 software/include/vocallo/ctrl/octvc1_ctrl_api_swap.h create mode 100644 software/include/vocallo/ctrl/octvc1_ctrl_id.h create mode 100644 software/include/vocallo/ctrl/octvc1_ctrl_version.h create mode 100644 software/include/vocallo/gsm/octvc1_gsm_api.h create mode 100644 software/include/vocallo/gsm/octvc1_gsm_api_swap.h create mode 100644 software/include/vocallo/gsm/octvc1_gsm_default.h create mode 100644 software/include/vocallo/gsm/octvc1_gsm_evt.h create mode 100644 software/include/vocallo/gsm/octvc1_gsm_evt_swap.h create mode 100644 software/include/vocallo/gsm/octvc1_gsm_id.h create mode 100644 software/include/vocallo/gsm/octvc1_gsm_rc.h create mode 100644 software/include/vocallo/gsm/octvc1_gsm_version.h create mode 100644 software/include/vocallo/main/octvc1_main_api.h create mode 100644 software/include/vocallo/main/octvc1_main_api_swap.h create mode 100644 software/include/vocallo/main/octvc1_main_default.h create mode 100644 software/include/vocallo/main/octvc1_main_evt.h create mode 100644 software/include/vocallo/main/octvc1_main_evt_swap.h create mode 100644 software/include/vocallo/main/octvc1_main_id.h create mode 100644 software/include/vocallo/main/octvc1_main_rc.h create mode 100644 software/include/vocallo/main/octvc1_main_version.h create mode 100644 software/include/vocallo/net/octvc1_net_api.h create mode 100644 software/include/vocallo/net/octvc1_net_api_swap.h create mode 100644 software/include/vocallo/net/octvc1_net_default.h create mode 100644 software/include/vocallo/net/octvc1_net_evt.h create mode 100644 software/include/vocallo/net/octvc1_net_evt_swap.h create mode 100644 software/include/vocallo/net/octvc1_net_id.h create mode 100644 software/include/vocallo/net/octvc1_net_rc.h create mode 100644 software/include/vocallo/net/octvc1_net_version.h create mode 100644 software/include/vocallo/octvc1_app.h create mode 100644 software/include/vocallo/octvc1_base.h create mode 100644 software/include/vocallo/octvc1_buffer.h create mode 100644 software/include/vocallo/octvc1_cursor.h create mode 100644 software/include/vocallo/octvc1_cursor_swap.h create mode 100644 software/include/vocallo/octvc1_eth.h create mode 100644 software/include/vocallo/octvc1_fifo.h create mode 100644 software/include/vocallo/octvc1_file.h create mode 100644 software/include/vocallo/octvc1_file_swap.h create mode 100644 software/include/vocallo/octvc1_generic_rc.h create mode 100644 software/include/vocallo/octvc1_handle.h create mode 100644 software/include/vocallo/octvc1_handle_swap.h create mode 100644 software/include/vocallo/octvc1_id2string.h create mode 100644 software/include/vocallo/octvc1_id2string_priv.h create mode 100644 software/include/vocallo/octvc1_ip.h create mode 100644 software/include/vocallo/octvc1_licensing_rc.h create mode 100644 software/include/vocallo/octvc1_list.h create mode 100644 software/include/vocallo/octvc1_list_swap.h create mode 100644 software/include/vocallo/octvc1_log.h create mode 100644 software/include/vocallo/octvc1_log_swap.h create mode 100644 software/include/vocallo/octvc1_mac.h create mode 100644 software/include/vocallo/octvc1_macro.h create mode 100644 software/include/vocallo/octvc1_msg.h create mode 100644 software/include/vocallo/octvc1_msg_swap.h create mode 100644 software/include/vocallo/octvc1_privacy.h create mode 100644 software/include/vocallo/octvc1_rc2string.h create mode 100644 software/include/vocallo/octvc1_swap_hdrs.h create mode 100644 software/include/vocallo/octvc1_udp.h create mode 100644 software/include/vocallo/octvc1_vlan.h create mode 100644 software/include/vocallo/octvc1_vlan_swap.h create mode 100644 software/include/vocallo/octvocnet_pkt.h create mode 100644 software/include/vocallo/octvocnet_pkt_swap.h create mode 100644 software/include/vocallo/pkt_api/octvc1_pkt_api.h create mode 100644 software/include/vocallo/pkt_api/octvc1_pkt_api_default.h create mode 100644 software/include/vocallo/pkt_api/octvc1_pkt_api_rc.h create mode 100644 software/include/vocallo/pkt_api/octvc1_pkt_api_version.h diff --git a/GNU General Public Licence.txt b/GNU General Public Licence.txt new file mode 100644 index 0000000..b860267 --- /dev/null +++ b/GNU General Public Licence.txt @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 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 General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/application/tool/wireshark/1.2.6/config.h b/application/tool/wireshark/1.2.6/config.h new file mode 100644 index 0000000..caad9f1 --- /dev/null +++ b/application/tool/wireshark/1.2.6/config.h @@ -0,0 +1,293 @@ +/* $Id: config.h.win32 27098 2008-12-23 18:56:31Z gerald $ */ +/* config.h.win32 Generated manually. :-) */ +/* config.h. Generated automatically by configure. */ +/* config.h.in. Generated automatically from configure.in by autoheader. */ + +/* Generated Bison and Flex files test whether __STDC__ is defined + in order to check whether to use ANSI C features such as "const". + + GCC defines it as 1 even if extensions that render the implementation + non-conformant are enabled; Sun's C compiler (and, I think, other + AT&T-derived C compilers) define it as 0 if extensions that render + the implementation non-conformant are enabled; Microsoft Visual C++ + 6.0 doesn't define it at all if extensions that render the implementation + non-conformant are enabled. + + We define it as 0 here, so that those generated files will use + those features (and thus not get type warnings when compiled with + MSVC++). */ +#ifndef __STDC__ +#define __STDC__ 0 +#endif + +/* + * Flex (v 2.5.35) uses this symbol to "exclude" unistd.h + */ +#define YY_NO_UNISTD_H + +/* Use Unicode in Windows runtime functions. */ +#define UNICODE 1 +#define _UNICODE 1 + +/* Define if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define if your processor stores words with the most significant + byte first (like Motorola and SPARC, unlike Intel and VAX). */ +/* #undef WORDS_BIGENDIAN */ + +/* Define if lex declares yytext as a char * by default, not a char[]. */ +#define YYTEXT_POINTER 1 + +#define HAVE_PLUGINS 1 +#define PLUGINS_NEED_ADDRESS_TABLE 1 + +/* Plugins can also use the import library of libwireshark.dll instead + of the old API. In that case we undefine PLUGINS_NEED_ADDRESS_TABLE + for the plugin. We don't undefine PLUGINS_NEED_ADDRESS_TABLE globally. + Thus Wireshark will be still able to load plugins using the old API. + The macro HAVE_WIN32_LIBWIRESHARK_LIB has to be defined in plugin's + makefile.nmake. A template is available in doc/README.plugins */ +#ifdef HAVE_WIN32_LIBWIRESHARK_LIB +#undef PLUGINS_NEED_ADDRESS_TABLE +#endif + +/* #undef HAVE_SA_LEN */ + +/* #undef NEED_STRERROR_H */ + +#define NEED_MKSTEMP 1 + +#define HAVE_LIBPCAP 1 + +#define HAVE_PCAP_FINDALLDEVS 1 +#define HAVE_PCAP_DATALINK_NAME_TO_VAL 1 +#define HAVE_PCAP_DATALINK_VAL_TO_NAME 1 +#define WPCAP_CONSTIFIED 1 +#define HAVE_LIBWIRESHARKDLL 1 + +#define HAVE_PCAP_LIST_DATALINKS 1 +#define HAVE_PCAP_SET_DATALINK 1 + +#define HAVE_REMOTE 1 +#define HAVE_PCAP_REMOTE 1 +#define HAVE_PCAP_OPEN 1 +#define HAVE_PCAP_FINDALLDEVS_EX 1 +#define HAVE_PCAP_CREATESRCSTR 1 +#define HAVE_PCAP_SETSAMPLING 1 + +#define HAVE_AIRPCAP 1 +#define HAVE_AIRPDCAP 1 + +/* availability of pcap_freecode() is handled at runtime */ +#define HAVE_PCAP_FREECODE 1 + +/* define macro for importing variables from an dll + * it depends on HAVE_LIBWIRESHARKDLL and _NEED_VAR_IMPORT_ + */ +#if defined (_NEED_VAR_IMPORT_) && defined (HAVE_LIBWIRESHARKDLL) +# define WS_VAR_IMPORT __declspec(dllimport) extern +#else +# define WS_VAR_IMPORT extern +#endif + +/* Define if you have the gethostbyname2 function. */ +/* #undef HAVE_GETHOSTBYNAME2 */ + +/* Define if you have the getprotobynumber function. */ +/* #undef HAVE_GETPROTOBYNUMBER */ + +/* Define if you have the header file. */ +/* #undef HAVE_ARPA_INET_H */ + +/* Define if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define if you have the header file. */ +/* #undef HAVE_ICONV */ + +/* Define if you have the header file. */ +/* #undef HAVE_NETDB_H */ + +/* Define if you have the header file. */ +/* #define HAVE_NETINET_IN_H 1 */ + +/* Define if you have the header file. */ +/* #undef HAVE_SNMP_SNMP_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_SNMP_VERSION_H */ + +/* Define if you have the header file. */ +#define HAVE_STDARG_H 1 + +/* Define if you have the header file. */ +/* #undef HAVE_STDDEF_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_SYS_IOCTL_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_SYS_SOCKET_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_SYS_SOCKIO_H */ + +/* Define if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define if you have the header file. */ +/* #define HAVE_SYS_TIME_H 1 */ + +/* Define if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define if you have the header file. */ +/* #undef HAVE_SYS_WAIT_H */ + +/* Define if you have the header file. */ +/* #define HAVE_UNISTD_H 1 */ + +/* Define if defines PRI[doxu]64 macros */ +/* #define INTTYPES_H_DEFINES_FORMATS */ + +/* Format for printing 64-bit signed decimal numbers */ +#ifndef PRId64 +#ifdef _MSC_EXTENSIONS +#define PRId64 "I64d" +#else /* _MSC_EXTENSIONS */ +#define PRId64 "lld" +#endif /* _MSC_EXTENSIONS */ +#endif /* PRId64 */ + +/* Format for printing 64-bit unsigned octal numbers */ +#ifndef PRIo64 +#ifdef _MSC_EXTENSIONS +#define PRIo64 "I64o" +#else /* _MSC_EXTENSIONS */ +#define PRIo64 "llo" +#endif /* _MSC_EXTENSIONS */ +#endif /* PRIo64 */ + +/* Format for printing 64-bit unsigned decimal numbers */ +#ifndef PRIu64 +#ifdef _MSC_EXTENSIONS +#define PRIu64 "I64u" +#else /* _MSC_EXTENSIONS */ +#define PRIu64 "llu" +#endif /* _MSC_EXTENSIONS */ +#endif /* PRIu64 */ + +/* Formats for printing 64-bit unsigned hexadecimal numbers */ +/* XXX - it seems that GLib has problems with the MSVC like I64x. + As we use GLib's g_sprintf and alike, it should be safe to use + llx everywhere now, making the macros pretty useless. For details see: + http://bugs.wireshark.org/bugzilla/show_bug.cgi?id=1025 */ +#ifndef PRIx64 +#ifdef _MSC_EXTENSIONS +/*#define PRIx64 "I64x"*/ +#define PRIx64 "llx" +#else /* _MSC_EXTENSIONS */ +#define PRIx64 "llx" +#endif /* _MSC_EXTENSIONS */ +#endif /* PRIx64 */ + +#ifndef PRIX64 +#ifdef _MSC_EXTENSIONS +/*#define PRIX64 "I64X"*/ +#define PRIX64 "llX" +#else /* _MSC_EXTENSIONS */ +#define PRIX64 "llX" +#endif /* _MSC_EXTENSIONS */ +#endif /* PRIX64 */ + +/* Define if you have the z library (-lz). */ +#define HAVE_LIBZ 1 + +/* Define to use GNU ADNS library */ +#define HAVE_C_ARES 1 + +/* Define to use GNU ADNS library */ +#ifndef HAVE_C_ARES + +#define ADNS_JGAA_WIN32 1 +#endif + +/* Define to use the PCRE library */ +#define HAVE_LIBPCRE 1 + +/* Define to use the Nettle library */ + + +/* Define to use the gnutls library */ +#define HAVE_LIBGNUTLS 1 + +/* Define to use the libgcrypt library */ +#define HAVE_LIBGCRYPT 1 + +/* Define to use mit kerberos for decryption of kerberos/sasl/dcerpc */ +#define HAVE_MIT_KERBEROS 1 +#ifdef HAVE_MIT_KERBEROS +#define HAVE_KERBEROS +#endif + +/* Define to use Lua */ +#define HAVE_LUA 1 +#define HAVE_LUA_5_1 1 + +/* Define to use Portaudio library */ +#define HAVE_LIBPORTAUDIO 1 +/* Define version of of the Portaudio library API */ + + +/* Define to have SMI */ +#define HAVE_LIBSMI 1 + +/* Define to have GeoIP */ +#define HAVE_GEOIP 1 + + +#ifndef WIN32 +#define WIN32 1 +#endif + +/* Define for IPv6 */ +#define INET6 1 + +#define HAVE_WINDOWS_H 1 +#define HAVE_WINSOCK2_H 1 +#define HAVE_DIRECT_H 1 +#define NEED_INET_ATON_H 1 +#define NEED_INET_V6DEFS_H 1 +/* Visual C 9 (2008) now needs these prototypes */ +#if _MSC_VER == 1500 +#define NTDDI_VERSION NTDDI_WIN2K +#define _WIN32_WINNT _WIN32_WINNT_WIN2K +#endif +#define NEED_GETOPT_H 1 +#define NEED_STRPTIME_H 1 +#define strcasecmp stricmp +#define strncasecmp strnicmp +#define popen _popen +#define pclose _pclose + +/* Needed for zlib, according to http://www.winimage.com/zLibDll/ */ +/*#define ZLIB_DLL 1 +#define _WINDOWS 1*/ + +/* Name of package */ +#define PACKAGE "wireshark" + +/* Version number of package */ +#define VERSION "1.1.3" + +/* We shouldn't need this under Windows but we'll define it anyway. */ +#define HTML_VIEWER "mozilla" + +/* Check for the required _MSC_VER */ +#if MSC_VER_REQUIRED != _MSC_VER +#define WS_TO_STRING2(x) #x +#define WS_TO_STRING(x) WS_TO_STRING2(x) +#pragma message( "_MSC_VER is:" WS_TO_STRING(_MSC_VER) " but required is:" WS_TO_STRING(MSC_VER_REQUIRED) ) +#error Your MSVC_VARIANT setting in config.nmake doesn't match the MS compiler version! +#endif diff --git a/application/tool/wireshark/1.2.6/config.h.win32 b/application/tool/wireshark/1.2.6/config.h.win32 new file mode 100644 index 0000000..bceb5fb --- /dev/null +++ b/application/tool/wireshark/1.2.6/config.h.win32 @@ -0,0 +1,293 @@ +/* $Id: config.h.win32 27098 2008-12-23 18:56:31Z gerald $ */ +/* config.h.win32 Generated manually. :-) */ +/* config.h. Generated automatically by configure. */ +/* config.h.in. Generated automatically from configure.in by autoheader. */ + +/* Generated Bison and Flex files test whether __STDC__ is defined + in order to check whether to use ANSI C features such as "const". + + GCC defines it as 1 even if extensions that render the implementation + non-conformant are enabled; Sun's C compiler (and, I think, other + AT&T-derived C compilers) define it as 0 if extensions that render + the implementation non-conformant are enabled; Microsoft Visual C++ + 6.0 doesn't define it at all if extensions that render the implementation + non-conformant are enabled. + + We define it as 0 here, so that those generated files will use + those features (and thus not get type warnings when compiled with + MSVC++). */ +#ifndef __STDC__ +#define __STDC__ 0 +#endif + +/* + * Flex (v 2.5.35) uses this symbol to "exclude" unistd.h + */ +#define YY_NO_UNISTD_H + +/* Use Unicode in Windows runtime functions. */ +#define UNICODE 1 +#define _UNICODE 1 + +/* Define if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define if your processor stores words with the most significant + byte first (like Motorola and SPARC, unlike Intel and VAX). */ +/* #undef WORDS_BIGENDIAN */ + +/* Define if lex declares yytext as a char * by default, not a char[]. */ +#define YYTEXT_POINTER 1 + +#define HAVE_PLUGINS 1 +#define PLUGINS_NEED_ADDRESS_TABLE 1 + +/* Plugins can also use the import library of libwireshark.dll instead + of the old API. In that case we undefine PLUGINS_NEED_ADDRESS_TABLE + for the plugin. We don't undefine PLUGINS_NEED_ADDRESS_TABLE globally. + Thus Wireshark will be still able to load plugins using the old API. + The macro HAVE_WIN32_LIBWIRESHARK_LIB has to be defined in plugin's + makefile.nmake. A template is available in doc/README.plugins */ +#ifdef HAVE_WIN32_LIBWIRESHARK_LIB +#undef PLUGINS_NEED_ADDRESS_TABLE +#endif + +/* #undef HAVE_SA_LEN */ + +/* #undef NEED_STRERROR_H */ + +#define NEED_MKSTEMP 1 + +@HAVE_LIBPCAP@ +@HAVE_PCAP_BREAKLOOP@ +@HAVE_PCAP_FINDALLDEVS@ +@HAVE_PCAP_DATALINK_NAME_TO_VAL@ +@HAVE_PCAP_DATALINK_VAL_TO_NAME@ +@WPCAP_CONSTIFIED@ +@HAVE_LIBWIRESHARKDLL@ + +@HAVE_PCAP_LIST_DATALINKS@ +@HAVE_PCAP_SET_DATALINK@ + +@HAVE_REMOTE@ +@HAVE_PCAP_REMOTE@ +@HAVE_PCAP_OPEN@ +@HAVE_PCAP_FINDALLDEVS_EX@ +@HAVE_PCAP_CREATESRCSTR@ +@HAVE_PCAP_SETSAMPLING@ + +@HAVE_AIRPCAP@ +@HAVE_AIRPDCAP@ + +/* availability of pcap_freecode() is handled at runtime */ +#define HAVE_PCAP_FREECODE 1 + +/* define macro for importing variables from an dll + * it depends on HAVE_LIBWIRESHARKDLL and _NEED_VAR_IMPORT_ + */ +#if defined (_NEED_VAR_IMPORT_) && defined (HAVE_LIBWIRESHARKDLL) +# define WS_VAR_IMPORT __declspec(dllimport) extern +#else +# define WS_VAR_IMPORT extern +#endif + +/* Define if you have the gethostbyname2 function. */ +/* #undef HAVE_GETHOSTBYNAME2 */ + +/* Define if you have the getprotobynumber function. */ +/* #undef HAVE_GETPROTOBYNUMBER */ + +/* Define if you have the header file. */ +/* #undef HAVE_ARPA_INET_H */ + +/* Define if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define if you have the header file. */ +/* #undef HAVE_ICONV */ + +/* Define if you have the header file. */ +/* #undef HAVE_NETDB_H */ + +/* Define if you have the header file. */ +/* #define HAVE_NETINET_IN_H 1 */ + +/* Define if you have the header file. */ +/* #undef HAVE_SNMP_SNMP_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_SNMP_VERSION_H */ + +/* Define if you have the header file. */ +#define HAVE_STDARG_H 1 + +/* Define if you have the header file. */ +/* #undef HAVE_STDDEF_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_SYS_IOCTL_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_SYS_SOCKET_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_SYS_SOCKIO_H */ + +/* Define if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define if you have the header file. */ +/* #define HAVE_SYS_TIME_H 1 */ + +/* Define if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define if you have the header file. */ +/* #undef HAVE_SYS_WAIT_H */ + +/* Define if you have the header file. */ +/* #define HAVE_UNISTD_H 1 */ + +/* Define if defines PRI[doxu]64 macros */ +/* #define INTTYPES_H_DEFINES_FORMATS */ + +/* Format for printing 64-bit signed decimal numbers */ +#ifndef PRId64 +#ifdef _MSC_EXTENSIONS +#define PRId64 "I64d" +#else /* _MSC_EXTENSIONS */ +#define PRId64 "lld" +#endif /* _MSC_EXTENSIONS */ +#endif /* PRId64 */ + +/* Format for printing 64-bit unsigned octal numbers */ +#ifndef PRIo64 +#ifdef _MSC_EXTENSIONS +#define PRIo64 "I64o" +#else /* _MSC_EXTENSIONS */ +#define PRIo64 "llo" +#endif /* _MSC_EXTENSIONS */ +#endif /* PRIo64 */ + +/* Format for printing 64-bit unsigned decimal numbers */ +#ifndef PRIu64 +#ifdef _MSC_EXTENSIONS +#define PRIu64 "I64u" +#else /* _MSC_EXTENSIONS */ +#define PRIu64 "llu" +#endif /* _MSC_EXTENSIONS */ +#endif /* PRIu64 */ + +/* Formats for printing 64-bit unsigned hexadecimal numbers */ +/* XXX - it seems that GLib has problems with the MSVC like I64x. + As we use GLib's g_sprintf and alike, it should be safe to use + llx everywhere now, making the macros pretty useless. For details see: + http://bugs.wireshark.org/bugzilla/show_bug.cgi?id=1025 */ +#ifndef PRIx64 +#ifdef _MSC_EXTENSIONS +/*#define PRIx64 "I64x"*/ +#define PRIx64 "llx" +#else /* _MSC_EXTENSIONS */ +#define PRIx64 "llx" +#endif /* _MSC_EXTENSIONS */ +#endif /* PRIx64 */ + +#ifndef PRIX64 +#ifdef _MSC_EXTENSIONS +/*#define PRIX64 "I64X"*/ +#define PRIX64 "llX" +#else /* _MSC_EXTENSIONS */ +#define PRIX64 "llX" +#endif /* _MSC_EXTENSIONS */ +#endif /* PRIX64 */ + +/* Define if you have the z library (-lz). */ +@HAVE_LIBZ@ + +/* Define to use GNU ADNS library */ +@HAVE_C_ARES@ + +/* Define to use GNU ADNS library */ +#ifndef HAVE_C_ARES +@HAVE_GNU_ADNS@ +#define ADNS_JGAA_WIN32 1 +#endif + +/* Define to use the PCRE library */ +@HAVE_PCRE@ + +/* Define to use the Nettle library */ +@HAVE_NETTLE@ + +/* Define to use the gnutls library */ +@HAVE_LIBGNUTLS@ + +/* Define to use the libgcrypt library */ +@HAVE_LIBGCRYPT@ + +/* Define to use mit kerberos for decryption of kerberos/sasl/dcerpc */ +@HAVE_KFW@ +#ifdef HAVE_MIT_KERBEROS +#define HAVE_KERBEROS +#endif + +/* Define to use Lua */ +@HAVE_LUA@ +@HAVE_LUA_5_1@ + +/* Define to use Portaudio library */ +@HAVE_LIBPORTAUDIO@ +/* Define version of of the Portaudio library API */ +@PORTAUDIO_API_1@ + +/* Define to have SMI */ +@HAVE_SMI@ + +/* Define to have GeoIP */ +@HAVE_GEOIP@ + + +#ifndef WIN32 +#define WIN32 1 +#endif + +/* Define for IPv6 */ +@INET6@ + +#define HAVE_WINDOWS_H 1 +#define HAVE_WINSOCK2_H 1 +#define HAVE_DIRECT_H 1 +#define NEED_INET_ATON_H 1 +#define NEED_INET_V6DEFS_H 1 +/* Visual C 9 (2008) now needs these prototypes */ +#if _MSC_VER == 1500 +#define NTDDI_VERSION NTDDI_WIN2K +#define _WIN32_WINNT _WIN32_WINNT_WIN2K +#endif +#define NEED_GETOPT_H 1 +#define NEED_STRPTIME_H 1 +#define strcasecmp stricmp +#define strncasecmp strnicmp +#define popen _popen +#define pclose _pclose + +/* Needed for zlib, according to http://www.winimage.com/zLibDll/ */ +/*#define ZLIB_DLL 1 +#define _WINDOWS 1*/ + +/* Name of package */ +#define PACKAGE "wireshark" + +/* Version number of package */ +#define VERSION "@VERSION@" + +/* We shouldn't need this under Windows but we'll define it anyway. */ +#define HTML_VIEWER "mozilla" + +/* Check for the required _MSC_VER */ +#if MSC_VER_REQUIRED != _MSC_VER +#define WS_TO_STRING2(x) #x +#define WS_TO_STRING(x) WS_TO_STRING2(x) +#pragma message( "_MSC_VER is:" WS_TO_STRING(_MSC_VER) " but required is:" WS_TO_STRING(MSC_VER_REQUIRED) ) +#error Your MSVC_VARIANT setting in config.nmake doesn't match the MS compiler version! +#endif diff --git a/application/tool/wireshark/1.2.6/config.nmake b/application/tool/wireshark/1.2.6/config.nmake new file mode 100644 index 0000000..593fa86 --- /dev/null +++ b/application/tool/wireshark/1.2.6/config.nmake @@ -0,0 +1,964 @@ +# $Id: config.nmake 27582 2009-03-02 21:33:11Z gerald $ + +# Some more informations about the settings in this file, can be found +# in the file README.win32 and the Developer's Guide (available online). + +##### Target platform ##### +# Only "win32" is valid (for now). +# This can be defined in the system environment. +!IFNDEF PLATFORM +PLATFORM=win32 +!ENDIF + +##### Versions ##### + +# The current Wireshark version +# It's highly recommended to leave MAJOR/MINOR/MICRO unchanged +VERSION_MAJOR=1 +VERSION_MINOR=1 +VERSION_MICRO=3 +VERSION_BUILD=0 +# It's recommended to change VERSION_EXTRA for your own custom builds +# e.g. "-SVN-12345" +VERSION_EXTRA= + +# The version of the wiretap library (recommended: leave unchanged) +WTAP_VERSION_MAJOR=0 +WTAP_VERSION_MINOR=3 +WTAP_VERSION_MICRO=1 + + + +##### Directories ##### + +# +# Base directory, where your libraries reside, which are needed to +# compile the sources. This setting is used only inside this file. +# +#PPMODIF +#WIRESHARK_LIBS=C:\wireshark-$(PLATFORM)-libs + +!IFNDEF DEV_ROOT +DEV_ROOT=../../../../../.. +!ENDIF + +!IFNDEF WS_DEV_ROOT +!IF EXIST( "$(DEV_ROOT)\application\tool\wireshark\ws_dev_root.nmake") +!include $(DEV_ROOT)\application\tool\wireshark\ws_dev_root.nmake +!ENDIF +!ENDIF + +!IFNDEF WS_DEV_ROOT +WIRESHARK_LIBS=$(DEV_ROOT)/application/3rdparty/wireshark/$(TGT_WS_VERSION)/$(PLATFORM)-libs +!ELSE +WIRESHARK_LIBS=$(WS_DEV_ROOT)/$(TGT_WS_VERSION)/$(PLATFORM)-libs +!ENDIF + +OCT_INC = $(DEV_ROOT)/software/include + + +!IF "$(DEBUG)" == "1" +DISSECTOR_OBJ_PATH = $(DISSECTOR_SRC:source=Debug_1.2.6) +SMOKE_OBJ_PATH = $(SMOKE_SRC:smoke_test=Debug_Smoke_1.2.6) +!ELSE +DISSECTOR_OBJ_PATH = $(DISSECTOR_SRC:source=Release_1.2.6) +SMOKE_OBJ_PATH = $(SMOKE_SRC:smoke_test=Release_Smoke_1.2.6) +!ENDIF + +# +# Base directory, where your programs reside. +# This setting is used only inside this file. +# +!IFNDEF WIRESHARK_RELEASE +WIRESHARK_RELEASE=$(TGT_WS_VERSION) +!ENDIF +PROGRAM_FILES=$(PROGRAMFILES) + +!IFNDEF WS_INSTALL_PATH +# +# Wireshark plugins installation +WS_INSTALL_PATH=$(PROGRAM_FILES)/wireshark +!ENDIF +WIRESHARK_PLUGING_DEST=$(WS_INSTALL_PATH)/plugins/$(WIRESHARK_RELEASE) + +# +# Location of the "tools" directory. This affects HTML2TXT below and should +# be overridden by makefiles in any subdirectories that use HTML2TXT. +!IFNDEF TOOLS_DIR +TOOLS_DIR=tools +!ENDIF + +# +# Machine type for the compiler and linker +# TARGET_MACHINE (Used for link /MACHINE) should be one of "X86" or "X64" +# (sorry ARM, Alpha, MIPS, and Itanium fans). +# CPU (Used by win32.mak) should be one of "i386" or "AMD64". +!if "$(PLATFORM)" == "win32" +TARGET_MACHINE=X86 +CPU=i386 +!else if "$(PLATFORM)" == "win64" +TARGET_MACHINE=X64 +CPU=AMD64 +!endif + +!IF !DEFINED(MSVC_VARIANT) +##### Microsoft Visual C / Studio Variant ##### +# for the different Studios, see: http://en.wikipedia.org/wiki/Microsoft_Visual_Studio +# only one of the following MSVC_VARIANT settings should be used +# BTW: The "Microsoft Visual C++ Toolkit 2003" DOESN'T WORK for WS! + +# "Microsoft Visual Studio 6.0" +# Visual C++ 6.0, _MSC_VER 1200, msvcrt.dll (version 6) +#MSVC_VARIANT=MSVC6 + +# "Microsoft Visual Studio .NET (2002)" +# Visual C++ 7.0, _MSC_VER 1300, msvcr70.dll +#MSVC_VARIANT=MSVC2002 + +# "Microsoft .Net Framework SDK Version 1.0" +# needs additional Platform SDK installation +# Visual C++ 7.0, _MSC_VER 1300, msvcr70.dll +#MSVC_VARIANT=DOTNET10 + +# "Microsoft Visual Studio .NET 2003" +# Visual C++ 7.1, _MSC_VER 1310, msvcr71.dll +#MSVC_VARIANT=MSVC2003 + +# "Microsoft .Net Framework SDK Version 1.1" +# needs additional Platform SDK installation +# Visual C++ 7.1, _MSC_VER 1310, msvcr71.dll +#MSVC_VARIANT=DOTNET11 + +# "Microsoft Visual Studio 2005" +# Visual C++ 8.0, _MSC_VER 1400, msvcr80.dll +#MSVC_VARIANT=MSVC2005 + +# "Microsoft Visual C++ 2005 Express Edition" +# needs additional Platform SDK installation +# Visual C++ 8.0, _MSC_VER 1400, msvcr80.dll +#MSVC_VARIANT=MSVC2005EE + +# "Microsoft .Net Framework 2.0 SDK" +# needs additional Platform SDK installation +# Visual C++ 8.0, _MSC_VER 1400, msvcr80.dll +#MSVC_VARIANT=DOTNET20 + +# "Microsoft Visual Studio 2008" +# Visual C++ 9.0, _MSC_VER 1500, msvcr90.dll +#MSVC_VARIANT=MSVC2008 + +# "Microsoft Visual C++ 2008 Express Edition" +# Visual C++ 9.0, _MSC_VER 1500, msvcr90.dll +MSVC_VARIANT=MSVC2008EE +# +!ENDIF +# +# +# Optional: To compile some time critical code from assembler instead of C +# +# If you have the NASM compiler, set this to the NASM executable. +# http://nasm.sourceforge.net/ +# +# If you don't have NASM, comment this line out, so that NASM +# isn't defined. +# +NASM=$(WIRESHARK_LIBS)\nasm-2.02\nasm.exe + + +##### Libraries ##### + +# +# Mandatory: GLib settings +# +# Please note: Since Wireshark release 1.0.0, we no longer support GLib1.x +# +GLIB_VERSION=2.0 +GLIB_DIR=$(WIRESHARK_LIBS)\glib + +# +# Mandatory: GTK (& related libs) settings +# +# Please note: Since Wireshark release 1.0.0, we no longer support GTK1.x +# +# If you want building with GTK+, set GTK_DIR to the pathname of the +# directory in which the "include" and "lib" directories reside. +# +GTK_DIR=$(WIRESHARK_LIBS)\gtk2 + +# +# Mandatory: Version numbers of GTK and pango. +# +# (MAJOR + MINOR Version number but without MICRO version number) +# These macros are used by the nsis installer script and by the setup target. +# +# GTK 2.12 is the mainline since Wireshark 0.99.7 +GTK_INST_VERSION=2.14 +PANGO_INST_VERSION=1.22 + +# +# Optional: WinPcap developer's pack to capture network traffic. +# +# If you have the WinPcap developer's pack (at least version 3.0), +# set this to the directory in which the WinPcap developer's pack resides. +# +# If you don't have the WPdpack, comment this line out, so that +# PCAP_DIR isn't defined. +# +PCAP_DIR=$(WIRESHARK_LIBS)\WPdpack + +# +# Optional: WinPcap remote capture support and new API +# (pcap_open(), pcap_findalldevs_ex(), etc.) +# +PCAP_REMOTE=1 + +# +# Optional: The ZLib enables unzipping of gzip compressed capture files +# "on the fly". +# +# If you have Zlib, set this to directory in which the Zlib headers +# and .lib file are stored. +# +# If you don't have Zlib, comment this line out, so that ZLIB_DIR isn't +# defined. +# +ZLIB_DIR=$(WIRESHARK_LIBS)\zlib123 + +# +# Optional: the ADNS library enables asynchronous (nonblocking) DNS +# name resolvings. +# +# If you have GNU ADNS, set this to the directory in which the GNU ADNS +# .lib file is stored. +# +# If you don't have GNU ADNS, comment this line out, so that ADNS_DIR +# isn't defined. +# +# If C_ARES_DIR is defined below, it will override this setting. +# +#ADNS_DIR=$(WIRESHARK_LIBS)\adns-1.0-win32-05ws + +# +# Optional: the c-ares library enables asynchronous (nonblocking) DNS +# name resolvings. +# +# If you have c-ares, set this to the directory in which the c-ares +# .lib file is stored. Setting this will override ADNS_DIR above. You +# can't have both. +# +# If you're using Visual C++ 6.0, you'll have to use a platform SDK that +# defines socklen_t, such as Windows Server 2003 PSDK. +# +# If you don't have c-ares, comment this line out, so that C_ARES_DIR +# isn't defined. +# +C_ARES_DIR=$(WIRESHARK_LIBS)\c-ares-1.6.0ws + +# +# Optional: the PCRE (Perl Compatible Regular Expressions) library +# enables regular expressions for display filters. +# +# If you have the PCRE library, set this to the directory in which +# the GNUWIN32 pcre-lib package is stored. +# +# If you don't have PCRE, comment this line out, so that PCRE_DIR +# isn't defined. +# +PCRE_DIR=$(WIRESHARK_LIBS)\pcre-7.0 + +# +# Optional: the GNUTLS library enables ssl decryption. +# +# If you have the GNUTLS library, set this to the directory where +# the lib and include files are stored. +# +# If you don't have GNUTLS, comment this line out, so that GNUTLS_DIR +# isn't defined. +# +# Platform SDK conflicts with openssl.h header +#GNUTLS_DIR=$(WIRESHARK_LIBS)\gnutls-2.6.3-1 +GNUTLS_DIR=$(WIRESHARK_LIBS)\gnutls-2.6.4-1 + +# +# Optional: the KFW library enables kerberos/sasl/dcerpc decryption. +# +# If you have the kerberos for windows (mit) library, set this to the +# directory where the kfw package is stored. +# +# If you don't have KFW, comment this line out, so that KFW_DIR +# isn't defined. +# +KFW_DIR=$(WIRESHARK_LIBS)\kfw-2.5 + +# +# Optional: the Nettle library enables ??? decryption. +# +# If you have the Nettle encryption library, set this to the +# directory in which the nettle package is stored. +# +# If you don't have Nettle, comment this line out, so that NETTLE_DIR +# isn't defined. +# +# NETTLE_DIR=$(WIRESHARK_LIBS)\nettle-1.10 + +# +# Optional: the LUA library enables scripting support. +# +# If you have the LUA library, set this to the directory in which +# the LUA package is stored. +# +# If you don't have LUA, comment this line out, so that LUA_DIR +# isn't defined. +# +LUA_DIR=$(WIRESHARK_LIBS)\lua5.1.4 + +# +# Optional: the PORTAUDIO library enables audio output for RTP streams. +# +# If you have the PORTAUDIO library (used for rtp_player), set this to +# the directory in which the PORTAUDIO library is stored. +# +# If you don't have PORTAUDIO, comment this line out, so that +# PORTAUDIO_DIR isn't defined. +# +#PORTAUDIO_DIR=$(WIRESHARK_LIBS)\portaudio_v18_1 +PORTAUDIO_DIR=$(WIRESHARK_LIBS)\portaudio_v19_2 + +# +# Version number of PortAudio +# +#PORTAUDIO_VERSION=18 +PORTAUDIO_VERSION=19 + +# +# Iconv: Mandatory for Glib >= 2 and <= 2.14.4 +# [win-iconv statically linked as part of Glib >= 2.14.5] +# Set ICONV_DIR to the directory in which the +# ICONV include files and library resides. +# +##ICONV_DIR=$(WIRESHARK_LIBS)\libiconv-1.9.1.bin.woe32 + +# +# Mandatory for GTK >= 2: Gettext +# +# Set GETTEXT_DIR to the directory in which the +# GETTEXT include files and library resides. +# +#GETTEXT_DIR=$(WIRESHARK_LIBS)\gettext-0.14.5 +GETTEXT_DIR=$(WIRESHARK_LIBS)\gettext-runtime-0.17-1 +# +# Optional: AirPcap developer's pack to capture wireless network traffic +# incl. 802.11 management frames. +# +# If you have the AirPcap developer's pack, set this to the directory +# in which the AirPcap developer's pack resides. +# +# If you don't have the AirPcap developer's pack, comment this line out, +# so that AIRPCAP_DIR isn't defined. +# +AIRPCAP_DIR=$(WIRESHARK_LIBS)\AirPcap_Devpack_1_0_0_594\AirPcap_Devpack + +# +# Optional: LIBSMI, System Management Interface +# +# Used for oid-name resolution for SNMP and other protocols +# +SMI_DIR=$(WIRESHARK_LIBS)\libsmi-0.4.8 + +# +# Optional: GeoIP, IP address database lookups +# +# Used to map IP addresses to MaxMind GeoIP database entries +# +# GeoIP requires IPv6 definitions that don't ship with Visual C++ 6.0. +# However, the Microsoft Platform SDK for Windows Server 2003 R2 provides +# these definitions. The SDK's SetEnv.bat script defines INETSDK. +!IF "$(MSVC_VARIANT)" != "MSVC6" || DEFINED(INETSDK) +GEOIP_DIR=$(WIRESHARK_LIBS)\GeoIP-1.4.5ws +!ENDIF + +##### Tools ##### + +# Set the following mandatory commands to find the tools. +# The easiest way is to use the corresponding packages from cygwin. + +# Set up the path to the cygwin binaries +CYGWIN_PATH=c:\cygwin\bin + +# command for a shell (cygwin's bash package recommended) +SH_PROG=bash + +# bash versions after 3.1.6 need the 'igncr' shell option to be able to +# process scripts in windows 'native format' (dos crlf format). +# The following !IF results in the option being used only if it is available +# since using it on bash version 3.1.6 (or earlier) is not required and +# will cause an error message. +!if "$(SH_PROG)"=="bash" && [$(CYGWIN_PATH)\bash -c "set -o igncr" 2>nul: ] == 0 +SH_FLAGS=-o igncr +!endif + +SH=$(SH_PROG) $(SH_FLAGS) + + +# command for perl (cygwin's perl package recommended) +PERL=perl + +# command for pod2man and pod2html +# (part of the perl package, usually leave these unchanged) +POD2MAN=$(SH) pod2man +POD2HTML=$(SH) pod2html + +# Command for native Windows Python (recommended) +# V2.4 to V2.6 should work + +# If you want to specify your Python settings, uncomment the lines below. +#PYTHON="C:\Python26\python.exe" +#PATH=c:\Python26;$(PATH) + +# Command for Cygwin's Python (not recommended) +#PYTHON=env python + +# Otherwise, find Python automatically. +!IF !DEFINED(PYTHON) +!IF EXIST(c:\Python26\python.exe) +PYTHON="C:\Python26\python.exe" +PATH=c:\Python26;$(PATH) +!ELSE IF EXIST(c:\Python25\python.exe) +PYTHON="C:\Python25\python.exe" +PATH=c:\Python25;$(PATH) +!ELSE IF EXIST(c:\Python24\python.exe) +PYTHON="C:\Python24\python.exe" +PATH=c:\Python24;$(PATH) +!ENDIF +!ENDIF + +# command for lex/flexx (cygwin's flex recommended) +LEX=flex + +# command for yacc/bison (cygwin's bison recommended) +YACC=bison + +# +# Optional: To build the NSIS installer. +# +# If you have the NSIS package, set this to the NSIS executable. +# +# If you don't have NSIS, comment this line out, so that MAKENSIS +# isn't defined. +# +MAKENSIS="$(PROGRAM_FILES)\nsis\makensis.exe" + +# +# Optional: To build the developers API documentation with doxygen and dot. +# Currently experimental, outdated and incomplete. +# +# You will have to download and install: +# Doxygen from: http://www.doxygen.org +# Graphviz from: http://www.research.att.com/sw/tools/graphviz/ +# +# If you have doxygen, set this to the doxygen executable. +# +# If you don't want the developers documentation (or don't have the tools), +# comment this line out, so that DOXYGEN isn't defined. +# +#DOXYGEN="$(PROGRAM_FILES)/doxygen/bin/doxygen.exe" + +# +# Recommended: Use the compressed html help format .chm as the Wireshark integrated help. +# +# The required htmlhelp.h and htmlhelp.lib should be included in MSVC_VARIANT > MSVC6. +# +# For MSVC_VARIANT == MSVC6 you will have to download and install the html help workshop from: +# +# http://msdn.microsoft.com/library/default.asp?url=/library/en-us/htmlhelp/html +# /hwMicrosoftHTMLHelpDownloads.asp +# +# Then point HHC_DIR to the html help dir (where hhc.exe resides). +# +# If you don't want the online help (or don't have the tools), +# comment this line out, so that HHC_DIR isn't defined. +# +HHC_DIR=$(PROGRAM_FILES)/HTML Help Workshop + +# +# Optional: To reduce the size of dlls and exes, which is especially useful for USB device distributions (U3, PortableApps) +# +# If you have the UPX package, set this to the upx.exe executable. +# +# UPX can be downloaded from: +# http://upx.sourceforge.net/ +# +# If you don't have UPX, or don't want to pack exes and dlls, +# comment this line out, so that UPX isn't defined. +# + +UPX=$(WIRESHARK_LIBS)\upx301w\upx.exe + +##### Flags, PATHs and Miscellaneous ##### + +# "convert" the MSVC variant into the required MSC compiler version +!IF "$(MSVC_VARIANT)" == "MSVC6" +MSC_VER_REQUIRED=1200 +!ELSEIF "$(MSVC_VARIANT)" == "MSVC2002" || "$(MSVC_VARIANT)" == "DOTNET10" +MSC_VER_REQUIRED=1300 +!ELSEIF "$(MSVC_VARIANT)" == "MSVC2003" || "$(MSVC_VARIANT)" == "DOTNET11" +MSC_VER_REQUIRED=1310 +!ELSEIF "$(MSVC_VARIANT)" == "MSVC2005" || "$(MSVC_VARIANT)" == "MSVC2005EE" || "$(MSVC_VARIANT)" == "DOTNET20" +MSC_VER_REQUIRED=1400 +!ELSEIF "$(MSVC_VARIANT)" == "MSVC2008" || "$(MSVC_VARIANT)" == "MSVC2008EE" +MSC_VER_REQUIRED=1500 +!ELSE +!ERROR MSVC_VARIANT unknown +!ENDIF + +# Compiler flags: +# /W3 warning level 3 (0 less - 4 most, 1 default) +# /Zi create .pdb file for debugging +# /MD use "Multithreading Debug" libraries +# /D_CRT_SECURE_NO_DEPRECATE Don't warn for "insecure" calls, see MSDN "Security Enhancements in the CRT" +# /D_CRT_NONSTDC_NO_DEPRECATE Don't warn for "Deprecated CRT Functions" as MSDN calls this +# /D_BIND_TO_CURRENT_CRT_VERSION=1 Make sure our CRT and manifest versions match (http://msdn.microsoft.com/en-us/library/cc664727.aspx) +# /DWIN32_LEAN_AND_MEAN Don't include unnecessary Windows include files (see windows.h) +# /MP [] [MSVC2008]: Compiles multiple source files by using multiple processes +# Add if desired for compile speedup on machines with 2 or more "effective processors" +# /MANIFEST:no Don't create a SxS manifest. Makes sure our plugins don't load a second copy of the CRT. +# +!IF "$(MSVC_VARIANT)" == "MSVC6" || "$(MSVC_VARIANT)" == "MSVC2002" || "$(MSVC_VARIANT)" == "DOTNET10" || "$(MSVC_VARIANT)" == "MSVC2003" || "$(MSVC_VARIANT)" == "DOTNET11" +LOCAL_CFLAGS=/Zi /W3 /MD /DWIN32_LEAN_AND_MEAN /DMSC_VER_REQUIRED=$(MSC_VER_REQUIRED) +!ELSEIF "$(MSVC_VARIANT)" == "MSVC2005" || "$(MSVC_VARIANT)" == "MSVC2005EE" || "$(MSVC_VARIANT)" == "DOTNET20" || "$(MSVC_VARIANT)" == "MSVC2008" || "$(MSVC_VARIANT)" == "MSVC2008EE" +LOCAL_CFLAGS=/Zi /W3 /MD /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE /DWIN32_LEAN_AND_MEAN /DMSC_VER_REQUIRED=$(MSC_VER_REQUIRED) /D_BIND_TO_CURRENT_CRT_VERSION=1 +!ELSE +!ERROR MSVC_VARIANT unknown +!ENDIF + +# Linker flags: +# /DEBUG generate debug info +# /PROFILE generate map file(s) for profiling +# /DEFAULTLIB:xxx use xxx as the standard C library +# /NODEFAULTLIB:xxx don't use xxx as the standard C library +# +LOCAL_LDFLAGS=/DEBUG /MACHINE:$(TARGET_MACHINE) +DLL_LDFLAGS = +!IF $(MSC_VER_REQUIRED) >= 1400 +DLL_LDFLAGS = /MANIFEST:no +!ENDIF + +PLUGIN_LDFLAGS = /NOLOGO /INCREMENTAL:no $(LOCAL_LDFLAGS) $(DLL_LDFLAGS) + +# +# According to http://bugs.wireshark.org/bugzilla/show_bug.cgi?id=403 +# XCOPY under Windows NT doesn't support the "/Y" flag. This works +# around that bug. +# XXX - This apparently doesn't work for some versions of nmake: +# http://support.microsoft.com/default.aspx?scid=kb;en-us;86814 +# It looks like we'll have to call "set copycmd=/y" before we run xcopy. +COPYCMD=/y + +# +# If you don't want to build libwireshark.dll, you should comment out the +# following line. (Note: for plugin support this option must stay activated) +ENABLE_LIBWIRESHARK=USE + +# +# install (debug) directory for Wireshark (relative to your source dir) +INSTALL_DIR=wireshark-gtk2 + + + +##### C-Runtime Redistributable ##### +# +# The C-Runtime since Version 7 must be shipped together with +# the program installer, to avoid missing msvcr*.dll files on +# the target machine. +# +# The location of these files differ on the various compiler +# packages, the following will use the default paths depending +# on the package version. +# +!IF "$(MSVC_VARIANT)" == "MSVC6" +# msvcrt.dll will already be available on target machines - nothing additional to install + +!ELSEIF "$(MSVC_VARIANT)" == "MSVC2002" +# you probably need to tweak this directory if you don't use the professional edition! +MSVCR_DLL=$(PROGRAM_FILES)\Microsoft Visual Studio .NET\Visual Studio .NET Professional - English\msvcr70.dll + +!ELSEIF "$(MSVC_VARIANT)" == "DOTNET10" +# no redistributable available for this package! + +!ELSEIF "$(MSVC_VARIANT)" == "MSVC2003" +# you probably need to tweak this directory if you don't use the professional edition! +MSVCR_DLL=$(PROGRAM_FILES)\Microsoft Visual Studio .NET 2003\Visual Studio .NET Professional 2003 - English\msvcr71.dll + +!ELSEIF "$(MSVC_VARIANT)" == "DOTNET11" +# no redistributable available for this package! + +!ELSEIF "$(MSVC_VARIANT)" == "MSVC2005" +MSVCR_DLL=$(PROGRAM_FILES)\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT\*.* + +!ELSEIF "$(MSVC_VARIANT)" == "MSVC2005EE" || "$(MSVC_VARIANT)" == "DOTNET20" || "$(MSVC_VARIANT)" == "MSVC2008EE" +# you need to download the redistributable package vcredist_x86.exe from Microsoft first, +# and copy it to the lib folder!!! +VCREDIST_EXE=$(WIRESHARK_LIBS)\vcredist_x86.exe + +!ELSEIF "$(MSVC_VARIANT)" == "MSVC2008" +MSVCR_DLL=$(PROGRAM_FILES)\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT\*.* + +!ELSE +!ERROR MSVC_VARIANT unknown +!ENDIF + + + +##### Advanced: Docbook/XML documentation generation ##### +# If you want to generate the Docbook/XML based docs (User's and Developer's +# Guide, ...), you'll need some additional tools / libraries compared to the +# rest of the build process. +# +# FOR DETAILED INSTRUCTIONS TO GENERATE THE DOCS, SEE: docbook\readme.txt. +# +# If you don't call the Makefile.nmake in the docbook dir to generate the +# docs, the following settings in this section will have no effect. + +# formatting objects processor executable +# Comment this out if you don't have fop installed or you don't want the docs +# in PDF format. +!IFNDEF FOP +FOP=fop-0.20.5\fop.bat +!ENDIF + +# Additional options to fop. +FOP_OPTS=-Xmx256m + +# html help compiler +# Comment this out if you don't have hhc.exe or you don't want the docs in +# .chm format. +# +# Beware: hhc.exe is NOT part of the MSVC packages in HHC_DIR mentioned above, +# so you'll need to install the HTML Help Workshop for this. +HHC_EXE="$(HHC_DIR)\hhc.exe" + +# html to text converter for text version of release notes, e.g. elinks. +# This could also be "lynx", or "true" if neither elinks nor lynx is installed +# (cygwin: lynx works, elinks not available, links and true doesn't produce output) +#HTML2TXT=elinks -dump -dump-width 72 +#HTML2TXT=links -dump -width 72 +#HTML2TXT=lynx -dump -width=72 -nolist -stdin + +!IFNDEF HTML2TXT +HTML2TXT=$(PYTHON) $(TOOLS_DIR)\html2text.py --width=72 --no-links +!ENDIF + +# the XSL processor (part of cygwin's libxslt package) +XSLTPROC="xsltproc" + +# the XML validator (part of cygwin's libxml2 package) +XMLLINT="xmllint" + + + +############################################################################## +# +# You should not have to change anything below this comment. +# If you do, it's a deficiency in the Makefile.nmake files; +# either tell wireshark-dev@wireshark.org about it, including +# details of why you had to change it, or fix config.nmake +# and any Makefile.nmake files that need to be changed, and +# send us the patches, along with details of why the change +# was necessary. +# +############################################################################## + +# +# The RC_VERSION should be comma-separated, not dot-separated, +# as per Graham Bloice's message in +# +# http://www.ethereal.com/lists/ethereal-dev/200303/msg00283.html +# +# "The RC_VERSION variable in config.nmake should be comma separated. +# This allows the resources to be built correctly and the version +# number to be correctly displayed in the explorer properties dialog +# for the executables, and XP's tooltip, rather than 0.0.0.0." +# + +VERSION=$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_MICRO)$(VERSION_EXTRA) +RC_VERSION=$(VERSION_MAJOR),$(VERSION_MINOR),$(VERSION_MICRO),$(VERSION_BUILD) + +WTAP_VERSION=$(WTAP_VERSION_MAJOR).$(WTAP_VERSION_MINOR).$(WTAP_VERSION_MICRO) +RC_WTAP_VERSION=$(WTAP_VERSION_MAJOR),$(WTAP_VERSION_MINOR),$(WTAP_VERSION_MICRO) + + +GLIB_CFLAGS=/I$(GLIB_DIR)\include\glib-$(GLIB_VERSION) \ + /I$(GLIB_DIR)\lib\glib-$(GLIB_VERSION)\include +GCC_GLIB_CFLAGS=-I$(GLIB_DIR)\include\glib-$(GLIB_VERSION) \ + -I$(GLIB_DIR)\lib\glib-$(GLIB_VERSION)\include +GLIB_LIBS=$(GLIB_DIR)\lib\glib-$(GLIB_VERSION).lib \ + $(GLIB_DIR)\lib\gmodule-$(GLIB_VERSION).lib \ + $(GLIB_DIR)\lib\gobject-$(GLIB_VERSION).lib + +# GTK+ +GTK_CFLAGS=$(GLIB_CFLAGS) /I$(GTK_DIR)\include\gtk-2.0 \ + /I$(GTK_DIR)\lib\gtk-2.0\include \ + /I$(GTK_DIR)\include\atk-1.0 \ + /I$(GTK_DIR)\include\cairo \ + /I$(GTK_DIR)\include\pango-1.0 +GTK_LIBS=$(GTK_DIR)\lib\gtk-win32-2.0.lib \ + $(GTK_DIR)\lib\gdk-win32-2.0.lib \ + $(GTK_DIR)\lib\gdk_pixbuf-2.0.lib \ + $(GTK_DIR)\lib\pango-1.0.lib \ + $(GLIB_LIBS) + +!IF "$(GTK_INST_VERSION)" == "2.14" +GTK_LIB_DIR=2.10.0 +NEED_LIBPNG_DLL=USE +NEED_LIBJPEG_DLL=USE +NEED_LIBTIFF_DLL=USE +NEED_CAIRO_DLL=USE +GTK_WIMP_DLLSRC_DIR=$(GTK_DIR)\lib\gtk-2.0\2.10.0\engines +GTK_WIMP_DLLDST_DIR=lib\gtk-2.0\2.10.0\engines +GTK_WIMP_RCSRC_DIR=$(GTK_DIR)\share\themes\MS-Windows\gtk-2.0 +GTK_WIMP_RCDST_DIR=etc\gtk-2.0 +!ELSEIF "$(GTK_INST_VERSION)" == "2.12" +GTK_LIB_DIR=2.10.0 +NEED_LIBPNG_DLL=USE +NEED_LIBJPEG_DLL=USE +NEED_LIBTIFF_DLL=USE +NEED_CAIRO_DLL=USE +GTK_WIMP_DLLSRC_DIR=$(GTK_DIR)\lib\gtk-2.0\2.10.0\engines +GTK_WIMP_DLLDST_DIR=lib\gtk-2.0\2.10.0\engines +GTK_WIMP_RCSRC_DIR=$(GTK_DIR)\share\themes\MS-Windows\gtk-2.0 +GTK_WIMP_RCDST_DIR=etc\gtk-2.0 +!ELSE +!ERROR ? Unknown or invalid GTK_INST_VERSION +!ENDIF + +!IF "$(PANGO_INST_VERSION)" == "1.22" +PANGO_LIB_DIR=1.5.0 +!ELSEIF "$(PANGO_INST_VERSION)" == "1.18" +PANGO_LIB_DIR=1.5.0 +!ELSEIF "$(PANGO_INST_VERSION)" == "1.16" +PANGO_LIB_DIR=1.5.0 +!ELSE +!ERROR ? Unknown or invalid PANGO_INST_VERSION +!ENDIF + +!IFDEF AIRPCAP_DIR +AIRPCAP_CONFIG=^#define HAVE_AIRPCAP 1 +AIRPDCAP_CONFIG=^#define HAVE_AIRPDCAP 1 +#AIRPCAP_CFLAGS=/I$(AIRPCAP_DIR)\include +!ELSE +AIRPCAP_CONFIG= +AIRPDCAP_CONFIG= +!ENDIF + +!IFDEF PCAP_DIR +# Nmake uses carets to escape special characters +WINPCAP_CONFIG=^#define HAVE_LIBPCAP 1 +PCAP_FINDALLDEVS_CONFIG=^#define HAVE_PCAP_FINDALLDEVS 1 +PCAP_DATALINK_NAME_TO_VAL_CONFIG=^#define HAVE_PCAP_DATALINK_NAME_TO_VAL 1 +PCAP_DATALINK_VAL_TO_NAME_CONFIG=^#define HAVE_PCAP_DATALINK_VAL_TO_NAME 1 +# PCAP_BREAKLOOP won't have any benefit on Win32, but breaks compatibility with 3.0 +PCAP_BREAKLOOP_CONFIG= +WPCAP_CONSTIFIED_CONFIG=^#define WPCAP_CONSTIFIED 1 +!ELSE +# no WpdPack installed +WINPCAP_CONFIG= +PCAP_FINDALLDEVS_CONFIG= +PCAP_DATALINK_NAME_TO_VAL_CONFIG= +PCAP_DATALINK_VAL_TO_NAME_CONFIG= +PCAP_BREAKLOOP_CONFIG= +WPCAP_CONSTIFIED= +!ENDIF + +PCAP_LIST_DATALINKS_CONFIG=^#define HAVE_PCAP_LIST_DATALINKS 1 +PCAP_SET_DATALINK_CONFIG=^#define HAVE_PCAP_SET_DATALINK 1 + +!IF DEFINED(PCAP_DIR) && DEFINED(PCAP_REMOTE) +PCAP_HAVE_REMOTE_CONFIG=^#define HAVE_REMOTE 1 +PCAP_REMOTE_CONFIG=^#define HAVE_PCAP_REMOTE 1 +PCAP_OPEN_CONFIG=^#define HAVE_PCAP_OPEN 1 +PCAP_FINDALLDEVS_EX_CONFIG=^#define HAVE_PCAP_FINDALLDEVS_EX 1 +PCAP_CREATESRCSTR_CONFIG=^#define HAVE_PCAP_CREATESRCSTR 1 +PCAP_SETSAMPLING_CONFIG=^#define HAVE_PCAP_SETSAMPLING 1 +!ELSE +PCAP_HAVE_REMOTE_CONFIG= +PCAP_REMOTE_CONFIG= +PCAP_OPEN_CONFIG= +PCAP_FINDALLDEVS_EX_CONFIG= +PCAP_CREATESRCSTR_CONFIG= +PCAP_SETSAMPLING_CONFIG= +!ENDIF + +!IFDEF ZLIB_DIR +ZLIB_PATH=$(ZLIB_DIR) +ZLIB_CFLAGS=/I$(ZLIB_DIR)\include +ZLIB_LIBS=$(ZLIB_DIR)\lib\zdll.lib +ZLIB_DLL=$(ZLIB_DIR)\zlib1.dll +# Nmake uses carets to escape special characters +ZLIB_CONFIG=^#define HAVE_LIBZ 1 +!else +ZLIB_CFLAGS= +ZLIB_LIBS= +ZLIB_DLL= +ZLIB_CONFIG= +!ENDIF + +!IFDEF C_ARES_DIR +!UNDEF ADNS_DIR +C_ARES_CFLAGS=/I$(C_ARES_DIR) +C_ARES_LIBS=$(C_ARES_DIR)\cares.lib +C_ARES_DLL=$(C_ARES_DIR)\cares.dll +# Nmake uses carets to escape special characters +C_ARES_CONFIG=^#define HAVE_C_ARES 1 +!else +C_ARES_CFLAGS= +C_ARES_LIBS= +C_ARES_CONFIG= +!IFDEF ADNS_DIR +ADNS_PATH=$(ADNS_DIR)\adns_win32\lib +ADNS_CFLAGS=/I$(ADNS_DIR)\src /I$(ADNS_DIR)\adns_win32 +ADNS_LIBS=$(WIRESHARK_LIBS)\$(MSVC_VARIANT)\adns\adns_dll.lib +ADNS_DLL=$(WIRESHARK_LIBS)\$(MSVC_VARIANT)\adns\adns_dll.dll +# Nmake uses carets to escape special characters +ADNS_CONFIG=^#define HAVE_GNU_ADNS 1 +!else +ADNS_CFLAGS= +ADNS_LIBS= +ADNS_CONFIG= +!ENDIF # ADNS +!ENDIF # C_ARES + +!IFDEF KFW_DIR +KFW_PATH=$(KFW_DIR)\bin +KFW_CFLAGS=/I$(KFW_DIR)\inc +KFW_LIBS=$(KFW_DIR)\lib\krb5_32.lib +# Nmake uses carets to escape special characters +KFW_CONFIG=^#define HAVE_MIT_KERBEROS 1 +!else +KFW_CFLAGS= +KFW_LIBS= +KFW_CONFIG= +!ENDIF + +!IFDEF PCRE_DIR +PCRE_PATH=$(PCRE_DIR)\bin +PCRE_CFLAGS=/I$(PCRE_DIR)\include +PCRE_LIBS=$(PCRE_DIR)\lib\pcre.lib +# Nmake uses carets to escape special characters +PCRE_CONFIG=^#define HAVE_LIBPCRE 1 +!else +PCRE_CFLAGS= +PCRE_LIBS= +PCRE_CONFIG= +!ENDIF + +!IFDEF NETTLE_DIR +NETTLE_CFLAGS=/I$(NETTLE_DIR) +NETTLE_LIBS=$(NETTLE_DIR)\libnettle.lib +# Nmake uses carets to escape special characters +NETTLE_CONFIG=^#define HAVE_LIBNETTLE 1 +!else +NETTLE_CFLAGS= +NETTLE_LIBS= +NETTLE_CONFIG= +!ENDIF + +!IFDEF GNUTLS_DIR +GNUTLS_PATH=$(GNUTLS_DIR) +# /DNOCRYPT avoids inclusion of Wincrypt.h, avoiding a X509_NAME define clash +GNUTLS_CFLAGS=/I$(GNUTLS_DIR)\include /DNOCRYPT /DIMPORT_LIGNUTLSDLL +GNUTLS_LIBS=\ + $(GNUTLS_DIR)\bin\libtasn1-3.lib \ + $(GNUTLS_DIR)\bin\libgpg-error-0.lib \ + $(GNUTLS_DIR)\bin\libgcrypt-11.lib \ + $(GNUTLS_DIR)\bin\libgnutls-26.lib +# Nmake uses carets to escape special characters +GNUTLS_CONFIG=^#define HAVE_LIBGNUTLS 1 +LIBGCRYPT_CONFIG=^#define HAVE_LIBGCRYPT 1 +!else +GNUTLS_CFLAGS= +GNUTLS_LIBS= +GNUTLS_CONFIG= +LIBGCRYPT_CONFIG= +!ENDIF + +!IFDEF LUA_DIR +LUA_CFLAGS=/I$(LUA_DIR)\include +LUA_LIBS=$(LUA_DIR)\lua5.1.lib +# Nmake uses carets to escape special characters +LUA_CONFIG=^#define HAVE_LUA 1 +LUA_VERSION=^#define HAVE_LUA_5_1 1 +!else +LUA_CFLAGS= +LUA_LIBS= +LUA_CONFIG= +!ENDIF + +!IFDEF PORTAUDIO_DIR +# Nmake uses carets to escape special characters +PORTAUDIO_CONFIG=^#define HAVE_LIBPORTAUDIO 1 +!IF "$(PORTAUDIO_VERSION)" == "18" +# V18 uses API version 1 and v19 API version 2 +PORTAUDIO_CFLAGS=/I$(PORTAUDIO_DIR)\pa_common +PORTAUDIO_API_CONFIG=^#define PORTAUDIO_API_1 1 +!ELSE +PORTAUDIO_CFLAGS=/I$(PORTAUDIO_DIR)\include /I$(PORTAUDIO_DIR)\src\common /I$(PORTAUDIO_DIR)\src\os\win /DPA_NO_DS /DPA_NO_ASIO +!ENDIF +!ELSE +PORTAUDIO_CFLAGS= +PORTAUDIO_CONFIG= +!ENDIF + +!IFDEF HHC_DIR +!IF "$(MSVC_VARIANT)" == "MSVC6" +HHC_CFLAGS=/I"$(HHC_DIR)\include" -DHHC_DIR +HHC_LIBS="$(HHC_DIR)\lib\htmlhelp.lib" +!ELSE +HHC_CFLAGS=-DHHC_DIR +HHC_LIBS=htmlhelp.lib +!ENDIF +!ELSE +HHC_CFLAGS= +HHC_LIBS= +!ENDIF + +!IFDEF SMI_DIR +SMI_CONFIG=^#define HAVE_LIBSMI 1 +SMI_CFLAGS=/I$(SMI_DIR)\include +SMI_LIBS=$(SMI_DIR)\lib\smi.lib +!ELSE +SMI_LIBS= +SMI_CFLAGS= +SMI_CONFIG= +!ENDIF + +!IFDEF GEOIP_DIR +GEOIP_CONFIG=^#define HAVE_GEOIP 1 +GEOIP_CFLAGS=/I$(GEOIP_DIR)\libGeoIP +GEOIP_LIBS=$(GEOIP_DIR)\libGeoIP\GeoIP.lib +!ELSE +GeoIP_LIBS= +GeoIP_CFLAGS= +GeoIP_CONFIG= +!ENDIF + +!IFDEF ENABLE_LIBWIRESHARK +LIBWIRESHARK_CONFIG=^#define HAVE_LIBWIRESHARKDLL 1 +# Link plugins with the import library of libwireshark.dll +LINK_PLUGINS_WITH_LIBWIRESHARK=USE +!ELSE +LIBWIRESHARK_CONFIG= +!ENDIF + +# Construct the path +!IFDEF ICONV_DIR +PATH=$(PATH);$(CYGWIN_PATH);$(GLIB_DIR)\bin;$(GETTEXT_DIR)\bin;$(ICONV_DIR)\bin;$(ZLIB_PATH);$(ADNS_PATH) +!ELSE +PATH=$(PATH);$(CYGWIN_PATH);$(GLIB_DIR)\bin;$(GETTEXT_DIR)\bin;$(ZLIB_PATH);$(ADNS_PATH) +!ENDIF + +# We can't use a lot of IPv6 code with plain Visual C++ 6.0 +!IF "$(MSVC_VARIANT)" == "MSVC6" && !DEFINED(MSSDK) +INET6_CONFIG= +!ELSE +INET6_CONFIG=^#define INET6 1 +!ENDIF diff --git a/application/tool/wireshark/1.2.6/configure.in b/application/tool/wireshark/1.2.6/configure.in new file mode 100644 index 0000000..6225ec4 --- /dev/null +++ b/application/tool/wireshark/1.2.6/configure.in @@ -0,0 +1,1852 @@ +# $Id: configure.in 31605 2010-01-21 17:30:45Z gerald $ +# +AC_PREREQ(2.60) + +dnl Check for CPU / vendor / OS +dnl The user is encouraged to use either `AC_CANONICAL_BUILD', or +dnl `AC_CANONICAL_HOST', or `AC_CANONICAL_TARGET', depending on the +dnl needs. Using `AC_CANONICAL_TARGET' is enough to run the two other +dnl macros. + +dnl AC_CANONICAL_HOST +dnl AC_CANONICAL_BUILD +dnl AC_CANONICAL_TARGET + +AC_INIT(wireshark, 1.2.6) +AM_INIT_AUTOMAKE([1.9 tar-ustar]) + +AM_DISABLE_STATIC + +dnl Checks for programs. +AC_PROG_CC +AM_PROG_CC_C_O +AC_PROG_CPP +dnl Work around libtool bug (fixed in the version 1.5a?) +AC_DEFUN([AC_PROVIDE_AC_LIBTOOL_DLOPEN], ) +AC_LIBTOOL_DLOPEN +AC_PROG_LIBTOOL +AC_PATH_PROG(PERL, perl) +AC_PROG_YACC +AC_PATH_PROG(YACCDUMMY, $YACC) +if test "x$YACCDUMMY" = x +then + AC_MSG_ERROR(I couldn't find yacc (or bison or ...); make sure it's installed and in your path) +fi +AM_PROG_LEX +AC_PATH_PROG(LEXDUMMY, $LEX) +if test "x$LEXDUMMY" = x +then + AC_MSG_ERROR(I couldn't find (f)lex; make sure it's installed and in your path) +fi +AC_PATH_PROG(POD2MAN, pod2man) +if test "x$POD2MAN" = x +then + # + # The alternative is not to build the man pages.... + # + AC_MSG_ERROR(I couldn't find pod2man; make sure it's installed and in your path) +fi +AC_PATH_PROG(POD2HTML, pod2html) +if test "x$POD2HTML" = x +then + # + # The alternative is not to build the HTML man pages.... + # + AC_MSG_ERROR(I couldn't find pod2html; make sure it's installed and in your path) +fi + +# +# XXX - this looks for various HTML viewers on the host, not the target; +# we really want to know what's available on the target, for cross-builds. +# That would probably require us to, at run time, look for xdg-open and, +# if we don't find it, look for mozilla, htmlview, etc. +# +AC_PATH_PROG(HTML_VIEWER, xdg-open) +if test "x$HTML_VIEWER" != x +then + # + # XXX - the HTML_VIEWER shell variable is the full path of xdg-open. + # Define some variable to be that, so we just run that? + # + AC_DEFINE(HAVE_XDG_OPEN, 1, [Define if we have xdg-open]) + + # + # XXX - we have to define HTML_VIEWER for the prefs.c code that + # sets the default value of the Web browser preference, even + # though that preference won't be offered. + # + AC_DEFINE_UNQUOTED(HTML_VIEWER, "xdg-open", [HTML viewer, e.g. mozilla]) +else + AC_PATH_PROG(HTML_VIEWER, htmlview) + if test "x$HTML_VIEWER" = x + then + AC_DEFINE_UNQUOTED(HTML_VIEWER, "mozilla", [HTML viewer, e.g. mozilla]) + else + AC_DEFINE_UNQUOTED(HTML_VIEWER, "htmlview", [HTML viewer, e.g. mozilla]) + fi +fi + +AC_PATH_PROG(LEX, flex) +AC_PATH_PROG(PYTHON, python) + +AC_SUBST(PERL) +AC_SUBST(POD2MAN) +AC_SUBST(POD2HTML) +AC_SUBST(LEX) +AC_SUBST(FLEX_PATH) +AC_SUBST(PYTHON) +AC_SUBST(XSLTPROC) +AC_SUBST(XMLLINT) + +if test "x$CC_FOR_BUILD" = x +then + CC_FOR_BUILD=$CC +fi +AC_SUBST(CC_FOR_BUILD) + +# Check for doxygen +AC_PATH_PROG(DOXYGEN, doxygen) +AC_CHECK_PROG(HAVE_DOXYGEN, doxygen, "yes", "no") +AM_CONDITIONAL(HAVE_DOXYGEN, test x$HAVE_DOXYGEN = xyes) + +#PPMODIF +# +AC_MSG_CHECKING([whether a TGT_VERSION was specified]) +AC_ARG_WITH([version], + AS_HELP_STRING([--with-version=@<:@*@:>@], + [Specify Target version @<:@default=1.3.1@:>@]), + with_version="$withval", with_version="1.3.2") +AC_SUBST(TGT_VERSION, [$with_version]) +AC_MSG_RESULT(TGT_VERSION=$TGT_VERSION) +# +AC_MSG_CHECKING([whether OCT_PATH was specified]) +AC_ARG_WITH([oct_path], + AS_HELP_STRING([--with-oct_path=@<:@*@:>@], + [Specify Octasic path @<:@default=/mnt/goose@:>@]), + with_oct_path="$withval", with_oct_path="/mnt/goose") +AC_SUBST(OCT_PATH, [$with_oct_path]) +AC_MSG_RESULT(OCT_PATH=$OCT_PATH) +#PPMODIF + + +# gnu tls +tls_message="no" +AC_ARG_WITH([gnutls], + AC_HELP_STRING( [--with-gnutls=@<:@yes/no@:>@], + [use gnutls library @<:@default=yes@:>@]), + with_gnutls="$withval", with_gnutls="yes") +if test "x$with_gnutls" = "xyes"; then + PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 1.2.0], + [ + echo "gnuTLS found, enabling ssl decryption" + AC_DEFINE(HAVE_LIBGNUTLS, 1, [Define to use gnutls library]) + tls_message="yes" + ] + , [ + echo echo "gnuTLS not found, disabling ssl decryption" + tls_message="no" + ] + ) +fi + +# libgrypt +gcrypt_message="no" +AC_ARG_WITH([gcrypt], + AC_HELP_STRING( [--with-gcrypt=@<:@yes/no@:>@], + [use gcrypt library @<:@default=yes@:>@]), + with_gcrypt="$withval", with_gcrypt="yes") +if test "x$with_gcrypt" = "xyes"; then + AM_PATH_LIBGCRYPT(1.1.92, + [ + echo "libgcrypt found, enabling ipsec decryption" + AC_DEFINE(HAVE_LIBGCRYPT, 1, [Define to use libgcrypt]) + gcrypt_message="yes" + ] + , [ + if test x$libgcrypt_config_prefix != x ; then + AC_MSG_ERROR([[libgcrypt not found; install libgcrypt-devel package for your system]]) + else + echo "libgcrypt not found, disabling ipsec decryption" + gcrypt_message="no" + fi + ] + ) +fi + +# libsmi +# FIXME: currently the path argument to with-libsmi is being ignored +AX_LIBSMI + +# Check for xsltproc +AC_PATH_PROG(XSLTPROC, xsltproc) +AC_CHECK_PROG(HAVE_XSLTPROC, xsltproc, "yes", "no") +AM_CONDITIONAL(HAVE_XSLTPROC, test x$HAVE_XSLTPROC = xyes) + +# Check for xmllint +AC_PATH_PROG(XMLLINT, xmllint) +AC_CHECK_PROG(HAVE_XMLLINT, xmllint, "yes", "no") +AM_CONDITIONAL(HAVE_XMLLINT, test x$HAVE_XMLLINT = xyes) + +# Check for fop (translate .fo to e.g. pdf) +AC_PATH_PROG(FOP, fop) +AC_CHECK_PROG(HAVE_FOP, fop, "yes", "no") +AM_CONDITIONAL(HAVE_FOP, test x$HAVE_FOP = xyes) + +# Check for hhc (html help compiler) +AC_PATH_PROG(HHC, hhc.exe) +AC_CHECK_PROG(HAVE_HHC, hhc.exe, "yes", "no") +AM_CONDITIONAL(HAVE_HHC, test x$HAVE_HHC = xyes) + +# Check for packaging utilities +# For now, we check to see if the various packaging utilites are in our +# path. I'm too lazy to write code to go hunt for them. - Gerald + +# SVR4/Solaris +AC_CHECK_PROG(HAVE_PKGPROTO, pkgproto, "yes", "no") +AC_CHECK_PROG(HAVE_PKGMK, pkgmk, "yes", "no") +AC_CHECK_PROG(HAVE_PKGTRANS, pkgtrans, "yes", "no") + +if test x$HAVE_PKGPROTO = xyes -a x$HAVE_PKGMK = xyes \ + -a x$HAVE_PKGTRANS = xyes ; then + HAVE_SVR4_PACKAGING=yes +else + HAVE_SVR4_PACKAGING=no +fi +AC_SUBST(HAVE_SVR4_PACKAGING) + +# RPM +AC_WIRESHARK_RPM_CHECK +AC_SUBST(HAVE_RPM) + +# Debian +AC_CHECK_PROG(HAVE_DPKG_BUILDPACKAGE, dpkg-buildpackage, "yes", "no") + +# Mac OS X +AC_CHECK_PROG(HAVE_XCODEBUILD, xcodebuild, "yes", "no") +AC_CHECK_PROG(HAVE_HDIUTIL, hdiutil, "yes", "no") +AC_CHECK_PROG(HAVE_BLESS, bless, "yes", "no") + +if test x$HAVE_XCODEBUILD = xyes -a x$HAVE_HDIUTIL = xyes \ + -a x$HAVE_BLESS = xyes ; then + HAVE_OSX_PACKAGING=yes +else + HAVE_OSX_PACKAGING=no +fi +AC_SUBST(HAVE_OSX_PACKAGING) + +# +# Try to add some additional gcc checks to CFLAGS +# +AC_ARG_ENABLE(extra-gcc-checks, + AC_HELP_STRING( [--enable-extra-gcc-checks], + [Do additional -W checks in GCC. @<:@default=no@:>@]), +[ + wireshark_extra_gcc_flags=$enableval + if test $enableval != no + then + AC_WIRESHARK_GCC_CFLAGS_CHECK(-pedantic) + AC_WIRESHARK_GCC_CFLAGS_CHECK(-Woverflow) + AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wno-overlength-strings) +# AC_WIRESHARK_GCC_CFLAGS_CHECK(-fstrict-overflow -Wstrict-overflow=4) +# AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wunreachable-code) + AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wno-long-long) + AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wbad-function-cast) + AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wcast-qual) + # + # epan/dissectors/packet-ncp2222.inc blocks this one + # for now. + # + AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wwrite-strings) + AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wstrict-prototypes) + AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wmissing-declarations) + # + # epan/dissectors/packet-afs.c blocks this one for now. + # + AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wshadow) + # + # More cleanup needed for this on LP64. + # + AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wshorten-64-to-32) + fi +],) +AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wall -W) # -W is now known as -Wextra +AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wdeclaration-after-statement) +AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wendif-labels) +AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wpointer-arith) +AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wno-pointer-sign) +AC_WIRESHARK_GCC_CFLAGS_CHECK(-Warray-bounds) +AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wcast-align) +AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wformat-security) + +# +# If we're running gcc add '-D_U_="__attribute__((unused))"' to CFLAGS as well, +# so we can use _U_ to flag unused function arguments and not get warnings +# about them. Otherwise, add '-D_U_=""', so that _U_ used to flag an unused +# function argument will compile with non-GCC compilers. +# +if test "x$GCC" = "xyes" ; then + CFLAGS="-D_U_=\"__attribute__((unused))\" $CFLAGS" +else + CFLAGS="-D_U_=\"\" $CFLAGS" +fi + +# +# If we're running gcc, will enable a barrier "stop on warning". +# This barrier is set for a very large part of the code. However, it is +# typically not set for "generated" code (lex, ans2wrs, idl2wrs, ...) +# +warnings_as_errors_default="no" +AC_MSG_CHECKING(whether we should treat compiler warnings as errors) +AC_ARG_ENABLE(warnings-as-errors, + AC_HELP_STRING( [--enable-warnings-as-errors], + [Treat warnings as errors (only for gcc). @<:@default=no@:>@]), +[ + if test "x$GCC" = "xyes" -a "x$enableval" == "xyes" -a "x$wireshark_extra_gcc_flags" != "xyes"; then + with_warnings_as_errors="yes" + AC_MSG_RESULT(yes) + else + with_warnings_as_errors="no" + AC_MSG_RESULT(no) + fi +], + if test "x$GCC" = "xyes" -a "x$wireshark_extra_gcc_flags" = "x" -a "x$warnings_as_errors_default" = "xyes"; then + with_warnings_as_errors="yes" + AC_MSG_RESULT(yes) + else + with_warnings_as_errors="no" + AC_MSG_RESULT(no) + fi +) +AM_CONDITIONAL(HAVE_WARNINGS_AS_ERRORS, test "x$with_warnings_as_errors" = "xyes") + +# +# Add any platform-specific compiler flags needed. +# +AC_MSG_CHECKING(for platform-specific compiler flags) +if test "x$GCC" = "xyes" ; then + # + # GCC - do any platform-specific tweaking necessary. + # + case "$host_os" in + solaris*) + # the X11 headers don't automatically include prototype info + # and a lot don't include the return type + CFLAGS="$CFLAGS -Wno-return-type -DFUNCPROTO=15" + AC_MSG_RESULT(GCC on Solaris - added -Wno-return-type -DFUNCPROTO=15) + ;; + darwin*) + # + # See comments above about Apple's lovely C compiler. + # + CFLAGS="-no-cpp-precomp $CFLAGS" + AC_MSG_RESULT(Apple GCC - added -no-cpp-precomp) + ;; + *) + AC_MSG_RESULT(none needed) + ;; + esac +else + # + # Not GCC - assume it's the vendor's compiler. + # + case "$host_os" in + hpux*) + # + # HP's ANSI C compiler; flags suggested by Jost Martin. + # "-Ae" for ANSI C plus extensions such as "long long". + # "+O2", for optimization. XXX - works with "-g"? + # + CFLAGS="-Ae +O2 $CFLAGS" + AC_MSG_RESULT(HP ANSI C compiler - added -Ae +O2) + ;; + darwin*) + # + # It may be called "cc", but it's really a GCC derivative + # with a problematic special precompiler and precompiled + # headers; turn off the special precompiler, as some + # apparently-legal code won't compile with its precompiled + # headers. + # + CFLAGS="-no-cpp-precomp $CFLAGS" + AC_MSG_RESULT(Apple GCC - added -no-cpp-precomp) + ;; + *) + AC_MSG_RESULT(none needed) + ;; + esac +fi + +# +# Add any platform-specific linker flags needed. +# +AC_MSG_CHECKING(for platform-specific linker flags) +case "$host_os" in +darwin*) + # + # Add -Wl,-single_module to the LDFLAGS used with shared + # libraries, to fix some error that show up in some cases; + # some Apple documentation recommends it for most shared + # libraries. + # + LDFLAGS_SHAREDLIB="-Wl,-single_module" + # + # Add -Wl,-search_paths_first to make sure that if we search + # directories A and B, in that order, for a given library, a + # non-shared version in directory A, rather than a shared + # version in directory B, is chosen (so we can use + # --with-pcap=/usr/local to force all programs to be linked + # with a static version installed in /usr/local/lib rather than + # the system version in /usr/lib). + # + LDFLAGS="-Wl,-search_paths_first $LDFLAGS" + AC_MSG_RESULT([Apple linker - added -Wl,-single_module and -Wl,-search_paths_first]) + ;; +cygwin*) + # + # Shared libraries in cygwin/Win32 must never contain + # undefined symbols. + # + LDFLAGS="$LDFLAGS -no-undefined" + AC_MSG_RESULT(CygWin GNU ld - added -no-undefined) + ;; +*) + AC_MSG_RESULT(none needed) + ;; +esac +AC_SUBST(LDFLAGS_SHAREDLIB) + +# +# On OS X, if we find the headers for Core Foundation, Launch Services, +# and Core Services, add -framework options to link with Application +# Services (of which Launch Services is a subframework), Core Foundation +# (required by the Launch Services APIs), and Core Services, so we can +# use them to launch a Web browser from the Help menu and to use +# Gestalt() to get the Mac OS X version number. +# +case "$host_os" in + +darwin*) + AC_MSG_CHECKING([whether we can build with Core Foundation, Launch Services, and Core Services]) + ac_save_LIBS="$LIBS" + ac_frameworks="-framework ApplicationServices -framework CoreFoundation -framework CoreServices" + LIBS="$LIBS $ac_frameworks" + AC_TRY_LINK( + [ +# include +# include +# include +# include +# include + ], + [ + CFStringRef url_CFString; + CFURLRef url_CFURL; + OSStatus status; + long os_version; + + url_CFString = CFStringCreateWithCString(NULL, "", kCFStringEncodingASCII); + url_CFURL = CFURLCreateWithString(NULL, url_CFString, NULL); + status = LSOpenCFURLRef(url_CFURL, NULL); + + Gestalt(gestaltSystemVersion, &os_version); + ], + ac_cv_can_use_osx_frameworks=yes, + ac_cv_can_use_osx_frameworks=no, + [echo $ac_n "cross compiling; assumed OK... $ac_c"]) + if test "$ac_cv_can_use_osx_frameworks" = yes ; then + AC_DEFINE(HAVE_OS_X_FRAMEWORKS, 1, [Define to 1 if you have OS X frameworks]) + FRAMEWORKS="$ac_frameworks" + AC_MSG_RESULT(yes) + else + AC_MSG_RESULT(no) + fi + LIBS="$ac_save_LIBS" + ;; +esac +AC_SUBST(FRAMEWORKS) + +# +# If using $prefix we add "$prefix/include" to the include search path +# and "$prefix/lib" to the library search path. +# +if test "x$prefix" != "x" ; then + AC_MSG_CHECKING(whether to use $prefix for headers and libraries) + if test -d $prefix/include ; then + AC_MSG_RESULT(yes) + # + # Arrange that we search for header files in "$prefix/include", as + # various packages we use may have been installed under "$prefix/include". + # + CFLAGS="$CFLAGS -I$prefix/include" + CPPFLAGS="$CPPFLAGS -I$prefix/include" + + # + # Arrange that we search for libraries in "$prefix/lib". + # + AC_WIRESHARK_ADD_DASH_L(LDFLAGS, $prefix/lib) + else + AC_MSG_RESULT(no) + fi +fi + +dnl Look in /usr/local for header files and libraries ? +dnl XXX FIXME don't include /usr/local if it is already in the system +dnl search path as this causes gcc 3.2 on Linux to complain about a change +dnl of the system search order for includes +AC_ARG_ENABLE(usr-local, + AC_HELP_STRING( [--enable-usr-local], + [look for headers and libs in /usr/local tree. @<:@default=yes@:>@]), + ac_cv_enable_usr_local=$enableval,ac_cv_enable_usr_local=yes) + +AC_MSG_CHECKING(whether to use /usr/local for headers and libraries) +if test "x$ac_cv_enable_usr_local" = "xyes" ; then + AC_MSG_RESULT(yes) + # + # Arrange that we search for header files in the source directory + # and in its "wiretap" subdirectory, as well as in "/usr/local/include", + # as various packages we use ("libpcap", "zlib", "adns", "pcre") + # may have been installed under "/usr/local/include". + # + CFLAGS="$CFLAGS -I/usr/local/include" + CPPFLAGS="$CPPFLAGS -I/usr/local/include" + + # + # Arrange that we search for libraries in "/usr/local/lib". + # + AC_WIRESHARK_ADD_DASH_L(LDFLAGS, /usr/local/lib) +else + AC_MSG_RESULT(no) +fi + +# +# If we're running Solaris, and LD_LIBRARY_PATH is defined, add it as a +# link directory. +# +case "$host_os" in + solaris*) + AC_MSG_CHECKING(for LD_LIBRARY_PATH, since you appear to be running Solaris) + if test x$LD_LIBRARY_PATH != x ; then + LIBS="$LIBS -R$LD_LIBRARY_PATH" + AC_MSG_RESULT(yes -- added LD_LIBRARY_PATH to run-time linker path) + else + AC_MSG_RESULT(no -- this may be a problem in a few seconds) + fi + ;; +esac + +# +# Check for versions of "sed" inadequate to handle, in libtool, a list +# of object files as large as the list in Wireshark. +# +# On Solaris, we check for "/bin/sed", "/usr/bin/sed", and "/usr/ucb/sed", +# as both "/usr/bin/sed" (which is also "/bin/sed", as "/bin" is just a +# symlink to "/usr/bin", but people may have "/bin" before "/usr/bin" in +# their search path) and "/usr/ucb/sed" are inadequate; "/usr/xpg4/bin/sed" +# is the only "sed" that comes with Solaris that can handle Wireshark. +# +# Add any checks here that are necessary for other OSes. +# +AC_WIRESHARK_GNU_SED_CHECK +if test "$HAVE_GNU_SED" = no ; then + case "$host_os" in + solaris*) + AC_MSG_CHECKING(whether one of /usr/bin/sed or /bin/sed or /usr/ucb/sed will be used) + case `which sed` in + /bin/sed|/usr/bin/sed|/usr/ucb/sed) + AC_MSG_RESULT(yes) + AC_MSG_ERROR([change your path to search /usr/xpg4/bin or directory containing GNU sed before /usr/bin (and /bin and /usr/ucb)]) + ;; + + *) + AC_MSG_RESULT(no) + ;; + esac + ;; + + *) + : + ;; + esac +fi + +# Enable/disable tshark + +AC_ARG_ENABLE(wireshark, + AC_HELP_STRING( [--enable-wireshark], + [build GTK+-based wireshark. @<:@default=yes, if GTK+ available@:>@]), + enable_wireshark=$enableval,enable_wireshark=yes) + +AC_ARG_ENABLE(threads, + AC_HELP_STRING( [--enable-threads], + [use threads in wireshark. @<:@default=no@:>@]), + enable_threads=$enableval,enable_threads=no) +AM_CONDITIONAL(USE_THREADS, test x$enable_threads = xyes) + +AC_ARG_ENABLE(profile-build, + AC_HELP_STRING( [--enable-profile-build], + [build profile-ready binaries. @<:@default=no@:>@]), + enable_profile_build=$enableval,enable_profile_build=no) +AM_CONDITIONAL(USE_PROFILE_BUILD, test x$enable_profile_build = xyes) +AC_MSG_CHECKING(if profile builds must be generated) +if test "x$enable_profile_build" = "xyes" ; then + if test "x$GCC" = "xyes" ; then + AC_MSG_RESULT(yes) + CFLAGS=" -pg $CFLAGS" + else + AC_MSG_RESULT(no) + echo "Building profile binaries currently only supported for GCC." + fi +else + AC_MSG_RESULT(no) +fi + +# Create DATAFILE_DIR #define for config.h +datafiledir=$datadir/wireshark +datafiledir=`( + test "x$prefix" = xNONE && prefix=$ac_default_prefix + test "x$exec_prefix" = xNONE && exec_prefix=${prefix} + # Ugly hack, but I don't see how this problem can be solved + # properly that DATAFILE_DIR had a value starting with + # "${prefix}/" instead of e.g. "/usr/local/" + eval eval echo "$datafiledir" +)` +AC_DEFINE_UNQUOTED(DATAFILE_DIR,"$datafiledir", [Directory for data]) + +# GTK checks; we require GTK+ 2.4 or later. +# We don't add $GLIB_LIBS to LIBS, because we don't want to force all +# programs to be built with GTK+. +# +if test "x$enable_wireshark" = "xyes"; then + AM_PATH_GTK_2_0(2.4.0, CFLAGS="$CFLAGS $GTK_CFLAGS", GTK_OK=no, gthread) +else + GTK_OK=no +fi + +# GLib checks +# This doesn't add GLIB_CFLAGS to CFLAGS, because AM_PATH_GTK will add +# GTK_CFLAGS to CFLAGS, and GTK_CFLAGS is a superset of CFLAGS. +# However, this means that both @GLIB_LIBS@ and @GTK_LIBS@ will be +# set when generating the Makefile, so we can make programs that require +# only GLib link with @GLIB_LIBS@ and make programs that require GTK+ +# link with @GTK_LIBS@ (which includes @GLIB_LIBS@). +# We don't add $GLIB_LIBS to LIBS, because we don't want to force all +# programs to be built with GLib. +# +if test "$GTK_OK" = "no" ; then + # + # We don't have GTK+. + # If they didn't explicitly say "--disable-wireshark", fail (so + # that, unless they explicitly indicated that they don't want + # Wireshark, we stop so they know they won't be getting + # Wireshark unless they fix the GTK+ problem). + # + if test "x$enable_wireshark" = "xyes"; then + AC_MSG_ERROR([GTK+ 2.4 or later isn't available, so Wireshark can't be compiled]) + fi + wireshark_bin="" + wireshark_man="" + # Honor GLIB_CFLAGS + AM_PATH_GLIB_2_0(2.4.0, CFLAGS="$CFLAGS $GLIB_CFLAGS", AC_MSG_ERROR(GLib 2.4 or later distribution not found.), gmodule) + +else + wireshark_bin="wireshark\$(EXEEXT)" + wireshark_man="wireshark.1" + wireshark_SUBDIRS="codecs gtk" + # Honor GLIB_CFLAGS + AM_PATH_GLIB_2_0(2.4.0, , AC_MSG_ERROR(GLib 2.4 or later distribution not found.), gmodule) +fi + +# +# Check whether GLib modules are supported, to determine whether we +# can support plugins. +# +AC_MSG_CHECKING(whether GLib supports loadable modules) +ac_save_CFLAGS="$CFLAGS" +ac_save_LIBS="$LIBS" +CFLAGS="$CFLAGS $GLIB_CFLAGS" +LIBS="$GLIB_LIBS $LIBS" +AC_TRY_RUN([ +#include +#include +#include +#include + +int +main () +{ + if (g_module_supported()) + return 0; /* success */ + else + return 1; /* failure */ +} +], ac_cv_glib_supports_modules=yes, ac_cv_glib_supports_modules=no, + [echo $ac_n "cross compiling; assumed OK... $ac_c" + ac_cv_glib_supports_modules=yes]) +CFLAGS="$ac_save_CFLAGS" +LIBS="$ac_save_LIBS" +if test "$ac_cv_glib_supports_modules" = yes ; then + AC_MSG_RESULT(yes) + have_plugins=yes +else + AC_MSG_RESULT(no) + have_plugins=no +fi + +# +# If we have , check whether we can use dladdr to find a +# filename (hopefully, a full pathname, but no guarantees) for +# the executable. +# +if test "$ac_cv_header_dlfcn_h" = "yes" +then + AC_MSG_CHECKING(whether dladdr can be used to find the pathname of an executable) + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GLIB_CFLAGS" + LIBS="$GLIB_LIBS $LIBS" + AC_TRY_RUN([ +#define _GNU_SOURCE /* required on Linux, sigh */ +#include + +int +main(void) +{ + Dl_info info; + + if (!dladdr((void *)main, &info)) + return 1; /* failure */ + return 0; /* assume success */ +} +], ac_cv_dladdr_finds_executable_path=yes, ac_cv_dladdr_finds_executable_path=no, + [echo $ac_n "cross compiling; assumed OK... $ac_c" + ac_cv_dladdr_finds_executable_path=yes]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + if test x$ac_cv_dladdr_finds_executable_path = xyes + then + AC_DEFINE(DLADDR_FINDS_EXECUTABLE_PATH, 1, [Define if dladdr can be used to find the path of the executable]) + fi + AC_MSG_RESULT($ac_cv_dladdr_finds_executable_path) +fi + +dnl IGE Mac integration check +AC_MSG_CHECKING(whether to use IGE Mac integration functions) + +AC_ARG_WITH(ige-mac-integration, + AC_HELP_STRING( [--with-ige-mac-integration], + [use IGE Mac integration. (@<:@default=yes, if available@:>@]), +[ + if test $withval = no + then + want_ige_mac_integration=no + else + want_ige_mac_integration=yes + fi +],[ + want_ige_mac_integration=yes +]) +if test "x$want_ige_mac_integration" = "xno" -o "x$no_gtk" = "xyes" ; then + AC_MSG_RESULT(no) +else + AC_MSG_RESULT(yes) + AC_WIRESHARK_IGE_MAC_INTEGRATION_CHECK +fi + + +AC_SUBST(wireshark_bin) +AC_SUBST(wireshark_man) + + +# Enable/disable tshark + +AC_ARG_ENABLE(tshark, + AC_HELP_STRING( [--enable-tshark], + [build tshark. @<:@default=yes@:>@]), + tshark=$enableval,enable_tshark=yes) + +if test "x$enable_tshark" = "xyes" ; then + tshark_bin="tshark\$(EXEEXT)" + tshark_man="tshark.1" + wiresharkfilter_man="wireshark-filter.4" +else + tshark_bin="" + tshark_man="" +fi +AC_SUBST(tshark_bin) +AC_SUBST(tshark_man) +AC_SUBST(wiresharkfilter_man) + + + +# Enable/disable editcap + +AC_ARG_ENABLE(editcap, + AC_HELP_STRING( [--enable-editcap], + [build editcap. @<:@default=yes@:>@]), + enable_editcap=$enableval,enable_editcap=yes) + +if test "x$enable_editcap" = "xyes" ; then + editcap_bin="editcap\$(EXEEXT)" + editcap_man="editcap.1" +else + editcap_bin="" + editcap_man="" +fi +AC_SUBST(editcap_bin) +AC_SUBST(editcap_man) + +# Enabling/disabling of dumpcap is done later (after we know if we have PCAP +# or not) + +# Enable/disable capinfos + +AC_ARG_ENABLE(capinfos, + AC_HELP_STRING( [--enable-capinfos], + [build capinfos. @<:@default=yes@:>@]), + enable_capinfos=$enableval,enable_capinfos=yes) + +if test "x$enable_capinfos" = "xyes" ; then + capinfos_bin="capinfos\$(EXEEXT)" + capinfos_man="capinfos.1" +else + capinfos_bin="" + capinfos_man="" +fi +AC_SUBST(capinfos_bin) +AC_SUBST(capinfos_man) + + +# Enable/disable mergecap + +AC_ARG_ENABLE(mergecap, + AC_HELP_STRING( [--enable-mergecap], + [build mergecap. @<:@default=yes@:>@]), + enable_mergecap=$enableval,enable_mergecap=yes) + +if test "x$enable_mergecap" = "xyes" ; then + mergecap_bin="mergecap\$(EXEEXT)" + mergecap_man="mergecap.1" +else + mergecap_bin="" + mergecap_man="" +fi +AC_SUBST(mergecap_bin) +AC_SUBST(mergecap_man) + + +# Enable/disable text2pcap + +AC_ARG_ENABLE(text2pcap, + AC_HELP_STRING( [--enable-text2pcap], + [build text2pcap. @<:@default=yes@:>@]), + text2pcap=$enableval,enable_text2pcap=yes) + +if test "x$enable_text2pcap" = "xyes" ; then + text2pcap_bin="text2pcap\$(EXEEXT)" + text2pcap_man="text2pcap.1" +else + text2pcap_bin="" + text2pcap_man="" +fi +AC_SUBST(text2pcap_bin) +AC_SUBST(text2pcap_man) + +# Enable/disable idl2wrs + +AC_ARG_ENABLE(idl2wrs, + AC_HELP_STRING( [--enable-idl2wrs], + [build idl2wrs. @<:@default=yes@:>@]), + enable_idl2wrs=$enableval,enable_idl2wrs=yes) + +if test "x$enable_idl2wrs" = "xyes" ; then + idl2wrs_bin="idl2wrs" + idl2wrs_man="idl2wrs.1" +else + idl2wrs_bin="" + idl2wrs_man="" +fi +AC_SUBST(idl2wrs_bin) +AC_SUBST(idl2wrs_man) + + +# Enable/disable dftest + +AC_ARG_ENABLE(dftest, + AC_HELP_STRING( [--enable-dftest], + [build dftest. @<:@default=yes@:>@]), + enable_dftest=$enableval,enable_dftest=yes) + +if test "x$enable_dftest" = "xyes" ; then + dftest_bin="dftest\$(EXEEXT)" +else + dftest_bin="" +fi +AC_SUBST(dftest_bin) + + +# Enable/disable randpkt + +AC_ARG_ENABLE(randpkt, + AC_HELP_STRING( [--enable-randpkt], + [build randpkt. @<:@default=yes@:>@]), + enable_randpkt=$enableval,enable_randpkt=yes) + +if test "x$enable_randpkt" = "xyes" ; then + randpkt_bin="randpkt\$(EXEEXT)" +else + randpkt_bin="" +fi +AC_SUBST(randpkt_bin) + + + +dnl Checks for "gethostbyname()" - and "-lnsl", if we need it to get +dnl "gethostbyname()". +AC_WIRESHARK_GETHOSTBY_LIB_CHECK + +dnl Checks for "connect()", used as a proxy for "socket()" - and +dnl "-lsocket", if we need it to get "connect()". +AC_WIRESHARK_SOCKET_LIB_CHECK + +dnl pcap check +AC_MSG_CHECKING(whether to use libpcap for packet capture) + +AC_ARG_WITH(pcap, + AC_HELP_STRING( [--with-pcap@<:@=DIR@:>@], + [use libpcap for packet capturing. @<:@default=yes@:>@]), +[ + if test $withval = no + then + want_pcap=no + elif test $withval = yes + then + want_pcap=yes + else + want_pcap=yes + pcap_dir=$withval + fi +],[ + want_pcap=yes + pcap_dir= +]) +if test "x$want_pcap" = "xno" ; then + AC_MSG_RESULT(no) +else + AC_MSG_RESULT(yes) + AC_WIRESHARK_PCAP_CHECK +fi + +# Enable/disable dumpcap + +dnl dumpcap check +AC_MSG_CHECKING(whether to build dumpcap) + +AC_ARG_ENABLE(dumpcap, + AC_HELP_STRING( [--enable-dumpcap], + [build dumpcap. @<:@default=yes@:>@]), + enable_dumpcap=$enableval,enable_dumpcap=yes) + +if test "x$enable_dumpcap" = "xyes" ; then + if test "x$want_pcap" = "xno" ; then + enable_dumpcap=no + AC_MSG_RESULT(pcap not available - disabling dumpcap) + else + AC_MSG_RESULT(yes) + fi +else + AC_MSG_RESULT(no) +fi + +if test "x$enable_dumpcap" = "xyes" ; then + dumpcap_bin="dumpcap\$(EXEEXT)" + dumpcap_man="dumpcap.1" +else + dumpcap_bin="" + dumpcap_man="" +fi +AC_SUBST(dumpcap_bin) +AC_SUBST(dumpcap_man) + +# Enable/disable rawshark + +dnl rawshark check +AC_MSG_CHECKING(whether to build rawshark) + +AC_ARG_ENABLE(rawshark, + AC_HELP_STRING( [--enable-rawshark], + [build rawshark. @<:@default=yes@:>@]), + rawshark=$enableval,enable_rawshark=yes) + +if test "x$enable_rawshark" = "xyes" ; then + if test "x$want_pcap" = "xno" ; then + enable_rawshark=no + AC_MSG_RESULT(pcap not available - disabling rawshark) + else + AC_MSG_RESULT(yes) + fi +else + AC_MSG_RESULT(no) +fi + +if test "x$enable_rawshark" = "xyes" ; then + rawshark_bin="rawshark\$(EXEEXT)" + rawshark_man="rawshark.1" +else + rawshark_bin="" + rawshark_man="" +fi +AC_SUBST(rawshark_bin) +AC_SUBST(rawshark_man) + + +dnl pcap remote check +AC_MSG_CHECKING(whether to use libpcap remote capturing feature) + +AC_ARG_WITH(pcap-remote, +[ --with-pcap-remote use libpcap remote capturing (requires libpcap)], +[ + if test $withval = no + then + want_pcap_remote=no + else + want_pcap_remote=yes + fi +],[ + want_pcap_remote=no +]) +if test "x$want_pcap_remote" = "xno" -o "x$want_pcap" = "xno" ; then + AC_MSG_RESULT(no) +else + AC_MSG_RESULT(yes) + AC_WIRESHARK_PCAP_REMOTE_CHECK +fi + +dnl zlib check +AC_MSG_CHECKING(whether to use zlib for reading compressed capture files) + +AC_ARG_WITH(zlib, + AC_HELP_STRING( [--with-zlib@<:@=DIR@:>@], + [use zlib (located in directory DIR, if supplied) to read compressed data. @<:@default=yes, if available@:>@]), +[ + if test $withval = no + then + want_zlib=no + elif test $withval = yes + then + want_zlib=yes + else + want_zlib=yes + zlib_dir=$withval + fi +],[ + # + # Use zlib if it's present, otherwise don't. + # + want_zlib=ifavailable + zlib_dir= +]) +if test "x$want_zlib" = "xno" ; then + AC_MSG_RESULT(no) +else + AC_MSG_RESULT(yes) + AC_WIRESHARK_ZLIB_CHECK + if test "x$want_zlib" = "xno" ; then + AC_MSG_RESULT(zlib not found - disabling compressed capture file support) + fi +fi + + +dnl pcre check +AC_MSG_CHECKING(whether to use libpcre for regular expressions in dfilters) + +AC_ARG_WITH(pcre, + AC_HELP_STRING( [--with-pcre@<:@=DIR@:>@], + [use libpcre (located in directory DIR, if supplied) to use in dfilter regular expressions. @<:@default=yes, if available@:>@]), +[ + if test $withval = no + then + want_pcre=no + elif test $withval = yes + then + want_pcre=yes + else + want_pcre=yes + pcre_dir=$withval + fi +],[ + # + # Use libpcre if it's present, otherwise don't. + # XXX - Should GLib 2.14 take precedence here? + # + want_pcre=ifavailable + pcre_dir= +]) +if test "x$want_pcre" = "xno" ; then + AC_MSG_RESULT(no) +else + AC_MSG_RESULT(yes) + AC_WIRESHARK_LIBPCRE_CHECK + if test "x$want_pcre" = "xno" ; then + AC_MSG_RESULT(libpcre not found - disabling support for perl compatible regular expressions in dfilters) + fi +fi + + +dnl lua check +AC_MSG_CHECKING(whether to use liblua for the lua scripting plugin) + +AC_ARG_WITH(lua, + AC_HELP_STRING( [--with-lua@<:@=DIR@:>@], + [use liblua (located in directory DIR, if supplied) for the lua scripting plugin. @<:@default=yes, if available@:>@]), +[ + if test $withval = no + then + want_lua=no + elif test $withval = yes + then + want_lua=yes + else + want_lua=yes + lua_dir=$withval + fi +],[ + # + # Use liblua by default + # + want_lua=ifavailable + lua_dir= +]) +if test "x$want_lua" = "xno" ; then + AC_MSG_RESULT(no) +else + AC_MSG_RESULT(yes) + AC_WIRESHARK_LIBLUA_CHECK + if test "x$want_lua" = "xno" ; then + AC_MSG_RESULT(liblua not found - disabling support for the lua scripting plugin) + fi +fi +AM_CONDITIONAL(HAVE_LIBLUA, test x$want_lua = xyes) + + +dnl portaudio check +AC_MSG_CHECKING(whether to use libportaudio for the rtp_player) + +AC_ARG_WITH(portaudio, + AC_HELP_STRING( [--with-portaudio@<:@=DIR@:>@], + [use libportaudio (located in directory DIR, if supplied) for the rtp_player. @<:@default=yes, if available@:>@]), +[ + if test $withval = no + then + want_portaudio=no + elif test $withval = yes + then + want_portaudio=yes + else + want_portaudio=yes + portaudio_dir=$withval + fi +],[ + # + # Use libportaudio by default + # + want_portaudio=ifavailable + portaudio_dir= +]) +if test "x$want_portaudio" = "xno" ; then + AC_MSG_RESULT(no) +else + AC_MSG_RESULT(yes) + AC_WIRESHARK_LIBPORTAUDIO_CHECK + if test "x$want_portaudio" = "xno" ; then + AC_MSG_RESULT(libportaudio not found - disabling support for the rtp_player) + fi +fi +AM_CONDITIONAL(HAVE_LIBPORTAUDIO, test x$want_portaudio = xyes) + + +dnl ipv6 check +AC_ARG_ENABLE(ipv6, + AC_HELP_STRING( [--enable-ipv6], + [use ipv6 name resolution, if available. @<:@default=yes@:>@]), + enable_ipv6=$enableval,enable_ipv6=yes) + +AC_MSG_CHECKING(whether to enable ipv6 name resolution if available) +if test "x$enable_ipv6" = "xno" ; then + AC_MSG_RESULT(no) +else + AC_MSG_RESULT(yes) + AC_WIRESHARK_IPV6_STACK +fi + + +dnl Check if dumpcap should be installed setuid +AC_ARG_ENABLE(setuid-install, + AC_HELP_STRING( [--enable-setuid-install], + [install dumpcap as setuid @<:@default=no@:>@]), + enable_setuid_install=$enableval,enable_setuid_install=no) + +AC_MSG_CHECKING(whether to install dumpcap setuid) +if test "x$enable_setuid_install" = "xno" ; then + AC_MSG_RESULT(no) +else + if test "x$enable_dumpcap" = "xno" ; then + AC_MSG_ERROR(Setuid install works only with dumpcap but dumpcap is disabled) + else + AC_MSG_RESULT(yes) + fi +fi + +AM_CONDITIONAL(SETUID_INSTALL, test x$enable_setuid_install = xyes) +AC_CHECK_FUNCS(setresuid setresgid) + +dnl libcap (not libpcap) check +LIBCAP_LIBS='' +AC_MSG_CHECKING(whether to use the libcap capabilities library) + +AC_ARG_WITH(libcap, + AC_HELP_STRING( [--with-libcap@<:@=DIR@:>@], + [use libcap (located in directory DIR, if supplied) for POSIX.1e capabilities management. @<:@default=yes, if present@:>@]), +[ +if test "x$withval" = "xno"; then + want_libcap=no +elif test "x$withval" = "xyes"; then + want_libcap=yes +elif test -d "$withval"; then + want_libcap=yes + AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib) +fi +]) +if test "x$with_libcap" = "xno" ; then + AC_MSG_RESULT(no) +else + AC_MSG_RESULT(yes) + AC_WIRESHARK_LIBCAP_CHECK +fi +AC_SUBST(LIBCAP_LIBS) + +dnl Checks for header files. +AC_CHECK_HEADERS(direct.h dirent.h fcntl.h grp.h inttypes.h netdb.h pwd.h stdarg.h stddef.h unistd.h) +AC_CHECK_HEADERS(sys/ioctl.h sys/param.h sys/socket.h sys/sockio.h sys/stat.h sys/time.h sys/types.h sys/utsname.h sys/wait.h) +AC_CHECK_HEADERS(netinet/in.h) +AC_CHECK_HEADERS(arpa/inet.h arpa/nameser.h) + +dnl SSL Check +SSL_LIBS='' +AC_MSG_CHECKING(whether to use SSL library) + +AC_ARG_WITH(ssl, + AC_HELP_STRING( [--with-ssl@<:@=DIR@:>@], + [use SSL crypto library (located in directory DIR, if supplied). @<:@default=no@:>@]), +[ +if test "x$withval" = "xno"; then + want_ssl=no +elif test "x$withval" = "xyes"; then + want_ssl=yes +elif test -d "$withval"; then + want_ssl=yes + AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib) +fi +],[ + want_ssl=no +]) +if test "x$want_ssl" = "xyes"; then + AC_MSG_RESULT(yes) + AC_CHECK_LIB(crypto,EVP_md5, + [ + SSL_LIBS=-lcrypto + ], + [ + AC_MSG_ERROR([SSL crypto library was requested, but is not available]) + ]) +else + AC_MSG_RESULT(no) +fi +AC_SUBST(SSL_LIBS) + +dnl kerberos check +AC_MSG_CHECKING(whether to use kerberos) + +AC_ARG_WITH(krb5, + AC_HELP_STRING( [--with-krb5@<:@=DIR@:>@], + [use kerberos (located in directory DIR, if supplied) to use in kerberos dissection @<:@default=yes@:>@]), +[ + if test $withval = no + then + want_krb5=no + elif test $withval = yes + then + want_krb5=yes + else + want_krb5=yes + krb5_dir=$withval + fi +],[ + # + # Use kerberos if specified, otherwise don't. + # + want_krb5=ifavailable + krb5_dir= +]) +if test "x$want_krb5" = "xno" ; then + AC_MSG_RESULT(no) +else + AC_MSG_RESULT(yes) + AC_WIRESHARK_KRB5_CHECK +fi + + +dnl c-ares Check +C_ARES_LIBS='' +AC_MSG_CHECKING(whether to use the c-ares library if available) + +AC_ARG_WITH(c-ares, + AC_HELP_STRING( [--with-c-ares@<:@=DIR@:>@], + [use c-ares (located in directory DIR, if supplied). Supersedes --with-adns. @<:@default=yes, if present@:>@]), +[ +if test "x$withval" = "xno"; then + want_c_ares=no +elif test "x$withval" = "xyes"; then + want_c_ares=yes +elif test -d "$withval"; then + want_c_ares=yes + AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib) +fi +]) +if test "x$want_c_ares" = "xno" ; then + AC_MSG_RESULT(no) +else + AC_MSG_RESULT(yes) + AC_WIRESHARK_C_ARES_CHECK +fi +AC_SUBST(C_ARES_LIBS) + +dnl ADNS Check +ADNS_LIBS='' +AC_MSG_CHECKING(whether to use the GNU ADNS library if available) + +AC_ARG_WITH(adns, + AC_HELP_STRING( [--with-adns@<:@=DIR@:>@], + [use GNU ADNS (located in directory DIR, if supplied). @<:@default=yes, if present@:>@]), +[ +if test "x$withval" = "xno"; then + want_adns=no +elif test "x$withval" = "xyes"; then + want_adns=yes +elif test -d "$withval"; then + want_adns=yes + AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib) +fi +]) +if test "x$want_adns" = "xno" -o "x$have_good_c_ares" = "xyes" ; then + AC_MSG_RESULT(no) +else + AC_MSG_RESULT(yes) + AC_WIRESHARK_ADNS_CHECK +fi +AC_SUBST(ADNS_LIBS) + +dnl GEOIP Check +GEOIP_LIBS='' +AC_MSG_CHECKING(whether to use the GeoIP IP address mapping library if available) + +AC_ARG_WITH(geoip, + AC_HELP_STRING( [--with-geoip@<:@=DIR@:>@], + [use GeoIP (located in directory DIR, if supplied). @<:@default=yes, if present@:>@]), +[ +if test "x$withval" = "xno"; then + want_geoip=no +elif test "x$withval" = "xyes"; then + want_geoip=yes +elif test -d "$withval"; then + want_geoip=yes + AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib) +fi +]) +if test "x$want_geoip" = "xno"; then + AC_MSG_RESULT(no) +else + AC_MSG_RESULT(yes) + AC_WIRESHARK_GEOIP_CHECK +fi +AC_SUBST(GEOIP_LIBS) + +# +# Define WS_VAR_IMPORT appropriately for declarations of external +# variables exported from dynamically-linked libraries. +# +AC_DEFINE(WS_VAR_IMPORT, extern, [Define as the string to precede external variable declarations in dynamically-linked libraries]) + +AC_ARG_ENABLE(airpcap, + AC_HELP_STRING( [--enable-airpcap], + [use airpcap in wireshark. @<:@default=no@:>@]), + enable_airpcap=$enableval + if test x$enable_airpcap != xno; then + AC_DEFINE(HAVE_AIRPCAP, 1, [Enable AirPcap]) + fi +) +# +# Define HAVE_AIRPDCAP +# We'll want to remove this eventually. +# +AC_DEFINE(HAVE_AIRPDCAP, 1, [Enable AirPDcap (WPA/WPA2 decryption)]) + +dnl Checks for typedefs, structures, and compiler characteristics. +# AC_C_CONST + +# We need to know whether "struct sockaddr" has an "sa_len" member +# for get_interface_list(). + +AC_WIRESHARK_STRUCT_SA_LEN + +# We must know our byte order +AC_C_BIGENDIAN + +# Checks whether "-traditional" is needed when using "ioctl". +# XXX - do we need this? +AC_PROG_GCC_TRADITIONAL + +GETOPT_C="" +GETOPT_O="" +AC_CHECK_FUNC(getopt, GETOPT_O="", + [GETOPT_O="getopt.o" + AC_DEFINE(NEED_GETOPT_H, 1, [Define if getopt.h needs to be included]) +]) +if test "$ac_cv_func_getopt" = no ; then + GETOPT_C="getopt.c" + GETOPT_O="getopt.o" +fi +AC_SUBST(GETOPT_C) +AC_SUBST(GETOPT_O) + +AC_CHECK_FUNC(strerror, STRERROR_O="", + [STRERROR_O="strerror.o" + AC_DEFINE(NEED_STRERROR_H, 1, [Define if strerror.h needs to be included]) +]) +if test "$ac_cv_func_strerror" = no ; then + STRERROR_C="strerror.c" + STRERROR_O="strerror.o" +fi +AC_SUBST(STRERROR_C) +AC_SUBST(STRERROR_O) + +AC_CHECK_FUNC(strcasecmp, STRCASECMP_O="", + STRCASECMP_O="strcasecmp.o") +if test "$ac_cv_func_strcasecmp" = no ; then + STRCASECMP_C="strcasecmp.c" + STRCASECMP_O="strcasecmp.o" +fi +AC_SUBST(STRCASECMP_C) +AC_SUBST(STRCASECMP_O) + +AC_CHECK_FUNC(strncasecmp, STRNCASECMP_O="", + STRNCASECMP_O="strncasecmp.o") +if test "$ac_cv_func_strncasecmp" = no ; then + STRNCASECMP_C="strncasecmp.c" + STRNCASECMP_O="strncasecmp.o" +fi +AC_SUBST(STRNCASECMP_C) +AC_SUBST(STRNCASECMP_O) + +AC_CHECK_FUNCS(mkstemp mkdtemp) + +# +# XXX - if inet_aton isn't found, the build fails, with a complaint from +# libtool about inet_aton.lo not being a valid libtool object. We +# probably have to handle it - and all the other replacement functions that +# get built into libwireshark - differently. +# +AC_SEARCH_LIBS(inet_aton, [socket nsl], have_inet_aton=yes, + have_inet_aton=no) +if test "$have_inet_aton" = no; then + INET_ATON_C="inet_aton.c" + INET_ATON_O="inet_aton.o" + INET_ATON_LO="inet_aton.lo" + AC_DEFINE(NEED_INET_ATON_H, 1, [Define if inet/aton.h needs to be included]) +else + INET_ATON_C="" + INET_ATON_O="" + INET_ATON_LO="" +fi +AC_SUBST(INET_ATON_C) +AC_SUBST(INET_ATON_O) +AC_SUBST(INET_ATON_LO) + +AC_SEARCH_LIBS(inet_pton, [socket nsl], [ + dnl check for pre-BIND82 inet_pton() bug. + AC_MSG_CHECKING(for broken inet_pton) + AC_TRY_RUN([#include +#include +#include +#include +int main() +{ +#ifdef AF_INET6 + char buf[16]; + /* this should return 0 (error) */ + return inet_pton(AF_INET6, "0:1:2:3:4:5:6:7:", buf); +#else + return 1; +#endif +}], [AC_MSG_RESULT(ok); +have_inet_pton=yes], [AC_MSG_RESULT(broken); +have_inet_pton=no], [AC_MSG_RESULT(cross compiling, assume it is broken); +have_inet_pton=no])], +have_inet_pton=no) +if test "$have_inet_pton" = no; then + INET_PTON_C="inet_pton.c" + INET_PTON_O="inet_pton.o" + INET_PTON_LO="inet_pton.lo" +else + INET_PTON_C="" + INET_PTON_O="" + INET_PTON_LO="" +fi +AC_SUBST(INET_PTON_C) +AC_SUBST(INET_PTON_O) +AC_SUBST(INET_PTON_LO) + +AC_SEARCH_LIBS(inet_ntop, [socket nsl], [ + AC_MSG_CHECKING([for inet_ntop prototype]) + AC_TRY_COMPILE([#include +#include +#include +#include +#include + +extern const char *inet_ntop(int, const void *, char *, size_t);],, [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_INET_NTOP_PROTO, 1, + [Define if inet_ntop() prototype exists])], [ + AC_TRY_COMPILE([#include +#include +#include +#include +#include + +extern const char *inet_ntop(int, const void *, char *, socklen_t);],, [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_INET_NTOP_PROTO, 1, + [Define if inet_ntop() prototype exists])], [ + AC_MSG_RESULT(no)])]) + INET_NTOP_O="" + INET_NTOP_LO=""], [ + INET_NTOP_C="inet_ntop.c" + INET_NTOP_O="inet_ntop.o" + INET_NTOP_LO="inet_ntop.lo" + AC_DEFINE(NEED_INET_V6DEFS_H, 1, + [Define if inet/v6defs.h needs to be included])]) +AC_SUBST(INET_NTOP_C) +AC_SUBST(INET_NTOP_O) +AC_SUBST(INET_NTOP_LO) + +AC_CHECK_FUNC(strptime, STRPTIME_O="", + [STRPTIME_O="strptime.o" + AC_DEFINE(NEED_STRPTIME_H, 1, [Define if strptime.h needs to be included]) +]) +if test "$ac_cv_func_strptime" = no ; then + STRPTIME_C="strptime.c" + STRPTIME_O="strptime.o" +fi +AC_SUBST(STRPTIME_C) +AC_SUBST(STRPTIME_O) + +AC_CHECK_FUNCS(getprotobynumber gethostbyname2) +AC_CHECK_FUNCS(issetugid) +AC_CHECK_FUNCS(mmap mprotect sysconf) + +dnl blank for now, but will be used in future +AC_SUBST(wireshark_SUBDIRS) + +dnl +dnl check whether plugins should be enabled and, if they should be, +dnl check for plugins directory - stolen from Amanda's configure.in +dnl +dnl we don't wish to expand ${libdir} yet +plugindir='${libdir}/wireshark/plugins/${VERSION}' +AC_ARG_WITH(plugins, + AC_HELP_STRING( [--with-plugins@<:@=DIR@:>@], + [support plugins (installed in DIR, if supplied). @<:@default=yes, if possible@:>@]), +[ + if test "x$withval" = "xno"; then + have_plugins=no + elif test "x$have_plugins" = "xno"; then + AC_MSG_ERROR([GLib on this platform doesn't support loadable modules, so you can't enable plugins.]) + elif test "x$withval" != "xyes"; then + plugindir="$withval" + fi +]) +AM_CONDITIONAL(HAVE_PLUGINS, test "x$have_plugins" = "xyes") +if test x$have_plugins = xyes +then + AC_DEFINE(HAVE_PLUGINS, 1, [Define if plugins are enabled]) +fi +AC_SUBST(plugindir) +CPPFLAGS="$CPPFLAGS '-DPLUGIN_DIR=\"\$(plugindir)\"'" + +# +# The plugin dissectors reside in ./plugins/PROTO/ +# +PLUGIN_LIBS="" +AC_SUBST(PLUGIN_LIBS) + +dnl libtool defs +# +# Yes, AM_PROG_LIBTOOL is redundant with newer version(s) of some tool(s) +# (autoconf? automake? libtool?) - with the newer version(s), it's +# just an alias for AC_PROG_LIBTOOL, which is called earlier. +# +# With older version(s) of those tool(s), however, it's not just an +# alias, and the configure scripts don't work without it. +# +AM_PROG_LIBTOOL +AC_SUBST(LIBTOOL_DEPS) + +AM_CONDITIONAL(ENABLE_STATIC, test x$enable_static = xyes) +if test x$enable_static = xyes -a x$have_plugins = xyes +then + AC_DEFINE(ENABLE_STATIC, 1, [Link plugins statically into Wireshark]) +fi +AC_SUBST(ENABLE_STATIC) + +dnl Save the cacheable configure results to config.cache before recursing +AC_CACHE_SAVE + +sinclude(plugins/Custom.m4) dnl +ifdef(_CUSTOM_AC_OUTPUT_,, define(_CUSTOM_AC_OUTPUT_, )) dnl + +AM_CONFIG_HEADER(config.h) +AC_OUTPUT( + Makefile + doxygen.cfg + asn1/Makefile + asn1/acp133/Makefile + asn1/acse/Makefile + asn1/ansi_map/Makefile + asn1/ansi-tcap/Makefile + asn1/camel/Makefile + asn1/cdt/Makefile + asn1/charging_ase/Makefile + asn1/cmip/Makefile + asn1/cms/Makefile + asn1/dap/Makefile + asn1/disp/Makefile + asn1/dop/Makefile + asn1/dsp/Makefile + asn1/ess/Makefile + asn1/ftam/Makefile + asn1/gnm/Makefile + asn1/goose/Makefile + asn1/gsmmap/Makefile + asn1/h225/Makefile + asn1/h235/Makefile + asn1/h245/Makefile + asn1/h248/Makefile + asn1/h282/Makefile + asn1/h283/Makefile + asn1/h323/Makefile + asn1/h450/Makefile + asn1/h450-ros/Makefile + asn1/h460/Makefile + asn1/h501/Makefile + asn1/inap/Makefile + asn1/ldap/Makefile + asn1/logotype-cert-extn/Makefile + asn1/lte-rrc/Makefile + asn1/mms/Makefile + asn1/mpeg-audio/Makefile + asn1/mpeg-pes/Makefile + asn1/nbap/Makefile + asn1/ns-cert-exts/Makefile + asn1/ocsp/Makefile + asn1/p7/Makefile + asn1/pcap/Makefile + asn1/pkcs1/Makefile + asn1/pkcs12/Makefile + asn1/pkinit/Makefile + asn1/pkix1explicit/Makefile + asn1/pkix1implicit/Makefile + asn1/pkixcmp/Makefile + asn1/pkixcrmf/Makefile + asn1/pkixproxy/Makefile + asn1/pkixqualified/Makefile + asn1/pkixtsp/Makefile + asn1/pres/Makefile + asn1/q932/Makefile + asn1/q932-ros/Makefile + asn1/qsig/Makefile + asn1/ranap/Makefile + asn1/rnsap/Makefile + asn1/ros/Makefile + asn1/rrc/Makefile + asn1/rrlp/Makefile + asn1/rtse/Makefile + asn1/s1ap/Makefile + asn1/s4406/Makefile + asn1/sabp/Makefile + asn1/smrse/Makefile + asn1/snmp/Makefile + asn1/spnego/Makefile + asn1/t125/Makefile + asn1/t38/Makefile + asn1/tcap/Makefile + asn1/ulp/Makefile + asn1/wlancertextn/Makefile + asn1/x2ap/Makefile + asn1/x411/Makefile + asn1/x420/Makefile + asn1/x509af/Makefile + asn1/x509ce/Makefile + asn1/x509if/Makefile + asn1/x509sat/Makefile + asn1/x721/Makefile + doc/Makefile + epan/Makefile + epan/crc/Makefile + epan/crypt/Makefile + epan/doxygen.cfg + epan/dfilter/Makefile + epan/dissectors/Makefile + epan/ftypes/Makefile + epan/wslua/Makefile + codecs/Makefile + gtk/Makefile + gtk/doxygen.cfg + help/Makefile + packaging/Makefile + packaging/macosx/Info.plist + packaging/macosx/Makefile + packaging/nsis/Makefile + packaging/rpm/Makefile + packaging/rpm/SPECS/Makefile + packaging/rpm/SPECS/wireshark.spec + packaging/svr4/Makefile + packaging/svr4/checkinstall + packaging/svr4/pkginfo + plugins/Makefile + plugins/asn1/Makefile + plugins/docsis/Makefile + plugins/ethercat/Makefile + plugins/giop/Makefile + plugins/gryphon/Makefile + plugins/irda/Makefile + plugins/m2m/Makefile + plugins/mate/Makefile + plugins/opcua/Makefile + plugins/profinet/Makefile + plugins/sercosiii/Makefile + plugins/stats_tree/Makefile + plugins/unistim/Makefile + plugins/wimax/Makefile + plugins/wimaxasncp/Makefile + tools/Makefile + tools/idl2wrs.sh + tools/lemon/Makefile + wiretap/Makefile + wsutil/Makefile + _CUSTOM_AC_OUTPUT_ + ,) +dnl AC_CONFIG_FILES([tools/setuid-root.pl], [chmod +x tools/setuid-root.pl]) + + + +# Pretty messages + +if test "x$enable_setuid_install" = "xyes" ; then + setuid_message="yes" +else + setuid_message="no" +fi + +if test "x$want_zlib" = "xno" ; then + zlib_message="no" +else + zlib_message="yes" +fi + +if test "x$want_pcre" = "xno" ; then + pcre_message="no" +else + pcre_message="yes" +fi + +if test "x$want_lua" = "xyes" ; then + lua_message="yes" +else + lua_message="no" +fi + +if test "x$want_portaudio" = "xyes" ; then + portaudio_message="yes" +else + portaudio_message="no" +fi + +if test "x$want_ssl" = "xno" ; then + ssl_message="no" +else + ssl_message="yes" +fi + +if test "x$want_krb5" = "xno" ; then + krb5_message="no" +else + krb5_message="yes ($ac_krb5_version)" +fi + +if test "x$have_good_c_ares" = "xyes" ; then + c_ares_message="yes" +else + c_ares_message="no" +fi + +if test "x$have_good_adns" = "xyes" ; then + adns_message="yes" +else + adns_message="no" +fi + +if test "x$have_good_libcap" = "xyes" ; then + libcap_message="yes" +else + libcap_message="no" +fi + +if test "x$have_good_geoip" = "xyes" ; then + geoip_message="yes" +else + geoip_message="no" +fi + +echo "" +echo "The Wireshark package has been configured with the following options." +echo " Build wireshark : $enable_wireshark" +echo " Build tshark : $enable_tshark" +echo " Build capinfos : $enable_capinfos" +echo " Build editcap : $enable_editcap" +echo " Build dumpcap : $enable_dumpcap" +echo " Build mergecap : $enable_mergecap" +echo " Build text2pcap : $enable_text2pcap" +echo " Build idl2wrs : $enable_idl2wrs" +echo " Build randpkt : $enable_randpkt" +echo " Build dftest : $enable_dftest" +echo " Build rawshark : $enable_rawshark" +echo "" +echo " Install dumpcap setuid : $setuid_message" +echo " Use plugins : $have_plugins" +echo " Use lua library : $lua_message" +echo " Build rtp_player : $portaudio_message" +echo " Use threads : $enable_threads" +echo " Build profile binaries : $enable_profile_build" +echo " Use pcap library : $want_pcap" +echo " Use zlib library : $zlib_message" +echo " Use pcre library : $pcre_message" +echo " Use kerberos library : $krb5_message" +echo " Use c-ares library : $c_ares_message" +echo " Use GNU ADNS library : $adns_message" +echo " Use SMI MIB library : $libsmi_message" +echo " Use GNU crypto library : $gcrypt_message" +echo " Use SSL crypto library : $ssl_message" +echo " Use IPv6 name resolution : $enable_ipv6" +echo " Use gnutls library : $tls_message" +echo " Use POSIX capabilities library : $libcap_message" +echo " Use GeoIP library : $geoip_message" diff --git a/application/tool/wireshark/1.2.6/oct_readme.txt b/application/tool/wireshark/1.2.6/oct_readme.txt new file mode 100644 index 0000000..9a747c6 --- /dev/null +++ b/application/tool/wireshark/1.2.6/oct_readme.txt @@ -0,0 +1,84 @@ +// Can't create link because WS makefile use relative path +cd /pub/dev.wireshark/1.2.6/wireshark-1.2.6/plugins + +// Copy GOOSE plugins +cp /mnt/goose/application/tool/wireshark/plugins/octasic octasic + +**************************** +cd /pub/dev.wireshark/1.2.6/wireshark-1.2.6 + +Modify file: configure.in + to allow plugin version to related OCTVC1 build version. + - Added + + #PPMODIF + # + AC_MSG_CHECKING([whether a TGT_VERSION was specified]) + AC_ARG_WITH([version], + AS_HELP_STRING([--with-version=@<:@*@:>@], + [Specify Target version @<:@default=1.3.1@:>@]), + with_version="$withval", with_version="1.3.2") + AC_SUBST(TGT_VERSION, [$with_version]) + AC_MSG_RESULT(TGT_VERSION=$TGT_VERSION) + # + AC_MSG_CHECKING([whether OCT_PATH was specified]) + AC_ARG_WITH([oct_path], + AS_HELP_STRING([--with-oct_path=@<:@*@:>@], + [Specify Octasic path @<:@default=/mnt/goose@:>@]), + with_oct_path="$withval", with_oct_path="/mnt/goose") + AC_SUBST(OCT_PATH, [$with_oct_path]) + AC_MSG_RESULT(OCT_PATH=$OCT_PATH) + #PPMODIF + + AFTER:# Check for doxygen + +Modify file: configure.in + +find AC_OUTPUT= + +ADD + plugins/octasic/oct1010db_ws/Makefile + plugins/octasic/octmfa_ws/Makefile + plugins/octasic/octpkt_ws/Makefile + plugins/octasic/octvocnet_ws/Makefile + plugins/octasic/octvc1_ws/Makefile + plugins/octasic/rfc4175_yuv_ws/Makefile + + +**************************** +cd /pub/dev.wireshark/1.2.6/wireshark-1.2.6/plugins + +Modify file: Makefile.am + // remove all plugin under + SUBDIRS = $(_CUSTOM_SUBDIRS_) \ + + // Added + octasic/oct1010db_ws + octasic/octmfa_ws + octasic/octpkt_ws + octasic/octvocnet_ws + octasic/octvc1_ws + octasic/rfc4175_yuv_ws + + ... + +**************************** +# For new plugins +cp /pub/dev.wireshark/1.2.6/wireshark-1.2.6/plugins/octasic/octpkt_ws/Makefile.am /pub/dev.wireshark/1.2.6/wireshark-1.2.6/plugins/octasic/newplugi_dir/Makefile.am +cp /pub/dev.wireshark/1.2.6/wireshark-1.2.6/plugins/octasic/octpkt_ws/Makefile.common /pub/dev.wireshark/1.2.6/wireshark-1.2.6/plugins/octasic/newplugi_dir/Makefile.common +.. +update file list and pkg name. + +**************************** +Making Wireshark plugins: + +cd /pub/dev.wireshark/1.2.6/wireshark-1.2.6 +./autogen.sh + +===> OCTVC1 Pkg Version +===> OCTASIC PATH in /mnt/goose +./configure --with-version=1.4.0.1-PR --with-oct_path=/mnt/goose + +make install ==> Result is /usr/local/lib/wireshark/plugins/1.2.6 + + diff --git a/application/tool/wireshark/1.6.5/config.h b/application/tool/wireshark/1.6.5/config.h new file mode 100644 index 0000000..c299c12 --- /dev/null +++ b/application/tool/wireshark/1.6.5/config.h @@ -0,0 +1,278 @@ +/* $Id: config.h.win32 39537 2011-10-24 18:44:00Z gerald $ */ +/* config.h.win32 Generated manually. :-) */ +/* config.h. Generated automatically by configure. */ +/* config.h.in. Generated automatically from configure.in by autoheader. */ + +/* Generated Bison and Flex files test whether __STDC__ is defined + in order to check whether to use ANSI C features such as "const". + + GCC defines it as 1 even if extensions that render the implementation + non-conformant are enabled; Sun's C compiler (and, I think, other + AT&T-derived C compilers) define it as 0 if extensions that render + the implementation non-conformant are enabled; Microsoft Visual C++ + 6.0 doesn't define it at all if extensions that render the implementation + non-conformant are enabled. + + We define it as 0 here, so that those generated files will use + those features (and thus not get type warnings when compiled with + MSVC++). */ +#ifndef __STDC__ +#define __STDC__ 0 +#endif + +/* + * Flex (v 2.5.35) uses this symbol to "exclude" unistd.h + */ +#define YY_NO_UNISTD_H + +/* Use Unicode in Windows runtime functions. */ +#define UNICODE 1 +#define _UNICODE 1 + +/* Use threads */ +#define USE_THREADS 1 + +/* Define if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define if your processor stores words with the most significant + byte first (like Motorola and SPARC, unlike Intel and VAX). */ +/* #undef WORDS_BIGENDIAN */ + +/* Define if lex declares yytext as a char * by default, not a char[]. */ +#define YYTEXT_POINTER 1 + +#define HAVE_PLUGINS 1 + +#define USE_THREADS 1 + +/* #undef HAVE_SA_LEN */ + +/* #undef HAVE_MKSTEMP */ +/* #undef HAVE_MKDTEMP */ + +#define HAVE_LIBPCAP 1 + +#define HAVE_PCAP_FINDALLDEVS 1 +#define HAVE_PCAP_DATALINK_NAME_TO_VAL 1 +#define HAVE_PCAP_DATALINK_VAL_TO_NAME 1 +#define HAVE_PCAP_DATALINK_VAL_TO_DESCRIPTION 1 +#define HAVE_LIBWIRESHARKDLL 1 + +#define HAVE_PCAP_LIST_DATALINKS 1 +#define HAVE_PCAP_FREE_DATALINKS 1 +#define HAVE_PCAP_SET_DATALINK 1 + +#define HAVE_REMOTE 1 +#define HAVE_PCAP_REMOTE 1 +#define HAVE_PCAP_OPEN 1 +#define HAVE_PCAP_OPEN_DEAD 1 +#define HAVE_BPF_IMAGE 1 +#define HAVE_PCAP_SETSAMPLING 1 + +#define HAVE_AIRPCAP 1 +#define HAVE_AIRPDCAP 1 + + + + +/* availability of pcap_freecode() is handled at runtime */ +#define HAVE_PCAP_FREECODE 1 + +/* define macro for importing variables from an dll + * it depends on HAVE_LIBWIRESHARKDLL and _NEED_VAR_IMPORT_ + */ +#if defined (_NEED_VAR_IMPORT_) && defined (HAVE_LIBWIRESHARKDLL) +# define WS_VAR_IMPORT __declspec(dllimport) extern +#else +# define WS_VAR_IMPORT extern +#endif + +/* + * Define WS_MSVC_NORETURN appropriately for declarations of routines that + * never return (just like Charlie on the MTA). + * + * Note that MSVC++ expects __declspec(noreturn) to precede the function + * name and GCC, as far as I know, expects __attribute__((noreturn)) to + * follow the function name, so we need two different flavors of + * noreturn tag. + */ +#define WS_MSVC_NORETURN __declspec(noreturn) + +/* Define if you have the gethostbyname2 function. */ +/* #undef HAVE_GETHOSTBYNAME2 */ + +/* Define if you have the getprotobynumber function. */ +/* #undef HAVE_GETPROTOBYNUMBER */ + +/* Define if you have the header file. */ +/* #undef HAVE_ARPA_INET_H */ + +/* Define if you have the header file. */ +#define HAVE_DIRECT_H 1 + +/* Define if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define if you have the header file. */ +/* #undef HAVE_ICONV */ + +/* Define if you have the header file. */ +/* #undef HAVE_NETDB_H */ + +/* Define if you have the header file. */ +/* #define HAVE_NETINET_IN_H 1 */ + +/* Define if you have the header file. */ +/* #undef HAVE_SNMP_SNMP_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_SNMP_VERSION_H */ + +/* Define if you have the header file. */ +#define HAVE_STDARG_H 1 + +/* Define if you have the header file. */ +/* #undef HAVE_STDDEF_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_SYS_IOCTL_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_SYS_SOCKET_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_SYS_SOCKIO_H */ + +/* Define if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define if you have the header file. */ +/* #define HAVE_SYS_TIME_H 1 */ + +/* Define if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define if you have the header file. */ +/* #undef HAVE_SYS_WAIT_H */ + +/* Define if tm_zone field exists in struct tm */ +/* #undef HAVE_TM_ZONE 1 */ + +/* Define if tzname array exists */ +/* #undef HAVE_TZNAME */ + +/* Define if you have the header file. */ +/* #define HAVE_UNISTD_H 1 */ + +/* Define if you have the header file. */ +#define HAVE_WINDOWS_H 1 + +/* Define if you have the header file. */ +#define HAVE_WINSOCK2_H 1 + +/* Define if defines PRI[doxu]64 macros */ +/* #define INTTYPES_H_DEFINES_FORMATS */ + +/* Define if you have the z library (-lz). */ +#define HAVE_LIBZ 1 +#ifdef HAVE_LIBZ +#define HAVE_INFLATEPRIME 1 +#endif + +/* Define to use GNU ADNS library */ +#define HAVE_C_ARES 1 + +/* Define to use GNU ADNS library */ +#ifndef HAVE_C_ARES + +#define ADNS_JGAA_WIN32 1 +#endif + +/* Define to use the PCRE library */ + + +/* Define to use the Nettle library */ + + +/* Define to use the gnutls library */ +#define HAVE_LIBGNUTLS 1 + +/* Define to use the libgcrypt library */ +#define HAVE_LIBGCRYPT 1 + +/* Define to use mit kerberos for decryption of kerberos/sasl/dcerpc */ +#define HAVE_MIT_KERBEROS 1 +#ifdef HAVE_MIT_KERBEROS +#define HAVE_KERBEROS +#endif + +/* Define to use Lua */ +#define HAVE_LUA 1 +#define HAVE_LUA_5_1 1 + +/* Define to use Python */ + + +/* Define to use Portaudio library */ +#define HAVE_LIBPORTAUDIO 1 +/* Define version of of the Portaudio library API */ + + +/* Define to have SMI */ +#define HAVE_LIBSMI 1 + +/* Define to have GeoIP */ +#define HAVE_GEOIP 1 + +/* Define for IPv6 */ +#define INET6 1 + +/* Define to have ntddndis.h */ +#define HAVE_NTDDNDIS_H 1 + +#define NEED_INET_ATON_H 1 +#define NEED_INET_V6DEFS_H 1 +#define NEED_STRPTIME_H 1 + +#ifndef WIN32 +#define WIN32 1 +#endif + +/* Visual C 9 (2008) & Visual C 10 (2010) need these prototypes */ +#if _MSC_VER == 1500 || _MSC_VER == 1600 +#define NTDDI_VERSION NTDDI_WIN2K +#define _WIN32_WINNT _WIN32_WINNT_WIN2K +#endif + +#define strncasecmp strnicmp +#define popen _popen +#define pclose _pclose + +/* Define to use GTK */ +#define HAVE_GTK + +/* Name of package */ +#define PACKAGE "wireshark" + +/* Version number of package */ +#define VERSION "1.6.5" + +/* We shouldn't need this under Windows but we'll define it anyway. */ +#define HTML_VIEWER "mozilla" + +/* Check for the required _MSC_VER */ +#if MSC_VER_REQUIRED != _MSC_VER +#define WS_TO_STRING2(x) #x +#define WS_TO_STRING(x) WS_TO_STRING2(x) +#pragma message( "_MSC_VER is:" WS_TO_STRING(_MSC_VER) " but required is:" WS_TO_STRING(MSC_VER_REQUIRED) ) +#error Your MSVC_VARIANT setting in config.nmake doesn't match the MS compiler version! +#endif + +/* Disable Code Analysis warnings that result in too many false positives. */ +/* http://msdn.microsoft.com/en-US/library/zyhb0b82.aspx */ +#if _MSC_VER >= 1400 +#pragma warning ( disable : 6011 ) +#endif + +typedef int ssize_t; diff --git a/application/tool/wireshark/1.6.5/config.h.win32 b/application/tool/wireshark/1.6.5/config.h.win32 new file mode 100644 index 0000000..8645368 --- /dev/null +++ b/application/tool/wireshark/1.6.5/config.h.win32 @@ -0,0 +1,278 @@ +/* $Id: config.h.win32 39537 2011-10-24 18:44:00Z gerald $ */ +/* config.h.win32 Generated manually. :-) */ +/* config.h. Generated automatically by configure. */ +/* config.h.in. Generated automatically from configure.in by autoheader. */ + +/* Generated Bison and Flex files test whether __STDC__ is defined + in order to check whether to use ANSI C features such as "const". + + GCC defines it as 1 even if extensions that render the implementation + non-conformant are enabled; Sun's C compiler (and, I think, other + AT&T-derived C compilers) define it as 0 if extensions that render + the implementation non-conformant are enabled; Microsoft Visual C++ + 6.0 doesn't define it at all if extensions that render the implementation + non-conformant are enabled. + + We define it as 0 here, so that those generated files will use + those features (and thus not get type warnings when compiled with + MSVC++). */ +#ifndef __STDC__ +#define __STDC__ 0 +#endif + +/* + * Flex (v 2.5.35) uses this symbol to "exclude" unistd.h + */ +#define YY_NO_UNISTD_H + +/* Use Unicode in Windows runtime functions. */ +#define UNICODE 1 +#define _UNICODE 1 + +/* Use threads */ +#define USE_THREADS 1 + +/* Define if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define if your processor stores words with the most significant + byte first (like Motorola and SPARC, unlike Intel and VAX). */ +/* #undef WORDS_BIGENDIAN */ + +/* Define if lex declares yytext as a char * by default, not a char[]. */ +#define YYTEXT_POINTER 1 + +#define HAVE_PLUGINS 1 + +#define USE_THREADS 1 + +/* #undef HAVE_SA_LEN */ + +/* #undef HAVE_MKSTEMP */ +/* #undef HAVE_MKDTEMP */ + +@HAVE_LIBPCAP@ +@HAVE_PCAP_BREAKLOOP@ +@HAVE_PCAP_FINDALLDEVS@ +@HAVE_PCAP_DATALINK_NAME_TO_VAL@ +@HAVE_PCAP_DATALINK_VAL_TO_NAME@ +@HAVE_PCAP_DATALINK_VAL_TO_DESCRIPTION@ +@HAVE_LIBWIRESHARKDLL@ + +@HAVE_PCAP_LIST_DATALINKS@ +@HAVE_PCAP_FREE_DATALINKS@ +@HAVE_PCAP_SET_DATALINK@ + +@HAVE_REMOTE@ +@HAVE_PCAP_REMOTE@ +@HAVE_PCAP_OPEN@ +@HAVE_PCAP_OPEN_DEAD@ +@HAVE_BPF_IMAGE@ +@HAVE_PCAP_SETSAMPLING@ + +@HAVE_AIRPCAP@ +@HAVE_AIRPDCAP@ + +@MAIN_MENU_USE_UIMANAGER@ +@WANT_PACKET_EDITOR@ + +/* availability of pcap_freecode() is handled at runtime */ +#define HAVE_PCAP_FREECODE 1 + +/* define macro for importing variables from an dll + * it depends on HAVE_LIBWIRESHARKDLL and _NEED_VAR_IMPORT_ + */ +#if defined (_NEED_VAR_IMPORT_) && defined (HAVE_LIBWIRESHARKDLL) +# define WS_VAR_IMPORT __declspec(dllimport) extern +#else +# define WS_VAR_IMPORT extern +#endif + +/* + * Define WS_MSVC_NORETURN appropriately for declarations of routines that + * never return (just like Charlie on the MTA). + * + * Note that MSVC++ expects __declspec(noreturn) to precede the function + * name and GCC, as far as I know, expects __attribute__((noreturn)) to + * follow the function name, so we need two different flavors of + * noreturn tag. + */ +#define WS_MSVC_NORETURN __declspec(noreturn) + +/* Define if you have the gethostbyname2 function. */ +/* #undef HAVE_GETHOSTBYNAME2 */ + +/* Define if you have the getprotobynumber function. */ +/* #undef HAVE_GETPROTOBYNUMBER */ + +/* Define if you have the header file. */ +/* #undef HAVE_ARPA_INET_H */ + +/* Define if you have the header file. */ +#define HAVE_DIRECT_H 1 + +/* Define if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define if you have the header file. */ +/* #undef HAVE_ICONV */ + +/* Define if you have the header file. */ +/* #undef HAVE_NETDB_H */ + +/* Define if you have the header file. */ +/* #define HAVE_NETINET_IN_H 1 */ + +/* Define if you have the header file. */ +/* #undef HAVE_SNMP_SNMP_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_SNMP_VERSION_H */ + +/* Define if you have the header file. */ +#define HAVE_STDARG_H 1 + +/* Define if you have the header file. */ +/* #undef HAVE_STDDEF_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_SYS_IOCTL_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_SYS_SOCKET_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_SYS_SOCKIO_H */ + +/* Define if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define if you have the header file. */ +/* #define HAVE_SYS_TIME_H 1 */ + +/* Define if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define if you have the header file. */ +/* #undef HAVE_SYS_WAIT_H */ + +/* Define if tm_zone field exists in struct tm */ +/* #undef HAVE_TM_ZONE 1 */ + +/* Define if tzname array exists */ +/* #undef HAVE_TZNAME */ + +/* Define if you have the header file. */ +/* #define HAVE_UNISTD_H 1 */ + +/* Define if you have the header file. */ +#define HAVE_WINDOWS_H 1 + +/* Define if you have the header file. */ +#define HAVE_WINSOCK2_H 1 + +/* Define if defines PRI[doxu]64 macros */ +/* #define INTTYPES_H_DEFINES_FORMATS */ + +/* Define if you have the z library (-lz). */ +@HAVE_LIBZ@ +#ifdef HAVE_LIBZ +#define HAVE_INFLATEPRIME 1 +#endif + +/* Define to use GNU ADNS library */ +@HAVE_C_ARES@ + +/* Define to use GNU ADNS library */ +#ifndef HAVE_C_ARES +@HAVE_GNU_ADNS@ +#define ADNS_JGAA_WIN32 1 +#endif + +/* Define to use the PCRE library */ +@HAVE_PCRE@ + +/* Define to use the Nettle library */ +@HAVE_NETTLE@ + +/* Define to use the gnutls library */ +@HAVE_LIBGNUTLS@ + +/* Define to use the libgcrypt library */ +@HAVE_LIBGCRYPT@ + +/* Define to use mit kerberos for decryption of kerberos/sasl/dcerpc */ +@HAVE_KFW@ +#ifdef HAVE_MIT_KERBEROS +#define HAVE_KERBEROS +#endif + +/* Define to use Lua */ +@HAVE_LUA@ +@HAVE_LUA_5_1@ + +/* Define to use Python */ +@HAVE_PYTHON@ + +/* Define to use Portaudio library */ +@HAVE_LIBPORTAUDIO@ +/* Define version of of the Portaudio library API */ +@PORTAUDIO_API_1@ + +/* Define to have SMI */ +@HAVE_SMI@ + +/* Define to have GeoIP */ +@HAVE_GEOIP@ + +/* Define for IPv6 */ +@INET6@ + +/* Define to have ntddndis.h */ +@HAVE_NTDDNDIS_H@ + +#define NEED_INET_ATON_H 1 +#define NEED_INET_V6DEFS_H 1 +#define NEED_STRPTIME_H 1 + +#ifndef WIN32 +#define WIN32 1 +#endif + +/* Visual C 9 (2008) & Visual C 10 (2010) need these prototypes */ +#if _MSC_VER == 1500 || _MSC_VER == 1600 +#define NTDDI_VERSION NTDDI_WIN2K +#define _WIN32_WINNT _WIN32_WINNT_WIN2K +#endif + +#define strncasecmp strnicmp +#define popen _popen +#define pclose _pclose + +/* Define to use GTK */ +#define HAVE_GTK + +/* Name of package */ +#define PACKAGE "wireshark" + +/* Version number of package */ +#define VERSION "@VERSION@" + +/* We shouldn't need this under Windows but we'll define it anyway. */ +#define HTML_VIEWER "mozilla" + +/* Check for the required _MSC_VER */ +#if MSC_VER_REQUIRED != _MSC_VER +#define WS_TO_STRING2(x) #x +#define WS_TO_STRING(x) WS_TO_STRING2(x) +#pragma message( "_MSC_VER is:" WS_TO_STRING(_MSC_VER) " but required is:" WS_TO_STRING(MSC_VER_REQUIRED) ) +#error Your MSVC_VARIANT setting in config.nmake doesn't match the MS compiler version! +#endif + +/* Disable Code Analysis warnings that result in too many false positives. */ +/* http://msdn.microsoft.com/en-US/library/zyhb0b82.aspx */ +#if _MSC_VER >= 1400 +#pragma warning ( disable : 6011 ) +#endif + +typedef int ssize_t; diff --git a/application/tool/wireshark/1.6.5/config.nmake b/application/tool/wireshark/1.6.5/config.nmake new file mode 100644 index 0000000..0afe8ea --- /dev/null +++ b/application/tool/wireshark/1.6.5/config.nmake @@ -0,0 +1,1383 @@ +# $Id: config.nmake 39943 2011-11-18 21:29:16Z gerald $ + +# Some more information about the settings in this file can be found in +# the file README.windows and the Developer's Guide (available online). + +##### Target platform ##### +# Only "win32" and "win64" are valid (for now). +# This can be defined in the system environment. +!IFNDEF WIRESHARK_TARGET_PLATFORM +WIRESHARK_TARGET_PLATFORM=win32 +!ENDIF + +##### Versions ##### + +# The SVN revision of our build. Updated by make-version.pl +SVN_REVISION=40429 + +# The current Wireshark version. Recommended: Leave unchanged. +# Updated by make-version.pl +VERSION_MAJOR=1 +VERSION_MINOR=6 +VERSION_MICRO=5 +VERSION_BUILD=$(SVN_REVISION) + +# Local build information. Recommended: Unique string for your +# environment, e.g. "-JackStackBarbecue". Updated by make-version.pl + +VERSION_EXTRA= + +# The version of the wiretap library. Recommended: Leave unchanged. +WTAP_VERSION_MAJOR=$(VERSION_MAJOR) +WTAP_VERSION_MINOR=$(VERSION_MINOR) +WTAP_VERSION_MICRO=0 + +##### Directories ##### + +# +# Base directory, where your libraries reside, which are needed to +# compile the sources. This setting is used only inside this file. +# +#PPMODIF +#!IFDEF WIRESHARK_LIB_DIR +#WIRESHARK_LIBS=$(WIRESHARK_LIB_DIR) +#!ELSE +#WIRESHARK_LIBS=C:\wireshark-$(WIRESHARK_TARGET_PLATFORM)-libs-1.6 +#!ENDIF + +!IFNDEF DEV_ROOT +DEV_ROOT=../../../../../.. +!ENDIF + +!IFNDEF WS_DEV_ROOT +!IF EXIST( "$(DEV_ROOT)\application\tool\wireshark\ws_dev_root.nmake") +!include $(DEV_ROOT)\application\tool\wireshark\ws_dev_root.nmake +!ENDIF +!ENDIF + +!IFNDEF WS_DEV_ROOT +WIRESHARK_LIBS=$(DEV_ROOT)/application/3rdparty/wireshark/$(TGT_WS_VERSION)/$(WIRESHARK_TARGET_PLATFORM)-libs +!ELSE +WIRESHARK_LIBS=$(WS_DEV_ROOT)/$(TGT_WS_VERSION)/$(WIRESHARK_TARGET_PLATFORM)-libs +!ENDIF +OCT_INC = $(DEV_ROOT)/software/include + + +# +# Base directory, where your programs reside. +# This setting is used only inside this file. +# +# PPMODIF +!IFNDEF WIRESHARK_RELEASE +WIRESHARK_RELEASE=$(TGT_WS_VERSION) +!ENDIF +PROGRAM_FILES=$(PROGRAMFILES) + +!IFNDEF WS_INSTALL_PATH +# +# Wireshark plugins installation +#WS_INSTALL_PATH=D:\work\3rdparty\wireshark\1.6.5\wireshark-gtk2 +WS_INSTALL_PATH=$(PROGRAM_FILES)/wireshark +!ENDIF +WIRESHARK_PLUGING_DEST=$(WS_INSTALL_PATH)/plugins/$(WIRESHARK_RELEASE) + + +# +# Location of the "tools" directory. This affects HTML2TXT below and should +# be overridden by makefiles in any subdirectories that use HTML2TXT. +!IFNDEF TOOLS_DIR +TOOLS_DIR=tools +!ENDIF + +# +# Machine type for the compiler and linker +# TARGET_MACHINE (Used for link /MACHINE) should be one of "X86" or "X64" +# (sorry ARM, Alpha, MIPS, and Itanium fans). +# CPU (Used by win32.mak) should be one of "i386" or "AMD64". +# PROCESSOR_ARCHITECTURE (Used for redistributable packages and +# manifests) should be one of "x86" or "amd64". +!if "$(WIRESHARK_TARGET_PLATFORM)" == "win32" +TARGET_MACHINE=x86 +CPU=i386 +PROCESSOR_ARCHITECTURE=x86 +!else if "$(WIRESHARK_TARGET_PLATFORM)" == "win64" +TARGET_MACHINE=x64 +CPU=AMD64 +PROCESSOR_ARCHITECTURE=amd64 +!else +!error Your mysterious moon-man architecture "$(WIRESHARK_TARGET_PLATFORM)" frightens and confuses us. +!endif + + +##### Microsoft Visual C / Studio Variant ##### +# For the different Studios, see: http://en.wikipedia.org/wiki/Microsoft_Visual_Studio +# only one of the following MSVC_VARIANT settings should be used +# BTW: The "Microsoft Visual C++ Toolkit 2003" DOESN'T WORK for WS! + +# "Microsoft Visual Studio 6.0" +# Visual C++ 6.0, _MSC_VER 1200, msvcrt.dll (version 6) +#MSVC_VARIANT=MSVC6 + +# "Microsoft Visual Studio .NET (2002)" +# Visual C++ 7.0, _MSC_VER 1300, msvcr70.dll +#MSVC_VARIANT=MSVC2002 + +# "Microsoft .Net Framework SDK Version 1.0" +# needs additional Platform SDK installation +# Visual C++ 7.0, _MSC_VER 1300, msvcr70.dll +#MSVC_VARIANT=DOTNET10 + +# "Microsoft Visual Studio .NET 2003" +# Visual C++ 7.1, _MSC_VER 1310, msvcr71.dll +#MSVC_VARIANT=MSVC2003 + +# "Microsoft .Net Framework SDK Version 1.1" +# needs additional Platform SDK installation +# Visual C++ 7.1, _MSC_VER 1310, msvcr71.dll +#MSVC_VARIANT=DOTNET11 + +# "Microsoft Visual Studio 2005" +# Visual C++ 8.0, _MSC_VER 1400, msvcr80.dll +#MSVC_VARIANT=MSVC2005 + +# "Microsoft Visual C++ 2005 Express Edition" +# needs additional Platform SDK installation +# Visual C++ 8.0, _MSC_VER 1400, msvcr80.dll +#MSVC_VARIANT=MSVC2005EE + +# "Microsoft .Net Framework 2.0 SDK" +# needs additional Platform SDK installation +# Visual C++ 8.0, _MSC_VER 1400, msvcr80.dll +#MSVC_VARIANT=DOTNET20 + +# "Microsoft Visual Studio 2008" +# Visual C++ 9.0, _MSC_VER 1500, msvcr90.dll +#MSVC_VARIANT=MSVC2008 + +# "Microsoft Visual C++ 2008 Express Edition" +# Visual C++ 9.0, _MSC_VER 1500, msvcr90.dll +#PPMODIF +MSVC_VARIANT=MSVC2008EE + +# "Microsoft Visual Studio 2010" +# Visual C++ 10.0, _MSC_VER 1600, msvcr100.dll +#MSVC_VARIANT=MSVC2010 + +# "Microsoft Visual C++ 2010 Express Edition" +# Visual C++ 10.0, _MSC_VER 1600, msvcr100.dll +#MSVC_VARIANT=MSVC2010EE + +# The default if we haven't set a system environment variable or +# uncommented an entry above. +!IFNDEF MSVC_VARIANT +MSVC_VARIANT=MSVC2008 +!ENDIF + +# +# Optional: To compile some time critical code from assembler instead of C +# +# If you have the NASM compiler, set this to the NASM executable. +# http://nasm.sourceforge.net/ +# +# If you don't have NASM, comment this line out, so that NASM +# isn't defined. +# +NASM=$(WIRESHARK_LIBS)\nasm-2.09.08\nasm.exe + +# +# Optional: the Python library enables scripting support. +# +# If you don't have the Python library, comment this line out, so that +# PYTHON_EMBED isn't defined. +# +# NOTE: The Python library must have been compiled with the same +# compiler (MSVC_VARIANT) as Wireshark. Known python.org Python +# CRT versions: +# +# Python version CRT (32-bit) CRT (64-bit) +# 2.4.4 7.1 ? +# 2.6.1 9.0 ? +# 2.6.2 9.0 +# +# If you versions of Python and Visual C++ use different CRTs +# comment this out. +# +# XXX The DLL path in epan/wspython/wspy_libws.py likely needs to +# be fixed before this is enabled by default. +#PYTHON_EMBED=1 + +# +# Optional: the Python interpreter is used as part of the buildsystem +# +# This will override the automatic detection below. +#PYTHON_VER=27 +#PYTHON_DIR=C:\Python$(PYTHON_VER) + +# +# If you don't have the native Python package installed, you can use +# the Cygwin version (not recommended) +# +#PYTHON=env python + +# Santity check: native vs Cygwin Python options +!IF DEFINED(PYTHON) && DEFINED(PYTHON_DIR) +!ERROR PYTHON and PYTHON_DIR cannot be specified at the same time +!ENDIF + +# Find native Python automatically if PYTHON(_DIR) wasn't defined +!IF !DEFINED(PYTHON) && !DEFINED(PYTHON_DIR) +!IF EXIST(c:\Python27\python.exe) +PYTHON_VER=27 +!ELSE IF EXIST(c:\Python26\python.exe) +PYTHON_VER=26 +!ELSE IF EXIST(c:\Python25\python.exe) +PYTHON_VER=25 +!ELSE IF EXIST(c:\Python24\python.exe) +PYTHON_VER=24 +!ENDIF + +!IF DEFINED(PYTHON_VER) +PYTHON_DIR=C:\Python$(PYTHON_VER) +!ENDIF +!ENDIF + +!IF DEFINED(PYTHON_DIR) +PYTHON="$(PYTHON_DIR)\python.exe" +PATH=$(PYTHON_DIR);$(PATH) +!ENDIF + +##### To Use packet editor uncomment this line #### +### Warning Experimental - work in progress +#WANT_PACKET_EDITOR=^#define WANT_PACKET_EDITOR 1 + +##### To use UIManager insted of GtkItemFactory comment out this line NOTE not completly implemented yet some menus will be missing#### +#MAIN_MENU_USE_UIMANAGER=^#define MAIN_MENU_USE_UIMANAGER 1 + +!if "$(WIRESHARK_TARGET_PLATFORM)" == "win32" +##### Win32 Libraries ##### +# +# Mandatory: GLib settings +# +# Please note: Since Wireshark release 1.0.0, we no longer support GLib1.x +# +GLIB_VERSION=2.0 +#PPMODIF +GLIB_DIR=$(WIRESHARK_LIBS)\glib + +!IF "$(DEBUG)" == "1" +DISSECTOR_OBJ_PATH = $(DISSECTOR_SRC:source=Debug_1.6.5) +SMOKE_OBJ_PATH = $(SMOKE_SRC:smoke_test=Debug_Smoke_1.6.5) +!ELSE +DISSECTOR_OBJ_PATH = $(DISSECTOR_SRC:source=Release_1.6.5) +SMOKE_OBJ_PATH = $(SMOKE_SRC:smoke_test=Release_Smoke_1.6.5) +!ENDIF +#PPMODIF + +# +# Mandatory: GLib, GTK & related library settings +# +# Please note: Since Wireshark release 1.0.0, we no longer support GTK1.x +# +# If you want building with GTK+, set GTK_DIR to the pathname of the +# directory in which the "include" and "lib" directories reside. +# +GTK_DIR=$(WIRESHARK_LIBS)\gtk2 +# These macros are used by the nsis installer script and by the install target. +PNG_DLL=libpng14-14.dll +FREETYPE_DLL=freetype6.dll +FONTCONFIG_DLL=libfontconfig-1.dll +EXPAT_DLL=libexpat-1.dll +INTL_DLL=intl.dll +# This macro is used by the setup target. +#GTK_PKG=2.16.6-20100912 +GTK_PKG=2.22.1-20101227 + +# +# Mandatory: Version numbers of GTK and pango. +# +# (MAJOR + MINOR Version number but without MICRO version number) +# These macros are used by the nsis installer script and by the setup target. +# +#GTK_INST_VERSION=2.16 +GTK_INST_VERSION=2.22 + +# +# Optional: WinPcap developer's pack to capture network traffic. +# +# If you have the WinPcap developer's pack (at least version 3.0), +# set this to the directory in which the WinPcap developer's pack resides. +# +# If you don't have the WPdpack, comment this line out, so that +# PCAP_DIR isn't defined. +# +PCAP_DIR=$(WIRESHARK_LIBS)\WPdpack +# This macro is used by the nsis installer script, by the u3/portable apps and by the setup target. +PCAP_VERSION=4_1_2 + +# +# Optional: WinPcap remote capture support and new API +# (pcap_open(), pcap_findalldevs_ex(), etc.) +# +PCAP_REMOTE=1 + +# +# Optional: The ZLib enables unzipping of gzip compressed capture files +# "on the fly". +# +# If you have Zlib, set this to directory in which the Zlib headers +# and .lib file are stored. +# +# If you don't have Zlib, comment this line out, so that ZLIB_DIR isn't +# defined. +# EXperimental only use zlib 1.2.5 on win32 for now +ZLIB_DIR=$(WIRESHARK_LIBS)\zlib125 + +# +# Optional: the ADNS library enables asynchronous (nonblocking) DNS +# name resolvings. +# +# If you have GNU ADNS, set this to the directory in which the GNU ADNS +# .lib file is stored. +# +# If you don't have GNU ADNS, comment this line out, so that ADNS_DIR +# isn't defined. +# +# If C_ARES_DIR is defined below, it will override this setting. +# +#ADNS_DIR=$(WIRESHARK_LIBS)\adns-1.0-win32-05ws + +# +# Optional: the c-ares library enables asynchronous (nonblocking) DNS +# name resolvings. +# +# If you have c-ares, set this to the directory in which the c-ares +# .lib file is stored. Setting this will override ADNS_DIR above. You +# can't have both. +# +# If you're using Visual C++ 6.0, you'll have to use a platform SDK that +# defines socklen_t, such as Windows Server 2003 PSDK. +# +# If you don't have c-ares, comment this line out, so that C_ARES_DIR +# isn't defined. +# +C_ARES_PKG=1.7.1 + +# +# Optional: the PCRE (Perl Compatible Regular Expressions) library +# enables regular expressions for display filters. +# +# If you have the PCRE library, set this to the directory in which +# the GNUWIN32 pcre-lib package is stored. +# +# If you don't have PCRE, comment this line out, so that PCRE_DIR +# isn't defined. +# +#PCRE_DIR=$(WIRESHARK_LIBS)\pcre-7.0 + +# +# Optional: the GNUTLS library enables ssl decryption. +# +# If you have the GNUTLS library, set this to the package version. +# +# If you don't have GNUTLS, comment this line out, so that GNUTLS_PKG +# isn't defined. +# +# Platform SDK conflicts with openssl.h header +GNUTLS_PKG=2.10.3-1.11 + +# +# Optional: the KFW library enables kerberos/sasl/dcerpc decryption. +# +# If you have the kerberos for windows (mit) library, set this to the +# directory where the kfw package is stored. +# +# If you don't have KFW, comment this line out, so that KFW_DIR +# isn't defined. +# +KFW_DIR=$(WIRESHARK_LIBS)\kfw-3-2-2-i386-ws-vc6 + +# +# Optional: the Nettle library enables ??? decryption. +# +# If you have the Nettle encryption library, set this to the +# directory in which the nettle package is stored. +# +# If you don't have Nettle, comment this line out, so that NETTLE_DIR +# isn't defined. +# +# NETTLE_DIR=$(WIRESHARK_LIBS)\nettle-1.10 + +# +# Optional: the LUA library enables scripting support. +# +# If you have the LUA library, set this to the directory in which +# the LUA package is stored. +# +# If you don't have LUA, comment this line out, so that LUA_DIR +# isn't defined. +# +LUA_DIST=5_1_4_Win32_dll6 +LUA_DIR=$(WIRESHARK_LIBS)\lua5.1.4 + +# +# Optional: the PORTAUDIO library enables audio output for RTP streams. +# +# If you have the PORTAUDIO library (used for rtp_player), set this to +# the directory in which the PORTAUDIO library is stored. +# +# If you don't have PORTAUDIO, comment this line out, so that +# PORTAUDIO_DIR isn't defined. +# +#PORTAUDIO_DIR=$(WIRESHARK_LIBS)\portaudio_v18_1 +PORTAUDIO_DIR=$(WIRESHARK_LIBS)\portaudio_v19_2 + +# +# Version number of PortAudio +# +#PORTAUDIO_VERSION=18 +PORTAUDIO_VERSION=19 + +# +# Optional: AirPcap developer's pack to capture wireless network traffic +# incl. 802.11 management frames. +# +# If you have the AirPcap developer's pack, set this to the directory +# in which the AirPcap developer's pack resides. +# +# If you don't have the AirPcap developer's pack, comment this line out, +# so that AIRPCAP_DIR isn't defined. +# +AIRPCAP_DIR=$(WIRESHARK_LIBS)\AirPcap_Devpack_4_1_0_1622\AirPcap_Devpack + +# +# Optional: LIBSMI, System Management Interface +# +# Used for oid-name resolution for SNMP and other protocols +# +SMI_DIR=$(WIRESHARK_LIBS)\libsmi-0.4.8 + +# +# Optional: GeoIP, IP address database lookups +# +# Used to map IP addresses to MaxMind GeoIP database entries +# +# GeoIP requires IPv6 definitions that don't ship with Visual C++ 6.0. +# However, the Microsoft Platform SDK for Windows Server 2003 R2 provides +# these definitions. The SDK's SetEnv.bat script defines INETSDK. +!IF "$(MSVC_VARIANT)" != "MSVC6" || DEFINED(INETSDK) +GEOIP_DIR=$(WIRESHARK_LIBS)\GeoIP-1.4.6-win32ws\libGeoIP +!ENDIF + +!else +##### Win64 Libraries ##### +# +# Mandatory: GLib settings +# +# Please note: Since Wireshark release 1.0.0, we no longer support GLib1.x +# +GLIB_VERSION=2.0 + +# +# Mandatory: GLib, GTK & related library settings +# +# Please note: Since Wireshark release 1.0.0, we no longer support GTK1.x +# +# If you want building with GTK+, set GTK_DIR to the pathname of the +# directory in which the "include" and "lib" directories reside. +# +GTK_DIR=$(WIRESHARK_LIBS)\gtk2 +# These macros are used by the nsis installer script and by the install target. +PNG_DLL=libpng14-14.dll +#TIFF_DLL=libtiff-3.dll +#JPEG_DLL=libjpeg-7.dll +FREETYPE_DLL=libfreetype-6.dll +FONTCONFIG_DLL=libfontconfig-1.dll +EXPAT_DLL=libexpat-1.dll +INTL_DLL=libintl-8.dll + +# These macros are used by the setup target. +#GTK_PKG=2.16.6-20100912 +GTK_PKG=2.22.1-20101229 + +# +# Mandatory: Version numbers of GTK and pango. +# +# (MAJOR + MINOR Version number but without MICRO version number) +# These macros are used by the nsis installer script and by the setup target. +# +#GTK_INST_VERSION=2.16 +GTK_INST_VERSION=2.22 + +# +# Optional: WinPcap developer's pack to capture network traffic. +# +# If you have the WinPcap developer's pack (at least version 3.0), +# set this to the directory in which the WinPcap developer's pack resides. +# +# If you don't have the WPdpack, comment this line out, so that +# PCAP_DIR isn't defined. +# +PCAP_DIR=$(WIRESHARK_LIBS)\WPdpack +# This macro is used by the nsis installer script, by the u3/portable apps and by the setup target. +PCAP_VERSION=4_1_2 + +# +# Optional: WinPcap remote capture support and new API +# (pcap_open(), pcap_findalldevs_ex(), etc.) +# +PCAP_REMOTE=1 + +# +# Optional: The ZLib enables unzipping of gzip compressed capture files +# "on the fly". +# +# If you have Zlib, set this to directory in which the Zlib headers +# and .lib file are stored. +# +# If you don't have Zlib, comment this line out, so that ZLIB_DIR isn't +# defined. +# +ZLIB_DIR=$(WIRESHARK_LIBS)\zlib125 + +# +# Optional: the ADNS library enables asynchronous (nonblocking) DNS +# name resolvings. +# +# If you have GNU ADNS, set this to the directory in which the GNU ADNS +# .lib file is stored. +# +# If you don't have GNU ADNS, comment this line out, so that ADNS_DIR +# isn't defined. +# +# If C_ARES_DIR is defined below, it will override this setting. +# +#ADNS_DIR=$(WIRESHARK_LIBS)\adns-1.0-win32-05ws + +# +# Optional: the c-ares library enables asynchronous (nonblocking) DNS +# name resolvings. +# +# If you have c-ares, set this to the directory in which the c-ares +# .lib file is stored. Setting this will override ADNS_DIR above. You +# can't have both. +# +# If you're using Visual C++ 6.0, you'll have to use a platform SDK that +# defines socklen_t, such as Windows Server 2003 PSDK. +# +# If you don't have c-ares, comment this line out, so that C_ARES_DIR +# isn't defined. +# +C_ARES_PKG=1.7.1 + +# +# Optional: the PCRE (Perl Compatible Regular Expressions) library +# enables regular expressions for display filters. +# +# If you have the PCRE library, set this to the directory in which +# the GNUWIN32 pcre-lib package is stored. +# +# If you don't have PCRE, comment this line out, so that PCRE_DIR +# isn't defined. +# +#PCRE_DIR=$(WIRESHARK_LIBS)\pcre-7.0 + +# +# Optional: the GNUTLS library enables ssl decryption. +# +# If you have the GNUTLS library, set this to the package version. +# +# If you don't have GNUTLS, comment this line out, so that GNUTLS_PKG +# isn't defined. +# +# Platform SDK conflicts with openssl.h header +GNUTLS_PKG=2.10.3-1.7 + +# +# Optional: the KFW library enables kerberos/sasl/dcerpc decryption. +# +# If you have the kerberos for windows (mit) library, set this to the +# directory where the kfw package is stored. +# +# If you don't have KFW, comment this line out, so that KFW_DIR +# isn't defined. +# +#KFW_DIR=$(WIRESHARK_LIBS)\kfw-3.2.2-ws1 + +# +# Optional: the Nettle library enables ??? decryption. +# +# If you have the Nettle encryption library, set this to the +# directory in which the nettle package is stored. +# +# If you don't have Nettle, comment this line out, so that NETTLE_DIR +# isn't defined. +# +# NETTLE_DIR=$(WIRESHARK_LIBS)\nettle-1.10 + +# +# Optional: the LUA library enables scripting support. +# +# If you have the LUA library, set this to the directory in which +# the LUA package is stored. +# +# If you don't have LUA, comment this line out, so that LUA_DIR +# isn't defined. +# +LUA_DIST=5_1_4_Win64_dll9 +LUA_DIR=$(WIRESHARK_LIBS)\lua5.1.4 + +# +# Optional: the PORTAUDIO library enables audio output for RTP streams. +# +# If you have the PORTAUDIO library (used for rtp_player), set this to +# the directory in which the PORTAUDIO library is stored. +# +# If you don't have PORTAUDIO, comment this line out, so that +# PORTAUDIO_DIR isn't defined. +# +#PORTAUDIO_DIR=$(WIRESHARK_LIBS)\portaudio_v18_1 +PORTAUDIO_DIR=$(WIRESHARK_LIBS)\portaudio_v19_2 + +# +# Version number of PortAudio +# +#PORTAUDIO_VERSION=18 +PORTAUDIO_VERSION=19 + +# +# Optional: AirPcap developer's pack to capture wireless network traffic +# incl. 802.11 management frames. +# +# If you have the AirPcap developer's pack, set this to the directory +# in which the AirPcap developer's pack resides. +# +# If you don't have the AirPcap developer's pack, comment this line out, +# so that AIRPCAP_DIR isn't defined. +# +AIRPCAP_DIR=$(WIRESHARK_LIBS)\AirPcap_Devpack_4_1_0_1622\AirPcap_Devpack + +# +# Optional: LIBSMI, System Management Interface +# +# Used for oid-name resolution for SNMP and other protocols +# +#SMI_DIR=$(WIRESHARK_LIBS)\libsmi-0.4.8 + +# +# Optional: GeoIP, IP address database lookups +# +# Used to map IP addresses to MaxMind GeoIP database entries +# +GEOIP_DIR=$(WIRESHARK_LIBS)\GeoIP-1.4.6-win64ws\libGeoIP + +!endif + +##### Tools ##### + +# Set the following mandatory commands to find the tools. +# The easiest way is to use the corresponding packages from cygwin. + +# Set up the path to the cygwin binaries +CYGWIN_PATH=c:\cygwin\bin + +# command for a shell (cygwin's bash package recommended) +SH_PROG=bash + +# bash versions after 3.1.6 need the 'igncr' shell option to be able to +# process scripts in windows 'native format' (dos crlf format). +# The following !IF results in the option being used only if it is available +# since using it on bash version 3.1.6 (or earlier) is not required and +# will cause an error message. +!if "$(SH_PROG)"=="bash" && [$(CYGWIN_PATH)\bash -c "set -o igncr" 2>nul: ] == 0 +SH_FLAGS=-o igncr +!endif + +SH=$(SH_PROG) $(SH_FLAGS) + + +# command for perl (cygwin's perl package recommended) +PERL=perl + +# command for pod2man and pod2html +# (part of the perl package, usually leave these unchanged) +POD2MAN=$(SH) pod2man +POD2HTML=$(SH) pod2html + +# command for lex/flexx (cygwin's flex recommended) +LEX=flex + +# command for yacc/bison (cygwin's bison recommended) +YACC=bison + +# Commands to convert UNIX line endings to DOS/Windows +UNIX2DOS=u2d +TEXTIFY=$(SH) $(TOOLS_DIR)/textify.sh + +# +# Optional: To build the NSIS installer. +# +# If you have the NSIS package, set this to the NSIS executable. +# +# If you don't have NSIS, comment this line out, so that MAKENSIS +# isn't defined. +# +MAKENSIS="$(PROGRAM_FILES)\NSIS\makensis.exe" + +# +# Optional: To build the NSIS PortableApps installer. +# +# If you have the NSIS Unicode package, set this to the NSIS Unicode executable. +# +# If you don't have NSIS Unicode, comment this line out, so that +# MAKENSIS_UNICODE isn't defined. +# +MAKENSIS_UNICODE="$(PROGRAM_FILES)\NSIS\Unicode\makensis.exe" + +# +# Optional: To build the developers API documentation with doxygen and dot. +# Currently experimental, outdated and incomplete. +# +# You will have to download and install: +# Doxygen from: http://www.doxygen.org +# Graphviz from: http://www.research.att.com/sw/tools/graphviz/ +# +# If you have doxygen, set this to the doxygen executable. +# +# If you don't want the developers documentation (or don't have the tools), +# comment this line out, so that DOXYGEN isn't defined. +# +#DOXYGEN="$(PROGRAM_FILES)/doxygen/bin/doxygen.exe" + +# +# Recommended: Use the compressed html help format .chm as the Wireshark integrated help. +# +# The required htmlhelp.h and htmlhelp.lib should be included in MSVC_VARIANT > MSVC6. +# +# For MSVC_VARIANT == MSVC6 you will have to download and install the html help workshop from: +# +# http://msdn.microsoft.com/library/default.asp?url=/library/en-us/htmlhelp/html +# /hwMicrosoftHTMLHelpDownloads.asp +# +# Then point HHC_DIR to the html help dir (where hhc.exe resides). +# +# If you don't want the online help (or don't have the tools), +# comment this line out, so that HHC_DIR isn't defined. +# +HHC_DIR=$(PROGRAM_FILES)/HTML Help Workshop + +# +# Optional: To reduce the size of dlls and exes, which is especially useful for USB device distributions (U3, PortableApps) +# +# If you have the UPX package, set this to the upx.exe executable. +# +# UPX can be downloaded from: +# http://upx.sourceforge.net/ +# +# If you don't have UPX, or don't want to pack exes and dlls, +# comment this line out, so that UPX isn't defined. +# + +UPX=$(WIRESHARK_LIBS)\upx303w\upx.exe + +##### Flags, PATHs and Miscellaneous ##### + +# Santity check: Python embedding requires a valid PYTHON_DIR +!IF DEFINED(PYTHON_EMBED) && !DEFINED(PYTHON_DIR) +!ERROR PYTHON_EMBED requires that PYTHON_DIR is defined +!ENDIF + +# "convert" the MSVC variant into the required MSC compiler version +!IF "$(MSVC_VARIANT)" == "MSVC6" +MSC_VER_REQUIRED=1200 +!ELSEIF "$(MSVC_VARIANT)" == "MSVC2002" || "$(MSVC_VARIANT)" == "DOTNET10" +MSC_VER_REQUIRED=1300 +!ELSEIF "$(MSVC_VARIANT)" == "MSVC2003" || "$(MSVC_VARIANT)" == "DOTNET11" +MSC_VER_REQUIRED=1310 +!ELSEIF "$(MSVC_VARIANT)" == "MSVC2005" || "$(MSVC_VARIANT)" == "MSVC2005EE" || "$(MSVC_VARIANT)" == "DOTNET20" +MSC_VER_REQUIRED=1400 +!ELSEIF "$(MSVC_VARIANT)" == "MSVC2008" || "$(MSVC_VARIANT)" == "MSVC2008EE" +MSC_VER_REQUIRED=1500 +!ELSEIF "$(MSVC_VARIANT)" == "MSVC2010" || "$(MSVC_VARIANT)" == "MSVC2010EE" +MSC_VER_REQUIRED=1600 +!ELSE +!ERROR MSVC_VARIANT unknown +!ENDIF + +## Manifest processing is not needed for VC10 (Visual Studio 2010 C) +## See: http://msdn.microsoft.com/en-us/library/dd293574.aspx +!IF ($(MSC_VER_REQUIRED) >= 1400) && ($(MSC_VER_REQUIRED) < 1600) +MANIFEST_INFO_REQUIRED=1 +!ENDIF + +# Compiler flags: +# /W3 Warning level 3 (0 less - 4 most, 1 default) +# /Zi Create .pdb file for debugging +# /MD Use "multithread- and DLL-specific version" of run-time libraries +# msvc documentation states that /MD causes _MT and _DLL to be defined +# See: http://msdn.microsoft.com/en-us/library/2kzt1wy3%28v=VS.90%29.aspx +# /D_CRT_SECURE_NO_DEPRECATE Don't warn for "insecure" calls, +# see MSDN "Security Enhancements in the CRT" +# /D_CRT_NONSTDC_NO_DEPRECATE Don't warn for "Deprecated CRT Functions" as MSDN calls this +# /D_BIND_TO_CURRENT_CRT_VERSION=1 Make sure our CRT and manifest versions match +# (http://msdn.microsoft.com/en-us/library/cc664727.aspx) +# /DWIN32_LEAN_AND_MEAN Don't include unnecessary Windows include files (see windows.h) +# /MANIFEST:no Don't create a SxS manifest. Makes sure our plugins don't load +# a second copy of the CRT. +# +##Note: LOCAL_CFLAGS are flags used for *all* compilations +## STANDARD_CFLAGS (see below) are flags used just for *Wireshark* compilations +!IF "$(MSVC_VARIANT)" == "MSVC6" || \ + "$(MSVC_VARIANT)" == "MSVC2002" || \ + "$(MSVC_VARIANT)" == "DOTNET10" || \ + "$(MSVC_VARIANT)" == "MSVC2003" || \ + "$(MSVC_VARIANT)" == "DOTNET11" +LOCAL_CFLAGS=/Zi /W3 /MD /DWIN32_LEAN_AND_MEAN /DMSC_VER_REQUIRED=$(MSC_VER_REQUIRED) + +!ELSEIF "$(MSVC_VARIANT)" == "MSVC2005" || \ + "$(MSVC_VARIANT)" == "MSVC2005EE" || \ + "$(MSVC_VARIANT)" == "DOTNET20" || \ + "$(MSVC_VARIANT)" == "MSVC2008" || \ + "$(MSVC_VARIANT)" == "MSVC2008EE" || \ + "$(MSVC_VARIANT)" == "MSVC2010" || \ + "$(MSVC_VARIANT)" == "MSVC2010EE" +LOCAL_CFLAGS=/Zi /W3 /MD /DWIN32_LEAN_AND_MEAN /DMSC_VER_REQUIRED=$(MSC_VER_REQUIRED) \ + /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE + +!IF "$(WIRESHARK_TARGET_PLATFORM)" != "win64" +LOCAL_CFLAGS=$(LOCAL_CFLAGS) /D_BIND_TO_CURRENT_CRT_VERSION=1 +!ENDIF + +# Additional compiler warnings to be treated as "Level 3" +# when compiling Wireshark sources. (Selected from "level 4" warnings). +## 4295: array is too small to include a terminating null character +WARNINGS_CFLAGS=/w34295 + +!ELSE +!ERROR MSVC_VARIANT unknown +!ENDIF + +# http://msdn.microsoft.com/en-us/library/bb385193.aspx +# /MP Compiles multiple source files by using multiple processes +# /MP[processMax] If you omit the processMax argument, the compiler retrieves the number of effective processors +# on your computer from the operating system, and creates a process for each processor. +# +# The following compiler options and language features that are incompatible with the /MP option: +# +# * #import preprocessor directive +# * /E, /EP +# * /Gm +# * /showIncludes +# * /Yc +# +!IF "$(MSVC_VARIANT)" == "MSVC2008" || \ + "$(MSVC_VARIANT)" == "MSVC2008EE" || \ + "$(MSVC_VARIANT)" == "MSVC2010" || \ + "$(MSVC_VARIANT)" == "MSVC2010EE" +LOCAL_CFLAGS= $(LOCAL_CFLAGS) /MP +!ENDIF + +# Optional: Static analysis. Only supported in the full-frontal MSVC editions. +# http://msdn.microsoft.com/en-us/library/ms182025.aspx + +!IFDEF ENABLE_CODE_ANALYSIS +LOCAL_CFLAGS= $(LOCAL_CFLAGS) /analyze:WX- +!ENDIF + +# STANDARD_CFLAGS are flags used for *Wireshark* compiles (not stuff like lemon, etc) +STANDARD_CFLAGS=-DHAVE_CONFIG_H -D_U_="" $(LOCAL_CFLAGS) $(WARNINGS_CFLAGS) + +# Uncomment the following to treat compiler warnings as errors +#WARNINGS_ARE_ERRORS=-WX + +## XXX: _MT and _DLL are defined when /MD is used so CVARSDLL is apparently unneeded +##CVARSDLL=-D_MT -D_DLL + +# Linker flags: +# /DEBUG generate debug info +# /PROFILE generate map file(s) for profiling +# /DEFAULTLIB:xxx use xxx as the standard C library +# /NODEFAULTLIB:xxx don't use xxx as the standard C library +# +LOCAL_LDFLAGS=/DEBUG /MACHINE:$(TARGET_MACHINE) +DLL_LDFLAGS = +!IFDEF MANIFEST_INFO_REQUIRED +DLL_LDFLAGS = /MANIFEST:no +!ENDIF + +# Enable Safe Exception Handler. +# http://msdn.microsoft.com/en-us/magazine/cc337897.aspx +!IF $(MSC_VER_REQUIRED) >= 1300 +LOCAL_CFLAGS= $(LOCAL_CFLAGS) /GS +!IF "$(WIRESHARK_TARGET_PLATFORM)" != "win64" +LOCAL_LDFLAGS= $(LOCAL_LDFLAGS) /SafeSEH +!ENDIF +!ENDIF + +# Enable ASLR. Requires VS2008 or later. +# http://blogs.msdn.com/b/vcblog/archive/2009/05/21/dynamicbase-and-nxcompat.aspx +# DEP (/NXCompat) is handled in init_process_policies() via SetProcessDEPPolicy. + +# ASLR http://msdn.microsoft.com/en-us/library/bb384887.aspx +!IF $(MSC_VER_REQUIRED) >= 1500 +LOCAL_LDFLAGS= $(LOCAL_LDFLAGS) /DYNAMICBASE /FIXED:no +!ENDIF + +PLUGIN_LDFLAGS = /NOLOGO /INCREMENTAL:no $(LOCAL_LDFLAGS) $(DLL_LDFLAGS) + +# +# According to http://bugs.wireshark.org/bugzilla/show_bug.cgi?id=403 +# XCOPY under Windows NT doesn't support the "/Y" flag. This works +# around that bug. +# XXX - This apparently doesn't work for some versions of nmake: +# http://support.microsoft.com/default.aspx?scid=kb;en-us;86814 +# It looks like we'll have to call "set copycmd=/y" before we run xcopy. +COPYCMD=/y + +# +# If you don't want to build libwireshark.dll, you should comment out the +# following line. (Note: for plugin support this option must stay activated) +ENABLE_LIBWIRESHARK=USE + +# +# install (debug) directory for Wireshark (relative to your source dir) +INSTALL_DIR=wireshark-gtk2 + + + +##### C-Runtime Redistributable ##### +# +# The C-Runtime since Version 7 must be shipped together with +# the program installer, to avoid missing msvcr*.dll files on +# the target machine. +# +# The location of these files differ on the various compiler +# packages, the following will use the default paths depending +# on the package version. +# +!IF "$(MSVC_VARIANT)" == "MSVC6" +# msvcrt.dll will already be available on target machines - nothing additional to install + +!ELSEIF "$(WIRESHARK_TARGET_PLATFORM)" == "win64" +# We're not creating portable packages and therefore don't have to worry about +# "deploying using xcopy" +VCREDIST_EXE=$(WIRESHARK_LIBS)\vcredist_$(TARGET_MACHINE).exe + +!ELSEIF "$(MSVC_VARIANT)" == "MSVC2002" +# you probably need to tweak this directory if you don't use the professional edition! +MSVCR_DLL=$(PROGRAM_FILES)\Microsoft Visual Studio .NET\Visual Studio .NET Professional - English\msvcr70.dll + +!ELSEIF "$(MSVC_VARIANT)" == "DOTNET10" +# no redistributable available for this package! + +!ELSEIF "$(MSVC_VARIANT)" == "MSVC2003" +# you probably need to tweak this directory if you don't use the professional edition! +MSVCR_DLL=$(PROGRAM_FILES)\Microsoft Visual Studio .NET 2003\Visual Studio .NET Professional 2003 - English\msvcr71.dll + +!ELSEIF "$(MSVC_VARIANT)" == "DOTNET11" +# no redistributable available for this package! + +!ELSEIF "$(MSVC_VARIANT)" == "MSVC2005" +MSVCR_DLL=$(PROGRAM_FILES)\Microsoft Visual Studio 8\VC\redist\$(PROCESSOR_ARCHITECTURE)\Microsoft.VC80.CRT\*.* + +!ELSEIF "$(MSVC_VARIANT)" == "MSVC2005EE" || "$(MSVC_VARIANT)" == "DOTNET20" || "$(MSVC_VARIANT)" == "MSVC2008EE" +# you need to download the redistributable package vcredist_x86.exe from Microsoft first, +# and copy it to the lib folder!!! +VCREDIST_EXE=$(WIRESHARK_LIBS)\vcredist_$(TARGET_MACHINE).exe + +!ELSEIF "$(MSVC_VARIANT)" == "MSVC2008" +MSVCR_DLL=$(PROGRAM_FILES)\Microsoft Visual Studio 9.0\VC\redist\$(PROCESSOR_ARCHITECTURE)\Microsoft.VC90.CRT\*.* + +!ELSEIF "$(MSVC_VARIANT)" == "MSVC2010EE" +# you need to download the redistributable package vcredist_x86.exe from Microsoft first, +# and copy it to the lib folder!!! +VCREDIST_EXE=$(WIRESHARK_LIBS)\vcredist_$(TARGET_MACHINE).exe +!ELSEIF "$(MSVC_VARIANT)" == "MSVC2010" +MSVCR_DLL=$(PROGRAM_FILES)\Microsoft Visual Studio 10.0\VC\redist\$(TARGET_MACHINE)\Microsoft.VC100.CRT\*.* + +!ELSE +!ERROR MSVC_VARIANT unknown +!ENDIF + +#PPMODIF +#!IF DEFINED(VCREDIST_EXE) && ! EXIST("$(VCREDIST_EXE)") +#!ERROR Can't find $(VCREDIST_EXE). Have you downloaded it from Microsoft? \ +#See the developer's guide section "C-Runtime "Redistributable" files" for details how to get it +#!ENDIF + +##### Advanced: Docbook/XML documentation generation ##### +# If you want to generate the Docbook/XML based docs (User's and Developer's +# Guide, ...), you'll need some additional tools / libraries compared to the +# rest of the build process. +# +# FOR DETAILED INSTRUCTIONS TO GENERATE THE DOCS, SEE: docbook\README.txt. +# +# If you don't call the Makefile.nmake in the docbook dir to generate the +# docs, the following settings in this section will have no effect. + +# formatting objects processor executable +# Comment this out if you don't have fop installed or you don't want the docs +# in PDF format. +# +# You may want to install the FOP hyphenation patterns from +# http://offo.sourceforge.net/hyphenation/ +!IFNDEF FOP +FOP=fop-0.95\fop.bat +!ENDIF + +# Additional options to fop. +FOP_OPTS=-Xmx256m + +# html help compiler +# Comment this out if you don't have hhc.exe or you don't want the docs in +# .chm format. +# +# Beware: hhc.exe is NOT part of the MSVC packages in HHC_DIR mentioned above, +# so you'll need to install the HTML Help Workshop for this. +HHC_EXE="$(HHC_DIR)\hhc.exe" + +# html to text converter for text version of release notes, e.g. elinks. +# This could also be "lynx", or "true" if neither elinks nor lynx is installed +# (cygwin: lynx works, elinks not available, links and true doesn't produce output) +#HTML2TXT=elinks -dump -dump-width 72 +##HTML2TXT=links -dump -width 72 ## XXX: Fails: For links -dump requires 'url' (filename) arg. +#HTML2TXT=lynx -dump -width=72 -nolist -stdin + +!IFNDEF HTML2TXT +HTML2TXT=$(PYTHON) $(TOOLS_DIR)\html2text.py --width=72 --no-links +!ENDIF + +# the XSL processor (part of cygwin's libxslt package) +XSLTPROC="xsltproc" + +# the XML validator (part of cygwin's libxml2 package) +XMLLINT="xmllint" + + + +############################################################################## +# +# You should not have to change anything below this comment. +# If you do, it's a deficiency in the Makefile.nmake files; +# either tell wireshark-dev@wireshark.org about it, including +# details of why you had to change it, or fix config.nmake +# and any Makefile.nmake files that need to be changed, and +# send us the patches, along with details of why the change +# was necessary. +# +############################################################################## + +# +# The RC_VERSION should be comma-separated, not dot-separated, +# as per Graham Bloice's message in +# +# http://www.ethereal.com/lists/ethereal-dev/200303/msg00283.html +# +# "The RC_VERSION variable in config.nmake should be comma separated. +# This allows the resources to be built correctly and the version +# number to be correctly displayed in the explorer properties dialog +# for the executables, and XP's tooltip, rather than 0.0.0.0." +# + +VERSION=$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_MICRO)$(VERSION_EXTRA) +RC_VERSION=$(VERSION_MAJOR),$(VERSION_MINOR),$(VERSION_MICRO),$(VERSION_BUILD) +PRODUCT_VERSION=$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_MICRO).$(VERSION_BUILD) + +WTAP_VERSION=$(WTAP_VERSION_MAJOR).$(WTAP_VERSION_MINOR).$(WTAP_VERSION_MICRO) +RC_WTAP_VERSION=$(WTAP_VERSION_MAJOR),$(WTAP_VERSION_MINOR),$(WTAP_VERSION_MICRO) + +# GLib +#PPMODIF +GLIB_CFLAGS=/I$(GLIB_DIR)\include\glib-$(GLIB_VERSION) \ + /I$(GLIB_DIR)\lib\glib-$(GLIB_VERSION)\include +GLIB_LIBS=$(GLIB_DIR)\lib\glib-$(GLIB_VERSION).lib \ + $(GLIB_DIR)\lib\gmodule-$(GLIB_VERSION).lib \ + $(GLIB_DIR)\lib\gobject-$(GLIB_VERSION).lib +GTHREAD_LIBS=$(GLIB_DIR)\lib\gthread-$(GLIB_VERSION).lib + +# GTK+ +GTK_CFLAGS=$(GLIB_CFLAGS) /I$(GTK_DIR)\include\gtk-2.0 \ + /I$(GTK_DIR)\include\gdk-pixbuf-2.0 \ + /I$(GTK_DIR)\lib\gtk-2.0\include \ + /I$(GTK_DIR)\include\atk-1.0 \ + /I$(GTK_DIR)\include\cairo \ + /I$(GTK_DIR)\include\pango-1.0 +GTK_LIBS=$(GTK_DIR)\lib\gtk-win32-2.0.lib \ + $(GTK_DIR)\lib\gdk-win32-2.0.lib \ + $(GTK_DIR)\lib\gdk_pixbuf-2.0.lib \ + $(GTK_DIR)\lib\pango-1.0.lib \ + $(GLIB_LIBS) + +# 2.18 was no good(Theming problem) +!IF "$(GTK_INST_VERSION)" == "2.22" || "$(GTK_INST_VERSION)" == "2.16" || "$(GTK_INST_VERSION)" == "2.14" +GTK_LIB_DIR=2.10.0 + +!IFDEF PNG_DLL +NEED_LIBPNG_DLL=USE +!ENDIF +!IFDEF JPEG_DLL +NEED_LIBJPEG_DLL=USE +!ENDIF +!IFDEF TIFF_DLL +NEED_LIBTIFF_DLL=USE +!ENDIF +NEED_CAIRO_DLL=USE +# Pango >=1.24.5 Needs these: +NEED_FREETYPE_DLL=USE +NEED_FONTCONFIG_DLL=USE +NEED_EXPAT_DLL=USE + +GTK_WIMP_DLLSRC_DIR=$(GTK_DIR)\lib\gtk-2.0\2.10.0\engines +GTK_WIMP_DLLDST_DIR=lib\gtk-2.0\2.10.0\engines +GTK_WIMP_RCSRC_DIR=$(GTK_DIR)\share\themes\MS-Windows\gtk-2.0 +GTK_WIMP_RCDST_DIR=etc\gtk-2.0 +!ELSE +!ERROR ? Unknown or invalid GTK_INST_VERSION +!ENDIF + + +!IFDEF AIRPCAP_DIR +AIRPCAP_CONFIG=^#define HAVE_AIRPCAP 1 +AIRPDCAP_CONFIG=^#define HAVE_AIRPDCAP 1 +#AIRPCAP_CFLAGS=/I$(AIRPCAP_DIR)\include +!ELSE +AIRPCAP_CONFIG= +AIRPDCAP_CONFIG= +!ENDIF + +!IFDEF PCAP_DIR +# Nmake uses carets to escape special characters +WINPCAP_CONFIG=^#define HAVE_LIBPCAP 1 +# +# This requires that, if you're *building* Wireshark, you have +# the most recent WinPcap's development package. If, at *run* +# time, an older version of WinPcap, missing some routines, +# is found, we work around that. +# +PCAP_FINDALLDEVS_CONFIG=^#define HAVE_PCAP_FINDALLDEVS 1 +PCAP_DATALINK_NAME_TO_VAL_CONFIG=^#define HAVE_PCAP_DATALINK_NAME_TO_VAL 1 +PCAP_DATALINK_VAL_TO_NAME_CONFIG=^#define HAVE_PCAP_DATALINK_VAL_TO_NAME 1 +PCAP_DATALINK_VAL_TO_DESCRIPTION_CONFIG=^#define HAVE_PCAP_DATALINK_VAL_TO_DESCRIPTION 1 +# PCAP_BREAKLOOP won't have any benefit on Win32, but breaks compatibility with 3.0 +PCAP_BREAKLOOP_CONFIG= +PCAP_LIST_DATALINKS_CONFIG=^#define HAVE_PCAP_LIST_DATALINKS 1 +PCAP_FREE_DATALINKS_CONFIG=^#define HAVE_PCAP_FREE_DATALINKS 1 +PCAP_SET_DATALINK_CONFIG=^#define HAVE_PCAP_SET_DATALINK 1 +PCAP_OPEN_DEAD_CONFIG=^#define HAVE_PCAP_OPEN_DEAD 1 +BPF_IMAGE_CONFIG=^#define HAVE_BPF_IMAGE 1 +!ELSE +# no WpdPack installed +WINPCAP_CONFIG= +PCAP_FINDALLDEVS_CONFIG= +PCAP_DATALINK_NAME_TO_VAL_CONFIG= +PCAP_DATALINK_VAL_TO_NAME_CONFIG= +PCAP_DATALINK_VAL_TO_DESCRIPTION_CONFIG= +PCAP_BREAKLOOP_CONFIG= +PCAP_LIST_DATALINKS_CONFIG= +PCAP_FREE_DATALINKS_CONFIG= +PCAP_SET_DATALINK_CONFIG= +PCAP_OPEN_DEAD_CONFIG= +BPF_IMAGE_CONFIG= +!ENDIF + +!IF DEFINED(PCAP_DIR) && DEFINED(PCAP_REMOTE) +PCAP_HAVE_REMOTE_CONFIG=^#define HAVE_REMOTE 1 +PCAP_REMOTE_CONFIG=^#define HAVE_PCAP_REMOTE 1 +PCAP_OPEN_CONFIG=^#define HAVE_PCAP_OPEN 1 +PCAP_SETSAMPLING_CONFIG=^#define HAVE_PCAP_SETSAMPLING 1 +!ELSE +PCAP_HAVE_REMOTE_CONFIG= +PCAP_REMOTE_CONFIG= +PCAP_OPEN_CONFIG= +PCAP_SETSAMPLING_CONFIG= +!ENDIF + +!IFDEF ZLIB_DIR +ZLIB_PATH=$(ZLIB_DIR) +ZLIB_CFLAGS=/I$(ZLIB_DIR)\include +ZLIB_LIBS=$(ZLIB_DIR)\lib\zdll.lib +ZLIB_DLL=$(ZLIB_DIR)\zlib1.dll +# Nmake uses carets to escape special characters +ZLIB_CONFIG=^#define HAVE_LIBZ 1 +!else +ZLIB_CFLAGS= +ZLIB_LIBS= +ZLIB_DLL= +ZLIB_CONFIG= +!ENDIF + +!IFDEF C_ARES_PKG +!UNDEF ADNS_DIR +C_ARES_DIR=$(WIRESHARK_LIBS)\c-ares-$(C_ARES_PKG)-$(WIRESHARK_TARGET_PLATFORM)ws +C_ARES_CFLAGS=/I$(C_ARES_DIR)/include +C_ARES_LIBS=$(C_ARES_DIR)\lib\libcares-2.lib +C_ARES_DLL=$(C_ARES_DIR)\bin\libcares-2.dll +# Nmake uses carets to escape special characters +C_ARES_CONFIG=^#define HAVE_C_ARES 1 +!else +C_ARES_CFLAGS= +C_ARES_LIBS= +C_ARES_CONFIG= +!IFDEF ADNS_DIR +ADNS_PATH=$(ADNS_DIR)\adns_win32\lib +ADNS_CFLAGS=/I$(ADNS_DIR)\src /I$(ADNS_DIR)\adns_win32 +ADNS_LIBS=$(WIRESHARK_LIBS)\$(MSVC_VARIANT)\adns\adns_dll.lib +ADNS_DLL=$(WIRESHARK_LIBS)\$(MSVC_VARIANT)\adns\adns_dll.dll +# Nmake uses carets to escape special characters +ADNS_CONFIG=^#define HAVE_GNU_ADNS 1 +!else +ADNS_CFLAGS= +ADNS_LIBS= +ADNS_CONFIG= +!ENDIF # ADNS +!ENDIF # C_ARES + +!IFDEF KFW_DIR +KFW_PATH=$(KFW_DIR)\bin +KFW_CFLAGS=/I$(KFW_DIR)\include +KFW_LIBS=$(KFW_DIR)\lib\krb5_32.lib +# Nmake uses carets to escape special characters +KFW_CONFIG=^#define HAVE_MIT_KERBEROS 1 +!else +KFW_CFLAGS= +KFW_LIBS= +KFW_CONFIG= +!ENDIF + +!IFDEF PCRE_DIR +PCRE_PATH=$(PCRE_DIR)\bin +PCRE_CFLAGS=/I$(PCRE_DIR)\include +PCRE_LIBS=$(PCRE_DIR)\lib\pcre.lib +# Nmake uses carets to escape special characters +PCRE_CONFIG=^#define HAVE_LIBPCRE 1 +!else +PCRE_CFLAGS= +PCRE_LIBS= +PCRE_CONFIG= +!ENDIF + +!IFDEF NETTLE_DIR +NETTLE_CFLAGS=/I$(NETTLE_DIR) +NETTLE_LIBS=$(NETTLE_DIR)\libnettle.lib +# Nmake uses carets to escape special characters +NETTLE_CONFIG=^#define HAVE_LIBNETTLE 1 +!else +NETTLE_CFLAGS= +NETTLE_LIBS= +NETTLE_CONFIG= +!ENDIF + +!IFDEF GNUTLS_PKG +GNUTLS_DIR=$(WIRESHARK_LIBS)\gnutls-$(GNUTLS_PKG)-$(WIRESHARK_TARGET_PLATFORM)ws +GNUTLS_PATH=$(GNUTLS_DIR) +# /DNOCRYPT avoids inclusion of Wincrypt.h, avoiding a X509_NAME define clash +GNUTLS_CFLAGS=/I$(GNUTLS_DIR)\include /DNOCRYPT /DIMPORT_LIGNUTLSDLL +GCRYPT_LIBS = $(GNUTLS_DIR)\bin\libgcrypt-11.lib +GNUTLS_LIBS=\ + $(GNUTLS_DIR)\bin\libtasn1-3.lib \ + $(GNUTLS_DIR)\bin\libgpg-error-0.lib \ + $(GCRYPT_LIBS) \ + $(GNUTLS_DIR)\bin\libgnutls-26.lib +# Nmake uses carets to escape special characters +GNUTLS_CONFIG=^#define HAVE_LIBGNUTLS 1 +LIBGCRYPT_CONFIG=^#define HAVE_LIBGCRYPT 1 +!else +GNUTLS_CFLAGS= +GNUTLS_LIBS= +GNUTLS_CONFIG= +LIBGCRYPT_CONFIG= +!ENDIF + +!IFDEF LUA_DIR +LUA_CFLAGS=/I$(LUA_DIR)\include +LUA_LIBS=$(LUA_DIR)\lua5.1.lib +# Nmake uses carets to escape special characters +LUA_CONFIG=^#define HAVE_LUA 1 +LUA_VERSION=^#define HAVE_LUA_5_1 1 +!else +LUA_CFLAGS= +LUA_LIBS= +LUA_CONFIG= +!ENDIF + +!IF DEFINED(PYTHON_EMBED) +PYTHON_CFLAGS=/I$(PYTHON_DIR)\include +PYTHON_LIBS=$(PYTHON_DIR)\libs\python$(PYTHON_VER).lib +# Nmake uses carets to escape special characters +PYTHON_CONFIG=^#define HAVE_PYTHON 1 +!else +PYTHON_CFLAGS= +PYTHON_LIBS= +PYTHON_CONFIG= +!ENDIF + +!IFDEF PORTAUDIO_DIR +# Nmake uses carets to escape special characters +PORTAUDIO_CONFIG=^#define HAVE_LIBPORTAUDIO 1 +!IF "$(PORTAUDIO_VERSION)" == "18" +# V18 uses API version 1 and v19 API version 2 +PORTAUDIO_CFLAGS=/I$(PORTAUDIO_DIR)\pa_common +PORTAUDIO_API_CONFIG=^#define PORTAUDIO_API_1 1 +!ELSE +PORTAUDIO_CFLAGS=/I$(PORTAUDIO_DIR)\include /I$(PORTAUDIO_DIR)\src\common /I$(PORTAUDIO_DIR)\src\os\win /DPA_NO_DS /DPA_NO_ASIO +!ENDIF +!ELSE +PORTAUDIO_CFLAGS= +PORTAUDIO_CONFIG= +!ENDIF + +!IFDEF HHC_DIR +!IF "$(MSVC_VARIANT)" == "MSVC6" +HHC_CFLAGS=/I"$(HHC_DIR)\include" -DHHC_DIR +HHC_LIBS="$(HHC_DIR)\lib\htmlhelp.lib" +!ELSE +HHC_CFLAGS=-DHHC_DIR +HHC_LIBS=htmlhelp.lib +!ENDIF +!ELSE +HHC_CFLAGS= +HHC_LIBS= +!ENDIF + +!IFDEF SMI_DIR +SMI_CONFIG=^#define HAVE_LIBSMI 1 +SMI_CFLAGS=/I$(SMI_DIR)\include +SMI_LIBS=$(SMI_DIR)\lib\smi.lib +!ELSE +SMI_LIBS= +SMI_CFLAGS= +SMI_CONFIG= +!ENDIF + +!IFDEF GEOIP_DIR +GEOIP_CONFIG=^#define HAVE_GEOIP 1 +GEOIP_CFLAGS=/I$(GEOIP_DIR) +GEOIP_LIBS=$(GEOIP_DIR)\GeoIP.lib +!ELSE +GeoIP_LIBS= +GeoIP_CFLAGS= +GeoIP_CONFIG= +!ENDIF + +!IFDEF ENABLE_LIBWIRESHARK +LIBWIRESHARK_CONFIG=^#define HAVE_LIBWIRESHARKDLL 1 +# Link plugins with the import library of libwireshark.dll +LINK_PLUGINS_WITH_LIBWIRESHARK=USE +!ELSE +LIBWIRESHARK_CONFIG= +!ENDIF + +# Construct the path +PATH=$(PATH);$(CYGWIN_PATH);$(GTK_DIR)\bin;$(GETTEXT_DIR)\bin;$(ZLIB_PATH);$(ADNS_PATH) + +# We can't use a lot of IPv6 code with plain Visual C++ 6.0 +!IF "$(MSVC_VARIANT)" == "MSVC6" && !DEFINED(MSSDK) +INET6_CONFIG= +!ELSE +INET6_CONFIG=^#define INET6 1 +!ENDIF + +!IF "$(MSVC_VARIANT)" == "MSVC6" && !DEFINED(MSSDK) +NTDDNDIS_CONFIG= +!ELSE +NTDDNDIS_CONFIG=^#define HAVE_NTDDNDIS_H 1 +!ENDIF diff --git a/application/tool/wireshark/1.6.5/configure.in b/application/tool/wireshark/1.6.5/configure.in new file mode 100644 index 0000000..32deaee --- /dev/null +++ b/application/tool/wireshark/1.6.5/configure.in @@ -0,0 +1,2182 @@ +# $Id: configure.in 39943 2011-11-18 21:29:16Z gerald $ +# +AC_PREREQ(2.60) + +AC_INIT(wireshark, 1.6.5) + +dnl Check for CPU / vendor / OS +dnl The user is encouraged to use either `AC_CANONICAL_BUILD', or +dnl `AC_CANONICAL_HOST', or `AC_CANONICAL_TARGET', depending on the +dnl needs. Using `AC_CANONICAL_TARGET' is enough to run the two other +dnl macros. +dnl +dnl As nothing in the Wireshark is itself a build tool (we are not, +dnl for example, a compiler that generates machine code), we probably +dnl don't need AC_CANONICAL_TARGET, so, in theory, we should be able +dnl to use AC_CANONICAL_BUILD and AC_CANONICAL_HOST - or perhaps just +dnl AC_CANONICAL_HOST - instead. Note that we do have tools, such as +dnl lemon, that need to be built for the build machine, not for the +dnl host machine, so we might need both. +dnl +dnl This has to be done *after* AC_INIT, otherwise autogen.sh fails. + +dnl AC_CANONICAL_BUILD +dnl AC_CANONICAL_HOST +AC_CANONICAL_TARGET + +AM_INIT_AUTOMAKE([1.9 tar-ustar dist-bzip2 no-dist-gzip]) + +AM_DISABLE_STATIC + +dnl Checks for programs. +AC_PROG_CC +AM_PROG_CC_C_O +AC_PROG_CXX +AC_PROG_CPP +dnl Work around libtool bug (fixed in the version 1.5a?) +AC_DEFUN([AC_PROVIDE_AC_LIBTOOL_DLOPEN], ) +AC_LIBTOOL_DLOPEN +AC_PROG_LIBTOOL +AC_PATH_PROG(PERL, perl) +# +# XXX - should autogen.sh check for YACC/Bison and Flex? A user building +# from a distribution tarball shouldn't have to have YACC/Bison or Flex, +# as the tarball should contain the results of running YACC/Bison on .y +# files and running Flex on .l files, but a user building from SVN +# will have to run YACC/Bison and Flex to process those files. +# +# On the other hand, what about users who use a distribution tarball to +# do development? They *shouldn't* - that's what the SVN repository is +# for - but they might. They'd get errors if they modify a .y or .l +# file and try to do a build - but the error should tell them that they +# need to get YACC/Bison and/or Flex. +# +# Then again, getting them shouldn't be too big of a burden. +# +# XXX - is the same true of pod2man and pod2html, or are they needed +# even when building from a distribution tarball? +# +# +AC_PROG_YACC +AC_PATH_PROG(YACCDUMMY, $YACC) +if test "x$YACCDUMMY" = x +then + AC_MSG_ERROR(I couldn't find yacc (or bison or ...); make sure it's installed and in your path) +fi +AM_PROG_LEX +AC_PATH_PROG(LEX, flex) +if test "x$LEX" = x +then + AC_MSG_ERROR(I couldn't find flex; make sure it's installed and in your path) +fi +AC_PATH_PROG(POD2MAN, pod2man) +if test "x$POD2MAN" = x +then + # + # The alternative is not to build the man pages.... + # + AC_MSG_ERROR(I couldn't find pod2man; make sure it's installed and in your path) +fi +AC_PATH_PROG(POD2HTML, pod2html) +if test "x$POD2HTML" = x +then + # + # The alternative is not to build the HTML man pages.... + # + AC_MSG_ERROR(I couldn't find pod2html; make sure it's installed and in your path) +fi + +# +# XXX - this looks for various HTML viewers on the host, not the target; +# we really want to know what's available on the target, for cross-builds. +# That would probably require us to, at run time, look for xdg-open and, +# if we don't find it, look for mozilla, htmlview, etc. +# +AC_PATH_PROG(HTML_VIEWER, xdg-open) +if test "x$HTML_VIEWER" != x +then + # + # XXX - the HTML_VIEWER shell variable is the full path of xdg-open. + # Define some variable to be that, so we just run that? + # + AC_DEFINE(HAVE_XDG_OPEN, 1, [Define if we have xdg-open]) + + # + # XXX - we have to define HTML_VIEWER for the prefs.c code that + # sets the default value of the Web browser preference, even + # though that preference won't be offered. + # + AC_DEFINE_UNQUOTED(HTML_VIEWER, "xdg-open", [HTML viewer, e.g. mozilla]) +else + AC_PATH_PROG(HTML_VIEWER, htmlview) + if test "x$HTML_VIEWER" = x + then + AC_DEFINE_UNQUOTED(HTML_VIEWER, "mozilla", [HTML viewer, e.g. mozilla]) + else + AC_DEFINE_UNQUOTED(HTML_VIEWER, "htmlview", [HTML viewer, e.g. mozilla]) + fi +fi + +AC_PATH_PROG(PYTHON, python) + +AC_SUBST(PERL) +AC_SUBST(LEX) +AC_SUBST(POD2MAN) +AC_SUBST(POD2HTML) +AC_SUBST(PYTHON) +AC_SUBST(XSLTPROC) +AC_SUBST(XMLLINT) + +# +# Set "ac_supports_gcc_flags" if the compiler is known to support GCC-style +# flags such as -pedantic, -W warning flags and -f feature flags. Currently, +# we assume GCC and clang do; other compilers should be added here. +# +# This is done to avoid getting tripped up by compilers that support +# those flags but give them a different meaning. +# +if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then + ac_supports_gcc_flags=yes +fi + +# +# Set "ac_supports_W_linker_passthrough" if the compiler is known to +# support "-Wl,{options}" to pass options through to the linker. +# Currently, we assume GCC, xlc, and clang do; other compilers should +# be added here. +# +if test "x$GCC" = "xyes" -o "x$CC" = "xxlc" -o "x$CC" = "xclang" ; then + ac_supports_W_linker_passthrough=yes +fi + +# +# Set "ac_supports_attribute_unused" if the compiler is known to +# support "__attribute__(unused)". +# Currently, we assume GCC and clang do; other compilers should +# be added here. +# +# XXX - do this with a compiler test? +# +if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then + ac_supports_W_linker_passthrough=yes +fi + +if test "x$CC_FOR_BUILD" = x +then + CC_FOR_BUILD=$CC +fi +AC_SUBST(CC_FOR_BUILD) + +# Check for doxygen +AC_PATH_PROG(DOXYGEN, doxygen) +AC_CHECK_PROG(HAVE_DOXYGEN, doxygen, "yes", "no") +AM_CONDITIONAL(HAVE_DOXYGEN, test x$HAVE_DOXYGEN = xyes) + + +#PPMODIF +# +AC_MSG_CHECKING([whether a TGT_VERSION was specified]) +AC_ARG_WITH([version], + AS_HELP_STRING([--with-version=@<:@*@:>@], + [Specify Target version @<:@default=1.3.1@:>@]), + with_version="$withval", with_version="1.3.2") +AC_SUBST(TGT_VERSION, [$with_version]) +AC_MSG_RESULT(TGT_VERSION=$TGT_VERSION) +# +AC_MSG_CHECKING([whether OCT_PATH was specified]) +AC_ARG_WITH([oct_path], + AS_HELP_STRING([--with-oct_path=@<:@*@:>@], + [Specify Octasic path @<:@default=/mnt/goose@:>@]), + with_oct_path="$withval", with_oct_path="/mnt/goose") +AC_SUBST(OCT_PATH, [$with_oct_path]) +AC_MSG_RESULT(OCT_PATH=$OCT_PATH) +#PPMODIF + + +# +# Try to arrange for large file support. +# +AC_SYS_LARGEFILE + +# gnu tls +tls_message="no" +AC_ARG_WITH([gnutls], + AC_HELP_STRING( [--with-gnutls=@<:@yes/no@:>@], + [use gnutls library @<:@default=yes@:>@]), + with_gnutls="$withval", with_gnutls="yes") +if test "x$with_gnutls" = "xyes"; then + PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 1.2.0], + [ + echo "gnuTLS found, enabling ssl decryption" + AC_DEFINE(HAVE_LIBGNUTLS, 1, [Define to use gnutls library]) + tls_message="yes" + ] + , [ + echo "gnuTLS not found, disabling ssl decryption" + tls_message="no" + ] + ) +fi + +# libgrypt +gcrypt_message="no" +AC_ARG_WITH([gcrypt], + AC_HELP_STRING( [--with-gcrypt=@<:@yes/no@:>@], + [use gcrypt library @<:@default=yes@:>@]), + with_gcrypt="$withval", with_gcrypt="yes") +if test "x$with_gcrypt" = "xyes"; then + AM_PATH_LIBGCRYPT(1.1.92, + [ + echo "libgcrypt found, enabling ipsec decryption" + AC_DEFINE(HAVE_LIBGCRYPT, 1, [Define to use libgcrypt]) + gcrypt_message="yes" + ] + , [ + if test x$libgcrypt_config_prefix != x ; then + AC_MSG_ERROR([[libgcrypt not found; install libgcrypt-devel package for your system]]) + else + echo "libgcrypt not found, disabling ipsec decryption" + gcrypt_message="no" + fi + ] + ) +fi + +AC_ARG_WITH([gtk3], + AC_HELP_STRING( [--with-gtk3=@<:@yes/no@:>@], + [use GTK+ 3.0 instead of 2.0 @<:@default=no@:>@]), + with_gtk3="$withval", with_gtk="no") + + +# libsmi +# FIXME: currently the path argument to with-libsmi is being ignored +AX_LIBSMI + +# Check for xsltproc +AC_PATH_PROG(XSLTPROC, xsltproc) +AC_CHECK_PROG(HAVE_XSLTPROC, xsltproc, "yes", "no") +AM_CONDITIONAL(HAVE_XSLTPROC, test x$HAVE_XSLTPROC = xyes) + +# Check for xmllint +AC_PATH_PROG(XMLLINT, xmllint) +AC_CHECK_PROG(HAVE_XMLLINT, xmllint, "yes", "no") +AM_CONDITIONAL(HAVE_XMLLINT, test x$HAVE_XMLLINT = xyes) + +# Check for fop (translate .fo to e.g. pdf) +AC_PATH_PROG(FOP, fop) +AC_CHECK_PROG(HAVE_FOP, fop, "yes", "no") +AM_CONDITIONAL(HAVE_FOP, test x$HAVE_FOP = xyes) + +# +# Look for something to convert HTML to text (for docbook/) +# +AC_PATH_PROG(ELINKS, elinks) +AC_CHECK_PROG(HAVE_ELINKS, elinks, "yes", "no") +AM_CONDITIONAL(HAVE_ELINKS, test x$HAVE_ELINKS = xyes) + +## links: Fails as used in docbook/Makefile.am +## (Rather than fixing things we'll just disable the use of links). +##AC_PATH_PROG(LINKS, links) +##AC_CHECK_PROG(HAVE_LINKS, links, "yes", "no") +##AM_CONDITIONAL(HAVE_LINKS, test x$HAVE_LINKS = xyes) + +AC_PATH_PROG(LYNX, lynx) +AC_CHECK_PROG(HAVE_LYNX, lynx, "yes", "no") +AM_CONDITIONAL(HAVE_LYNX, test x$HAVE_LYNX = xyes) + + +# Check for hhc (html help compiler) +AC_PATH_PROG(HHC, hhc.exe) +AC_CHECK_PROG(HAVE_HHC, hhc.exe, "yes", "no") +AM_CONDITIONAL(HAVE_HHC, test x$HAVE_HHC = xyes) + +# Check for packaging utilities +# For now, we check to see if the various packaging utilites are in our +# path. I'm too lazy to write code to go hunt for them. - Gerald + +# SVR4/Solaris +AC_CHECK_PROG(HAVE_PKGPROTO, pkgproto, "yes", "no") +AC_CHECK_PROG(HAVE_PKGMK, pkgmk, "yes", "no") +AC_CHECK_PROG(HAVE_PKGTRANS, pkgtrans, "yes", "no") + +if test x$HAVE_PKGPROTO = xyes -a x$HAVE_PKGMK = xyes \ + -a x$HAVE_PKGTRANS = xyes ; then + HAVE_SVR4_PACKAGING=yes +else + HAVE_SVR4_PACKAGING=no +fi +AC_SUBST(HAVE_SVR4_PACKAGING) + +# RPM +AC_WIRESHARK_RPM_CHECK +AC_SUBST(HAVE_RPM) + +# Debian +AC_CHECK_PROG(HAVE_DPKG_BUILDPACKAGE, dpkg-buildpackage, "yes", "no") + +# Mac OS X +AC_CHECK_PROG(HAVE_XCODEBUILD, xcodebuild, "yes", "no") +AC_CHECK_PROG(HAVE_HDIUTIL, hdiutil, "yes", "no") +AC_CHECK_PROG(HAVE_BLESS, bless, "yes", "no") + +if test x$HAVE_XCODEBUILD = xyes -a x$HAVE_HDIUTIL = xyes \ + -a x$HAVE_BLESS = xyes ; then + HAVE_OSX_PACKAGING=yes +else + HAVE_OSX_PACKAGING=no +fi +AC_SUBST(HAVE_OSX_PACKAGING) + +# +# Try to add some additional gcc checks to CFLAGS +# +AC_ARG_ENABLE(extra-gcc-checks, + AC_HELP_STRING( [--enable-extra-gcc-checks], + [Do additional -W checks in GCC. @<:@default=no@:>@]), +[ + wireshark_extra_gcc_flags=$enableval + if test $enableval != no + then + AC_WIRESHARK_GCC_CFLAGS_CHECK(-pedantic) + AC_WIRESHARK_GCC_CFLAGS_CHECK(-Woverflow) + AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wlogical-op) + AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wno-overlength-strings) +# AC_WIRESHARK_GCC_CFLAGS_CHECK(-fstrict-overflow -Wstrict-overflow=4) +# AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wunreachable-code) +# AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wunsafe-loop-optimizations) + AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wno-long-long) + AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wbad-function-cast) + AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wcast-qual) + AC_WIRESHARK_GCC_CFLAGS_CHECK(-Waddress) + AC_WIRESHARK_GCC_CFLAGS_CHECK(-Warray-bounds) + AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wattributes) + AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wdeclaration-after-statement) + AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wdiv-by-zero) + AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wformat-security) + AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wignored-qualifiers) + AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wpragmas) + AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wredundant-decls) + AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wvla) + AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wc++-compat) + AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wjump-misses-init) + # + # epan/dissectors/packet-ncp2222.inc blocks this one + # for now. + # + AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wwrite-strings) + AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wstrict-prototypes) + AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wmissing-declarations) + # + # epan/dissectors/packet-afs.c blocks this one for now. + # + AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wshadow) + # + # More cleanup needed for this on LP64. + # + AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wshorten-64-to-32) + fi +],) +AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wall -W) # -W is now known as -Wextra +AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wextra) # -W is now known as -Wextra +AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wdeclaration-after-statement) +AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wendif-labels) +AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wpointer-arith) +AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wno-pointer-sign) +AC_WIRESHARK_GCC_CFLAGS_CHECK(-Warray-bounds) +AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wcast-align) +AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wformat-security) +# Use the faster pre gcc 4.5 floating point precision +if test "x$CC" != "xclang" ; then +AC_WIRESHARK_GCC_CFLAGS_CHECK(-fexcess-precision=fast) +fi + +AC_WIRESHARK_LDFLAGS_CHECK([-Wl,--as-needed]) +###AC_WIRESHARK_LDFLAGS_CHECK([-Wl,-M]) +###AC_WIRESHARK_LDFLAGS_CHECK([-Wl,--cref]) +# AC_WIRESHARK_LDFLAGS_CHECK([-flto]) +# AC_WIRESHARK_LDFLAGS_CHECK([-fwhopr]) +# AC_WIRESHARK_LDFLAGS_CHECK([-fwhole-program]) + +# +# If we're running GCC or clang, add '-D_U_="__attribute__((unused))"' to +# CFLAGS as well, so we can use _U_ to flag unused function arguments and +# not get warnings about them. Otherwise, add '-D_U_=""', so that _U_ used +# to flag an unused function argument will compile with non-GCC, non-clang +# compilers. +# +# XXX - other compilers? +# +if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then + CFLAGS="-D_U_=\"__attribute__((unused))\" $CFLAGS" +else + CFLAGS="-D_U_=\"\" $CFLAGS" +fi + +# +# If the compiler supports GCC-style flags, enable a barrier "stop on +# warning". +# This barrier is set for a very large part of the code. However, it is +# typically not set for "generated" code (flex, ans2wrs, idl2wrs, ...) +# +warnings_as_errors_default="no" +AC_MSG_CHECKING(whether we should treat compiler warnings as errors) +AC_ARG_ENABLE(warnings-as-errors, + AC_HELP_STRING( [--enable-warnings-as-errors], + [Treat warnings as errors (only for GCC or clang). @<:@default=no@:>@]), +[ + if test "x$ac_supports_gcc_flags" = "xyes" -a "x$enableval" = "xyes" -a "x$wireshark_extra_gcc_flags" != "xyes"; then + with_warnings_as_errors="yes" + AC_MSG_RESULT(yes) + else + with_warnings_as_errors="no" + AC_MSG_RESULT(no) + fi +], + if test "x$ac_supports_gcc_flags" = "xyes" -a "x$wireshark_extra_gcc_flags" = "x" -a "x$warnings_as_errors_default" = "xyes"; then + with_warnings_as_errors="yes" + AC_MSG_RESULT(yes) + else + with_warnings_as_errors="no" + AC_MSG_RESULT(no) + fi +) +AM_CONDITIONAL(HAVE_WARNINGS_AS_ERRORS, test "x$with_warnings_as_errors" = "xyes") + +# +# Add any platform-specific compiler flags needed. +# +AC_MSG_CHECKING(for platform-specific compiler flags) +if test "x$GCC" = "xyes" ; then + # + # GCC - do any platform-specific tweaking necessary. + # + case "$host_os" in + solaris*) + # the X11 headers don't automatically include prototype info + # and a lot don't include the return type + CFLAGS="$CFLAGS -Wno-return-type -DFUNCPROTO=15" + AC_MSG_RESULT(GCC on Solaris - added -Wno-return-type -DFUNCPROTO=15) + ;; + darwin*) + # + # See comments above about Apple's lovely C compiler. + # + # NOTE: to AC_PROG_CC, "GCC" means "any compiler that + # defines __GNUC__"; clang defines __GNUC__, so that + # means we think clang is GCC. + # + # clang whines about -no-cpp-precomp being unused + # so we check whether this is really clang, and + # only add -no-cpp-precomp if it's not. + # + if test "x$CC" != "xclang" ; then + CFLAGS="-no-cpp-precomp $CFLAGS" + AC_MSG_RESULT(Apple GCC - added -no-cpp-precomp) + else + # + # Clang, clang, clang went the trolley.... + # + AC_MSG_RESULT(none needed) + fi + ;; + *) + AC_MSG_RESULT(none needed) + ;; + esac +else + # + # Not GCC - assume it's the vendor's compiler. + # + case "$host_os" in + hpux*) + # + # HP's ANSI C compiler; flags suggested by Jost Martin. + # "-Ae" for ANSI C plus extensions such as "long long". + # "+O2", for optimization. XXX - works with "-g"? + # + CFLAGS="-Ae +O2 $CFLAGS" + AC_MSG_RESULT(HP ANSI C compiler - added -Ae +O2) + ;; + darwin*) + # + # It may be called "cc", but it's really a GCC derivative + # with a problematic special precompiler and precompiled + # headers; turn off the special precompiler, as some + # apparently-legal code won't compile with its precompiled + # headers. + # + # On the other hand, if it's called "clang", it's not a + # GCC derivative, and it whines if you pass it + # -no-cpp-precomp. + # + # XXX - is there any version of autoconf we support + # where it uses another way to decide if the compiler + # is GCC or not? + # + if test "x$CC" != "xclang" ; then + CFLAGS="-no-cpp-precomp $CFLAGS" + AC_MSG_RESULT(Apple CC - added -no-cpp-precomp) + else + # + # Clang, clang, clang went the trolley.... + # + AC_MSG_RESULT(none needed) + fi + ;; + *) + AC_MSG_RESULT(none needed) + ;; + esac +fi + +# +# Add any platform-specific linker flags needed. +# +AC_MSG_CHECKING(for platform-specific linker flags) +case "$host_os" in +darwin*) + # + # Add -Wl,-single_module to the LDFLAGS used with shared + # libraries, to fix some error that show up in some cases; + # some Apple documentation recommends it for most shared + # libraries. + # + LDFLAGS_SHAREDLIB="-Wl,-single_module" + # + # Add -Wl,-search_paths_first to make sure that if we search + # directories A and B, in that order, for a given library, a + # non-shared version in directory A, rather than a shared + # version in directory B, is chosen (so we can use + # --with-pcap=/usr/local to force all programs to be linked + # with a static version installed in /usr/local/lib rather than + # the system version in /usr/lib). + # + LDFLAGS="-Wl,-search_paths_first $LDFLAGS" + AC_MSG_RESULT([Apple linker - added -Wl,-single_module and -Wl,-search_paths_first]) + ;; +cygwin*) + # + # Shared libraries in cygwin/Win32 must never contain + # undefined symbols. + # + LDFLAGS="$LDFLAGS -no-undefined" + AC_MSG_RESULT(CygWin GNU ld - added -no-undefined) + ;; +*) + AC_MSG_RESULT(none needed) + ;; +esac +AC_SUBST(LDFLAGS_SHAREDLIB) + +# Control silent compiling +m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([no])]) + +# +# On OS X, if we find the headers for Core Foundation, Launch Services, +# and Core Services, add -framework options to link with Application +# Services (of which Launch Services is a subframework), Core Foundation +# (required by the Launch Services APIs), and Core Services, so we can +# use them to launch a Web browser from the Help menu and to use +# Gestalt() to get the Mac OS X version number. +# +case "$host_os" in + +darwin*) + AC_MSG_CHECKING([whether we can build with Core Foundation, Launch Services, and Core Services]) + ac_save_LIBS="$LIBS" + ac_coreservices_frameworks="-framework CoreServices" + ac_launchservices_frameworks="-framework ApplicationServices -framework CoreFoundation $ac_coreservices_frameworks" + LIBS="$LIBS $ac_launchservices_frameworks $ac_coreservices_frameworks" + AC_TRY_LINK( + [ +# include +# include +# include +# include +# include + ], + [ + CFStringRef url_CFString; + CFURLRef url_CFURL; + OSStatus status; + long os_version; + + url_CFString = CFStringCreateWithCString(NULL, "", kCFStringEncodingASCII); + url_CFURL = CFURLCreateWithString(NULL, url_CFString, NULL); + status = LSOpenCFURLRef(url_CFURL, NULL); + + Gestalt(gestaltSystemVersion, &os_version); + ], + ac_cv_can_use_osx_frameworks=yes, + ac_cv_can_use_osx_frameworks=no, + [echo $ac_n "cross compiling; assumed OK... $ac_c"]) + if test "$ac_cv_can_use_osx_frameworks" = yes ; then + AC_DEFINE(HAVE_OS_X_FRAMEWORKS, 1, [Define to 1 if you have OS X frameworks]) + CORESERVICES_FRAMEWORKS="$ac_coreservices_frameworks" + LAUNCHSERVICES_FRAMEWORKS="$ac_launchservices_frameworks" + AC_MSG_RESULT(yes) + else + AC_MSG_RESULT(no) + fi + LIBS="$ac_save_LIBS" + ;; +esac +AC_SUBST(CORESERVICES_FRAMEWORKS) +AC_SUBST(LAUNCHSERVICES_FRAMEWORKS) + +# +# If using $prefix we add "$prefix/include" to the include search path +# and "$prefix/lib" to the library search path. +# +if test "x$prefix" != "x" ; then + AC_MSG_CHECKING(whether to use $prefix for headers and libraries) + if test -d $prefix/include ; then + AC_MSG_RESULT(yes) + # + # Arrange that we search for header files in "$prefix/include", as + # various packages we use may have been installed under "$prefix/include". + # + CFLAGS="$CFLAGS -I$prefix/include" + CPPFLAGS="$CPPFLAGS -I$prefix/include" + + # + # Arrange that we search for libraries in "$prefix/lib". + # + AC_WIRESHARK_ADD_DASH_L(LDFLAGS, $prefix/lib) + else + AC_MSG_RESULT(no) + fi +fi + +dnl Look in /usr/local for header files and libraries ? +dnl XXX FIXME don't include /usr/local if it is already in the system +dnl search path as this causes gcc 3.2 on Linux to complain about a change +dnl of the system search order for includes +AC_ARG_ENABLE(usr-local, + AC_HELP_STRING( [--enable-usr-local], + [look for headers and libs in /usr/local tree. @<:@default=yes@:>@]), + ac_cv_enable_usr_local=$enableval,ac_cv_enable_usr_local=yes) + +AC_MSG_CHECKING(whether to use /usr/local for headers and libraries) +if test "x$ac_cv_enable_usr_local" = "xyes" ; then + if test -d "/usr/local"; then + AC_MSG_RESULT(yes) + # + # Arrange that we search for header files in the source directory + # and in its "wiretap" subdirectory, as well as in "/usr/local/include", + # as various packages we use ("libpcap", "zlib", "adns", "pcre") + # may have been installed under "/usr/local/include". + # + CFLAGS="$CFLAGS -I/usr/local/include" + CPPFLAGS="$CPPFLAGS -I/usr/local/include" + + # + # Arrange that we search for libraries in "/usr/local/lib". + # + AC_WIRESHARK_ADD_DASH_L(LDFLAGS, /usr/local/lib) + else + AC_MSG_RESULT(no) + fi +else + AC_MSG_RESULT(no) +fi + +# +# If we're running Solaris, and LD_LIBRARY_PATH is defined, add it as a +# link directory. +# +case "$host_os" in + solaris*) + AC_MSG_CHECKING(for LD_LIBRARY_PATH, since you appear to be running Solaris) + if test x$LD_LIBRARY_PATH != x ; then + LIBS="$LIBS -R$LD_LIBRARY_PATH" + AC_MSG_RESULT(yes -- added LD_LIBRARY_PATH to run-time linker path) + else + AC_MSG_RESULT(no -- this may be a problem in a few seconds) + fi + ;; +esac + +# +# Check for versions of "sed" inadequate to handle, in libtool, a list +# of object files as large as the list in Wireshark. +# +# On Solaris, we check for "/bin/sed", "/usr/bin/sed", and "/usr/ucb/sed", +# as both "/usr/bin/sed" (which is also "/bin/sed", as "/bin" is just a +# symlink to "/usr/bin", but people may have "/bin" before "/usr/bin" in +# their search path) and "/usr/ucb/sed" are inadequate; "/usr/xpg4/bin/sed" +# is the only "sed" that comes with Solaris that can handle Wireshark. +# +# Add any checks here that are necessary for other OSes. +# +AC_WIRESHARK_GNU_SED_CHECK +if test "$HAVE_GNU_SED" = no ; then + case "$host_os" in + solaris*) + AC_MSG_CHECKING(whether one of /usr/bin/sed or /bin/sed or /usr/ucb/sed will be used) + case `which sed` in + /bin/sed|/usr/bin/sed|/usr/ucb/sed) + AC_MSG_RESULT(yes) + AC_MSG_ERROR([change your path to search /usr/xpg4/bin or directory containing GNU sed before /usr/bin (and /bin and /usr/ucb)]) + ;; + + *) + AC_MSG_RESULT(no) + ;; + esac + ;; + + *) + : + ;; + esac +fi + +# Enable/disable tshark + +AC_ARG_ENABLE(wireshark, + AC_HELP_STRING( [--enable-wireshark], + [build GTK+-based wireshark. @<:@default=yes, if GTK+ available@:>@]), + enable_wireshark=$enableval,enable_wireshark=yes) + +AC_ARG_ENABLE(packet-editor, + AC_HELP_STRING( [--enable-packet-editor], + [add support for packet editor in wireshark. @<:@default=no@:>@]), + enable_packet_editor=$enableval,enable_packet_editor=no) +if test x$enable_packet_editor = xyes; then + AC_DEFINE(WANT_PACKET_EDITOR, 1, [Support for packet editor]) +fi + +AC_ARG_ENABLE(threads, + AC_HELP_STRING( [--enable-threads], + [use threads in wireshark. @<:@default=no@:>@]), + enable_threads=$enableval,enable_threads=no) +if test x$enable_threads = xyes; then + AC_DEFINE(USE_THREADS, 1, [Support for threads]) +fi + +AC_ARG_ENABLE(profile-build, + AC_HELP_STRING( [--enable-profile-build], + [build profile-ready binaries. @<:@default=no@:>@]), + enable_profile_build=$enableval,enable_profile_build=no) +AM_CONDITIONAL(USE_PROFILE_BUILD, test x$enable_profile_build = xyes) +AC_MSG_CHECKING(if profile builds must be generated) +if test "x$enable_profile_build" = "xyes" ; then + if test "x$GCC" = "xyes" -o "x$CLANG" = "xyes" ; then + AC_MSG_RESULT(yes) + CFLAGS=" -pg $CFLAGS" + else + AC_MSG_RESULT(no) + echo "Building profile binaries currently only supported for GCC and clang." + fi +else + AC_MSG_RESULT(no) +fi + +# Create DATAFILE_DIR #define for config.h +datafiledir=$datadir/wireshark +datafiledir=`( + test "x$prefix" = xNONE && prefix=$ac_default_prefix + test "x$exec_prefix" = xNONE && exec_prefix=${prefix} + # Ugly hack, but I don't see how this problem can be solved + # properly that DATAFILE_DIR had a value starting with + # "${prefix}/" instead of e.g. "/usr/local/" + eval eval echo "$datafiledir" +)` +AC_DEFINE_UNQUOTED(DATAFILE_DIR,"$datafiledir", [Directory for data]) + +# Create DOC_DIR #define for config.h +docdir=`( + test "x$prefix" = xNONE && prefix=$ac_default_prefix + test "x$exec_prefix" = xNONE && exec_prefix=${prefix} + # Ugly hack, but I don't see how this problem can be solved + # properly that DOC_DIR had a value starting with + # "${prefix}/" instead of e.g. "/usr/local/" + eval eval echo "$docdir" +)` +AC_DEFINE_UNQUOTED(DOC_DIR, "$docdir", [Directory for docs]) + +# GTK checks; we require GTK+ 2.4 or later. +# We don't add $GLIB_LIBS to LIBS, because we don't want to force all +# programs to be built with GTK+. +# +if test "x$enable_wireshark" = "xyes"; then +if test "x$with_gtk3" = "xyes"; then + AM_PATH_GTK_3_0(3.0.0, + [ + CFLAGS="$CFLAGS $GTK_CFLAGS" + CXXFLAGS="$CXXFLAGS $GTK_CFLAGS" + AC_DEFINE(HAVE_GTK, 1, [Define to 1 if compiling with GTK]) + ], GTK_OK=no, gthread) + +else + AM_PATH_GTK_2_0(2.4.0, + [ + CFLAGS="$CFLAGS $GTK_CFLAGS" + CXXFLAGS="$CXXFLAGS $GTK_CFLAGS" + AC_DEFINE(HAVE_GTK, 1, [Define to 1 if compiling with GTK]) + ], GTK_OK=no, gthread) +fi +else + GTK_OK=no +fi + +# GLib checks; we require GLib 2.4 or later, and require gmodule +# support, as we need that for dynamically loading plugins. +# If we found GTK+, this doesn't add GLIB_CFLAGS to CFLAGS, because +# AM_PATH_GTK will add GTK_CFLAGS to CFLAGS, and GTK_CFLAGS is a +# superset of GLIB_CFLAGS. If we didn't find GTK+, it does add +# GLIB_CFLAGS to CFLAGS. +# However, this means that both @GLIB_LIBS@ and @GTK_LIBS@ will be +# set when generating the Makefile, so we can make programs that require +# only GLib link with @GLIB_LIBS@ and make programs that require GTK+ +# link with @GTK_LIBS@ (which includes @GLIB_LIBS@). +# We don't add $GLIB_LIBS to LIBS, because we don't want to force all +# programs to be built with GLib. +# +if test "$GTK_OK" = "no" ; then + # + # We don't have GTK+. + # If they didn't explicitly say "--disable-wireshark", fail (so + # that, unless they explicitly indicated that they don't want + # Wireshark, we stop so they know they won't be getting + # Wireshark unless they fix the GTK+ problem). + # + if test "x$enable_wireshark" = "xyes"; then + AC_MSG_ERROR([GTK+ 2.4 or later isn't available, so Wireshark can't be compiled]) + fi + wireshark_bin="" + wireshark_man="" + # Use GLIB_CFLAGS + AM_PATH_GLIB_2_0(2.4.0, + [ + CFLAGS="$CFLAGS $GLIB_CFLAGS" + CXXFLAGS="$CXXFLAGS $GLIB_CFLAGS" + ], AC_MSG_ERROR(GLib 2.4 or later distribution not found.), gthread gmodule) +else + # + # We have GTK+, and thus will be building Wireshark unless the + # user explicitly disabled it. + # + wireshark_bin="wireshark\$(EXEEXT)" + wireshark_man="wireshark.1" + wireshark_SUBDIRS="codecs gtk" + # Don't use GLIB_CFLAGS + AM_PATH_GLIB_2_0(2.4.0, , AC_MSG_ERROR(GLib 2.4 or later distribution not found.), gthread gmodule) +fi + +# +# Check whether GLib includes GRegex support. +# We just assume that everybody builds GLib 2.14.0 and later +# with GRegex support; it's possible to compile GLib without +# GRegex but it doesn't look as if anyone does. +# +AC_MSG_CHECKING(for GLIB - version >= 2.14.0) +if test x$PKG_CONFIG != xno ; then + ## don't try to run the test against uninstalled libtool libs + if $PKG_CONFIG --uninstalled $pkg_config_args; then + echo "Will use uninstalled version of GLib found in PKG_CONFIG_PATH" + enable_glibtest=no + fi + + if $PKG_CONFIG --atleast-version 2.14.0 glib-2.0; then + have_gregex=yes + else + have_gregex=no + fi + AC_MSG_RESULT($have_gregex) +fi + +# +# Check whether GLib modules are supported, to determine whether we +# can support plugins. +# +AC_MSG_CHECKING(whether GLib supports loadable modules) +ac_save_CFLAGS="$CFLAGS" +ac_save_LIBS="$LIBS" +CFLAGS="$CFLAGS $GLIB_CFLAGS" +LIBS="$GLIB_LIBS $LIBS" +AC_TRY_RUN([ +#include +#include +#include +#include + +int +main () +{ + if (g_module_supported()) + return 0; /* success */ + else + return 1; /* failure */ +} +], ac_cv_glib_supports_modules=yes, ac_cv_glib_supports_modules=no, + [echo $ac_n "cross compiling; assumed OK... $ac_c" + ac_cv_glib_supports_modules=yes]) +CFLAGS="$ac_save_CFLAGS" +LIBS="$ac_save_LIBS" +if test "$ac_cv_glib_supports_modules" = yes ; then + AC_MSG_RESULT(yes) + have_plugins=yes +else + AC_MSG_RESULT(no) + have_plugins=no +fi + +# +# If we have , check whether we can use dladdr to find a +# filename (hopefully, a full pathname, but no guarantees) for +# the executable. +# +if test "$ac_cv_header_dlfcn_h" = "yes" +then + AC_MSG_CHECKING(whether dladdr can be used to find the pathname of an executable) + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GLIB_CFLAGS" + LIBS="$GLIB_LIBS $LIBS" + AC_TRY_RUN([ +#define _GNU_SOURCE /* required on Linux, sigh */ +#include + +int +main(void) +{ + Dl_info info; + + if (!dladdr((void *)main, &info)) + return 1; /* failure */ + return 0; /* assume success */ +} +], ac_cv_dladdr_finds_executable_path=yes, ac_cv_dladdr_finds_executable_path=no, + [echo $ac_n "cross compiling; assumed OK... $ac_c" + ac_cv_dladdr_finds_executable_path=yes]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + if test x$ac_cv_dladdr_finds_executable_path = xyes + then + AC_DEFINE(DLADDR_FINDS_EXECUTABLE_PATH, 1, [Define if dladdr can be used to find the path of the executable]) + fi + AC_MSG_RESULT($ac_cv_dladdr_finds_executable_path) +fi + +if test "x$no_gtk" != "xyes" +then + # + # We have GTK+; do we want the OS X integration functions and, + # if so, do we have them and, if so, which versions do we have, + # the old Carbon-based ones or the new Cocoa-based ones? + # + AC_MSG_CHECKING(whether to use OS X integration functions) + + AC_ARG_WITH(osx-integration, + AC_HELP_STRING( [--with-osx-integration], + [use OS X integration functions (@<:@default=yes, if available@:>@]), + [ + if test $withval = no + then + want_osx_integration=no + else + want_osx_integration=yes + fi + ],[ + want_osx_integration=yes + ]) + if test "x$want_osx_integration" = "xno"; then + AC_MSG_RESULT(no) + else + AC_MSG_RESULT(yes) + AC_WIRESHARK_OSX_INTEGRATION_CHECK + fi +fi + +AC_SUBST(wireshark_bin) +AC_SUBST(wireshark_man) + + +# Enable/disable tshark + +AC_ARG_ENABLE(tshark, + AC_HELP_STRING( [--enable-tshark], + [build tshark. @<:@default=yes@:>@]), + tshark=$enableval,enable_tshark=yes) + +if test "x$enable_tshark" = "xyes" ; then + tshark_bin="tshark\$(EXEEXT)" + tshark_man="tshark.1" + wiresharkfilter_man="wireshark-filter.4" +else + tshark_bin="" + tshark_man="" +fi +AC_SUBST(tshark_bin) +AC_SUBST(tshark_man) +AC_SUBST(wiresharkfilter_man) + + + +# Enable/disable editcap + +AC_ARG_ENABLE(editcap, + AC_HELP_STRING( [--enable-editcap], + [build editcap. @<:@default=yes@:>@]), + enable_editcap=$enableval,enable_editcap=yes) + +if test "x$enable_editcap" = "xyes" ; then + editcap_bin="editcap\$(EXEEXT)" + editcap_man="editcap.1" +else + editcap_bin="" + editcap_man="" +fi +AC_SUBST(editcap_bin) +AC_SUBST(editcap_man) + +# Enabling/disabling of dumpcap is done later (after we know if we have PCAP +# or not) + +# Enable/disable capinfos + +AC_ARG_ENABLE(capinfos, + AC_HELP_STRING( [--enable-capinfos], + [build capinfos. @<:@default=yes@:>@]), + enable_capinfos=$enableval,enable_capinfos=yes) + +if test "x$enable_capinfos" = "xyes" ; then + capinfos_bin="capinfos\$(EXEEXT)" + capinfos_man="capinfos.1" +else + capinfos_bin="" + capinfos_man="" +fi +AC_SUBST(capinfos_bin) +AC_SUBST(capinfos_man) + + +# Enable/disable mergecap + +AC_ARG_ENABLE(mergecap, + AC_HELP_STRING( [--enable-mergecap], + [build mergecap. @<:@default=yes@:>@]), + enable_mergecap=$enableval,enable_mergecap=yes) + +if test "x$enable_mergecap" = "xyes" ; then + mergecap_bin="mergecap\$(EXEEXT)" + mergecap_man="mergecap.1" +else + mergecap_bin="" + mergecap_man="" +fi +AC_SUBST(mergecap_bin) +AC_SUBST(mergecap_man) + + +# Enable/disable text2pcap + +AC_ARG_ENABLE(text2pcap, + AC_HELP_STRING( [--enable-text2pcap], + [build text2pcap. @<:@default=yes@:>@]), + text2pcap=$enableval,enable_text2pcap=yes) + +if test "x$enable_text2pcap" = "xyes" ; then + text2pcap_bin="text2pcap\$(EXEEXT)" + text2pcap_man="text2pcap.1" +else + text2pcap_bin="" + text2pcap_man="" +fi +AC_SUBST(text2pcap_bin) +AC_SUBST(text2pcap_man) + +# Enable/disable idl2wrs + +AC_ARG_ENABLE(idl2wrs, + AC_HELP_STRING( [--enable-idl2wrs], + [build idl2wrs. @<:@default=yes@:>@]), + enable_idl2wrs=$enableval,enable_idl2wrs=yes) + +if test "x$enable_idl2wrs" = "xyes" ; then + idl2wrs_bin="idl2wrs" + idl2wrs_man="idl2wrs.1" +else + idl2wrs_bin="" + idl2wrs_man="" +fi +AC_SUBST(idl2wrs_bin) +AC_SUBST(idl2wrs_man) + + +# Enable/disable dftest + +AC_ARG_ENABLE(dftest, + AC_HELP_STRING( [--enable-dftest], + [build dftest. @<:@default=yes@:>@]), + enable_dftest=$enableval,enable_dftest=yes) + +if test "x$enable_dftest" = "xyes" ; then + dftest_bin="dftest\$(EXEEXT)" + dftest_man="dftest.1" +else + dftest_bin="" + dftest_man="" +fi +AC_SUBST(dftest_bin) +AC_SUBST(dftest_man) + + +# Enable/disable randpkt + +AC_ARG_ENABLE(randpkt, + AC_HELP_STRING( [--enable-randpkt], + [build randpkt. @<:@default=yes@:>@]), + enable_randpkt=$enableval,enable_randpkt=yes) + +if test "x$enable_randpkt" = "xyes" ; then + randpkt_bin="randpkt\$(EXEEXT)" + randpkt_man="randpkt.1" +else + randpkt_bin="" + randpkt_man="" +fi +AC_SUBST(randpkt_bin) +AC_SUBST(randpkt_man) + + + +dnl Checks for "gethostbyname()" - and "-lnsl", if we need it to get +dnl "gethostbyname()". +AC_WIRESHARK_GETHOSTBY_LIB_CHECK + +dnl Checks for "connect()", used as a proxy for "socket()" - and +dnl "-lsocket", if we need it to get "connect()". +AC_WIRESHARK_SOCKET_LIB_CHECK + +dnl pcap check +AC_MSG_CHECKING(whether to use libpcap for packet capture) + +AC_ARG_WITH(pcap, + AC_HELP_STRING( [--with-pcap@<:@=DIR@:>@], + [use libpcap for packet capturing. @<:@default=yes@:>@]), +[ + if test $withval = no + then + want_pcap=no + elif test $withval = yes + then + want_pcap=yes + else + want_pcap=yes + pcap_dir=$withval + fi +],[ + want_pcap=yes + pcap_dir= +]) +if test "x$want_pcap" = "xno" ; then + AC_MSG_RESULT(no) +else + AC_MSG_RESULT(yes) + AC_WIRESHARK_PCAP_CHECK +fi + +# Enable/disable dumpcap + +dnl dumpcap check +AC_MSG_CHECKING(whether to build dumpcap) + +AC_ARG_ENABLE(dumpcap, + AC_HELP_STRING( [--enable-dumpcap], + [build dumpcap. @<:@default=yes@:>@]), + enable_dumpcap=$enableval,enable_dumpcap=yes) + +if test "x$enable_dumpcap" = "xyes" ; then + if test "x$want_pcap" = "xno" ; then + enable_dumpcap=no + AC_MSG_RESULT(pcap not available - disabling dumpcap) + else + AC_MSG_RESULT(yes) + fi +else + AC_MSG_RESULT(no) +fi + +if test "x$enable_dumpcap" = "xyes" ; then + dumpcap_bin="dumpcap\$(EXEEXT)" + dumpcap_man="dumpcap.1" +else + dumpcap_bin="" + dumpcap_man="" +fi +AC_SUBST(dumpcap_bin) +AC_SUBST(dumpcap_man) + +# Enable/disable rawshark + +dnl rawshark check +AC_MSG_CHECKING(whether to build rawshark) + +AC_ARG_ENABLE(rawshark, + AC_HELP_STRING( [--enable-rawshark], + [build rawshark. @<:@default=yes@:>@]), + rawshark=$enableval,enable_rawshark=yes) + +if test "x$enable_rawshark" = "xyes" ; then + if test "x$want_pcap" = "xno" ; then + enable_rawshark=no + AC_MSG_RESULT(pcap not available - disabling rawshark) + else + AC_MSG_RESULT(yes) + fi +else + AC_MSG_RESULT(no) +fi + +if test "x$enable_rawshark" = "xyes" ; then + rawshark_bin="rawshark\$(EXEEXT)" + rawshark_man="rawshark.1" +else + rawshark_bin="" + rawshark_man="" +fi +AC_SUBST(rawshark_bin) +AC_SUBST(rawshark_man) + + +dnl pcap remote check +AC_MSG_CHECKING(whether to use libpcap remote capturing feature) + +AC_ARG_WITH(pcap-remote, + AC_HELP_STRING([--with-pcap-remote], + [use libpcap remote capturing (requires libpcap)]), +[ + if test $withval = no + then + want_pcap_remote=no + else + want_pcap_remote=yes + fi +],[ + want_pcap_remote=no +]) +if test "x$want_pcap_remote" = "xno" -o "x$want_pcap" = "xno" ; then + AC_MSG_RESULT(no) +else + AC_MSG_RESULT(yes) + AC_WIRESHARK_PCAP_REMOTE_CHECK +fi + +dnl zlib check +AC_MSG_CHECKING(whether to use zlib for gzip compression and decompression) + +AC_ARG_WITH(zlib, + AC_HELP_STRING([--with-zlib@<:@=DIR@:>@], + [use zlib (located in directory DIR, if supplied) for gzip compression and decompression . @<:@default=yes, if available@:>@]), +[ + if test $withval = no + then + want_zlib=no + elif test $withval = yes + then + want_zlib=yes + else + want_zlib=yes + zlib_dir=$withval + fi +],[ + # + # Use zlib if it's present, otherwise don't. + # + want_zlib=ifavailable + zlib_dir= +]) +if test "x$want_zlib" = "xno" ; then + AC_MSG_RESULT(no) +else + AC_MSG_RESULT(yes) + AC_WIRESHARK_ZLIB_CHECK + if test "x$want_zlib" = "xno" ; then + AC_MSG_RESULT(zlib not found - disabling gzip compression and decompression) + else + if test "x$ac_cv_func_inflatePrime" = "xno" ; then + AC_MSG_RESULT(inflatePrime not found in zlib - disabling gzipped capture file support) + fi + fi +fi + +dnl pcre check +AC_MSG_CHECKING(whether to use libpcre for regular expressions in dfilters) + +AC_ARG_WITH(pcre, + AC_HELP_STRING( [--with-pcre@<:@=DIR@:>@], + [use libpcre (located in directory DIR, if supplied) to use in dfilter regular expressions. Not needed if you have GLib 2.14 or later. @<:@default=yes, if available and GLib < 2.14@:>@]), +[ + if test $withval = no + then + want_pcre=no + elif test $withval = yes + then + want_pcre=yes + else + want_pcre=yes + pcre_dir=$withval + fi +],[ + # + # Use libpcre if it's present and GRegex isn't, otherwise don't. + # + if test $have_gregex = yes ; then + want_pcre=no + else + want_pcre=ifavailable + fi + pcre_dir= +]) +if test "x$want_pcre" = "xno" ; then + AC_MSG_RESULT(no) +else + AC_MSG_RESULT(yes) + AC_WIRESHARK_LIBPCRE_CHECK + if test "x$want_pcre" = "xno" ; then + AC_MSG_RESULT(libpcre not found - disabling support for perl compatible regular expressions in dfilters) + fi +fi + + +dnl lua check +AC_MSG_CHECKING(whether to use liblua for the lua scripting plugin) + +AC_ARG_WITH(lua, + AC_HELP_STRING( [--with-lua@<:@=DIR@:>@], + [use liblua (located in directory DIR, if supplied) for the lua scripting plugin. @<:@default=yes, if available@:>@]), +[ + if test $withval = no + then + want_lua=no + elif test $withval = yes + then + want_lua=yes + else + want_lua=yes + lua_dir=$withval + fi +],[ + # + # Use liblua by default + # + want_lua=ifavailable + lua_dir= +]) +if test "x$want_lua" = "xno" ; then + AC_MSG_RESULT(no) +else + AC_MSG_RESULT(yes) + AC_WIRESHARK_LIBLUA_CHECK + if test "x$want_lua" = "xno" ; then + AC_MSG_RESULT(liblua not found - disabling support for the lua scripting plugin) + fi +fi +AM_CONDITIONAL(HAVE_LIBLUA, test x$want_lua = xyes) + + +dnl portaudio check +AC_MSG_CHECKING(whether to use libportaudio for the rtp_player) + +AC_ARG_WITH(portaudio, + AC_HELP_STRING( [--with-portaudio@<:@=DIR@:>@], + [use libportaudio (located in directory DIR, if supplied) for the rtp_player. @<:@default=yes, if available@:>@]), +[ + if test $withval = no + then + want_portaudio=no + elif test $withval = yes + then + want_portaudio=yes + else + want_portaudio=yes + portaudio_dir=$withval + fi +],[ + # + # Use libportaudio by default + # + want_portaudio=ifavailable + portaudio_dir= +]) +if test "x$want_portaudio" = "xno" ; then + AC_MSG_RESULT(no) +else + AC_MSG_RESULT(yes) + AC_WIRESHARK_LIBPORTAUDIO_CHECK + if test "x$want_portaudio" = "xno" ; then + AC_MSG_RESULT(libportaudio not found - disabling support for the rtp_player) + fi +fi +AM_CONDITIONAL(HAVE_LIBPORTAUDIO, test x$want_portaudio = xyes) + + +dnl ipv6 check +AC_ARG_ENABLE(ipv6, + AC_HELP_STRING( [--enable-ipv6], + [use ipv6 name resolution, if available. @<:@default=yes@:>@]), + enable_ipv6=$enableval,enable_ipv6=yes) + +AC_MSG_CHECKING(whether to enable ipv6 name resolution if available) +if test "x$enable_ipv6" = "xno" ; then + AC_MSG_RESULT(no) +else + AC_MSG_RESULT(yes) + AC_WIRESHARK_IPV6_STACK +fi + + +dnl Check if dumpcap should be installed with filesystem capabilities +AC_PATH_PROG(SETCAP, setcap) +AC_ARG_ENABLE(setcap-install, + AC_HELP_STRING( [--enable-setcap-install], + [install dumpcap with cap_net_admin and cap_net_raw @<:@default=no@:>@]), + enable_setcap_install=$enableval,enable_setcap_install=no) + +AC_MSG_CHECKING(whether to install dumpcap with cap_net_admin and cap_net_raw capabilities) +if test "x$enable_setcap_install" = "xno" ; then + AC_MSG_RESULT(no) +else + if test "x$SETCAP" = "x" ; then + AC_MSG_RESULT(no. Setcap not found) + elif test "x$enable_dumpcap" = "xno" ; then + AC_MSG_ERROR(Setcap install works only with dumpcap but dumpcap is disabled) + else + AC_MSG_RESULT(yes) + fi +fi + +AM_CONDITIONAL(SETCAP_INSTALL, test x$enable_setcap_install = xyes) + +dnl Check if dumpcap should be installed setuid +AC_ARG_ENABLE(setuid-install, + AC_HELP_STRING( [--enable-setuid-install], + [install dumpcap as setuid @<:@default=no@:>@]), + enable_setuid_install=$enableval,enable_setuid_install=no) + +AC_MSG_CHECKING(whether to install dumpcap setuid) +if test "x$enable_setuid_install" = "xno" ; then + AC_MSG_RESULT(no) +else + if test "x$enable_setcap_install" = "xyes" ; then + enable_setuid_install=no + AC_MSG_RESULT(no; using setcap instead) + elif test "x$enable_dumpcap" = "xno" ; then + AC_MSG_ERROR(Setuid install works only with dumpcap but dumpcap is disabled) + else + AC_MSG_RESULT(yes) + fi +fi + +AM_CONDITIONAL(SETUID_INSTALL, test x$enable_setuid_install = xyes) +AC_CHECK_FUNCS(setresuid setresgid) + +dnl ...but our Network Operations group is named "no"! +DUMPCAP_GROUP='' +AC_ARG_WITH(dumpcap-group, + AC_HELP_STRING( [--with-dumpcap-group=GROUP], + [restrict dumpcap to GROUP]), +[ + if test "x$withval" = "xyes"; then + AC_MSG_ERROR([No dumpcap group specified.]) + elif test "x$withval" != "xno"; then + AC_MSG_RESULT($withval) + DUMPCAP_GROUP="$withval" + fi +]) +AC_SUBST(DUMPCAP_GROUP) +AM_CONDITIONAL(HAVE_DUMPCAP_GROUP, test x$DUMPCAP_GROUP != x) + +dnl libcap (not libpcap) check +LIBCAP_LIBS='' +AC_MSG_CHECKING(whether to use the libcap capabilities library) + +AC_ARG_WITH(libcap, + AC_HELP_STRING( [--with-libcap@<:@=DIR@:>@], + [use libcap (located in directory DIR, if supplied) for POSIX.1e capabilities management. @<:@default=yes, if present@:>@]), +[ +if test "x$withval" = "xno"; then + want_libcap=no +elif test "x$withval" = "xyes"; then + want_libcap=yes +elif test -d "$withval"; then + want_libcap=yes + AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib) +fi +]) +if test "x$with_libcap" = "xno" ; then + AC_MSG_RESULT(no) +else + AC_MSG_RESULT(yes) + AC_WIRESHARK_LIBCAP_CHECK +fi +AC_SUBST(LIBCAP_LIBS) + +dnl Checks for header files. +AC_CHECK_HEADERS(direct.h dirent.h fcntl.h grp.h inttypes.h netdb.h pwd.h stdarg.h stddef.h unistd.h) +AC_CHECK_HEADERS(sys/ioctl.h sys/param.h sys/socket.h sys/sockio.h sys/stat.h sys/time.h sys/types.h sys/utsname.h sys/wait.h) +AC_CHECK_HEADERS(netinet/in.h) +AC_CHECK_HEADERS(arpa/inet.h arpa/nameser.h) + +dnl SSL Check +SSL_LIBS='' +AC_MSG_CHECKING(whether to use SSL library) + +AC_ARG_WITH(ssl, + AC_HELP_STRING( [--with-ssl@<:@=DIR@:>@], + [use SSL crypto library (located in directory DIR, if supplied). @<:@default=no@:>@]), +[ +if test "x$withval" = "xno"; then + want_ssl=no +elif test "x$withval" = "xyes"; then + want_ssl=yes +elif test -d "$withval"; then + want_ssl=yes + AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib) +fi +],[ + want_ssl=no +]) +if test "x$want_ssl" = "xyes"; then + AC_MSG_RESULT(yes) + AC_CHECK_LIB(crypto,EVP_md5, + [ + SSL_LIBS=-lcrypto + ], + [ + AC_MSG_ERROR([SSL crypto library was requested, but is not available]) + ]) +else + AC_MSG_RESULT(no) +fi +AC_SUBST(SSL_LIBS) + +dnl kerberos check +AC_MSG_CHECKING(whether to use kerberos) + +AC_ARG_WITH(krb5, + AC_HELP_STRING( [--with-krb5@<:@=DIR@:>@], + [use kerberos (located in directory DIR, if supplied) to use in kerberos dissection @<:@default=yes@:>@]), +[ + if test $withval = no + then + want_krb5=no + elif test $withval = yes + then + want_krb5=yes + else + want_krb5=yes + krb5_dir=$withval + fi +],[ + # + # Use kerberos if specified, otherwise don't. + # + want_krb5=ifavailable + krb5_dir= +]) +if test "x$want_krb5" = "xno" ; then + AC_MSG_RESULT(no) +else + AC_MSG_RESULT(yes) + AC_WIRESHARK_KRB5_CHECK +fi + + +dnl c-ares Check +C_ARES_LIBS='' +AC_MSG_CHECKING(whether to use the c-ares library if available) + +AC_ARG_WITH(c-ares, + AC_HELP_STRING( [--with-c-ares@<:@=DIR@:>@], + [use c-ares (located in directory DIR, if supplied). Supersedes --with-adns. @<:@default=yes, if present@:>@]), +[ +if test "x$withval" = "xno"; then + want_c_ares=no +elif test "x$withval" = "xyes"; then + want_c_ares=yes +elif test -d "$withval"; then + want_c_ares=yes + AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib) +fi +]) +if test "x$want_c_ares" = "xno" ; then + AC_MSG_RESULT(no) +else + AC_MSG_RESULT(yes) + AC_WIRESHARK_C_ARES_CHECK +fi +AC_SUBST(C_ARES_LIBS) + +dnl ADNS Check +ADNS_LIBS='' +AC_MSG_CHECKING(whether to use the GNU ADNS library if available) + +AC_ARG_WITH(adns, + AC_HELP_STRING( [--with-adns@<:@=DIR@:>@], + [use GNU ADNS (located in directory DIR, if supplied). @<:@default=yes, if present@:>@]), +[ +if test "x$withval" = "xno"; then + want_adns=no +elif test "x$withval" = "xyes"; then + want_adns=yes +elif test -d "$withval"; then + want_adns=yes + AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib) +fi +]) +if test "x$want_adns" = "xno" -o "x$have_good_c_ares" = "xyes" ; then + AC_MSG_RESULT(no) +else + AC_MSG_RESULT(yes) + AC_WIRESHARK_ADNS_CHECK +fi +AC_SUBST(ADNS_LIBS) + +dnl GEOIP Check +GEOIP_LIBS='' +AC_MSG_CHECKING(whether to use the GeoIP IP address mapping library if available) + +AC_ARG_WITH(geoip, + AC_HELP_STRING( [--with-geoip@<:@=DIR@:>@], + [use GeoIP (located in directory DIR, if supplied). @<:@default=yes, if present@:>@]), +[ +if test "x$withval" = "xno"; then + want_geoip=no +elif test "x$withval" = "xyes"; then + want_geoip=yes +elif test -d "$withval"; then + want_geoip=yes + AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib) +fi +]) +if test "x$want_geoip" = "xno"; then + AC_MSG_RESULT(no) +else + AC_MSG_RESULT(yes) + AC_WIRESHARK_GEOIP_CHECK +fi +AC_SUBST(GEOIP_LIBS) + +dnl Python devel Check +AC_ARG_WITH(python, + AC_HELP_STRING( [--with-python@<:@=DIR@:>@], + [use python interpreter (installed in DIR, if supplied). @<:@default=yes@:>@ (EXPERIMENTAL)]), +[ +pythondir='${libdir}/wireshark/python/${VERSION}' +if test "x$withval" = "xno"; then + want_python=no +elif test "x$withval" != "xyes"; then + pythondir="$withval" + want_python=yes + AC_WIRESHARK_PYTHON_CHECK +else + want_python=yes + AC_WIRESHARK_PYTHON_CHECK +fi +]) +AM_CONDITIONAL(HAVE_LIBPY, test x$want_python = xyes) +AC_SUBST(pythondir) + +# +# Define WS_VAR_IMPORT appropriately for declarations of external +# variables exported from dynamically-linked libraries. +# +AC_DEFINE(WS_VAR_IMPORT, extern, [Define as the string to precede external variable declarations in dynamically-linked libraries]) + +# +# Define WS_MSVC_NORETURN appropriately for declarations of routines that +# never return (just like Charlie on the MTA). +# +# Note that MSVC++ expects __declspec(noreturn) to precede the function +# name and GCC, as far as I know, expects __attribute__((noreturn)) to +# follow the function name, so we need two different flavors of +# noreturn tag. +# +AC_DEFINE(WS_MSVC_NORETURN,, [Define as the string to precede declarations of routines that never return]) + +AC_ARG_ENABLE(airpcap, + AC_HELP_STRING( [--enable-airpcap], + [use airpcap in wireshark. @<:@default=yes@:>@]), + enable_airpcap=$enableval + if test x$enable_airpcap != xno; then + AC_DEFINE(HAVE_AIRPCAP, 1, [Enable AirPcap]) + fi +) +# +# Define HAVE_AIRPDCAP +# We'll want to remove this eventually. +# +AC_DEFINE(HAVE_AIRPDCAP, 1, [Enable AirPDcap (WPA/WPA2 decryption)]) + +dnl Checks for typedefs, structures, and compiler characteristics. +# AC_C_CONST + +# Check how we can get the time zone abbreviation +AC_WIRESHARK_TIMEZONE_ABBREV + +# We need to know whether "struct sockaddr" has an "sa_len" member +# for get_interface_list(). + +AC_WIRESHARK_STRUCT_SA_LEN + +# We must know our byte order +AC_C_BIGENDIAN + +# Checks whether "-traditional" is needed when using "ioctl". +# XXX - do we need this? +AC_PROG_GCC_TRADITIONAL + +GETOPT_LO="" +AC_CHECK_FUNC(getopt, + [GETOPT_LO="" + AC_DEFINE(HAVE_GETOPT, 1, [Define to 1 if you have the getopt function.]) + ], + GETOPT_LO="wsgetopt.lo" +) +if test "$ac_cv_func_getopt" = no ; then + GETOPT_LO="wsgetopt.lo" +fi +AM_CONDITIONAL(NEED_GETOPT_LO, test "x$ac_cv_func_getopt" = "xno") +AC_SUBST(GETOPT_LO) + +AC_CHECK_FUNC(strncasecmp, STRNCASECMP_LO="", + STRNCASECMP_LO="strncasecmp.lo") +if test "$ac_cv_func_strncasecmp" = no ; then + STRNCASECMP_LO="strncasecmp.lo" +fi +AM_CONDITIONAL(NEED_STRNCASECMP_LO, test "x$ac_cv_func_strncasecmp" = "xno") +AC_SUBST(STRNCASECMP_LO) + +AC_CHECK_FUNCS(mkstemp mkdtemp) + +AC_SEARCH_LIBS(inet_aton, [socket nsl], have_inet_aton=yes, + have_inet_aton=no) +if test "$have_inet_aton" = no; then + INET_ATON_LO="inet_aton.lo" + AC_DEFINE(NEED_INET_ATON_H, 1, [Define if inet/aton.h needs to be included]) +else + INET_ATON_LO="" +fi +AM_CONDITIONAL(NEED_INET_ATON_LO, test "x$have_inet_aton" = "xno") +AC_SUBST(INET_ATON_LO) + +AC_SEARCH_LIBS(inet_pton, [socket nsl], [ + dnl check for pre-BIND82 inet_pton() bug. + AC_MSG_CHECKING(for broken inet_pton) + AC_TRY_RUN([#include +#include +#include +#include +int main() +{ +#ifdef AF_INET6 + char buf[16]; + /* this should return 0 (error) */ + return inet_pton(AF_INET6, "0:1:2:3:4:5:6:7:", buf); +#else + return 1; +#endif +}], [AC_MSG_RESULT(ok); +have_inet_pton=yes], [AC_MSG_RESULT(broken); +have_inet_pton=no], [AC_MSG_RESULT(cross compiling, assume it is broken); +have_inet_pton=no])], +have_inet_pton=no) +if test "$have_inet_pton" = no; then + INET_PTON_LO="inet_pton.lo" +else + INET_PTON_LO="" +fi +AM_CONDITIONAL(NEED_INET_PTON_LO, test "x$have_inet_pton" = "xno") +AC_SUBST(INET_PTON_LO) + +AC_SEARCH_LIBS(inet_ntop, [socket nsl], [ + AC_MSG_CHECKING([for inet_ntop prototype]) + AC_TRY_COMPILE([#include +#include +#include +#include +#include + +extern const char *inet_ntop(int, const void *, char *, size_t);],, [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_INET_NTOP_PROTO, 1, + [Define if inet_ntop() prototype exists])], [ + AC_TRY_COMPILE([#include +#include +#include +#include +#include + +extern const char *inet_ntop(int, const void *, char *, socklen_t);],, [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_INET_NTOP_PROTO, 1, + [Define if inet_ntop() prototype exists])], [ + AC_MSG_RESULT(no)])]) + INET_NTOP_LO=""], [ + INET_NTOP_LO="inet_ntop.lo" + AC_DEFINE(NEED_INET_V6DEFS_H, 1, + [Define if inet/v6defs.h needs to be included])]) +AM_CONDITIONAL(NEED_INET_NTOP_LO, test "x$INET_NTOP_LO" != "x") +AC_SUBST(INET_NTOP_LO) + +AC_CHECK_FUNC(strptime, STRPTIME_LO="", + [STRPTIME_LO="strptime.lo" + AC_DEFINE(NEED_STRPTIME_H, 1, [Define if strptime.h needs to be included]) +]) +if test "$ac_cv_func_strptime" = no ; then + STRPTIME_LO="strptime.lo" +fi +AC_SUBST(STRPTIME_C) +AM_CONDITIONAL(NEED_STRPTIME_LO, test "x$ac_cv_func_strptime" = "no") +AC_SUBST(STRPTIME_LO) + +AC_CHECK_FUNCS(getprotobynumber gethostbyname2) +AC_CHECK_FUNCS(issetugid) +AC_CHECK_FUNCS(mmap mprotect sysconf) +AC_CHECK_FUNCS(strtoll) + +dnl blank for now, but will be used in future +AC_SUBST(wireshark_SUBDIRS) + +dnl +dnl check whether plugins should be enabled and, if they should be, +dnl check for plugins directory - stolen from Amanda's configure.in +dnl +dnl we don't wish to expand ${libdir} yet +plugindir='${libdir}/wireshark/plugins/${VERSION}' +AC_ARG_WITH(plugins, + AC_HELP_STRING( [--with-plugins@<:@=DIR@:>@], + [support plugins (installed in DIR, if supplied). @<:@default=yes, if possible@:>@]), +[ + if test "x$withval" = "xno"; then + have_plugins=no + elif test "x$have_plugins" = "xno"; then + AC_MSG_ERROR([GLib on this platform doesn't support loadable modules, so you can't enable plugins.]) + elif test "x$withval" != "xyes"; then + plugindir="$withval" + fi +]) +AM_CONDITIONAL(HAVE_PLUGINS, test "x$have_plugins" = "xyes") +if test x$have_plugins = xyes +then + AC_DEFINE(HAVE_PLUGINS, 1, [Define if plugins are enabled]) +fi +AC_SUBST(plugindir) +CPPFLAGS="$CPPFLAGS '-DPLUGIN_DIR=\"\$(plugindir)\"'" + +# +# The plugin dissectors reside in ./plugins/PROTO/ +# +PLUGIN_LIBS="" +AC_SUBST(PLUGIN_LIBS) + +dnl libtool defs +# +# Yes, AM_PROG_LIBTOOL is redundant with newer version(s) of some tool(s) +# (autoconf? automake? libtool?) - with the newer version(s), it's +# just an alias for AC_PROG_LIBTOOL, which is called earlier. +# +# With older version(s) of those tool(s), however, it's not just an +# alias, and the configure scripts don't work without it. +# +AM_PROG_LIBTOOL +AC_SUBST(LIBTOOL_DEPS) + +AM_CONDITIONAL(ENABLE_STATIC, test x$enable_static = xyes) +if test x$enable_static = xyes -a x$have_plugins = xyes +then + AC_DEFINE(ENABLE_STATIC, 1, [Link plugins statically into Wireshark]) +fi +AC_SUBST(ENABLE_STATIC) + +dnl Save the cacheable configure results to config.cache before recursing +AC_CACHE_SAVE + +sinclude(plugins/Custom.m4) dnl +ifdef(_CUSTOM_AC_OUTPUT_,, define(_CUSTOM_AC_OUTPUT_, )) dnl + +AM_CONFIG_HEADER(config.h) +AC_OUTPUT( + Makefile + doxygen.cfg + asn1/Makefile + asn1/acp133/Makefile + asn1/acse/Makefile + asn1/ansi_map/Makefile + asn1/ansi_tcap/Makefile + asn1/camel/Makefile + asn1/cdt/Makefile + asn1/charging_ase/Makefile + asn1/cmip/Makefile + asn1/cmp/Makefile + asn1/crmf/Makefile + asn1/cms/Makefile + asn1/dap/Makefile + asn1/disp/Makefile + asn1/dop/Makefile + asn1/dsp/Makefile + asn1/ess/Makefile + asn1/ftam/Makefile + asn1/gnm/Makefile + asn1/goose/Makefile + asn1/gprscdr/Makefile + asn1/gsm_map/Makefile + asn1/h225/Makefile + asn1/h235/Makefile + asn1/h245/Makefile + asn1/h248/Makefile + asn1/h282/Makefile + asn1/h283/Makefile + asn1/h323/Makefile + asn1/h450/Makefile + asn1/h450-ros/Makefile + asn1/h460/Makefile + asn1/h501/Makefile + asn1/HI2Operations/Makefile + asn1/hnbap/Makefile + asn1/idmp/Makefile + asn1/inap/Makefile + asn1/kerberos/Makefile + asn1/ldap/Makefile + asn1/logotypecertextn/Makefile + asn1/lte-rrc/Makefile + asn1/mms/Makefile + asn1/mpeg-audio/Makefile + asn1/mpeg-pes/Makefile + asn1/nbap/Makefile + asn1/ns_cert_exts/Makefile + asn1/ocsp/Makefile + asn1/p1/Makefile + asn1/p22/Makefile + asn1/p7/Makefile + asn1/p772/Makefile + asn1/pcap/Makefile + asn1/pkcs1/Makefile + asn1/pkcs12/Makefile + asn1/pkinit/Makefile + asn1/pkixac/Makefile + asn1/pkix1explicit/Makefile + asn1/pkix1implicit/Makefile + asn1/pkixproxy/Makefile + asn1/pkixqualified/Makefile + asn1/pkixtsp/Makefile + asn1/pres/Makefile + asn1/q932/Makefile + asn1/q932-ros/Makefile + asn1/qsig/Makefile + asn1/ranap/Makefile + asn1/rnsap/Makefile + asn1/ros/Makefile + asn1/rrc/Makefile + asn1/rrlp/Makefile + asn1/rtse/Makefile + asn1/rua/Makefile + asn1/s1ap/Makefile + asn1/sabp/Makefile + asn1/smrse/Makefile + asn1/snmp/Makefile + asn1/spnego/Makefile + asn1/sv/Makefile + asn1/t125/Makefile + asn1/t38/Makefile + asn1/tcap/Makefile + asn1/tetra/Makefile + asn1/ulp/Makefile + asn1/wlancertextn/Makefile + asn1/x2ap/Makefile + asn1/x509af/Makefile + asn1/x509ce/Makefile + asn1/x509if/Makefile + asn1/x509sat/Makefile + asn1/x721/Makefile + doc/Makefile + docbook/Makefile + epan/Makefile + epan/crc/Makefile + epan/crypt/Makefile + epan/doxygen.cfg + epan/dfilter/Makefile + epan/dissectors/Makefile + epan/dissectors/dcerpc/Makefile + epan/dissectors/pidl/Makefile + epan/ftypes/Makefile + epan/wslua/Makefile + epan/wspython/Makefile + codecs/Makefile + gtk/Makefile + gtk/doxygen.cfg + help/Makefile + packaging/Makefile + packaging/macosx/Info.plist + packaging/macosx/Makefile + packaging/nsis/Makefile + packaging/rpm/Makefile + packaging/rpm/SPECS/Makefile + packaging/rpm/SPECS/wireshark.spec + packaging/svr4/Makefile + packaging/svr4/checkinstall + packaging/svr4/pkginfo + plugins/Makefile + plugins/asn1/Makefile + plugins/docsis/Makefile + plugins/ethercat/Makefile + plugins/giop/Makefile + plugins/gryphon/Makefile + plugins/interlink/Makefile + plugins/irda/Makefile + plugins/m2m/Makefile + plugins/mate/Makefile + plugins/opcua/Makefile + plugins/profinet/Makefile + plugins/sercosiii/Makefile + plugins/stats_tree/Makefile + plugins/unistim/Makefile + plugins/wimax/Makefile + plugins/wimaxasncp/Makefile + tools/Makefile + tools/idl2wrs.sh + tools/lemon/Makefile + wiretap/Makefile + wsutil/Makefile + _CUSTOM_AC_OUTPUT_ + ,) +dnl AC_CONFIG_FILES([tools/setuid-root.pl], [chmod +x tools/setuid-root.pl]) + + + +# Pretty messages + +if test "x$enable_setcap_install" = "xyes" ; then + setcap_message="yes" +else + setcap_message="no" +fi + + +if test "x$enable_setuid_install" = "xyes" ; then + setuid_message="yes" +else + setuid_message="no" +fi + +if test "x$DUMPCAP_GROUP" = "x" ; then + dumpcap_group_message="(none)" +else + dumpcap_group_message="$DUMPCAP_GROUP" +fi + +if test "x$want_zlib" = "xno" ; then + zlib_message="no" +else + zlib_message="yes" +fi + +if test "x$want_pcre" = "xno" ; then + if test $have_gregex = yes + then + pcre_message="no (using GRegex instead)" + else + pcre_message="no" + fi +else + pcre_message="yes" +fi + +if test "x$want_lua" = "xyes" ; then + lua_message="yes" +else + lua_message="no" +fi + +if test "x$want_python" = "xyes"; then + python_message="yes" +else + python_message="no" +fi + +if test "x$want_portaudio" = "xyes" ; then + portaudio_message="yes" +else + portaudio_message="no" +fi + +if test "x$want_ssl" = "xno" ; then + ssl_message="no" +else + ssl_message="yes" +fi + +if test "x$want_krb5" = "xno" ; then + krb5_message="no" +else + krb5_message="yes ($ac_krb5_version)" +fi + +if test "x$have_good_c_ares" = "xyes" ; then + c_ares_message="yes" +else + c_ares_message="no" +fi + +if test "x$have_good_adns" = "xyes" ; then + adns_message="yes" +else + if test "x$have_good_c_ares" = "xyes" ; then + adns_message="no (using c-ares instead)" + else + adns_message="no" + fi +fi + +if test "x$have_good_libcap" = "xyes" ; then + libcap_message="yes" +else + libcap_message="no" +fi + +if test "x$have_good_geoip" = "xyes" ; then + geoip_message="yes" +else + geoip_message="no" +fi + +echo "" +echo "The Wireshark package has been configured with the following options." +echo " Build wireshark : $enable_wireshark" +echo " Build tshark : $enable_tshark" +echo " Build capinfos : $enable_capinfos" +echo " Build editcap : $enable_editcap" +echo " Build dumpcap : $enable_dumpcap" +echo " Build mergecap : $enable_mergecap" +echo " Build text2pcap : $enable_text2pcap" +echo " Build idl2wrs : $enable_idl2wrs" +echo " Build randpkt : $enable_randpkt" +echo " Build dftest : $enable_dftest" +echo " Build rawshark : $enable_rawshark" +echo "" +echo " Install dumpcap with capabilities : $setcap_message" +echo " Install dumpcap setuid : $setuid_message" +echo " Use dumpcap group : $dumpcap_group_message" +echo " Use plugins : $have_plugins" +echo " Use lua library : $lua_message" +echo " Use python binding : $python_message" +echo " Build rtp_player : $portaudio_message" +echo " Use threads : $enable_threads" +echo " Build profile binaries : $enable_profile_build" +echo " Use pcap library : $want_pcap" +echo " Use zlib library : $zlib_message" +echo " Use pcre library : $pcre_message" +echo " Use kerberos library : $krb5_message" +echo " Use c-ares library : $c_ares_message" +echo " Use GNU ADNS library : $adns_message" +echo " Use SMI MIB library : $libsmi_message" +echo " Use GNU crypto library : $gcrypt_message" +echo " Use SSL crypto library : $ssl_message" +echo " Use IPv6 name resolution : $enable_ipv6" +echo " Use gnutls library : $tls_message" +echo " Use POSIX capabilities library : $libcap_message" +echo " Use GeoIP library : $geoip_message" diff --git a/application/tool/wireshark/1.6.5/oct_readme.txt b/application/tool/wireshark/1.6.5/oct_readme.txt new file mode 100644 index 0000000..b4dca5c --- /dev/null +++ b/application/tool/wireshark/1.6.5/oct_readme.txt @@ -0,0 +1,101 @@ +// Can't create link because WS makefile use relative path +cd /pub/dev.wireshark/1.2.6/wireshark-1.2.6/plugins + +// Copy GOOSE plugins +cp /mnt/goose/application/tool/wireshark/plugins/octasic octasic + +**************************** +cd /pub/dev.wireshark/1.2.6/wireshark-1.2.6 + +Modify file: configure.in + to allow plugin version to related OCTVC1 build version. + - Added + + #PPMODIF + # + AC_MSG_CHECKING([whether a TGT_VERSION was specified]) + AC_ARG_WITH([version], + AS_HELP_STRING([--with-version=@<:@*@:>@], + [Specify Target version @<:@default=1.3.1@:>@]), + with_version="$withval", with_version="1.3.2") + AC_SUBST(TGT_VERSION, [$with_version]) + AC_MSG_RESULT(TGT_VERSION=$TGT_VERSION) + # + AC_MSG_CHECKING([whether OCT_PATH was specified]) + AC_ARG_WITH([oct_path], + AS_HELP_STRING([--with-oct_path=@<:@*@:>@], + [Specify Octasic path @<:@default=/mnt/goose@:>@]), + with_oct_path="$withval", with_oct_path="/mnt/goose") + AC_SUBST(OCT_PATH, [$with_oct_path]) + AC_MSG_RESULT(OCT_PATH=$OCT_PATH) + #PPMODIF + + AFTER:# Check for doxygen + +Modify file: configure.in + +find AC_OUTPUT= + +ADD + plugins/octasic/oct1010db_ws/Makefile + plugins/octasic/octmfa_ws/Makefile + plugins/octasic/octpkt_ws/Makefile + plugins/octasic/rfc4175_yuv_ws/Makefile + octvc1_place_holder + +replace + octvc1_place_holder + by + plugins/octasic/vocallo_mgw/octvocnet_ws/Makefile + plugins/octasic/vocallo_mgw/octvc1/Makefile + +with ant + +**************************** +cd /pub/dev.wireshark/1.2.6/wireshark-1.2.6/plugins + +Modify file: Makefile.am + // remove all plugin under + SUBDIRS = $(_CUSTOM_SUBDIRS_) \ + + // Added + octasic/oct1010db_ws + octasic/octmfa_ws + octasic/octpkt_ws + octasic/rfc4175_yuv_ws + octvc1_place_holder + + ... + + + + +replace + octvc1_place_holder + by + plugins/octasic/vocallo_mgw/octvocnet_ws/Makefile + plugins/octasic/vocallo_mgw/octvc1/Makefile + +with ant + + +**************************** +# For new plugins +cp /pub/dev.wireshark/1.2.6/wireshark-1.2.6/plugins/octasic/octpkt_ws/Makefile.am /pub/dev.wireshark/1.2.6/wireshark-1.2.6/plugins/octasic/newplugi_dir/Makefile.am +cp /pub/dev.wireshark/1.2.6/wireshark-1.2.6/plugins/octasic/octpkt_ws/Makefile.common /pub/dev.wireshark/1.2.6/wireshark-1.2.6/plugins/octasic/newplugi_dir/Makefile.common +.. +update file list and pkg name. + +**************************** +Making Wireshark plugins: + +cd /pub/dev.wireshark/1.2.6/wireshark-1.2.6 +./autogen.sh + +===> OCTVC1 Pkg Version +===> OCTASIC PATH in /mnt/goose +./configure --with-version=1.4.0.1-PR --with-oct_path=/mnt/goose + +make install ==> Result is /usr/local/lib/wireshark/plugins/1.2.6 + + diff --git a/application/tool/wireshark/plugins/Makefile.am b/application/tool/wireshark/plugins/Makefile.am new file mode 100644 index 0000000..28045fe --- /dev/null +++ b/application/tool/wireshark/plugins/Makefile.am @@ -0,0 +1,54 @@ +# Makefile.am +# Automake file for Wireshark plugins +# +# $Id: Makefile.am 27506 2009-02-22 12:01:19Z jake $ +# +# Wireshark - Network traffic analyzer +# By Gerald Combs +# Copyright 1998 Gerald Combs +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# 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 General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +-include Custom.make +SUBDIRS = $(_CUSTOM_SUBDIRS_) \ + asn1 \ + docsis \ + ethercat \ + giop \ + gryphon \ + irda \ + m2m \ + mate \ + opcua \ + profinet \ + sercosiii \ + stats_tree \ + unistim \ + wimax \ + wimaxasncp + +plugindir = @plugindir@ + +EXTRA_DIST = \ + Makefile.nmake + +MAINTAINERCLEANFILES = \ + Makefile.in + +checkapi: + for i in $(SUBDIRS); do \ + (cd "$$i"; $(MAKE) checkapi); \ + done + diff --git a/application/tool/wireshark/plugins/octasic/MakeRules.nmake b/application/tool/wireshark/plugins/octasic/MakeRules.nmake new file mode 100644 index 0000000..561a62e --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/MakeRules.nmake @@ -0,0 +1,150 @@ +# Makefile.nmake +# nmake file for Wireshark plugin +# +# $Id: Makefile.nmake 24520 2008-03-01 12:31:01Z jake $ +# + +!IF "$(DEBUG)" == "1" +OUT_DIR=Debug_$(TGT_WS_VERSION) +!ELSE +OUT_DIR=Release_$(TGT_WS_VERSION) +!ENDIF +!IFNDEF WS_ROOT +WS_ROOT=../../.. +!ENDIF + +OUT_PATH=$(OUT_DIR)/ + +CFLAGS=/DHAVE_CONFIG_H /I$(WIRESHARK_LIBS)/../ $(GLIB_CFLAGS) \ + /I $(WS_ROOT)/$(TGT_WS_VERSION)/ \ + /I$(OCT_INC) \ + /I$(OCT_INC)/octpkt \ +!IF EXIST("$(OCT_INC)/octcodec") + /I$(OCT_INC)/octcodec \ +!ENDIF + /I$(OCT_INC)/vocallo \ +!IF EXIST("$(OCT_INC)/../octmfa_api/include") + /I$(OCT_INC)/../octmfa_api/include \ +!ENDIF + /I$(PCAP_DIR)\include -D_U_="" $(LOCAL_CFLAGS) + +LDFLAGS = $(PLUGIN_LDFLAGS) + +!IFDEF ENABLE_LIBWIRESHARK +LINK_PLUGIN_WITH=$(WIRESHARK_LIBS)/../epan/libwireshark.lib +CFLAGS=/DHAVE_WIN32_LIBWIRESHARK_LIB /D_NEED_VAR_IMPORT_ $(CFLAGS) +!ENDIF + +{$(SRC_PATH)}.c{$(OUT_PATH)}.obj:: + @$(CC) $(CFLAGS) -Fd$(OUT_PATH) -Fo$(OUT_PATH) -c $< + +!IFNDEF DISSECTOR_OBJ_PATH +!IF "$(DEBUG)" == "1" +DISSECTOR_OBJ_PATH = $(DISSECTOR_SRC:source=Debug) +#!ELSE +DISSECTOR_OBJ_PATH = $(DISSECTOR_SRC:source=Release) +!ENDIF +!ENDIF + +DISSECTOR_OBJECTS = $(DISSECTOR_OBJ_PATH:.c=.obj) +DISSECTOR_SUPPORT_OBJECTS = $(DISSECTOR_SUPPORT_SRC:.c=.obj) +DLL_NAME=$(PLUGIN_NAME) + +OBJECTS = $(DISSECTOR_OBJECTS) $(DISSECTOR_SUPPORT_OBJECTS) $(OUT_PATH)plugin.obj + +RESOURCE=$(OUT_PATH)$(PLUGIN_NAME).res + +WIRESHARK_PLUGING_DEST_EXIST = 0 +!IF EXIST( "$(WIRESHARK_PLUGING_DEST)") +WIRESHARK_PLUGING_DEST_EXIST = 1 +!ENDIF + +!if defined( NO_TGT_VERSION ) +LOCAL_CFLAGS=/DNO_TGT_VERSION=$(NO_TGT_VERSION) $(LOCAL_CFLAGS) +!endif + + +all: $(OUT_PATH)$(DLL_NAME).dll + +$(OUT_DIR) : + @if not exist "$(OUT_DIR)/$(NULL)" mkdir "$(OUT_DIR)" + +$(OUT_PATH)$(PLUGIN_NAME).rc : + -@sed -e s/@PLUGIN_NAME@/$(PLUGIN_NAME)/ \ + -e s/@RC_MODULE_VERSION@/$(RC_MODULE_VERSION)/ \ + -e s/@RC_VERSION@/$(RC_VERSION)/ \ + -e s/@MODULE_VERSION@/$(MODULE_VERSION)/ \ + -e s/@PACKAGE@/$(PACKAGE)/ \ + -e s/@VERSION@/$(VERSION)/ \ + -e s/@INTERNAL_NAME@/$(RC_INTERNAL_NAME)/ \ + -e s/@MSVC_VARIANT@/$(MSVC_VARIANT)/ \ + < $(WS_ROOT)\plugins\octasic\plugin.rc.in > $@ +# @copy source\$(PLUGIN_NAME).rc $(OUT_DIR)\$(PLUGIN_NAME).rc + +$(OUT_PATH)$(DLL_NAME).dll $(OUT_PATH)$(PLUGIN_NAME).exp $(OUT_PATH)$(DLL_NAME).lib : $(OUT_DIR) $(OBJECTS) $(LINK_PLUGIN_WITH) $(RESOURCE) + @link -dll /out:$(OUT_PATH)$(DLL_NAME).dll $(LDFLAGS) $(OBJECTS) $(LINK_PLUGIN_WITH) \ + $(GLIB_LIBS) $(RESOURCE) + +# +# Build plugin.c, which contains the plugin version[] string, a +# function plugin_register() that calls the register routines for all +# protocols, and a function plugin_reg_handoff() that calls the handoff +# registration routines for all protocols. +# +# We do this by scanning sources. If that turns out to be too slow, +# maybe we could just require every .o file to have an register routine +# of a given name (packet-aarp.o -> proto_register_aarp, etc.). +# +# Formatting conventions: The name of the proto_register_* routines an +# proto_reg_handoff_* routines must start in column zero, or must be +# preceded only by "void " starting in column zero, and must not be +# inside #if. +# +# DISSECTOR_SRC is assumed to have all the files that need to be scanned. +# +# For some unknown reason, having a big "for" loop in the Makefile +# to scan all the files doesn't work with some "make"s; they seem to +# pass only the first few names in the list to the shell, for some +# reason. +# +# Therefore, we have a script to generate the plugin.c file. +# The shell script runs slowly, as multiple greps and seds are run +# for each input file; this is especially slow on Windows. Therefore, +# if Python is present (as indicated by PYTHON being defined), we run +# a faster Python script to do that work instead. +# +# The first argument is the directory in which the source files live. +# The second argument is "plugin", to indicate that we should build +# a plugin.c file for a plugin. +# All subsequent arguments are the files to scan. +# +#!IFDEF PYTHON +#plugin.c: $(DISSECTOR_SRC) moduleinfo.h ../../tools/make-dissector-reg.py +# @echo Making plugin.c (using python) +# @$(PYTHON) "../../tools/make-dissector-reg.py" . plugin $(DISSECTOR_SRC) +#!ELSE +#plugin.c: $(DISSECTOR_SRC) moduleinfo.h ../../tools/make-dissector-reg +# @echo Making plugin.c (using sh) +# @$(SH) ../../tools/make-dissector-reg . plugin $(DISSECTOR_SRC) +#!ENDIF + + +clean: + -@ erase /Q "$(OUT_PATH)\*.*" + +install: +! IF $(WIRESHARK_PLUGING_DEST_EXIST)==0 +! MESSAGE +++++++++++++++++++++++++++++++++++++++++++++++++++++++ +! MESSAGE Pluging path "$(WIRESHARK_PLUGING_DEST)" does not exist +! MESSAGE Please install WIRESHARK VERSION $(WIRESHARK_RELEASE) +! MESSAGE +++++++++++++++++++++++++++++++++++++++++++++++++++++++ +! ERROR +! ELSE + @del "$(WIRESHARK_PLUGING_DEST)\$(PLUGIN_NAME)*.dll" + @xcopy /Q $(OUT_DIR)\$(DLL_NAME).dll "$(WIRESHARK_PLUGING_DEST)" /Y +! ENDIF + +package: + @cd ../packaging/nsis + @$(MAKENSIS) /DVER_MAJOR=$(MODULE_VERSION_MAJOR) /DVER_MINOR=$(MODULE_VERSION_MINOR) /DVER_REVISION=$(MODULE_VERSION_MICRO) /DVER_BUILD=$(MODULE_VERSION_EXTRA) /DTGT_VERSION=$(TGT_VERSION) /DTGT_WS_VERSION=$(TGT_WS_VERSION) octvoc_ws.nsi + @cd $(MAKEDIR) diff --git a/application/tool/wireshark/plugins/octasic/include/oct_ws_macro.h b/application/tool/wireshark/plugins/octasic/include/oct_ws_macro.h new file mode 100644 index 0000000..88f1c77 --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/include/oct_ws_macro.h @@ -0,0 +1,67 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: oct_ws_macro.c + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: Wireshark macro + +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: 4 $ + + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#ifndef __OCT_WS_MACRO_H__ +#define __OCT_WS_MACRO_H__ + +/***************************** INCLUDE FILES *******************************/ +#include +#include + +/***************************** DEFINES **************************************/ +#ifndef UNUSED +#ifdef __GNUC__ +# define UNUSED(x) UNUSED_ ## x __attribute__((__unused__)) +#else +# define UNUSED(x) UNUSED_ ## x +#endif +#endif + +#ifndef UNUSED_FUNCTION +#ifdef __GNUC__ +# define UNUSED_FUNCTION(x) __attribute__((__unused__)) UNUSED_ ## x +#else +# define UNUSED_FUNCTION(x) UNUSED_ ## x +#endif +#endif + +#define mWS_RED_COMPONENT(x) (guint16) (((((x) >> 16) & 0xff) * 65535 / 255)) +#define mWS_GREEN_COMPONENT(x) (guint16) (((((x) >> 8) & 0xff) * 65535 / 255)) +#define mWS_BLUE_COMPONENT(x) (guint16) ( (((x) & 0xff) * 65535 / 255)) + +#define mWS_FIELDSIZE( type, field) (sizeof(((type *)0)->field)) +#define mWS_FIELDOFFSET(type, field) ((guint32)&(((type *)0)->field)) +#define mWS_COUNTOF(array) (sizeof(array)/sizeof(array[0])) + +#if defined(VERSION_MAJOR) && (VERSION_MAJOR > 1 || (VERSION_MAJOR == 1 && VERSION_MINOR > 8)) +#define OCT_MATCH_STRVAL_IDX(a,b,c) try_val_to_str_idx(a,b,c) +#else +#define OCT_MATCH_STRVAL_IDX(a,b,c) match_strval_idx(a,b,c) +#define dissector_add_uint(a,b,c) dissector_add(a,b,c) +#endif + +#endif /* __OCT_WS_MACRO_H__ */ diff --git a/application/tool/wireshark/plugins/octasic/include/oct_ws_priv.h b/application/tool/wireshark/plugins/octasic/include/oct_ws_priv.h new file mode 100644 index 0000000..c38b2c3 --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/include/oct_ws_priv.h @@ -0,0 +1,45 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: oct_ws_priv.c + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: Wireshark private data + +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: 4 $ + + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#ifndef __OCT_WS_PRIV_H__ +#define __OCT_WS_PRIV_H__ + +/***************************** INCLUDE FILES *******************************/ + +/***************************** DEFINES **************************************/ +typedef struct +{ + guint16 total_packet_size; + guint16 pktHdt_size; + guint8 api_type; + guint8 format; /* PktFormat */ + guint8 trace_flag; + guint16 padding; + +}tOctWsPrivateData; + +#endif /* __OCT_WS_PRIV_H__ */ diff --git a/application/tool/wireshark/plugins/octasic/include/oct_ws_version.h b/application/tool/wireshark/plugins/octasic/include/oct_ws_version.h new file mode 100644 index 0000000..990fa8f --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/include/oct_ws_version.h @@ -0,0 +1,40 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: oct_ws_version.c + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: Octasic plugin version + +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: 4 $ + + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#ifndef __OCT_WS_VERSION_H__ +#define __OCT_WS_VERSION_H__ + +/***************************** INCLUDE FILES *******************************/ + +/***************************** DEFINES **************************************/ +#define NO_TGT_VERSION + + +/***************************** DEFINES **************************************/ + + +#endif /* __OCT_WS_VERSION_H__ */ diff --git a/application/tool/wireshark/plugins/octasic/octpkt_ws/Makefile.am b/application/tool/wireshark/plugins/octasic/octpkt_ws/Makefile.am new file mode 100644 index 0000000..b12ba6e --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octpkt_ws/Makefile.am @@ -0,0 +1,104 @@ +# Makefile.am + +OCT_INC = $(OCT_PATH)/software/include +INCLUDES = -I$(top_srcdir) -I$(includedir) -I$(OCT_INC) -I$(OCT_INC)/vocallo -I$(OCT_INC)/octpkt + +include Makefile.common + +#if HAVE_WARNINGS_AS_ERRORS +#AM_CFLAGS = -Werror +#endif + + +AM_CFLAGS=-DTGT_VERSION=$(TGT_VERSION) -DMODULE_VERSION=$(MODULE_VERSION) + +plugindir = @plugindir@ + +plugin_LTLIBRARIES = octpkt_ws.la +octpkt_ws_la_SOURCES = \ + source/plugin.c \ + include/moduleinfo.h \ + $(DISSECTOR_SRC) \ + $(DISSECTOR_INCLUDES) +octpkt_ws_la_LDFLAGS = -module -avoid-version +octpkt_ws_la_LIBADD = @PLUGIN_LIBS@ + +# Libs must be cleared, or else libtool won't create a shared module. +# If your module needs to be linked against any particular libraries, +# add them here. +LIBS = + +# +# Build plugin.c, which contains the plugin version[] string, a +# function plugin_register() that calls the register routines for all +# protocols, and a function plugin_reg_handoff() that calls the handoff +# registration routines for all protocols. +# +# We do this by scanning sources. If that turns out to be too slow, +# maybe we could just require every .o file to have an register routine +# of a given name (packet-aarp.o -> proto_register_aarp, etc.). +# +# Formatting conventions: The name of the proto_register_* routines an +# proto_reg_handoff_* routines must start in column zero, or must be +# preceded only by "void " starting in column zero, and must not be +# inside #if. +# +# DISSECTOR_SRC is assumed to have all the files that need to be scanned. +# +# For some unknown reason, having a big "for" loop in the Makefile +# to scan all the files doesn't work with some "make"s; they seem to +# pass only the first few names in the list to the shell, for some +# reason. +# +# Therefore, we have a script to generate the plugin.c file. +# The shell script runs slowly, as multiple greps and seds are run +# for each input file; this is especially slow on Windows. Therefore, +# if Python is present (as indicated by PYTHON being defined), we run +# a faster Python script to do that work instead. +# +# The first argument is the directory in which the source files live. +# The second argument is "plugin", to indicate that we should build +# a plugin.c file for a plugin. +# All subsequent arguments are the files to scan. +# +plugin.c: $(DISSECTOR_SRC) $(top_srcdir)/tools/make-dissector-reg \ + $(top_srcdir)/tools/make-dissector-reg.py + @if test -n "$(PYTHON)"; then \ + echo Making plugin.c with python ; \ + $(PYTHON) $(top_srcdir)/tools/make-dissector-reg.py $(srcdir) \ + plugin $(DISSECTOR_SRC) ; \ + else \ + echo Making plugin.c with shell script ; \ + $(top_srcdir)/tools/make-dissector-reg $(srcdir) \ + $(plugin_src) plugin $(DISSECTOR_SRC) ; \ + fi + +# +# Currently plugin.c can be included in the distribution because +# we always build all protocol dissectors. We used to have to check +# whether or not to build the snmp dissector. If we again need to +# variably build something, making plugin.c non-portable, uncomment +# the dist-hook line below. +# +# Oh, yuk. We don't want to include "plugin.c" in the distribution, as +# its contents depend on the configuration, and therefore we want it +# to be built when the first "make" is done; however, Automake insists +# on putting *all* source into the distribution. +# +# We work around this by having a "dist-hook" rule that deletes +# "plugin.c", so that "dist" won't pick it up. +# +#dist-hook: +# @rm -f $(distdir)/plugin.c + +CLEANFILES = \ + octpkt_ws \ + *~ + +MAINTAINERCLEANFILES = \ + Makefile.in \ + source/plugin.c + +EXTRA_DIST = \ + Makefile.common \ + Makefile.nmake diff --git a/application/tool/wireshark/plugins/octasic/octpkt_ws/Makefile.common b/application/tool/wireshark/plugins/octasic/octpkt_ws/Makefile.common new file mode 100644 index 0000000..87b3516 --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octpkt_ws/Makefile.common @@ -0,0 +1,40 @@ +# Makefile.common for Gryphon plugin +# Contains the stuff from Makefile.am and Makefile.nmake that is +# a) common to both files and +# b) portable between both files +# +# $Id: Makefile.common 27491 2009-02-21 16:33:48Z jake $ +# +# Wireshark - Network traffic analyzer +# By Gerald Combs +# Copyright 1998 Gerald Combs +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# 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 General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# the name of the plugin +PLUGIN_NAME = octpkt_ws + +# the dissector sources (without any helpers) +DISSECTOR_SRC = \ + source/octpkt.c + +# corresponding headers +DISSECTOR_INCLUDES = + +# Dissector helpers. They're included in the source files in this +# directory, but they're not dissectors themselves, i.e. they're not +# used to generate "plugin.c". +DISSECTOR_SUPPORT_SRC = + diff --git a/application/tool/wireshark/plugins/octasic/octpkt_ws/Makefile.nmake b/application/tool/wireshark/plugins/octasic/octpkt_ws/Makefile.nmake new file mode 100644 index 0000000..31d6114 --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octpkt_ws/Makefile.nmake @@ -0,0 +1,58 @@ +# Makefile.nmake +# nmake file for Wireshark plugin +# +# $Id: Makefile.nmake 24520 2008-03-01 12:31:01Z jake $ +# + +!include ..\..\..\$(TGT_WS_VERSION)\config.nmake + +# The name +PACKAGE=octpkt + +# The version +!IF "$(MODULE_VERSION_MAJOR)" == "" +MODULE_VERSION_MAJOR=1 +!ENDIF +!IF "$(MODULE_VERSION_MINOR)" == "" +MODULE_VERSION_MINOR=0 +!ENDIF +!IF "$(MODULE_VERSION_MICRO)" == "" +MODULE_VERSION_MICRO=1 +!ENDIF +!IF "$(MODULE_VERSION_EXTRA)" == "" +MODULE_VERSION_EXTRA=0 +!ENDIF + + +# +# The RC_VERSION should be comma-separated, not dot-separated, +# as per Graham Bloice's message in +# +# http://www.ethereal.com/lists/ethereal-dev/200303/msg00283.html +# +# "The RC_VERSION variable in config.nmake should be comma separated. +# This allows the resources to be built correctly and the version +# number to be correctly displayed in the explorer properties dialog +# for the executables, and XP's tooltip, rather than 0.0.0.0." +# + +MODULE_VERSION=$(MODULE_VERSION_MAJOR)_$(MODULE_VERSION_MINOR)_$(MODULE_VERSION_MICRO)_$(MODULE_VERSION_EXTRA) +RC_MODULE_VERSION=$(MODULE_VERSION_MAJOR),$(MODULE_VERSION_MINOR),$(MODULE_VERSION_MICRO),$(MODULE_VERSION_EXTRA) + +# the name of the plugin +PLUGIN_NAME = octpkt_ws + + +# the dissector sources (without any helpers) +SRC_PATH=source +DISSECTOR_SRC = source/octpkt.c + +!IF "$(TGT_VERSION)" != "" +LOCAL_CFLAGS=/DTGT_VERSION=$(TGT_VERSION) /DMODULE_VERSION=$(MODULE_VERSION) $(LOCAL_CFLAGS) +RC_INTERNAL_NAME="Base on $(PACKAGE) version $(TGT_VERSION)" +!ELSE +LOCAL_CFLAGS=/DMODULE_VERSION=$(MODULE_VERSION) $(LOCAL_CFLAGS) +RC_INTERNAL_NAME="Base on $(PACKAGE) version $(MODULE_VERSION)" +!ENDIF + +include ..\MakeRules.nmake \ No newline at end of file diff --git a/application/tool/wireshark/plugins/octasic/octpkt_ws/Release_1.6.5/octpkt.obj b/application/tool/wireshark/plugins/octasic/octpkt_ws/Release_1.6.5/octpkt.obj new file mode 100644 index 0000000000000000000000000000000000000000..e9eb7a6a58f19cf324ceb6099bde415880e81260 GIT binary patch literal 24873 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 U4V_5`dw7rR>2&*fukM7MKhgxXegFUf literal 0 HcmV?d00001 diff --git a/application/tool/wireshark/plugins/octasic/octpkt_ws/Release_1.6.5/octpkt_ws.pdb b/application/tool/wireshark/plugins/octasic/octpkt_ws/Release_1.6.5/octpkt_ws.pdb new file mode 100644 index 0000000000000000000000000000000000000000..b3752c38815e9ada38b09e1cc4c468b73a9c8c8d GIT binary patch literal 240640 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⪙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 literal 0 HcmV?d00001 diff --git a/application/tool/wireshark/plugins/octasic/octpkt_ws/Release_1.6.5/plugin.obj b/application/tool/wireshark/plugins/octasic/octpkt_ws/Release_1.6.5/plugin.obj new file mode 100644 index 0000000000000000000000000000000000000000..eb393c6cb059f0472ea389783c8b7fcd45986612 GIT binary patch literal 13132 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 D@k3@H literal 0 HcmV?d00001 diff --git a/application/tool/wireshark/plugins/octasic/octpkt_ws/include/moduleinfo.h b/application/tool/wireshark/plugins/octasic/octpkt_ws/include/moduleinfo.h new file mode 100644 index 0000000..55c9627 --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octpkt_ws/include/moduleinfo.h @@ -0,0 +1,56 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: moduleinfo.h + +$Octasic_Copyright: $ + +Description: Included *after* config.h, in order to re-define these macros + +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 . + +$Octasic_Release: $ + +$Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#include "../../include/oct_ws_version.h" + +#ifdef PACKAGE +#undef PACKAGE +#endif + +/* Name of package */ +#define PACKAGE "octpkt" + + +#ifdef VERSION +#undef VERSION +#endif + +#ifndef MODULE_VERSION +#define MODULE_VERSION 0_0_1_DEV +#endif + +#define _QUOTEME(x) #x +#define QUOTEME(x) _QUOTEME(x) + +/* Version number of package */ +/* WAS : #if !defined( TGT_VERSION ) || (TGT_VERSION == 0) but TGT_VERSION may be a string ... can't compare */ +#if defined( NO_TGT_VERSION ) +#define VERSION QUOTEME(MODULE_VERSION) +#else +#define VERSION QUOTEME(MODULE_VERSION-TGT_VERSION) +#endif + diff --git a/application/tool/wireshark/plugins/octasic/octpkt_ws/source/octpkr.rc b/application/tool/wireshark/plugins/octasic/octpkt_ws/source/octpkr.rc new file mode 100644 index 0000000..86e8325 --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octpkt_ws/source/octpkr.rc @@ -0,0 +1,34 @@ +#include "winver.h" + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,1,0 + PRODUCTVERSION 1,0,1,0 + FILEFLAGSMASK 0x0L +#ifdef _DEBUG + FILEFLAGS VS_FF_DEBUG +#else + FILEFLAGS 0 +#endif + FILEOS VOS_NT_WINDOWS32 + FILETYPE VFT_DLL +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "CompanyName", "Octasic, http://www.octasic.com/\0" + VALUE "FileDescription", "octpkt dissector\0" + VALUE "FileVersion", "1.0.1.2\0" + VALUE "InternalName", "Base on OCTVC1 1.3.0.x-PR\0" + VALUE "LegalCopyright", "Copyright © 2009 Octasic\0" + VALUE "OriginalFilename", "octpkt.dll\0" + VALUE "ProductName", "Wireshark\0" + VALUE "ProductVersion", "1.0.1\0" + VALUE "Comments", "Build with MSVC6\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END diff --git a/application/tool/wireshark/plugins/octasic/octpkt_ws/source/octpkt.c b/application/tool/wireshark/plugins/octasic/octpkt_ws/source/octpkt.c new file mode 100644 index 0000000..95fe166 --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octpkt_ws/source/octpkt.c @@ -0,0 +1,265 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: octpkt.c + +$Octasic_Copyright: $ + +Description: + +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 . + +$Octasic_Release: $ + +$Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + + #ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include +#include + +#include "../include/moduleinfo.h" +#include "../../include/oct_ws_macro.h" +#include "../../include/oct_ws_priv.h" + +#include +#include + +#include +#include +#include +#include + +#include + +/* Define version if we are not building Wireshark statically */ + +/* Initialize the protocol and registered fields */ +static int proto_octpkt = -1; + +static int hf_octpkt_format = -1; +static int hf_octpkt_trace_flag = -1; +static int hf_octpkt_api_type = -1; +static int hf_octpkt_size = -1; + +static dissector_handle_t data_handle; +static dissector_handle_t vocallonet_handle; +static dissector_handle_t octmfa_handle; + +/* fields defining a subtree */ +static gint ett_octpkt = -1; + + +const value_string octpkt_api_type_vals[] = +{ + { cOCTPKT_HDR_CONTROL_PROTOCOL_TYPE_ENUM_OCTVOCNET, "OCTVOCNET" }, + { cOCTPKT_HDR_CONTROL_PROTOCOL_TYPE_ENUM_OCTMFA, "OCTMFA" }, + { 0, NULL }, +}; + + +#define OCTPKT_TRACE_BIT(octet) ((octet) & 0x80) +#define OCTPKT_TOTAL_PACKET_SIZE(uint16) ((uint16) & 0x07ff) +#define OCTPKT_API_TYPE(octet) (((octet) & 0x78) >> 3 ) + + + +/************************************************************************* +* +* Code to actually dissect the Vocallo common packet header +* +**************************************************************************/ +static void dissect_octpkt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) +{ + proto_item* ti = NULL; + proto_tree* octpkt_tree = NULL; + unsigned int offset = 0; + gboolean trace_flag; + guint32 format_trace_proto_len = 0; + tOctWsPrivateData *pPrivData; + + /* Make entries in Protocol column and Info column on summary display */ + if (check_col(pinfo->cinfo, COL_PROTOCOL)) + col_set_str(pinfo->cinfo, COL_PROTOCOL, "OCTPKT_FORMAT" ); + + if( pinfo->private_data == NULL ) + pinfo->private_data = ep_alloc( sizeof( tOctWsPrivateData ) ); + + pPrivData = (tOctWsPrivateData *)pinfo->private_data; + + format_trace_proto_len = tvb_get_ntohl( tvb, offset ); + offset += sizeof(format_trace_proto_len); + + /* Get the format field [bit 24 to 31] */ + pPrivData->format = (format_trace_proto_len & cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_FORMAT ) >> cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_FORMAT_BIT_OFFSET; + trace_flag = (format_trace_proto_len & cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_TRACE ) >> cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_TRACE_BIT_OFFSET; + pPrivData->api_type = (format_trace_proto_len & cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_CONTROL_PROTOCOL_TYPE ) >> cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_CONTROL_PROTOCOL_TYPE_BIT_OFFSET; + pPrivData->total_packet_size = (format_trace_proto_len & cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_LENGTH ) >> cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_LENGTH_BIT_OFFSET; + pPrivData->pktHdt_size = offset; + pPrivData->trace_flag = trace_flag; + + if( pPrivData->total_packet_size < 46 ) + pPrivData->padding = 46 - pPrivData->total_packet_size; + else + pPrivData->padding = 0; + + /* Add summary display for the Vocallonet packet */ + if ( check_col( pinfo->cinfo, COL_INFO) ) + { + col_add_fstr( pinfo->cinfo, COL_INFO, + "Format=%d, Size=%u bytes%s", + pPrivData->format, + pPrivData->total_packet_size, + pPrivData->trace_flag ? ", Trace" : ""); + } + + if ( tree ) + { + + /* create display subtree for the protocol */ + ti = proto_tree_add_item( tree, proto_octpkt, tvb, 0, offset, FALSE ); + octpkt_tree = proto_item_add_subtree(ti, ett_octpkt); + + /* Scroll back to the beginning of the header*/ + offset -= sizeof(format_trace_proto_len); + + /* add the VocalloNet common fields to the UI */ + proto_tree_add_uint( octpkt_tree, hf_octpkt_format, tvb, + offset, 1, format_trace_proto_len ); + offset++; + + proto_tree_add_boolean( octpkt_tree, hf_octpkt_trace_flag, tvb, + offset, 1, format_trace_proto_len ); + + offset++; + + proto_tree_add_uint( octpkt_tree, hf_octpkt_api_type, tvb, + offset, 1, format_trace_proto_len ); + + proto_tree_add_uint( octpkt_tree, hf_octpkt_size, tvb, + offset, 2, format_trace_proto_len ); + offset+=2; + } + + if (tvb_reported_length_remaining(tvb, offset) > 0) + { + tvb = tvb_new_subset(tvb, offset, -1, -1); + + switch( pPrivData->api_type ) + { + case cOCTPKT_HDR_CONTROL_PROTOCOL_TYPE_ENUM_OCTVOCNET: + + if (check_col(pinfo->cinfo, COL_PROTOCOL)) + col_set_str(pinfo->cinfo, COL_PROTOCOL, "OCTVOCNET" ); + + if( vocallonet_handle ) + call_dissector(vocallonet_handle, tvb, pinfo, tree); + else + call_dissector(data_handle, tvb, pinfo, tree); + break; + + case cOCTPKT_HDR_CONTROL_PROTOCOL_TYPE_ENUM_OCTMFA: + + if (check_col(pinfo->cinfo, COL_PROTOCOL)) + col_set_str(pinfo->cinfo, COL_PROTOCOL, "OCTMFA" ); + + if( octmfa_handle ) + call_dissector(octmfa_handle, tvb, pinfo, tree); + else + call_dissector(data_handle, tvb, pinfo, tree); + break; + + default: + /* Dump the rest in raw format */ + call_dissector(data_handle, tvb, pinfo, tree); + break; + } + } +} + + +/************************************************************************* +* +* Code to register the protocol with Wireshark +* +**************************************************************************/ +void proto_register_octpkt(void) +{ + /* Setup list of header fields */ + static hf_register_info hf_octpkt[] = + { + { &hf_octpkt_format, + { "Format", "octpkt.format", + FT_UINT32, BASE_HEX, NULL, 0xff000000, + "Packet format", HFILL } + }, + { &hf_octpkt_trace_flag, + { "Trace", "octpkt.trace_flag", + FT_BOOLEAN, 32, NULL, 0x00800000, + "Debug trace flag", HFILL } + }, + { &hf_octpkt_api_type, + { "API Type", "octpkt.api_type", + FT_UINT32, BASE_HEX, VALS(octpkt_api_type_vals), 0x00007800, + "API Type", HFILL } + }, + + { &hf_octpkt_size, + { "Size", "octpkt.size_in_bytes", + FT_UINT32, BASE_DEC, NULL, 0x000007ff, + "Total bit length", HFILL } + } + }; + + /* Setup protocol subtree array */ + static gint* ett[] = + { + &ett_octpkt, + }; + + + + /* Register the protocol name and description */ + proto_octpkt = proto_register_protocol( "OCTPKT Packets", "Octasic Packets", "octpkt"); + + /* Required function calls to register the header fields and subtrees used */ + proto_register_field_array( proto_octpkt, hf_octpkt, array_length(hf_octpkt) ); + proto_register_subtree_array(ett, array_length(ett)); +} + +/************************************************************************* +* +* If this dissector uses sub-dissector registration add a registration routine. +* This format is required because a script is used to find these routines and +* create the code that calls these routines. +* +**************************************************************************/ +void proto_reg_handoff_octpkt(void) +{ + dissector_handle_t octpkt_handle; + + data_handle = find_dissector("data"); + vocallonet_handle = find_dissector("vocallonet"); + octmfa_handle = find_dissector("octmfa"); + + octpkt_handle = create_dissector_handle(dissect_octpkt, proto_octpkt); + + dissector_add_uint("ethertype", cOCTPKT_HDR_ETHERTYPE, octpkt_handle); + +} + diff --git a/application/tool/wireshark/plugins/octasic/octpkt_ws/source/plugin.c b/application/tool/wireshark/plugins/octasic/octpkt_ws/source/plugin.c new file mode 100644 index 0000000..70de27a --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octpkt_ws/source/plugin.c @@ -0,0 +1,62 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: plugin.c + +$Octasic_Copyright: $ + +Description: + +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 . + +$Octasic_Release: $ + +$Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + + +#include + +#include "../include/moduleinfo.h" + +#ifndef ENABLE_STATIC + +#if defined(VERSION_MAJOR) && (VERSION_MAJOR > 1 || (VERSION_MAJOR == 1 && VERSION_MINOR > 8)) +#define WS_BUILD_DLL +#include "ws_symbol_export.h" +#define WS_EXPORT WS_DLL_PUBLIC_NOEXTERN +#else +#define WS_EXPORT G_MODULE_EXPORT +#endif + +WS_EXPORT const gchar version[] = VERSION; + +/* Start the functions we need for the plugin stuff */ +WS_EXPORT void +plugin_register (void) +{ + {extern void proto_register_octpkt (void); proto_register_octpkt ();} +} + +WS_EXPORT void +plugin_reg_handoff(void) +{ + {extern void proto_reg_handoff_octpkt (void); proto_reg_handoff_octpkt ();} +} +#endif + diff --git a/application/tool/wireshark/plugins/octasic/octsdr/makefile.nmake b/application/tool/wireshark/plugins/octasic/octsdr/makefile.nmake new file mode 100644 index 0000000..ce9102b --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octsdr/makefile.nmake @@ -0,0 +1,24 @@ +# Makefile.nmake +# nmake file for Wireshark plugins +DEV_ROOT=../../../../../../.. +WS_ROOT=../../../.. + + +all: setup_m + @cd "octvc1" + @$(MAKE) /NOLOGO /$(MAKEFLAGS) -f makefile.nmake + @cd $(MAKEDIR) + +clean: setup_m + @cd "octvc1" + @$(MAKE) /NOLOGO /$(MAKEFLAGS) -f makefile.nmake clean + @cd $(MAKEDIR) + +install: setup_m + @cd "octvc1" + @$(MAKE) /NOLOGO /$(MAKEFLAGS) -f makefile.nmake install + @cd $(MAKEDIR) + +setup_m: + @SET WS_ROOT=$(WS_ROOT) + @SET DEV_ROOT=$(DEV_ROOT) diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/MakeSmoke.nmake b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/MakeSmoke.nmake new file mode 100644 index 0000000..481040b --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/MakeSmoke.nmake @@ -0,0 +1,25 @@ +!IFNDEF TGT_WS_VERSION +#Try to find Wireshark version +WS_APP_PLUGIN=$(PROGRAMFILES)/wireshark/plugins/ +!IF EXIST("$(WS_APP_PLUGIN)/1.2.6") +TGT_WS_VERSION=1.2.6 +!ENDIF +!IF EXIST("$(WS_APP_PLUGIN)/1.6.5") +TGT_WS_VERSION=1.6.5 +!ENDIF +!ENDIF + + +all: setup_v + @echo +++++++++++++++++++++++++++++++++++++++++++++ + @echo Building Wireshark Smoke Test App $(TGT_WS_VERSION) + @echo +++++++++++++++++++++++++++++++++++++++++++++ + @$(MAKE) /NOLOGO /$(MAKEFLAGS) -f MakeSmokeApp.nmake + +clean: setup_v + @echo +++++++++++++++++++++++++++++++++++++++++++++ + @echo Cleaning Wireshark Smoke Test App $(TGT_WS_VERSION) + @echo +++++++++++++++++++++++++++++++++++++++++++++ + @$(MAKE) /NOLOGO /$(MAKEFLAGS) -f MakeSmokeApp.nmake clean + +!include ..\..\..\..\oasis\makefile\version.nmake \ No newline at end of file diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/MakeSmokeApp.nmake b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/MakeSmokeApp.nmake new file mode 100644 index 0000000..9d2f899 --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/MakeSmokeApp.nmake @@ -0,0 +1,96 @@ +# Makefile.nmake +# nmake file for Wireshark plugin +# +# $Id: Makefile.nmake 24520 2008-03-01 12:31:01Z jake $ +# +SRC_PATH=smoke_test +SMOKE_SRC = $(SRC_PATH)/ws_smoke.c +DEV_ROOT=../../../../../../.. + +!include ..\..\..\..\$(TGT_WS_VERSION)\config.nmake +!include + +# The name +PACKAGE=octvc1 + +# The version +!IF "$(MODULE_VERSION_MAJOR)" == "" +MODULE_VERSION_MAJOR=1 +!ENDIF +!IF "$(MODULE_VERSION_MINOR)" == "" +MODULE_VERSION_MINOR=0 +!ENDIF +!IF "$(MODULE_VERSION_MICRO)" == "" +MODULE_VERSION_MICRO=1 +!ENDIF +!IF "$(MODULE_VERSION_EXTRA)" == "" +MODULE_VERSION_EXTRA=0 +!ENDIF +LINK= link + +# +# The RC_VERSION should be comma-separated, not dot-separated, +# as per Graham Bloice's message in +# +# http://www.ethereal.com/lists/ethereal-dev/200303/msg00283.html +# +# "The RC_VERSION variable in config.nmake should be comma separated. +# This allows the resources to be built correctly and the version +# number to be correctly displayed in the explorer properties dialog +# for the executables, and XP's tooltip, rather than 0.0.0.0." +# + +MODULE_VERSION=$(MODULE_VERSION_MAJOR)_$(MODULE_VERSION_MINOR)_$(MODULE_VERSION_MICRO)_$(MODULE_VERSION_EXTRA) +RC_MODULE_VERSION=$(MODULE_VERSION_MAJOR),$(MODULE_VERSION_MINOR),$(MODULE_VERSION_MICRO),$(MODULE_VERSION_EXTRA) + +# the name of the plugin +PLUGIN_NAME = octvc1_ws + +LDFLAGS = /NOLOGO /INCREMENTAL:no /MACHINE:I386 $(LOCAL_LDFLAGS) + +# the dissector sources (without any helpers) + +#include ..\MakeRules.nmake +!IF "$(DEBUG)" == "1" +OUT_DIR=Debug_Smoke_$(TGT_WS_VERSION) +!ELSE +OUT_DIR=Release_Smoke_$(TGT_WS_VERSION) +!ENDIF + +OUT_PATH=$(OUT_DIR)/ + +CFLAGS=/DHAVE_CONFIG_H /I$(WIRESHARK_LIBS)/../ $(GLIB_CFLAGS) \ + $(cflags) \ + $(LOCAL_CFLAGS) \ + /I ../../ \ + /I$(OCT_INC)/vocallo \ + /I$(PCAP_DIR)\include -D_U_="" + +CVARSDLL=-DWIN32 -DNULL=0 -D_MT -D_DLL + +SMOKE_OBJECTS = $(SMOKE_OBJ_PATH:.c=.obj) + +OBJECTS = $(SMOKE_OBJECTS) + +{$(SRC_PATH)}.c{$(OUT_PATH)}.obj:: + @$(CC) $(CFLAGS) -Fd$(OUT_PATH) -Fo$(OUT_PATH) -c $< + +all: octvc1.pcap + +tshark_test: octvc1.pcap + @echo *** Testing Wirershark transformation for $(PACKAGE) package *** + @"$(WS_INSTALL_PATH:/=\)\tshark" -r octvc1.pcap -n -V > octvc1_ws.txt + +octvc1.pcap : $(OUT_PATH)ws_smoke.exe + $(OUT_PATH:/=\)ws_smoke.exe octvc1.pcap + +$(OUT_PATH)ws_smoke.exe : $(OUT_DIR) $(OBJECTS) + @echo Linking $@ + @$(LINK) /out:$(OUT_PATH)ws_smoke.exe $(conflags) $(conlibsdll) /SUBSYSTEM:console $(OBJECTS) + +$(OUT_DIR) : + @if not exist "$(OUT_DIR)/$(NULL)" mkdir "$(OUT_DIR)" + +clean: + -@ erase /Q "$(OUT_PATH)\*.*" + diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Makefile.am b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Makefile.am new file mode 100644 index 0000000..a96d804 --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Makefile.am @@ -0,0 +1,103 @@ +# Makefile.am +OCT_INC = $(OCT_PATH)/software/include +INCLUDES = -I$(top_srcdir) -I$(includedir) -I$(OCT_INC) -I$(OCT_INC)/vocallo -I$(OCT_INC)/octpkt + +include Makefile.common + +AM_CFLAGS=-DTGT_VERSION=$(TGT_VERSION) -DMODULE_VERSION=$(MODULE_VERSION) + +plugindir = @plugindir@ + +plugin_LTLIBRARIES = octvc1_ws.la +octvc1_ws_la_SOURCES = \ + source/plugin.c \ + source/octvc1_msg_ctrl.c \ + source/octvc1_plugin.c \ + source/octvc1_msg_event.c \ + source/ws_util.c \ + include/plugin_info.h \ + $(DISSECTOR_SRC) \ + $(DISSECTOR_INCLUDES) + +octvc1_ws_la_LDFLAGS = -module -avoid-version +octvc1_ws_la_LIBADD = @PLUGIN_LIBS@ + +# Libs must be cleared, or else libtool won't create a shared module. +# If your module needs to be linked against any particular libraries, +# add them here. +LIBS = + +# +# Build plugin.c, which contains the plugin version[] string, a +# function plugin_register() that calls the register routines for all +# protocols, and a function plugin_reg_handoff() that calls the handoff +# registration routines for all protocols. +# +# We do this by scanning sources. If that turns out to be too slow, +# maybe we could just require every .o file to have an register routine +# of a given name (packet-aarp.o -> proto_register_aarp, etc.). +# +# Formatting conventions: The name of the proto_register_* routines an +# proto_reg_handoff_* routines must start in column zero, or must be +# preceded only by "void " starting in column zero, and must not be +# inside #if. +# +# DISSECTOR_SRC is assumed to have all the files that need to be scanned. +# +# For some unknown reason, having a big "for" loop in the Makefile +# to scan all the files doesn't work with some "make"s; they seem to +# pass only the first few names in the list to the shell, for some +# reason. +# +# Therefore, we have a script to generate the plugin.c file. +# The shell script runs slowly, as multiple greps and seds are run +# for each input file; this is especially slow on Windows. Therefore, +# if Python is present (as indicated by PYTHON being defined), we run +# a faster Python script to do that work instead. +# +# The first argument is the directory in which the source files live. +# The second argument is "plugin", to indicate that we should build +# a plugin.c file for a plugin. +# All subsequent arguments are the files to scan. +# +plugin.c: $(DISSECTOR_SRC) $(top_srcdir)/tools/make-dissector-reg \ + $(top_srcdir)/tools/make-dissector-reg.py + @if test -n "$(PYTHON)"; then \ + echo Making plugin.c with python ; \ + $(PYTHON) $(top_srcdir)/tools/make-dissector-reg.py $(srcdir) \ + plugin $(DISSECTOR_SRC) ; \ + else \ + echo Making plugin.c with shell script ; \ + $(top_srcdir)/tools/make-dissector-reg $(srcdir) \ + $(plugin_src) plugin $(DISSECTOR_SRC) ; \ + fi + +# +# Currently plugin.c can be included in the distribution because +# we always build all protocol dissectors. We used to have to check +# whether or not to build the snmp dissector. If we again need to +# variably build something, making plugin.c non-portable, uncomment +# the dist-hook line below. +# +# Oh, yuk. We don't want to include "plugin.c" in the distribution, as +# its contents depend on the configuration, and therefore we want it +# to be built when the first "make" is done; however, Automake insists +# on putting *all* source into the distribution. +# +# We work around this by having a "dist-hook" rule that deletes +# "plugin.c", so that "dist" won't pick it up. +# +#dist-hook: +# @rm -f $(distdir)/plugin.c + +CLEANFILES = \ + octvc1_ws \ + *~ + +MAINTAINERCLEANFILES = \ + Makefile.in \ + plugin.c + +EXTRA_DIST = \ + Makefile.common \ + Makefile.nmake diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Makefile.common b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Makefile.common new file mode 100644 index 0000000..464ca4d --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Makefile.common @@ -0,0 +1,16 @@ +# Makefile.common +# Use by Makefile.am to create Wireshark plugins on Linux environment +DISSECTOR_SRC= \ + source/octdev_common.c \ + source/octpkt_common.c \ + source/octvocnet_common.c \ + source/octvc1_common.c \ + source/octvc1_module_ctrl.c \ + source/octvc1_module_main.c \ + source/octvc1_module_gsm.c \ + source/octvc1_module_cpp.c \ + source/octvc1_module_net.c \ + source/octvc1_cid_eid_value_string.c + +PLUGIN_NAME=octvc1_ws + diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octdev_common.obj b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octdev_common.obj new file mode 100644 index 0000000000000000000000000000000000000000..bc92d80bf6be63da01b692843684681913d1cf45 GIT binary patch literal 16109 zcmcIr30xD`);|#o;)1wP6$K)7SCCB4weDNpx2m5@ z>sFU)we?YLiyQj7S*=y+ql$6SQv-hX)R=Uvq8(+Y*;YsKykGWo;PcYO?FNwVC{uko7rhJSp_Yxcd&vc6}8 zkxV%z!O5DXYKPNc;-%Pt+MFb9Vwy^;H-{_o6ri^lAWWVr%TX}7X{zWb2HPVyEnA^Z zm1PemFVZkMqf#j3OpYv@NlVYn$ks53(Huz`s^qj3CRG}iHZ)#a%%hg0?S@R&?kK6H zc$Z4W&`?VZGn;gR)`L(yVFqABrf0~9C>2bOB3qr7p&Ag$ zL@@Z1h7B`G!*ZjgVd-)ta+`)ireb6&Ig^eLB&#}!TUuL^?fXW|1TGy$Hoi&dtEn8m82XZSA^EZp;ot7%LfbET$9zn7Yo{=*zgEhb<1N; zO_DS$4+Og&1m1~5#S`vM4>p6&!@lYX|5~KSv4xc4^6MkeuXg~S7U}*7Knfa0cDhWN zHcWxGLk9`yCp4pq)48Yq);=Op_vL7am@3HV~}3Zu+OVUm?Hq7ifx#AQJ{cQR@9n&f1eMy8}m!`(U4 zGF%yDnVAZe9NJ?pl0C&vg5I|d2R+6^*~q0JF>pcxu<7{hR^m68z!qDoLl zD&D0(lKE-0C8BMSHbrA+g#xt$-9Gra8FF^Jm1i9ET}EisE-^^DlN9JQSsl?)G`%Cf z7wa*0Li%Qy-U{C_xZ&`X$mfMonbF20JvKV2TMqKev~w~CveY>p95g|Y)&gm04M?+M z4P<%}IBGEXdy8^;No_ERbYoXi zI_uCExDsk~L@P`hgtRA9-Jm4dM)X4(5btmce+f-Uw?dC1xy(qXW|d@R&Hcx@$?fLM z4Fq5*zAvob9C`4ul{5RF8na@l><57NDV}+}(e>F)SHr#eQx?tJRVD>^5gGYQ?5me; z+41SP_4D?uRVId4#sMT!eD53E%I3b3JJM==Z&J%Vbqc^@iucRD*JXOQwx)>vUuTwQ zM&<&XrTF>|TK{{~jDH*N%5A~`-TX;QdeL3d7JF3^~I=xj$VY%`m5icO1i$b@Sjts zUfA*1suuz56z??o@@>WT?UBmQi?T+|Ub+zAV~St;u0(!gQMj?gtpT%F>AI8xv_o_E zmq?5L-77Wer{DMVd@cB;T~}8C6jFS@ZzcCylU0XRn#HBpt}F}%_=w^&90v~W(7v5& zT`RG!ITT+zF1@5PE0UYwebWV|_1Boc|@~U!9ZR-lx9ny`gvDhS~UOi{GODl2vct z-uTVRHXVXu_xv@sLrFP60mW_6#=Y(D%jWRKi7P)C{_$0SLlkd1XcOD&^~Ni_n}z4D z@#*<3z%LX(e*43&`06(D`5k8iq*5J9p558#i z(j3Ksi%LDfaEkv}>NBaL-HboBam8C=8zv+HY^QjsfBfvxgQxO|g*^t}`m8OMTSf6< zo6p^>91^&^@v@ZQ*S2J!U8UkTw7(=SsKYvE>A_EnVq${|cV1cxu#)0ktBzH8S>k>v zww_lRFMJn??N0GCf1TL8=U}@JrMmx3?5Ti1u-{Nz`KhIOmEZa+Awf5dQ?k!)2k6|G z@PB2Nwrkwlt4qp;&9c~E+Wif{P>Sz6Ct>d;-#!1G^Sw=PuI$ze^+WMs@7*B_9)@kY zUd9^dMYnnj_3z@d?Uz?=$0ZB(gDUN5U#6Wz-q=_DCHzI>sO8@d+wsN4re9~5of?Pz zl;RWiTgL8OH{#yEUSAh{{OCxe-%9a$9~9@`t7x%j!i9kcW<+Fu1n`jJ>y9+|%J9y% zHLKDdlrKryu?!%rDdBJMTXO&W&znY#{$@(cycpdE>=zVQ&#Va3o$a~Ec0GhswfqYE z?|O<~OmBELbkwZDFIR3Gmeb`x0roqJd!M}3<*S8wI}qajHK$cRx~Y|E6o= zOb=QmZq}Ul%Q8=!1hA3fhi2SAxZsV{vM|5V9looY{t3WsimT5@S4mDpY-s=6_O?y@ z!uFz^_?_=BIlaFkYC&LS-}dLSD*HM<#rFCiil1vSt#FLv?Vl@Vj>;=Pd?N%P<;1iRS%;^-Cfr=H}{vS#E_-P zA7?}SCGB4?*Dct;-JUajdf5H6{NVsriXRzV@%`PC8%H!OkNM2f#cFP@^m2=y#dm6w!iZ4_Yo^N<1)7gAxRS)LH zl@rje0tlZ;+E3?yw3Qi=GthXZ<3Hv$K)a>*k=ZX_`Kv0Z!>G=xfUxTU$m0mb8;tzC z@0Mma-&r_LpD|w11NGAq#~y#ljaTOV@#Bg?tpgg#Y*DwC^aLoOID6vsvI9*XSVl~` zIc5K(5$LzSr1(bzKPmm(_UpZg-ol50eXik{9MXpH@twaWZ$?>=a&O>wK7E&*ssP|A ze&YVx$TfZbP!}-cUmMt9InHbDq4;{~pHr0+PP}_P&+zUX)4z-WS1Asg>}_6en0jU0 zou#&v2?3h`qH&JYU$Q1SbyiM))09&4533K}h`>HKjpFmR?%o&qdX;5{wDmaiONVX) zR8oBWsSA@&SCu8aUReB+=G2L$0NvXWK0!0zSr+R1+Bw@{Rm87teoh9MK=JjARF~|jN&n*bN>3iXAVh`r#Tdn3(sAr01sk+$Y3!!lPxtm; zHwVB*@l*RY4=)PS{rd6vZ~Giuv=aT*yA&UBw#(?lckaE_I`@>tcHqDvj5jDg?EUWR zw?F8zYd&B8Th+98F9O80C;S(Gm74kin9c9& zHZ2BNO7X5cJL!wdGTyQ6pX3!>*$cN8Gys(7FTRKe*!? zbGkWux-)fZq{-O!}9>rti zEz7<<_hZ}p`o-Ue+kU!=;~K>czx9!w3O~4J$>mA~7r3zqr>uhspV1h<-8Px8=~|@T zFlV&IcAQ7?ig6Fm!2PH{E;mt(9B2O)?Z1NJf6cpBeq%(>5i8r2#OW6GUIP#sLipU8 zs@&ZmI(S#dOks_mF*+R}pW>UxocU$fQSVQhtyAsD+1jJ>Pxvz(N2;mK6l>ik>S2=_x~>aa9eud8!^}}6fZUA z1^B%1E*sl;OUOaf{f_{CqWHr<&*~SK>@9>{J!Xu)cntBNj)Z@I+XIWG*PRx7rp851 zY_I+T1AdBcxV?XnDd$LO|9Qbj8-JXMKKKs+IE-mvh}SwiI00Qf*JnIPw|oL6$tOsNf=u2-^}_XCmJ?-s(vi z^KtEk^Z>zwVhVcFYdzUfNaJ`=Ku3WcXXk7mg?n1X_0Fo zN_eyoRiv+;lh&GX&CEfRS3frSW}bD_n~UD=D7K3-IL^jewY4YiJg8m4jD8aN)!SuP z4=lLO#Gs?Lu(-f0Mov9%<~?bB7F?g<48%CZlrFL_>r4(auP+qCkv0~czs$GP-$;t7 zmor(-&mZzcRz=TSaY~R#=Bcqq&*}?2scg4JdP+PCXYpWVvA^g=RhHU;4X32V6z(z_ zp3K&ZA*X$YK^w;iN7Pv05(a1JIR|61=8Ni>G!N-WScukOXRSu@^=1vY<3$i9nn<%1 z3OJ8OB&>tSK?9XtzoEdjydtK}MAj2mVhSy|k3_5kbG59UcaS!%UtPooR4!vJ(mC_< z#Z;V$J<^PN_`NBt08$n>BhomP_`*Y-Tf5nZ)G3_EIVykunH2wpf%}U2QN{&(W_>QHEM8 z3u>)?E+5yHF|MsQ8|<~CEuy@OtJ%qhP(hndZ(>^BRb^KoSHBA5M;9vy9*qdeut}n} z`UzIV8n}GY{`LM4!w;}p8&03G^~zJhwT*RPcqq!$MRpwv#*M6z6V(+&veaSV>#(yl zZm(Y}2_~bJ6*VzNP1ZqM)Kj{)x`qi48%VA1_F8+9J@<9U3ME#(r>7@fb3$TVhe#8_ z4NG(uqMqjAFyI!TXLjPJ_Sm}je^>j#dKZrSk3Fc9F-{B`J;=|2X9PqK&LZ2bh_#zo zao^Y?IXdkoPsfa`-OiSHP>}+M{mCkB8bV~Pbr^Zak}tIX*t@tktmCXwzKK}=bDbS^ zj8;MH$EHa6@d$;@j7tLIX7H&DWS_d&uMIorU~SrB{1a0}Q8J5RMCGiRf^kj7V7~hK z2@?N!bpDUVke-a-tNr0~ZAp}(wZ;P6i21i2PhAH)=#r;+lNTu_oig`i++(w2Xi6B? z&tL?H0b|p8v%%2Y9pZYbT@9xC$K8Usa86_s7T`|k`YQ_KJQl;u62T;BUGY0E(eVy? z+)R{xP`_bhj8-T4w)2#_$KWA6PtML1awYCr&bkMkXN5}`rs5pDC`E{DHg^<3{Ei3p z<*;*v9e^44xZ<`k+^BAIKQ)FG_=MX_5L@kjY7GCxC*013*k|si#-OkJa0r82P@b6< z`~Re+sdDhhi@YZ9QzuE7YKlkvpQb^fA|oOrYL!zbO;l7wT{KT0M0r$bb$zS()j^w) zIYf;+m!6jI8MIM^mR=I~{UKiN$H#8f>A2sh&g)s}xCa~0lK^-F?oy>EHoa-%`cbSC z{^O1|OznmLgu)w0^WlzJe3Iio?#;y~CH~_sV0_ZxKkhfiC&GCm1OzNGHar#8qe;>_ zzgLg{nmVPBNK$vN`P;|Sa6?M1qp3AVr+&YgK!U4qlfifFG$4BOf`ohy7r-MTh!ifQ z_6cW#dP&aW|KnHf)6GP~UJ`P?87;lmRr_SK7o{O*o5`ivF!vMJQzvywWZ#IWhz^)S zX~2a<#@#@I$B=&id=iOW_axG1!jni$-jhfq3i>$b2;3j{7!nbOfE%fO?wYiqmt++F zleX>Id2}+~+!skB7rDD^E)<`nk0FWpmQaJ#KB$!Eot4$v^H|p-oW;l)_k;Uh-w#4{tj3}5sBlBadI6LQ0A}`f zBHnoG4}Ni>I<;Nx&V=^|uK?_K<#EIPq5tks>ysI8V&cC30H2DSx!U3l^YwStt8}6O zlQFU<&i&-PlX`_hVGn~@Yjo(?-VBq?S+#7uT$!Ra8?srOJ${f}*u&&{(6JWQtYgjE z!rnplLJQkBINxB7j0hH*)h2vMF=(xvjmx%&X2i#ag(8(;VIFI>88~y_;MmZx(8#cu zh}h8ZV4=mzX<3_%vx==Fk`o+JS7LlFMbWV0gB+mnKpZs}5(w zd$Ez4;2>cSu_Qq>NUD@3$Mp_MQDk6E)xcD#SSCu5D1wA_v8A{0cNE3x0D(VgxVX1U z$(k%Gz0JhftqyZ8!x?odwZ(!JtL@0H%Fb~{RldQ>+H%y^T$RP>&>PG)6{oeUZ3Zp5 z+jLfP%hQId-!jD+6M#~*|MKF|a!_bm`q-YX?0 z>>__%m};>bOoq`0vtAg_nJfk)YlSwi^z{dAzRtrugVqS~y;W&ePH$D4gb7%eP1ptH z|GMfiPZ<*oQ6QTlD8S$#PWSL5943%U_Kx@)Lh&V}LW8* zE>R?j(aOF;d=55b3yj~D&1Zo9%xf#8q7K_-=@lo4h<8zHIF5g z@xqWSuvxWW;~Y3uR2%NJV9{wjJXTd3U-Ps$w~$(#<9ZQ}>+QhDKgACLNJPVsr--D< zLnLTBbdrFMu2exysZ4w-j!Oy&v~uOD^F%I@REi_Fle$;+l*+Qbppk!aQ&K;<^3+Bf zV^57&rVUgwNn$yZKv+^TY4TJwQ03q>2_u!rm=uv>Adr#`=$uqzNgO1V@>Hp_Xgo$} zX^Cu53Qj7G{0BU<&MfKkY7N8|sZm~a#{>9btK^bINfwUOnbKsL1iKDY%^-X#gERp; zAqD0s3fRi{q^fkPW_wKM$!tiiDN@rSwf>+GF)6G)htoj|7Y6kZ!)XCM3_H$;B&(cO zEPzK%FiFPItWM0&iKVCuH7qo%%nAaUbueqg=KA<6vAlp(C1=$-XphJ+iX<}9)I=sh zDk2iWfrJcd(At$u?4mL`L8KH(Y0^+v$>daLK~Y+oL?(u|Sc)W(Qtl)iy5gj%@dKfy zD>1N2BDID#n2_ossFdTpDpwF&!H5C^Txo=2Wg3!nr#FXs{yA8dLGyF4jLmLEKLQ<% zdj57aExiUE8dhxvl8wj;TaV(9aZXXyj5fu*tuSw*(yF%QDC{@~Kw}p{)@n6#jGaD< zNFIf=LXz$v6*>%Ndt?Mn?|{$wT6Cl^ebDsJ8Avb9 z%8KkrQsc0*&;UW&3d}=WKs1Og5NU}QsYFlo8E8W+Sji2gP1?g$Z4hB7h%#*CP+;Vd zR%NppMmxz8%OsT{J4&@x&pKHcOqk?s_QzcMV^PvHh9QlMj>6{oA{2oc?Iuc?utLaU zN()ROLsp`UvzpXK1XDO2OXWfACNViR!Kl{TXg*?{iBe84W%F3$W0+V9X$f($Str~Y zsgjPJC};I-fy;?>Cbh&Q(qo-TDQdem$C*$mBidl15TZ}Utx%#6VpmU?6)9sOLL*uQ zxQ)@Q2BcHrcp|vW2q&f&rl-&R^xXK?GiJ5{P*Z$+NUs^2eT*4o3*7>2=FQr@)KB>EnK&0|L9e-wyluHg_g$x#8Le7_coNyd^2;n zS^r5<(=0_Iz&jN0C4bO)a+g+yupQs0?MVyI1UO6aRqa%M4<_mVIlTAP^sN4h4*+`9 zA@p~Px^M1&Vd%%c<8G~UL_|#l7)SBb`&xH7{`wmO_C|-EQbk`wrF}>7rZ-{&ZQYZW zUA?kFbZk{Vw!ecHp|k4RPbcDUtjPV(#EBO+{j>B{04v2ij=y|IvTicY1|2IoV*{PkD`w_qy0k1F(SND<+&BBbt9mm2mz3qU@|gjR1b6_@(#y zy>&44!?8hkr@h^JVJON$i0`U?0`B*WA37y`xLtAIdv%XCtEU4DqWIDe@2oksq-DGI z(cAthXjixg-~)# zLjTB}FM~(#`+WPg_v<+}T-!PxU<}187N=kDSoEO#NXg9cZ{+)O07oc(_~(aHGkct! zI%M*N>Ebcv?ExM-^XG3|bM?-jyVT#lpXNJyTn<1&Jwo4f&>S!`;NhWWug#F`yeQQI zETQU#DKTgrJ}t}p?GZjb}JnvyY}ZrMYqr0d}#&1_Y@Dlceu>U6#IL=`MgYj;dD68 z4)qD0Gyfc2yKPtNFNK=_i|ZzVzX8H2F5Pcxa`>PUeu3R^y83Chb}h!US4`)G{AclAG^a;uzBUM z2S2>KGT_L;;h6t7iqHBYKl?$M|F*Fg`t6(&mi84upN53a%6)Z?=|0-9d};E-J@XSc zEd&@zab4s273Z%Mj~IDsLes1$&1!%x6jw|w3(=hIHqUY+kd-w(mI&|*#V@ARJsUJ) z+Q2u;Hw?+>yc6}<0BzJy;C=jd=VNnsi*${{x-Q-GZ3uvz;vK)3l+@*d&xNM>!v-ut z8%4cPd^vM=cG%)i+6~^FZ~5L(a*O4P4sv2W?@BSX{96uc${7)J44XZP%l0q?KhytzK-`lPYQPcg+iZC>Op zf<<2I=jCe8x7L&c{6X;{!-H1jmdvfVP;gw(-mfppz5`CjeuBxm)cer^BZ9vBKQ85D z3+ZM68O7tf`3_upsiMyJx4$U)RV8`|u$bcSuS~x__LE1=>U=iy>gJM%DF4e8-+lY9 zGESVFZ)zm??ajNd;J6XmoY24Ov!>#-e^Soj+s*H&cK&PxSV-|Vwe`#I&gvOi_SVhq zP*lVKT%x%7(z2GPuC(crIXpe%PUF{;0b*MaI&&qt=j&cgb2OQHuPgKFlCfx46faWk zpZ(Q(W>`i){h1D*&a8uWOYwcv-?;kEz4q-!bdt3QxzPe?1I|5uf;z*$jak>|)<<(k zYg5Nax}tniDSrF+eTG|&rr%Kg^6i3g9adny+bFI+dUD~;1`kccif&EVQ8Wz4?FKCg zov-?RQ}V6lj|bztZC|$Oc^%2CDDFFZdDfKD_R`PWoc4*Cf1(Uv6UA*eM+p0!NIG6v z&}x!=_pv;b8^w=StO#G;^KV5CGv@7nbr#_|X=p1#f0gjR6QyI1etaWK_wfwF4|)I{ z#i7{R^4+>gS4ZDnU`ZU?q8ROp;>#0~re*XoOeit_ylmIaFzmbcDL!lc*6rc%-ZM=R zHXm(#ZTB5)Z)-w-%!v!*Pu?r-|88#nYswQx7XYlHc>AdzEe!H~`+P*m=urZqJ|hCVhMnh0i?YMPp z(717f>oIFT(-gmh`f5k$2XF4E%`Z*;$g-ozE1gD^fJ^qVsEyb_i_NgELQQ-WZAIzBezA*48zyXR++oM_0o}JNz5wF*a z|9aH`&^Cb3i4r$0{qEeattzzd{1j^W?HYiQ;<`V3icW;?T0Z}BxrA-A2JL4D#YdvQ zcgJA7uJKR0X-sW}daN5r=#-6qbOtIS{=VEmGJLf4N9-3;ivKg~!JeDLx(!>>vM^RN zug7wLr4+wCQM$EGWWbgVX}0B!^^qw!zfgSbs58HBIq3aOqm{BvnVjSvK!}jgpO7;3 zvxaTH?+~!QWT3S3oW&?Nimz$58Y1;xS;2nqFT0f45bdOt;xlJWA0F!4YR6x~FE^yL zc`pj}(t*$^(Py>rdF5kubp3UKy9^ay;rK@JK9+|jQ}?_6+a|__k87(qgiH7oUwvoC z07J&Ul0LHn4%YuV4aerc0eyua40OF!b`LIGyVpofoX%lnLvx_;@k*?v#+BF?t+G1T zUiAhJUkuD<)`&F!M?B}-7>C_JDtIB&R#tDY;makTygVCdQX9-3Bxj|PdSOF&GB?V> zIy|XO3uojdXP)fQY#tOIZilhtjoX7HIoyfC%^M!J#k0+XztNo8lRReQo(<^%HV?9C z(~@56$&Nyl<3R@PIaXY=v*2PD60Lb;d1}+cxgqCXsLs(@3rJyYZx!xB(%mm2N%!uT z$-Rdu%yaI3*&gqHWFdhsh#IQpfT8uoHmya zMXD^iPMU41y^-Y8A<|$rdQ9P3&WuZsgfmZ>kXEhD@uaX_7U?PWOsvU+jm7?=<<(ef z2NqoV=2N-TXgIR|&nG+WGYr}|x<|Yw5+^gb6TsRTgE^a5$E0OQN5V=}I;+~O=ihF% z4v*Q`c(KN_2ikI2kGeBzJBO173cGewfpf!#kIs0u6L)-aO?Y^P?*Qi1td+A9oz|`` ze7!NJvF2$U+1Y#=PO}>W6o$v7b6jX8t@-ws8+m$G-?q zvmz$tu<&7=CqW$YwYfHjCx=#YK+eYU8ZUV=iM=!1Vb*$d9HJYh9u%a*Y|!E!q6aDB zP_5%bj#?WD_+;iOaeQfK3;58Zm1mRl0SwVQpCUY2;N9aX3(hXeds5`dgUzDO=OtFB z4hpm^eRbt!s8x!f)M_{6;~qBpwY4ULy>_ID*XZI@J2{1FQ)SZ|AI&?P>~!R6*I<0< zQrm1E^$5wdNxZh&F_x#+vDrlbwSE!97qBX)T%U2?%Tvy^MQum-ke8|R>^dg&8`XN2 zS6ARkQiG1K-KwU3d+oGjGw97~UaM-){n^dLPue$&8vUgxRuJhj!J=J$HelcK|F@U*+Bwp!JN9u%aF#ja@Pw}Qd5)f#l# zqshx%&3)%NONh<`_P8LGZ6KEa!f}$0sb(AB_f($z<0l^$BW^|T+c}^-kaP8XUsSBD zU2Re2W5B10ym;nAi1JyvdgENh!E&`5Cy49h(WOJ`etOdRcaMiJv?X4GR_Sx_tmwZU zcxw6(g>JR-H+i0H($#iPx=a=;dbNaL?F8NJy-UJE@X?os&BpeGl0a@j(@ z3#2^7@A3x7_~F5J+pR1ihi7H*>})5zHvo$(Rv*@4tTV+vbj9k!IgABU?4m1HAGEwa zN^yTV5|^xWex&j*%B3bGC?ra({^iQ@&ySx##7mgREb^`AaXA-@JY_=5k@k>_XPKJ6 z-g$YRpH1iG+E62%muL@uwUnq#sv>lra;Q@7rR~C5wwlaqYzRX>i(=5iGg9MaPut$} z%cLZT_}3v-N|*#uTJjTi@O=6Tv7A4Br9`3ROB=rc!VhsD_v`0=`1N$pe!`Y{mvw9L zCF|wSXU)Q_>^Z#aeKs9;6KcuROUSQEFQ6ZLJ!ucmmwlD8ZpL}bz}15uVSVJnBeU*{ zLIT$l9@TYSso&o$98G$1>^V<+?X^-5=rQiqf0=0gpSn zE+^vV1COSp&^ENuo7cokrsEx6) z7?QfZ>7Ov*VRDSk!Vr(GV{9RYct9Rw#Tb(Id&4FSNz1*V1VbV-Z`h6@9(u;ue=uxF zV}~&$8uErR4DquLjGe&{KRChIMGWy17L3)!a2&K~F<)QzL`2sH@hcm@b>xqv3Asc| zFa5Ut{C`8hvy4^#4WaUD-M?=2C-29h2AyxgB&t0x=%3Bv@u#pb!UfT%7yens<3H6P zsF&a@hEHBq|4@TimzRM2r3N}VRj#Ukra>&vOF;fkgIq$+G}jsHs7MTt3F{ek7*l8- za3K-%sw3gb>PT4gYDiSC11RLGbfRL$S4X1Lsv}X&t0R%8kVsWJkx`qfBa!2)BN1uU zk#J#kBPQT+ z-KuoLql>E}J?+(zNL2rmr6Le;Ayxk_1x1aPK!y*}r+>I8#f@+_8Ch;lXzx x9`|EpI6kecM5_M53K|1ao{Zs>*KB+wU*z)sApGgfHP2!68}O$xKX(>^{|AmU?#ciF literal 0 HcmV?d00001 diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_cid_eid_value_string.obj b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_cid_eid_value_string.obj new file mode 100644 index 0000000000000000000000000000000000000000..a02b2efc928cf50c17b32087d9afad78461bc4ce GIT binary patch literal 36343 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 literal 0 HcmV?d00001 diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_common.obj b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_common.obj new file mode 100644 index 0000000000000000000000000000000000000000..811dbd83b8b76745d30298eb543cb2a4865b182c GIT binary patch literal 92538 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

1f#dS%;F8jOyVQ3vsw13VkWT{jAAj1 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 literal 0 HcmV?d00001 diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_module_cpp.obj b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_module_cpp.obj new file mode 100644 index 0000000000000000000000000000000000000000..6acc255d47e79783649cf2bf2c3da2fd2dcd8593 GIT binary patch literal 168913 zcmeF42YeLO_V_1Aokb~vA_7JPL4`;c6qJwzh@_E(ronZy*(58QY~0;Iuwp?`v7_=- z6cu}YilTyo`s^L?VS6_0@)Qv}>i>K0+?{MT8!`#er~l7yJ|Fm=oW1wVE$5!OGjnGq zE2*6^rp?&GW&K+jomv}eODPHYypg#+>o3E24`EPJ^e;`bvyoEbE3PijgJk( z)ygn7eQIfD?P3_?jm{HNN<0xyG!guMj$zF1kYp58TSm_#&v;|}x|C4egrAZ2u?v!n zTQ9WI?aAMy8=q1f4#$`?CdB@sG4PL{z@S-HcyUnuq9`#K&@{ZN@ zD2ygO6JamfBX*N|Bqt{y?633&s!M!_y4|J0kk^-%UzqKw^q2a=k+f;~$p=^HKT3R6 zzRD6`rFZ_JeIxU$eB%bp^H&ZZHXymuQ^6nEes3rk4wgnzrl*Y=l7f{1$#Z?7us>Ki zZort7At}R$95QT7%FqGHRiU8Q7Y+wQsUdH_DZcrI!8txM z4lVVLE*@Sy#xvA6bhK}H@qoU`2d8IDOr4fhn3Xx<(7xFP)7ev;GB+zdCp9~xpl`DD z{x|&F*v2sC8%bTH`ss%j75XZwips(j?ntP*a*jI~C@Jz(Rk34FgyI%Og26!1Jb%a+ zF874y6jcSP%lwt$qM$e83H!ama7joo*E_T*-xu(C!an!Vlu;=owbES?EU6Co+}^6H zlwk33#-Ya8E_930&get|I@BcDv|BBCVEzHgxm6K=h5rP9Wm$4su%gNz@P&*%ZN_ym zyz@$0xZH*}V5A*dlotw?g*+9>6WLcdc_4joKv8X(ru)Oyo_{^D>^ z8UGh)w^n})9+onsIX1+O7?b=_gV<@Z3)!_uoKuF)JWt5i=q}n3A;i9>tQih~Pd!C$yX~~0U z8sU)F2nVY`TtDrEoFf+~QWpuUE zNAqcNwC!Yc>~ee8sJ^_^=!~Mq&ftqgj8;Zl!`MoaA<<+|%CiN%lqp)ba>H04f4>c- zod1DMt^4KV%iW2(=g)NK7v{P1@^dF4eCBR?mj&_V6* zY`o(slau~9ycDhkgEjFCK8UE!pZnJhU7o+P8`BXJ6x^X z;ZEHScQ>OQcJ_XO%&#Zr=FdpYPj~0$W#l*<6OJw%I%$LZbsK!B+u)6i$lJ;B5cPw!tlWYOhmO!vW5J}(5*zo{ZP5EK(FV>Op{3ej zKivi+bQ_HNAGd*ZpmcVSbTSy6#DlTA4GMJ|O#e%?!Jq2~MY;_tbQ=Vl(FQGfTu>)g z&fLJsEfq)C8me_0+^XB)_P;_KICFy*J2w7Px52x*4c<@C2Bqz-H4)v2owCVV3YH}p z(X|vAtU8Rpzan`gO)>nZeGe?D#2*f`)UT1H6mkJH!NyXG-3(V3EE<<#GBUTAl@zWn z9r^oC{;u*@mIhgD;p!s$TO=t$KA+JAg_OLSf5FnyurFeCLnZsTTXJR8M5cQJ)jnlw z+wZ^sE-NdG=SO^DV|UX1h^98Hdx+5;<#v>^gHpdQP{R5_cGKP1#l8skSv$j+hZVM6 zNxfO8j`-D{x9ELDSbykN3qxh~hgtz*T??2j2PwTtJIWf6QvM#R^`Fs4(zc&Nsr(nP zEBq4nhnwL+@EceTx55zI2Blcv!&Bgoa3TB&E`>kCTj8(p9rzo37qXIe0c$OcU7!oL zfqh_Gcrfe$i=hci;I42H>;x}{UEm7X72XfK!_VLz@C&#X+>OrN8}12v!vkR-co^Il zR>Hop3igLf-~hM`9suuw2g1kTV7LvY!0+Ku*ps#!4)=p2;V3u?PJ(0L3Gh(Jby#B@ zTn>+bx58Ao22Ox4!VD;52v#oB{8Lv*0uE zDEKCv4Lh<{^%%Gt^uS@z3lD=nm;+0p8~WiT@Hoi%j!^+0ghBWiJRWXRyZBr4&Cq` zC~@ar7(d75o~l~k)le+U!XI?~hAKFTT+ff0R7ZUQ1vj{@CC$wZFSR_N4C3^~X18 zyXYouDgG$!@q$)vqo1UGzk}kB-$U`oAE5Z-k5K%PSfu>%Hz@vSw72}R6%>DL4aFbZ zz@@M)6o2dh#UD*5{do2dK+@<{#nf{plB+!8?9Q-Y0s{5>Xa*K%}kidV%>`bJXm8?4I9 z{PHtB=?hmEs|n&THN%U~a3bBtCK*0zG{cRge3-UmlUeQ?WT-}#Nv)dYzN06W)q!k} zcc@amAFCQtuLxqXoI10K#TVi&z7m_=vbZ5uWm$|)U$gAYz>4mwhn+Ywhn|cwho38>p9M=vBhy-#rhFY#?~k(V{0^&RzD0r1joWR;NkE~ zcm$N=%mkQ18PeboI1v`Y$#6ED0;Mx@pp2o7Ic8K;2?N3 z90_Mb8B@o=S%b<*n%b|>oE1-;xrBKGkGALu?8W@7hp+v3gp^S|cP{ziM za4EbA%5mpbD94@Kpd5GZgmT=u8_IF#pHSvO_d+@D+z;ir^8l3N&O=a+JFB6Lk#$gx zJCDP7-%7_9N3f5Ejyt{R^vt;9j^vU0kB5yMcM>f_mfa=T{x;tA6ea!B4n8;1QXkTH zY!dn9&{5}DQs=;7MSeLzMM$p>FZGWlEBNUms=y`|<bVx0qrWl@e`aTa5bC3#l) zlu7XoIhG9IuXL?{3cnM7c^b-ic?QaOc^1lec@D~Wc^S%hc?HUNSr4V5H$WLL|AsPN z-hem2x1k(M-hnb^--U84c@N65s|f?vYZ;8*ZI_%)RC zg{|;SxD84l{0Qaz;V1YD{28{UC4Yf({;*32W5L<54U`t{0569oycN3Oy|5#E5_W?l zXs$tW6pN($f8!}D@qljqzzWAN^OJ6ACbU!HLv>%jl z+8@d|JrK$`JqXG;9So(Z4~8;Mhe8>r!{H5Z6qIp#2$XR;2Ff@+6v{Xq2W6Zd4rQFC zLK&xNP{wHnlyN!{$~eu0GER?#GETFhjMH2w<8&(g4(7wQ^vX2IntWqAJQU7?$H1eZ z^qL!1z+>S8=z-_JVt6$?4tAuy0#N#-3hoV$hpdY=Lhuk6hDX8^;Y09b_&7Wr${0Ko z#*b?`UiYF68XDJOevd!zlRVN-$3kc0I{GMx>?y%U9seGK`V$KOhYsrKVNJ~g*TpoI zw7HCz?&wx({UZ8P`r#ZX~ExdqC2xedyAxf?3qfKBzcYVyZFhthO^t9=CL z|2&Qkli}Ual?L16tQfscCAa=d;`2{&>6~{pgR;_+7rh6 z=e9On-(sH)`RC*0i}z2-Bki&UI`dEa@if_0g6(f}5S~kw|4{#oz4-bvE!Bq|vdI)B zdg(OCrBu1=FQ>n9gFkxp*64^bdIIcM*HLQ&toVC5%^cmN55?b)L{X&md*dI{uf3r7 zdv7TI-Us%F`#|yceo*|qKNNo-0Hsk5fa325!G&-z6n`HA#ovcQ@%Q0S{Cxxze?J6@ zzmJCE?}tH&uj8Qj`w>w5eLNI@PlMv`=}`QA5)^;WgyQd0pv-}@pv-}Dq0E8vpv-{_ zpv-}%L74;3fG5D2P+o_1G~^jSqX@2rZnz10;AZHBJo{&qz|OmHofJ-hqx0+<8OfFZaLo(Ru| z7r;f3XAO+=;Hz*kd<|X*e}ET5gMMEE#jh@h{ooaF3|tDQ!7E`oyb8{T*T6gAweT)@ zJ$w(YfScZinr#*ciE(D|I%0EqSl^C zWKC`nMaYmS2F|qVsSJvLNerCKUs+mz556lt_fIG>@Lnh}@IKfdu7nZ;AA%ACABGYG z*FcGZk3xxo>)=B8IJ^Nq2_*(T1tkVP10@DN3nd1=03`;#2qgx-0wo5nhY|xfK#75` zLy3WJK#75GLWzOzK#76xLWzOzLy3VOK#74LL5YDMLy3W(K^b#jK#76>h2jHWLy3V~ z;Bxp4Tm!#_FT-u{efR_1onHPC%5{NX;6(T<%!R+fLYU;Dec&#z2DXOh!#40%*bd6N zrS?$PExDkqTj~g9-BKsWb9F`+I2Lw=sjxc~zt|J{U=Mf#+zVa~_lCE^UhrYK5Bx7o zhF`<|U^4yRA07brhbeF%Ooa!)d^iZ62?xWo;1GBl90u=$hd_x>V_4(F6-peK2qg|of)WQZp~QhH zP~t!~TnKaF4KN={94LSi2c|)Z1Jj|zfmu-Ez)?`*z-%aSzzro1c%a0AVkmLI2PF=a zLWu)@C~;s8lsHfYW$qt>@%}0PJ%W8UbWHBVIFG;nCV8Y?WNn|bV{-ISec4ljjeYz* z4#^vc8h`54|3bncTMHeMPontRS~CvG_KAdyogwsDbQ6D&V`v(Rep){lUlSjh2W9Nk zKp8vpVSji6l(BOvl(Dk_%Gfy_N(-L}W$c^<7s5qQ#?Eg15n!A@3wGUWL4iz*rBzfUiSY-|}y`4}25m!MEWo z_zpYV;8XwvUrKv@I)UpNka4JX1aa0>hmN}Tus z#>XC>5m)mr&R^9Qe^2jX+GT3oy?4nYekJEV6UCv_mT6J8YRiBN|4{{A(fQ_AL4=2L{yq(SYQZI3PHo5WFLQB15GN~;#bE#KsrB-0- ziCT;6I5Vh5WiLmIo=?OqN0UpJyvtCdK@+9!Nb;@?o@C0hSG{w{uM zbhP4M5)^lB1^dHYpv1rSP~u+)DDlq)rMq{968}2GHLxpO54%C>(mi1t_SFOSg+1X& z*c;A*`@mw@7fO%zhnK_sp~Sm^@F{o@l(oQv;kWQ$C~pAPXBi@u{1F}p%V_@qtb)fwi49>GA8!Uyzhv63p?Gr~zsJWL$s_&P4>lv- zM4yt9-6q&*pubwYxt(JEq4B16AZ=w=OJiC^+FHhu^v`0gpGQAR``193N6d#Zj!u9w zj!uL!j`&fHqtl>_qcfmXV$|C1l%)Lsry_#fN8FyH_Tqzr}|K@|QfLBimK@lK8;YP<(h96d%3@iVt54 z#fMiwITqXq#fNW((vG)6@!>n5`0!m&eE4qoF}xRcU|%a?SGWpF8$Jvt!qw0VAAxh> zI(Q{~9Nqw*gwll1z>V-(xD7rJ+tE@lL3z&Y6*wHOhZEszP_CK14r}1Qq0D{XgxA1# zptSV+@J{#vTn9gd&%#ac9rz{8qTT)rr@^gI#>+MsKL&eHu3pr+p)oj?-{Z%ixDj*qAJB7ax;kAf1DXG4j}9w;%n7)ng` zLW#*GP-1cbN=&YV5|hJFVsbT%AA=o8KZrUv6q6sK-0@>j@<{u)fzD%c?HG(kWZ7?m z4Xb~(hzWL;5lWIj5y+`kW#ZP(+Sp^^ucF8%czs@87g=p@y zEXn*z))Um9E=3OpLbk2^+aiMAr0?XI5W7xhK7JvIPk=I>PJ}X^PJ%L?PKGJ)bXW<` zfHiO-lvX(#o(a!|kHf`KuJ4@>zl0aTPL%r+D95BF@E~{v%!U7eGUl&_(o)yJQ{lDn zGPoQ{y>Ems!<*no@Mf4qeQt%jz`LOMskEP@EQJY z3txrpp~N8KshHryM^vo^iq4KNu#4g11ZU_U7L z8wS9(bio0z6Fdm^g(*<(*$;to&wdyzh9luw@DM2X8^*xv;aK=2JRH6R$HNa`8f-(q zWWe3vkx=|Q3&xL`#^UIqv`74WVQ1oK?CUN6J_Dw?XK>D9Xde9{<7Fz8@sbZ^yc9qg zFNILX%Pc74;?AI^i~59dSihYO*^&r6`h&m~ae z=jBl1=Rcst&#R!s&t-50Tn;6EUJoUHu7GMD2PJ;q3MGEt4kdox1toso10{am3nhNu z4<&xCf)YO;f)YR1K#8A^LW!U2pv2E7pv2E7p~TOpp~TPUpv2D?pv2Et;Z*nl*%U{QJy9A)UVW<4@a5y^ z>CILW$IdmSt>dqCZKNNi{ojBxF5ZM);agC~#oJKE#rsgk#Ro71H$kby$56(_XHdq) z7jQk?45gr7!#1*CDEA+}gVNVOzPecCWqBG;)2_<=?{PLWw1OJJ>_O#CH zZ)Kkew!fh3tfowVsO!Y~+6vl4F3qsD&_k~`V(Lt)pe^p~L$BiBq zyBie$-UG^g>b;=cr`{XNed^w@8uo$mev@Q)3)~mp2K&L6-~cF%eh~Z*90a$(!SE-T z0_DE-D0m_q4W&uP!gJv`DDUDs9Nq+vfDge*@BrE;6AptpP{vFij30;P>?c|3$UoWQ z*RAlazk1_P@<=gsXGIdt%x|+F5*jcXTp9 zWhNjf>Y^3Y5N6GeCjkPK6N@2pE?7IPc4GtQ|CbOsq>&z;(RDRbrBSw zx&(?(ErH@wS3vQprBHlo8I*p$7XHtD=kFJg{!+ek1AQpIvjU3m+z7>YZi3=FH$(BA zJD~W^oltz|ZYaL@kD8BO;6yJFQ#`})Mm1OcXCGJQb zDZj+BCLGJ^zCvAgnqd12#+@%I=ARaK?uls=Y3KN3+0*o)wEZ(seCJsxzVjRu-+3O2 z@4N!VcV30!JFh{h#OqLe=M5;n^A;4}c?XK`ya&a1-iP8lA3`~neGKJT_9>KO*=8vH z{}qh)DLF1BW2-4XC3&P?;-^jassD>dG%Hf`)!wv|4Vw*MB2Pi=$Z zQ{O@Hsqdlq)GttcYC9C4`VFdq(b@8;U7+|>8z?^24vJ5iP<+Y-#i#gYy^2SCi@u)k z?9H5e2zeUv9a*aye~v48r2KorCiqUBSNY366KsFMa3pu}|Ilz0dye}*S`Z%fUh7)+ zc=|lLNngjG!|s6}ss4xJzdfM%?_N;+wPXN=zI9B_@u75);S31#m2swbtXHthGJ@%3A9QQ2aL?%3AA*ur0kg z3CcNZCX}_-M?zU^oehtHd9Vx?LRo7)4K9Gw;W=;yl(p7wC~K`fusbY;GA7Dle2o4F z>31~FKB0W^<4p2MJ6{HyI?kdY`tLK&_>ya6Tf>(jW5?Nfq?F6oY;rE& z#MeB;TAGH5v6dy-wLFp0*aDBOWJ#vKqnq@zjIn)D$UPg`0{D>heFc;;RtdYpAe1py z1!a9lHI(%ob72jvfwI2i1b8Oo1B+^X$EolQ{yq&#OPvYj-JT1f%mvPdhrx598!m=2 zAG!d_^`VR5weV7S3*DJ&eDtZ{Ac>iL}gg^|yoyhNk@u9BJOV-@xgHMgo-jIE{F8{rlI_&f?RO zc`^TF`;PJAbtNBpW$--#YP|Ic@t>^suV@xHU2K9r{X z6^ift4iA%#>tgv%5w1wg`?V$J!-@a2m(*eq}#wL_= zG|yiA)~N4fOfO_{Mc2*^`%a6F+sTwEx=A^u?PW}l z)ygikffS`HG+{R=?!lPBlD|#cA%@~hiKrFI>iP)DRW)t?SZCl;Mwa*5*bk<_{!sd0e>fEmfOFtLSOE`!(iR6nIj&8ilSbpA z_^94I<)w8#dlvH;b)6-M@)11ANssD{17CS0=8)G|&PVP3aJo+kgw5Nh9=QWHjN@~X5q;8{})-7&nh~#rrxww48$T!FC`MI7zxQ^5CLK=5LMrwZA zWOw1LybO0n&a`Yp@?502L@a5=jFnfuEWZ7{O z)XOqx$2FlZGxBT8G@R5sXe;$?8vVp)c5b?EtVVXBGN~(As%Z~o7Z2IZ6hEBw7oBDJ zW~LdEw&D8LO)G6vJ1dR1TknI(;)zXcPRSyUvEu*~?Sa~Rmy)O9TEv#DZl0#>Ct9|q z>?fMXS*z9F6LDUjx_O+{$I25eo3r}V=Gn0qB>a}#j=iA4EDtv5!?8VTU%B1!UK-5O zaGNFk4%v?P(qI;6VMx_QI%WV4-Ej3|K47)u;?%2j)ON$29%EZ#!wy>~=1Vy{jw3oU zr{!j6=jQNu*sfhxH`up2tqPkt8HFl!!^MqHE#+vqt!q=ummM6HSq{ad?aaiUX(`*p zLU&GXP6mrgEKMuXOvug6%1F&Ix@u)xQBKRuDI7k`)^!nGL1BJo&Lq{pjW(^ks9qeQ z(b`MGWD?38(b{~Gh&$+w%=Hd+SA@%~ndt$fXmp>}%gQBbqkE0M*SuYqY<03biFV1) zPR+_ZD#M+gF)?*oR-w_4_K;tbj0C^B@rOLVsLprntW>S)q)N@oqE^-~yTt!u=N(8< z8xF6!!`17sC1s3eVE?0dPl1CL!saMrANs{Z zzqVc=S2`xS^D`!8%yj2u%*e{j$#AFT*GZ6EFG1Esqdykh^(h-%bfki3`vSw^7!^TgD`)GQvX+O^9g4Z4pUVVI{*%gS)4 zrl&LR3kucMP07{pU~4Fs6ys=J%FJA=kg0ij89C{y7!60SLtV(8&!|~E<1J9p0PWX`Zuezl2J}(8+PiL_EEDS+mjrh1J}(agOcka zY!gyx6?Mq&qIF4@EE-HI`!1{OBsso$O4|$V z2ex*SFETL@^hErXWp-;K~I+5pbw542ouL`*%G(-C?Puj@}g9VWg7V`O#`$_G) zylwx4{b`lqdPNh1GGi)@_$sR_FxVT#d$GB6MMjNK#p=$_wN;tO+a#1)_VtpTi$+Ma zudXEev^G(|@AYy0u6>t{wYs=QklHh3f7RR(Zchohq`DjIG!(pUb@$}wb@tCv0IPvjmp*U*Kt9zB zyOI2Jw54*9k;at2_rtl%s{NIbQF1?~eV2#%Ju7H+vY0=Izvm1c=Jr=sRY&;0G)P8q zs{h#L>AU())srO8*hy;pU1}~ZeLKIoCry|i@uh}Bp82Z5q-^eJ;dUiavMQXn+!Ip2 z-^K4fH>EA14B{I1iGmick`@*>{-;>*M|>6TfT!3OAldF(TSqCKu}tkujS7;<-j<@7 zl+UoJQ9U7hbKAS?LINpsOpzsz%<#%+J*Mblv~KT7J#QwDHyHL;`m9olZUs6ic7@l{ zNxP?tp^{*AaloglCdDg_mQHqlF^Wp2RR2O${$bjP?EZX76OM#xlbna9YFL$} zXs|!U*a9oBzd}4ic36VK8w|L8HEJkJnuVyC7uA|S1BG~p>VSGyr0q{3MPR6JuCFp; zrIJ=dr&?|3DAhk1{4MUzC2;F3Lo$|gOtR`vg$NqTYfh4sVXv>U#4;v*E(zUrQc6Ko z#}o&H0iUN*HRyFDi_9&qF6Cmh@)emvF;`;ploPZjR${HbRvMNY*+x|`6tRjYni@(H z_D4KcIiy#6kY-Y0$P+Fvh?GeQ6nY zF~(?U3MLJB99mCA=aQ0^qbQD)d;OLn34Xm$xyzYsvdAE&65?m2{N(rfeD2XhhPj6h zt=;+V{4l8?i%Q&rFJM26Yj}`d<+HgCh4z^>`)JnQfVtM zAMaK!l||x;NR=MrGDPGwgMpLk^)g@!#Xw?hN7CATp(-Fl#2r6IGTDJYTvBPZkMx6d zdbH1_ANr~e4Fm}SazIYwXD?k@RUL@9OT3X`Lxv2gZCq8;aM*u>RV+E7lfu%Fg`QBE z&zh5r!^Au+xU0gx>XM-LVKw^t@so@OZ?K|@CXlMl!bV;&9I5RMX=U+Lw_E&U)CdxG zKsAhnkqTv|H)bYHCKwcYB&65v7PT}%dQ`@+J9ZHFKq=udGNXV~^uo--S?o_MrSBb}~ zd5^ITaSJzQlVInhPuUsCQzhJL(&+ExRQTjE5N1vPC=Y^$bja`5I6_=*| zhv(6iKJUf$UoYx-m9hQ&(=J+k_v&Pxm&8!#q|jAMZocE`6RunQz_P3fDI3RdhNJYW zuDNyfc}L7Rrn2mxr*@rLFo|_>NxsPvzIwo6M?O9( z<&C0In{nuul)mfNhwKv`H2JD8KD#ybmFwnF|9!bB-8t#H&2O(y`+C`&f1Q5%raOMR zau4piD}BEOpMIBd`|U%so}D}O*hQDJSWDg^(mCmqx8|pBxhSQq*S2wst}NbvC2Mwx z+MSb<=e|2=a@xmRA2{foKKtFh`3j~jO8-cQjlOeSS3aIoc=5`wzPPY2@3>U@g^@?s z-cfYh_4?YX~r>7l0tnqDShzs>HqFO@wPPuzqGyn;GWkn zVx0o_o8UcE;>@Ka5%`H$g_N?$d+Y}MYsrk)#|H(}|6M?bllHFZkg z@yHdP-7hn*XuE65jH}xn^d|3{QTi9ZduYH3Ppn$A`P%l?w{E_70newl6Z^kjG4-o{ zr*0o~T*i3|4x85@$n#=K|H6NMJ8QWoX=iPq87vKGNt>@Wm z^E#Yx3X2Ikv==)S&sFw0ug`DK@4nx;8IOLH<>md#O8?=?cBgLGYvH%I`sUp{s`dCZ z-kYHGD?1;$=(s7T2Pe!qaLTr4daz%<^^BdPZhHTljnjHwZZ4VB=bW2!@vF%lL_el? zujSP%*FHUW#HikL?)qdI>oApmz|Svi*rj63=kqE*$SK?O)=>Ig>EHS3<(nQ@yVpa> z#Xn9sD8u-c^;Sxs^>jt2pLe_Ni+y^3Q+8VZd$+TmfyED2Fc`#ShLa-M*pA11D`d{LzI&@*ZXlk?>bCt~xo}--$!1czkE%-FOBraAM;eZHD_G@`?~87 zy=%duEAn`Mg-SnQ?W`krU)!TNb?ROvkCxqjhI)Sy=}$`e^ny3mu6^jbSDr3AcR{Oc z_5L699q+y1)l=VjujD>o|4&byH@UNVuLt_E9j_ka|84gPHx+)c+tk1rr}7*T3#~dQ zo!#p8L!Qn`*>inrczV~P#*b%BekauqW4~_q)_vE1x9RuQ8C|-zr=58=m-Oov{<`*p zYbLKAyxVcT-un5>r&#Y~rT<{~&q*&2xqk2e-rmEt+u&8|nH18$_Q-}|7xdhC$lmWy z-FQgkY5H9bu$`0M?{dbR<0H3yw&AQ}XFm4$mJw<_F#7(#FSz0NQ{H{>@!h6AS8#gA zAJjTQ^uPRa<0p?@wc&$BJ?a zzu@4v2c6yPnd>8`<=t`M%)8F#{c}ox?=wIDKJ3_EmLD=>#^*mz*ymF0EB)S=Jyv|d zBe#d9pLyosUo%UOW<3v=TRSH`F=fNszr1?G?ADKsc&1{{io5X>rS})l>iz4G6+bLl z+imw>e!h4d&kQR4k#D3PK5|8e)#tx>bly8P`(?3qR_RB-_t@iy7;T?CV#_V%U!8Fh z<=LD05B0t4^0ukQ<-6Q+(H!pwdlhfwNUrop9n*K&oRt^;x~b;Xq~4v!(N{~A{>+lx zUqM&*bC%?9OecOX8KP*c9jkQ(X#Qr}9yt2tv*?ypR zN#`?`e>mj>X3|Q3?eeK#o%GM&cW-t7d0*VM@;CbB8KqyhZR>_$dgi=}U6VdO;)gcG zrB2<&&JkX7;}45R4&QL{mNmwyr@9%BN?-ZOReQeiSGL1H#XWoa;brgad!KxdBUkC4SajGIKmFXh z*RlO`x)1)kJ7qah>02H1>>)Sr`pumep5VdT_J&PjXUz3QyeU2fcW z&g+*hk93>;BkR$W{^ehn4ZV8gw*}?y6VExk)#dN8u3qW$_deytek)%b_Q1y*-aFvY z-49_cx6&IcLVI4;dh!=1{BUX2q?5X@U=1U4m(EF7Pn>-A^s)ZaRtEla)!Hq*>(rR7 z^vC9XIjzgr!4LQTaG%hH_mmFg{XI&*?ei!6-|V{R>!Np`z4VlQm(gGH(#Xz9=@Vy< zeznu?OIN!(RQ=q&-SeyuRQkoY+`DGzWj|LeOzw65G-V_gQx?>D%F)_p2Vy8S>?xpG{=mrS#8!deOUUlFq(s(=TIIU3KWem$BYg>D%?X zWYq(oesF%jGk!g7e$L3BvBR;pbJB)Q$M*Q;vwcUOa7gygC+7}5oAIdhW7q6?Yj*MY zqz*mrzwnms`S{g$O27R2!3Py)7q7nh?(B(2U$9RO@wt!K*|+A@3{UU7FCDdF#?!0D zEgG!R8;?vB1hktx;^*)>CZtgRbwfsu| z+NkoQPTcs!gpmW!`t+AE2Y=7;eP6Nv#kO{4+MWAcGV;cAPro*KpO<-8g3_P;Sn;yn zzH>Xd({CwD-@1pNeQsGfC2Ri+u3(+I(%-QA z^~UhBU1kpGeC<`A%;<=}^(8iSPC9S#qGM7z^mt@z@~_q=8V#}TDpSvIqKyEgZD zMwvJ7v)2FX!#vBO^!El2dttvfAKv=R?d?zAG~(vPteM?k?2N7Yt)gPk4_zKOeaz5P z_AX$Y&Qkj8zkB3J|MVwTj$Pd6IrGUpj5fNUmZP-bd!gSQ?r#DrF>pR}LRGIN&c17nSk9Z9)DRJS=61 zr7iOZIbo};^aZf_2bG!iu+!N%iKrcW+CwV=shl?^Fods&R6BBEQ-Cw(}JxV4sa_1 zdpjMnqX!m_Gj0NPg@+z-Qcf=D2V2tnDmXOyO2j#w?A>AfD)vVLLGK(V7FB1d+a{$I zJMSd(RFv~q1{y!)Ijo8|Sjp9GDOpP$d%PZRc}q67_Q;khUWKos1uM&V@j9xk@`Ebw zmO0tESQM>j|?PsQdAQ1RF*lfx4wPlWH%1o zHeBv&(HV&+66Byk0e9|DVBMT=!FqDfeoh6`c&7o(>RDM{yVG@XI-#;G4DXz9wM6FTRZ;GkI?v3cq{KJZ9rCiuL*;9!gNv-G z2>Tqxc!w=RL@8x4p`)t+${>4lgB6%&8F~|2awQuz9#v;Hzvk6tUCZ9W3VNMi1;jo&;CXSWOz8Dw|R)@U4=uyMEBkaaV9_!UA)aARxyJ>L7gttfiAJOfp^8cYlm05^g z)Rvlrc*655z0oVc4(qRHL@KIL>R~tMps2xgtI; zC+o}Z%_~o-zf{i8o0vH+Hu)XRkR2Yb=6XVYkF$$Y4lP!P{LvGaCe~9Al` z(i&{4mT)gZ1P_ul+r#2IMHRNCqNhim1!_UZ4f{AMR64s}>9CjO{CSjI%1PYEJLn+m zZZemjOZ|?{Mb%7%$9Y=zHlM6(4{-0$*{wcR25W)3vu+9bSXN&oYwMk*cW`Uni6K=^ z`&zAa&6a#ScjS|kjuyR9pibO8PU_>(8C!bxQqEHj(LmqiF)eE&>@^Y5!=MANGfftSb<#KnOV^(Dp~#>k$h0{F-n166xJVM>yOd=O5!Z_ONzI+fTylXc>Xw?JXrL3 zN-v4{O}%;~EE!l4XKZf6d#HEeJ)y?vwwB~F#%jql79kC1#h}YrtR>U<2hs?oTc#z` zxCcqBxQvxrGL6rWmMhC6+F6pz7_BAKI1g#0vT~u8Oyg>#QA)R5OQx|BNvybx2eo7x zn~|=w%FL4=B2i{7nZ|`khbSwTYRNQ~BaK$N6ModjIwgRmQ3SHq(hbN8ZFTpNLJpJTB0?OZcvs-@U(|Ww1$>U<4h!ZtG>%v zq$Sh13`yPs?lS(NCDXVA$;x|=mQ3R#q!r5Y5T5f8$z_btl4+cdG)`GLOG~D4DbnFe zcZHU)jAZ4#M@v{ny3w-C6CNUASxcsR#pe;q%9-dyGL4Io#w*=rS~87WbPktshn7s^ zeWaU|7{S?$>aRaT0%WEw%FJf#b3i83Quc^7MmG9%q(m6>NgM54@EqMebZDl5lniFQWH zSGp6mL^~r{d6#I3c1F5eS?k`;`tAe@H#Cq29c&ID<^A-F^Du>=`PR`V-U&8yFyEhL8N~w%l&vFL?p(bmKYUC zGnADxv_#F3W-8qhEfF`6th{$ z)3_PQt*qRxB}M?!u}Zf_OZWkjSaBH}v}79Xc{1byWw}sGE@P&aC?Ar?Dxa1Z0Z7G4 z_b)Bs2S{SYWxS&$)9B2zBCC|;A}zU$W3@#2ki1s;v}793B9$oJi(0}Dki?41_()5p z(SxT%9#ob~wB$0%wPYHrk$lR^S}hSBkxG^B6)kbhLlP@4<1;OpMz3VP!L2NpYsqB< zv}77m?FF5?L;(WXe{O1D8vco>pcaT%MnWE#mlG4imo9MF=>sM3;Y{0qsitURM7 z(|8@}IHh}2OU#Fm#EQ$q;#KY$uzbjNe-q(`&*J}j6hneEX%9TMdFB~CDYi56joN= z))IbzBwusE546Nc9uUpjT1%!e8fl%fe5RI|9csxmss~!Xx{Uc+Vy2l3pT zvXZAImrYcNt8Cr1w(bR6_lm9SGdyaqua-=s%GO0} zUFVTJv8PH^q$MJfmP{jil=Z92n5reySZwPqvUPz&cn(@wc~DC(V~v(fug=O!}yAgD#5W@av3FBGL5NYtzTWnG%cCN z`L^z2Tlc7~d)(G_9v98qO-rUxV(ZFn-R8sjevT@^=p!tN^D-@&#{T1@x&yUj8pXD* z)YdJrbxUnsQ7T{LQI>Df5@!=y;ut@{`qgDzttDpbw(bpE*FG(puA`QSDoE><N;u3G$z@)DYmZ0)}3VQswVQ)AZ2-tmR!ax;KvGIYza&ep4)oIhU49WB076Zci@_p0>#Zfzm}cu{*}AiA-MO}Im91NC>pIMe+S^r2rg5~bbKAOmY~4y* zH}hz|Kcz~#LQ5{=7AJ!|WJv~}BU-O|}SJ+3T&q$TD}T4FA6 zjP)yX0WC4JbVqd^wPYG&Y~46pcbu)Ov~_E2-8x&>%fq*{R0+zp#N13vrjb`{{mL;< zOGIy5cag0d(&C9eC}x@&CR^S16~TescT89vJjrP30m zvUT^A@*W&jg6&#jmQiNu@Lesrj8AM`pK|M0m(f>CL zE?>zTIFyw^K}+JCPD`fIwJNIHLrb)utt+&3TaY#>D`SthB(B_P$u#!c-)2DWaBt*fzhC)v6lbNNoOvRtAi&Q7#s z8WZPPzq*VgwZwV6tvk!s-Dm4o*}670(YzhBWEwMVU6HL@KHo4tQ6<={CC(SLWEwA> zVEyVcsOcI)skskW$UiBbuZYuS8QEi0ngJb%MWUaw4%eYoc%;jy}+qSO#>Cto@wZxe)(wE9|$1^O6Ye8BvjjwIpx3=z}Go$Ga){?$Hug{I$eYl5?zIUB=~F!mn)IdRzCqt=r{XD~D-hYRP3}+dBDxqU?<` zDqDBUdAz4am0+8eID^y@-nrQNm9eiS(}Y#MfwPYHzk=iSrM@w84M{1{ZAuVzJ z52>xvouMV}*&wx1x=XcW8rLGVR=OLs#FZx`d3PpP#&(H#ArnNUA54+S~88Si>;b-Elo>YVL@_{m%C(_SQ2M8THS+M;wnYKe2_%lHJG z$~#O;%mt8=l`fzq+7zjs(%qmX)A%>i@5Z^3uX~{HRMe3$>uWQLP z+FZ#PRJsmYV%CiGU$x(HS~86aq@R@TcrBU6bx8ZGyf{RJSXobUT<5>RFnTLp zFD=n;NMESDK`jwGkv>Ei7}0IfYM#3CB_@lHkJ1cEinU#`5I-SPZC<+h~R!mW9bU=(=zkq z!!J(KlGsr?ZPQ(#GQ^f4(Wej-l{H~HRaSn9D}(;(ko{Rg`Myv_zI<-0Zk-aPlh0w* zDc?-Dddnbnt%>h4Q5TW!td zD@~c1adzU;WM*V!s5h$*k4vY%coP5VM|VM9Mq1{?Oj(#_BAiJAEY;!2IB%gLBoXjBKXJvHe(rr@ts%jhJZwW>aa z_3A0s3RK=M!H?dQ>Oh63rld~dMER92zh+uVRUQlD8nYLw;YkIPJT_H*I~UPct%Wr+4*$6_}f{%uoGJ^JD;|bsf*KyKZa`jR&k>JZs${W zCI&;i@Sr5O__#*wlv)XcBxH-vTOG)(ni%qwRq#EI%#v(Rc+L*}+F!-f-YT)bq(TxW z${(-eE$}-kV_ln)Se3JGxkRnXo)fIhh?MiBsxLBu^`P_oB@xN6V;`yHtz$Y($JB$<55yubKG=ka;$zbEpraArw^<<~akkz#)d<&4iKCCT=9Q>`zGHPjAbg=fK{ z-x1>ZidD*3Yl-qon>KfAiSgQ$eg7}#0bQC<(AarEQ}W3!ssoeN zr^^z=dEy0+#6=&Gt`1mV3(~WSaA6Nouu5y?oUHHB*;XQio>wXx|QO@%C+*qf2siRF>rQNqrkJI*0b^ z*f9#!OMdh?-f{h`r}6YambQq`D=|V}Vz3SFppFt`bn;rGiEPNenzOY;Txg1)#m0rE zjJMeHgQnz@HgV*i?yBSKdT0H7F@CgT{}fvZy|a#A**0SACic%bds3&^Jk^0huOD4P zKeF;hBtbM?yiYcmFV36e^Cj}b25lwqLmwwz7|8K4z$DZf5y#EIR-Z$>Q_SZ}M7XUY5Co{Oa?e zDhc^((^un1ItPWU57dh$LVR@}%lALvsw{9NmJWfxSw4ny~A9FlX z#@K11{M7-j#HQ(Y?KWnUYq`R%OYT zOm?vU@*v-bQc1{Lo1QULC+H*`yQ5M_789swyZC(k9W(v40!zcT>IbVt`O(!2HVxaX zAFLAPXYS*xiR|dyp5utLbtTF4d3}7I=ERw3p8tzC(Uz#oKRe#Y-WwnP_*C8DUoTH| z_$0W-tgm&6jp*o!USqa~Tr^Lep`(@c{oJw>Gjf!%M0xABY}5Ywv;EUqKX6~7(SFFO zu1E`VZ_8iI3)?EotR^NRCyI$;k0D-N!8#Z_hZW$+!FX@b7X8hub<0D+O8*IJVU4w) z1Tov%hrEb4CbhK>%G8h@u7lJ>e3fBdM<^4?2JI4^tW+}ZRQBrTi?JgU>BjBI{JX9l zl`qCl^m15GIAJ8AKl<1hksY;4{GccMq{=VK0^47T_ z7@sfp9^VdZ*f#}Z(_68cn~C*fe0=$<15y?4Dykq)o#XS`f7ib^*r2WG4Z`@m>Fi2h zy!XY;VdHH{sq}?=m9*YH!h(=D)>P~`jkm=huVc!H&ztC;;SSoo-c83u`Ne;lv$e$d zZ_0jS$A44CaZ8NZ%W(8r)BMmuOc|tm(5BU z`K^KdhEyWv6_$XzlR7?cBW2e%?Bd&XjgLc(m7y7H8e+$1v>ZAL(dH5)^g0MTe(X4o z+3lf?#LQP~W1wwo$8jv)Ry35=#zmc9iWwV#cHB-w+D{kT-4k%kvs@NzHpI7P}yEVl}{x1&1 zwp^{eb8#R$81kvpXSeg%F(5;h!ZtQ;xk?}oqL$6Z#1EaJ;bIBj#km5mnXfgG~gbx3TFF&dmWPxj)ljVgns^Gag-vu=KM z+)Jw{$>memavMdgHrgf}I=vMo%=}drRpLZ;xR)c&H?`VV?TgxXJU$}ggz8gW(f#Og z(y+~h`(yEMUN9J7nQ-IvO0Z9|SCL(>A5O6E82b(FUoYct?*8?vei_q=_aC)S45^VR z0?|mWuBxVPv@b(7GE)dySyU6VpZa#+LJnZi0PAtJ;ixTFtm4 zo3Zg$WI2BDShu4s{NH>Me5NVojJ*!hlw)6V zOmE5loaXJ<%zOi5@;Tj?WEm8buPNmm(#(94jm!R#@&>O>u*lk;oFLohBDHy9cCE%n zQ|i03`&RjDryL2!e_Z+N%r~e*OkQP6h0=zOp>ejjxqqZV(whC+Pyvmj})p1rXYmQS}u9&qh7ITLlY zY}z)I-O)pa4M)$aQx+boqBh>Qk_Y>&LuDnRDzeot32gnp_Ra^stE&G07npPElxZ_b z$)*mQig-W&??LE_CTu!wI*_3QCQg_}1_nU}4h@YAlW)yJMJ2@|qr{pvb?MCM zch$F;&k@6SD-d*A!~+ko=hkI$pV)7N>w&v~D7&pqed|IzVYU7t)P zf9GUn=WWl2(L7?!#VYs2+id6pLzNIOFX#TIcsS$4!TCtG9{>0Ln2&}tkL5VR7>=Ku zk5Zj))j{a|xv|!|IJi^a6U6B@8s=eS+d4uVHagFFIr@I&mN2_D};hiIM z`OAxbIQ~M0DV-~iozL*kjk)qs)k$<-OkS^x*DmrxpY$8{#&9^u{Xf;YTCPV^^>eOA zhjZP^xgH&kpQ>uzG=7DJ;&^Rb7uj;s9`_02P(vLR#`ndIg|MMRKa9~)d*w6I-$=KM zDlbWW=hk1h1RofSR@iAj(s=)qNe8g^Y@Avv5B1-dHgs@{ak+LI`l0MEE_MGC*XXJAV<&$hq8OiojKF)qOob{t~9vDv9 z&Us)s)vB$JXzZ}u^8CM>uT$>qA z-`HRMaX91W{^*axt)sdRv(fQh$EjsArcJ+~W>&?Nis@5x@+Q>gs8awFmYjy~cb3kn zN1Nlk|Ge6q$mg>sO`5l~0dv~C+Pn$%wWr}-vrBUF%%u~S0{_o2-N-81VP;hg-h5b7 zKC^7v^pc{Qq8Sx4FB?H~q|^qn%E$X94`}&vyVDB{M_9|qJq>5u{it}#jKY#4_x88v zNof?Xzo;25dhP%0oC&6P>DlrAVB5+21e1Bl`bXa9Ikl{`v~0!*Hgvpt#3{#qtLO+y zazFE++jDApd5x5T+aK9fSxl{al<1MKpsI~JskCD{*BT|37 z0e1M6A4%Qgv_HLFcK8vDtk0ks!FD8JxSrh^Nk53wF6wQ$|B-l{{c>Lz z&q+ic#C7lYpP5j5#o0NSkxgr<+7|KaAN-HkA9diNDe_FSvpr-zVCxu`*dd91rF>{Q zk-al5K|jVDl!xDJBiWx*j0bCme}6pA*y1s^mwsl*X%l0+x}Nt*WE*R{l+L=KrnIcE z5^J_8g@rY=teIL`IQ&M5v9F|%w|%d-9-8d6P`vez{qE{%)2EfyOfRgNKI4)pCDRcv z@3LwcEuPOvKKHuL%_cV=(b`GHzwav^~Bj}9CSB_CB zxlz7-_dnW4QjC2>n{Z@#^L9_rujozcBi~vH`&Hb$RXiW@?G=rEL|ZGxb`g22c8T5t ztGlvV;zbW7VMF6P{!P#))VYRPH5ZhWoj;|d<^YVZmy&xWL4Z;^lUxYQRF zM%Y+Mw?&M+)%I3?>KA9+=XO@UqB5yAR!VV+yj46&;<})yq9$@$OE{+(Sc16X=Z(1d znzd`+aGhSWW0&nYt!(C{Q)U*{l$96F*q_@tQNAjckMbHN);4g}XJnf;=6;qaUuvgm zd@WaR*~lU!evwS^}%!_AM`SA+DbPHKpjLCpqGdmv|S_U7o;r( zy-2hU)K0WT+ieBCK-xCY^F*znpA+?HyIxQmX?>vQi1vb>B^q~_9p8A+Gop(vxZ9V8GM4LfR618Z%R?tq;+CWbbb%TCPG^p+N zf__9AK2>b&Aj$^)kjMmaJNrS8lV*W_KvV+SPE@Du>OtQptpW5sqSc_sh?=$CX3#d$ zwtyZb+6j7us7u>*gT6~z4`?gV9?-)?S@;Ye$CnLyh_rE_2Z<(vwh$F-yAsd?q?Lp2 zC#nVAN3;T@zF?Vdtj7gS^}WY*V*_Y2rEUa$hiEfMeJwEE*b2Irs13v(?Vx7TIzZnd z>IHq1$T-rrO9TB6X&InRMB_pC5LqDgb;)#N5Tw2pnQrU_eS>p3$}sLG$^>yN*`ST2 znIQJ?gTBuBf$kzI0ey|A4y3*~iMdJrW=Kz4U}38`YKU1=uV=g+HM)>4$@YD z))Q?2eT8V7w%ZQ6owOaG+lbmh>xlZaT|cOav;okqL}|FyU@cJ&h~vuztsyNB^kt%a z&@Dt&+O8V(CDLYtRueUXRuQe&b{jxnByA&TCDB&U3ZgcU`i5q@G5Z+)a%Q?w3;F`3 z)`4y&Y6P7{cFRD^N!tig-`Y$!Hi4Fr)(rYQ(RR>HL>(aY{mpcv3b$FPuWqIr)u7K& z>TJ+bqDIhXiPmeo4WJuI+X%XWXfsHC*A=}J)JR$zh;wcSEg`J~w3w(DbUl%AtZkPD zY9K8GbRE%n&>|vB+vS6MCtPa@-Z{zhuLkp`McS_bH1qVb?|B1_xlgUU!N z0L>t(0F@Fofc6rZC-7HQ(+xkUgft6u5m5=~LZUitR}Y#_S_7z!1at;z<)G7vYC)$F ztL3yOD0ezZi6X;Z;9ZI7uGk7w806+X(tQ(N@rVL~Yux9rQQSIzW4fdO?3B zGETSSO9Q=2T87ey#)AfkENzz$`U`0Vpg$8;fZir*0HsqO-!_rI!Hkv!^;7B&&~Bo3 z&|5@(pnp*d^@DbiHUR1)N;}gq{zQ}mV!K?>o22D|{z#M$>LseucGaLaNSh7%15qRB z_eATp-3Cw(X&XVW6Kw^(M%1S5+Cje~tpn6e)C+o*$e3iumj?PRX&Ip35RC_Q5n0+U zAM|U|3P8UissR0xr~#zDSDkKb0jaN4Vx-ryISX zmnpRm)Iqcdq`q#C@e1@3Y2!S$$9T{$NXr4eNaP2#6P0Vb3eXFrRe_!-st5g?XpOd8 z2Wlg2J?J^2&7fzATC`m&=o!-5K&?dGpq~*9YP-Flr%5xsI7TGO2DK2Gpk34ke$Y=z zvp_!~Dgix7R0rxOyH=3;W_P;L2HHuf?Vu-!dO$xW+6z+O@lH4T{QULqbfX{iBT5|r z?O;2Qm+aC4ID#ZC2lO75mJ52Ev^>xci1I<(iK;+sR}K0;X|qA!BWeUaMzmhrZ2)Z} zZ6oMWqOG7uh}yJWJLtQlb%3@K^@1KIGJL`${ZGSI!GtpGI>Z2*0XXq&d%4*Di( zJ3#+K)DGH2)Cbx_EnaA07N=N>LHAH<3FsR{vq5(gEd%|HJa(LeQIBXRXd|VzfWA)D z3A&4DK-=vBeT}q1&<3K+b8*~Aln3JcCW7uH%>>;+R0vv6G+W!%g1$mp9q4wVWuV)L zHfp;~pmn4*gPMr8gKj12&~}}mwWM`{))4iBzD$&Ho*iE%=oZqlKwl!t1+6A3&~}BO zRiqVzzDQIJT1m82+bsjFAZ-Qc3q%`0Hxq3Gal32>EhlXUXc~+;K-0D2gLd1f<8-H9_U7*e9#RGIhM3gxN>kaZKEW|8Hy{Q=VAyEnFTCyt#)e}{NIG0+`Lef@%*kd(l z0cmSM^NBWr>WFq|yPcqGNNWLIP1FgRM>L@A_JC?h8wAZI$}GY$B2gZQ%bf_CLz)Si zO;iY~A)2l2YC%_$RtLI*Xc?%QXrs2<1o{kV&7jMPwu3Gs>d7Ck~RoBpC}UrpyRjUKz?FCIH8i$Ip-FVR1q~(CZM1BwkQuvmG{z3Vz2mOU;0|)~%Qa6HvL|Z|ah@iEB zCQvLHXvX7-GC_Vy%>wy|azS3A0?^51*9FQZ>IQizwFhJp?E#%dl!Z;jcG;jwq>Tfe zNi-2Ok*FASIOVqn^fpDm4s-^kt_Ph?v>9|7Q48pOvMWcoIh}kfKzWo}1^P5mJ?K=T zHQH_+XaZ^LLAgYmK)jCF3_69h77*v$3ObpzHqc2#-Jl$zL2b7e^eNI*w?2_58}vyc z6U6!XLE}lYKqnBDfQ~1s({}ZsPmtCC8b`DmbR1DLXbjc72Rqig)Ed2@k5g(N=vbn? zplqUX*cI7sJm_Pj<$#VM@`H{hDhIJ$1t^QOD$rP>deBisYqZ@u(2=CA2W1j%1|31v zqU~Bihm+O@I*h0rltDBII+kjL|D+!(ML&r28x#3g{$tz4)1`k}#PE>Fzv+>G4~_h* z;)(SeZaFd!>96AGgP2Zj_9r5>t==S3edLcs6G6R1YX5wLNR3f{Ai~aI{GO-+)I+4^ zg4c;^L9Y?jgMLTU26{5J^;%DvjQ|V)pq>oOLerS^PWd4UF@lQ{Zo-F@l z>B;JUc#`rnlB6fgKbe2B^ifI5Pquyb)jwJNlI4G7lK7MPC)+;B{FC*+Wc?>u{>jq! zHUDJ$N0R!j>L1rsl(n{KZ&PXZ+S0+M%Iuj@}QYm54K=QfoNTnwv7jhfUnX&|({Gb1I9gB9{v)snWhD0@Fdk(N>v%IZKy zk&#jq%IZKyk(p8y%IZKyp;l1I`-QSPkWpl(6os-nkWr{rZ1T2HRtGYQ@hL^2tPW%p zIVnY#U^@f^o_QOn%TvBKoWfi|| zBFm&cWi_%@&wtN)!|o@k_K%FX{Uc)-{X^ZGuuI)M5bYmoS#+>}I9A2>meJ=6R`pxS zj~D#W?bD|Ew>n-RSm19eZNom1((%FrIO(+OTlf>*K5EdbQ#mfcKwuwd=w*MlTF~3e z{C<0xj{}N696Lk~O!_dUWzu0opUP)dE1a_JV}yvL4?)grDjnB!aoXg{fgAiyMFVgf z*L1Xfs54NGgNsNI_o{sn$$Kx3WDz+65yvTVkEJ7!((F}FrL8T^w(DgduS7GWdf5j# z{q{i)qU=RLXias<){D|J!5Mb7sa}yIBw4S5rpj?m=ci3BQioPJN>cwhx|{-#2TgK` zP8B;vHHM@1%E(!Js#j(9s;AS|R%Y9WY5Nd_T%pGdLK!6rVr@}ZQ)!p8iO_;QO+{UF z02m{!yQ!#q!iSt|_sZX^dtIJ-ABUTj-7EiqD>KGZ|HwkacdJv{A3oKmI#|!j-z$5V z^uR>f|09FD3vb*EyDgfIRm*+n^y*iAS9OI9bOmhEwUzBnMeWEl!|qauwzH|Sof2M}gYW+FkKTd00Tv zszYZ4r8aP6nm;&xf7H$==uKmv?_Jf8ku2Hyo}B3T-Hz@;<2S*AoTk!tbfc8U?_c2L z|E_28Cpv!TATzsj{kM(Z`#yCb5sKt>f=1;h{3pnCdC+OolT_} zu2i(>hn>-3Rt;wq?O+z_u0}K!?JhMxcIj~uw@*gKMe2p3E8Z)o5DHe!V;MY;xsPTd z$1^GHPq}gTC!C~Ad4HOv)GjY@Wq%TVlTS{kzA}_+qu4vO zviiTXQ_J<(M|!7LD=p`!nqa4<^~?C=^P}VZL@#ou`H?^!mh`4NKmHk>yWYf~==`X< z!GG=k>|TrL^FasO8ynpaM^x%a(b;KZj~dD<{-`nX_RfmVSE7Gs4WoZA!Ksy93-Kq~ zztzC;U)#SUM@xOEqw|bj>QhAq9FuQ!WtHMar|~Q=`FJ)ly1lzp^y+*K!Gei=$ehx8 z|7P6Ov+G9uiEi(S$n4B)Ra8J=`g)_&tB0TS6`rVh15l z+{nYPeQXJJrX~3ppsWsHOQ`Fw$%ByBa`$sfv zY`^0?ThDVvJntRWRN1@g=}~L(cX{uqvA1o6t$hx!PdU1-+@yR`H5Z;(CHC0oYN@Ar z_zZJz>|0!v3+mZppZ!%XbiPoXI^I?J;fEhaPs8!adi{l)24a}IS=zqsX3;Q? zj2xy8XE%#XF$s1v?#|ItVvH#rvBs3n$dYO|#*{7^Q@U0y@7jNrRr3<|)XrFAN>}VL zB{G$D#vfBssBCMj%CQ z?!cM$F{$I}2DS8#wKVHnU~qTu!_<|^9YgBb3*76YAGSz1soL>GhB>)I#k`3L0nskq zi&-+2TeFhgqD1E*5Jz8>w3cTAC_b&{>?f47A}y1>G_bBdxWmv{m0S(CWNppmjp@mI0VxqegBSXw$b0 zv?ab}K#fGsj^Mhw=xcG`F+l72oaE!r{<*&RJ%qOFVf=}#@9goX2NDfw1h{MMBQ*ZF zTa4PvOx|8*bUoZ@SB_wTiCaOERxk2=+8@>ZO0PxlSF+oy!_JZbx27b`F#dRL52Jl5 zPd>(!#H0PGY}A}tOrEb_-Y3a2#97Ab)`JhxgTTB ziuE9#ScWGXd$Bt@Z<@pn8yN2=sb;2NMQ(BxNyB}v+$hQ_?nc3Uy0)?lcan;dabp$E z^xz)Y7-`*f8)@XGE8IgGxh<)wRNZN+Z`Y(dP3@bmdhDC7)O}gX9yg;>jd&Ym=vAz} zeAHWv1||D;O~)>l>iLDV=>FBGx@YwHPuu~W^7EhHhUcz(@JEbCy>^xasa#+_aQl~| zaqRQw2ge`Bl?Lu=nYycqv!AincL&FxgX51neu+2!OiVJruUx*T3nRqxGJ8H&|3yO( zL7n%RXG-j6{13y>zUrw_Yw>q^U)u6ZnkxHv0>wi-_Q7CfuYCqyEeh^Mf$~ynHzs>J z7*uy84>{c2eUEFvJvbj>O-Rct`_h`LdHDQr3ir!7p1%_FHJ-mpdA|Opy5IQgL(gA) zl;-Pw-BaxS!?~xqpKZ$EKCPeZl1KVt%{L%dj_Q1EqLrg_{fnn*2IT5nt#;$?=*h#E z%iH0GKW-nxSI5Wu5PlBa(ZVBc{oH*FKX2c{pSX|Vn~B1Aj}61QpZ5Rj^?VBBXI|Xn zoxEX;pRcR)30*_aCmb92FsakjmXa1OuXbo0US^CLTc4jF(_J-_L=zT(~))b*8= zpP%^mo!`v2`>EqB*vPK0xSNdHD~0Fj_s{cVPpk3hiJ{|B8zvb#o+3!)0sZ(#K6NTD zJO!f<5cD~yk+qkdQGx*?4J8g|fkmeS&r-`Q3RbSyGDLQf^MT^011X+3eC9>*=8j%yV3M5cX>qE}y|=+);BsY>)`fxd&|UU|y^oep$7*0{E) zgU@Q~mj_@WigT77^kjUDw9eSij`Q=F>f|Lo8LytlM6C2=e3!odf`>8b5C6XXIm_M+_j&zbXVj<0oY>b76V8Vt+n@K(`1$W!ukF9~j?rHK zw(CLnsrA}7hpyMud0m=s2=?uIG%pqQUwiFq|Kxavb$v-)PCj`5Q1^fAWkrr%gyy?s z`vAthF2|IK?z3TM4D(29u;P>|+a?GK2% zBIF^1>$EZLqZx0k z`cM!1qDZW(%U$-~--Tm_A$Je%{)VG>(*2*5-$(tA{mxA6PZzIRo^6a>t-e=@8{X(W z-FsK!+g~3u)|T#FwS2EFZVc+PLZeu`Su8?wm^fH-c>$xt>DXv++pY z_gtL`2G~ExK3@Um~ejgTj=$P^Vt6Q*QxHrqm{#dWTNEA9N0-KCDw8 z)2Yvb&ZE>9bn44G^-a(eO5Lqf-_fb*==@VDRecpTQeRM{zMvvXRo}Xe)K{lY16@F= z7wJ^>m1Oq48Z@0!)k{j)_j;YGZV|bNQk!(@9Xj=XP${K8tWzJ;sn3GSDD?%M`m#=a z6Lc}9?$)XA=+tzi%%apI@HbLlP^7+~N=iLLr>d`9Mz$~LQc6{kv#%;CQeV(zl)6x- zUawPc0eyy2n{?_OI`w|g6_on0PJK+LJ`1X$)E9K>%R2Q<&>TwLtyAC8sp;sqb1C%* zP^7+~NPR)`DD@1T>d~pwK-W;JdM#R{zB=`4(0oc=s8g@kskeX@QfiYC|UI*HP*VI`w6p`X=alO5Lqf-_fb*I6hxOsYie!^#yT#Cxf1WZMIPX`YhR9 z0a{8_5BeO@N>D4=Jp%d}k$RNxCQ9uCgq-fu17G4`ScTL7yj&McQsD zh{V|ArdqB&`caOIF0K~q>r`zS`g4nkJ#J*R9mXq&I+HN(7eVeuR5Qu%B z1+i~G=w|XY@KF)2@8KZ!JymNah< z8FslJ2eGeLYxyAdtpc&{&7hU!d#ASB1Y+MET6-GAzORAUH|;Qdg_3;7fw;aWgV^_6 ztrdgVw-&^{w}MuY?>DvG77+WkYV8*w_I(S)zFGKi*lP041#!8PKHiFX#@UqsQ8{JQu{J)q?J%)TN-K ziM|Np(!Qy+Eg&wf6~w-8fxb!}A85ObEZa91#Q9AEvF}0xSbmK#i8tJo*6OYDMpou&nj_*>?M)F+%I+Can#C2P*wQqnp zzDGcJligDwj^ITQm-cHAm-ZfrOFQfsyR@@F-yq+qATF&G#HH0~Z83;TyB)-lZU@~% zzHQp>6%hNrt+l^{*!L6oSRwlcG~EK)M7cD9{)gxu5XW*K=;zcz&w<$Y4NZRBkETv( zrW;|^}zD@Kph}-W25SNyV^90|aR0}kY=zI{@ z@=C4Mfw-2dLG1ewXft{IMBBB2*tb_}e+IGd86USJEd;4^w&_MG=zgMV&;vx*gE-Q= zKwC(AP-{N`@z(z-h`0W0pcknn-vM!a$Kex{50dZcpwUEr5XV=pwaY;q-;E&l-2{4w zJRa3{KLWAuFSYhMhFoiBkg^y9fHq#a+{6?ahpy8 zahpy7aeUW+zE8e4fyNW9264MIYwaNrx6892_U#94Cyx)c-C_8!DEm$Taeilk*!Ln3 z`(6+F0hgxjZU?dNLt5JoV&7kZ*!NvcQ*npocS9N&!~ z_T2>fIe9#)?S2Ge-(PC&brAcWaI#%DKj?Y#JqPpxQ3Xby<$b_?i5((cyUeITye zqad!^FF;(k--9^5Lr*ab^@^8J>!dl1CF z&uHx>5c}>1vG38jhS5R3xgaig5{P{-)LI3IeH%dRdl%?s@_kU-eILZWFKO*JAol$m zh<#6(fN!~y?<5eHYk}CeLTguo*!Lz7`!<9Amwdmk?Vbd&?{BpB28ew>1hMagQ}JC{ z^0h!*?)f10y;5s+Aog7iV&8{Aza-x$wcT?d_I*QZZ-dx()Ti-fTk^;TaW9zw;vR7p zhEwfjJk9t(=}SWu+Lf;iGcPs6u=$@h5BNkq9Ij<0awJU#?*8Hb%=mvJKK50vT!acVw@w?ZZ84N9#8acQ3eacQeST-x_QTv`{X zmpuAGoZovOuF(+_@y%vR{S=5(PXlpj=Y!s))JhPSb~T7gYXEU+-vV)I&w&0!9=`!` zes6%dv_ViGrDmRKr+ys7rG-G8%N3wqWY?hWZUS*GcWJE|#9QH25YJ_MKyQ)nzd*aW zv`L21PjnK9>oE=VHffh>Z61j0b{&Z8b~}iB=e;0~?>W$)$@jM)gQyq8@zLkxNjv;3 zJHAsv>{|l*3#Hb8*mpjNeZQo&uYkC2FMzmiy`TZ|eH-)+(O%HIL`R!;-GZRMk~Upy zl_0KL4T$S@Gl=VU2Z-bQA!rZzJ`Yl7SksM85XU#5wSRy(zK?rs-+a*D$hQo{zL$a6 z_Xe$f0mQ!dfVkYJK<|-nr?z_y^cxy|{-L!rFGeZSazN}m4fJ>Ny$rU$vGE5`Z_V=twi4C2y!ATI435SLaD;?nK}{fj*A2XSfJKwR20 zpbseZH#+qV5SMmF!0u~>pbyEe6l9>q(~WA-D5C2@9Lv{1qe*K9jUoCjD2?c8ZTAZh z$J_$LU!+IyHP>g?g$Xu<$?H!elmz_Sqb_V_0Ad)Z0Z#`Wz#i~Z5O3fA1)V^-yb0pc-UV?kdqJGbC-Uv+CxSS? zX&}z89K`w6g2q#Rp9OJ#t3aIJZ6MC?ArQC5lOWFTS0K)>2gLd9)u~6HV;G;LoO3~J zHwnaj_d=~zfY|p&5a)cSrZ+$*QZ9X7+I?s;h__J%D2ME>0G&is4?3A> zC5UVJ0O%Cbwt;eqo&-%GdPUp42IAJ}195Bo6U31odmj2JjaQ!naXmf*;#e9%r&4~) zL7ygC2g)P57sRnV2Re>i}_ny`VEGzrTYxzcEwn{Eh^1ey4*tzjHvG z-z6ZJY?4c@)ErZ@(~?6)vo24AU|nAP=IJEC`eQV;?}4IaqBJuacisuaisTv zP8+TE>H9#uqIgQDzN%CI2;y444+@P@9%BpbGEM?<8E1gFjF}*d?B;2^25onfw);A$ z4R+ba3m|TTUQn2P-v*scv==m)=;$K5+z=?Av;xpMM5Ul}iLTOii$EOTQV_@21mZTh z50po3@Ftg$OU%lSP-Y40b<`mojOCOF3_o~b?WUp^&y?ws#AZV zQ{U35V~Xu^j|6eKr-8WKsXDb(r_R@@t90sZAa30Ub?VbPwH?Gc_vzHp)9rFIL7bWg z;&RW|sU;xJxlX69)TvD%_I*I7KBZG%(5XjUXm9geP!VmnGeOgc@*1#F3tHksV7R=pxFm6jVY~4JswN z9>lSH9W;ZqW>6W?cR}SuPiwnhfH;;e5XZ6`#IYPwg7q%-zpC^{x>d$oQi#m0e zP8~hNE;kdz<>rC7-1Bv6iB4?-@yM_lbTPLxXeQB4kowkMy74lIx6I!`6{HzuxC4ji zNYEujCxh5-5{S2q1>!9;6?7@tU83#gXuE~lZVjjfcG<=gAdasSR7JkO16@Yc54xOa zRJmR5r$L_~%>-2wodddpXr{Ki62$SYSMpgBZ`&b0G88pQLj z55&G@nwmjZk;i?YxkNtzaV$RtvF|@Y+~V1@45OCpJ_(vfG!b+)(G(DG>1#mOkk$aI zBU%ocPjsiY`zDB6d<%$M{QIB%S^uGozBCQ8>9nssM2BOiGw%t)6j(!}7qdx_7J=q1d-4tzi zk+!P?arF0qIKJ(m#pL@WXbDj}sFCRRAdc_QOAO-%(y~A|5`7Z%St2ip?al>pe8nJ+ zZx(1N*dsy4Gf!=~$w(%;6d-mTz*|fiX2;%v2a+Mu@1!x83 zd*T(AP*yzXEs65Pb~vb)q~F+xbD<8s~zz zHKv0$l3lg7yGGkxukCIJ@m9DO#C3ZD^e&BX&w#k*zt^e%)TxJDY3~6if!OzK5c?K_ z*tZIFH^s6D#4)b`am=@ZIOfMd-ypkIZP%ggeyi>N4&tMo>>Awv0*`Ft6QE|I6G8V9 zodWtcQ6A_!L}!9F6L~@R5rsha6Xk;*AesW&LNpEZAkjsjhlt8S4--{_wh~qveG&8nqA!CUCt3&kA<-S69YlA5enfN+ z=*L9OpeKm#1MMVw2=pY;qoAJ(7Qx= zpm&HSg8o5dg5D?cg9eE#&;U_0=Gye91x z@99TOZ9Z!Gi@S?gE*u5D_U!7$dDk{nU$f-en#RR9ELvD|U43o!oQ8(_`E%zq&cAL^ zb>nr{)mMLZ{^EH{>gFt7Slv*6!!`34Evde4ZsVLK^XIC6m((s+|J*p&Q@waz{k%C# z=GAy61t$fnZ=4%8CpFYwWxV@N!QAVvZJ0E__OPX^j1NCl7Xk{do;Rm)l4+_aSeaD2 zcpkEu2fG~tD&7)?MYUea!bJ7n@0h{+0@?D_Y zHy-jh>$$To@K{#B*MXHY*%%SUvsEf)vrzn@^->9_6}>YbzrRW!g*4$#!DrT zB^94K262|<^Y#eE8&=0IP8)A%n^c0Eh2rrS;7H5q(wcX$r-%GNlqSq~hO$qiaXKLYB8fDjs!I?z9Pp zmq{g5C6!=_Py+rIoI!Br6Yy@3if4sT{8pn>g5^>PsPiAroPEB%I7{MEJY7;T+lAt> zR!b!~TPlGHp_smo>F%;j&sM3J&2A+a4sDQ1pg}7BTA^58KhAqO>J_xiOreCrdvQ+A zX%hb63B~W* zEEUfRshCTJ;OB7# zHO})G9yCMkQt|JUig&$KJS*HvAZ#^AC0HnxfL|)!T&b9YQ(O@StZ<)Hf?ZPaZ1$_=9UixLd^xX4b7*4 zKyZUl{QiySxNZF2*;4To3dLvTNhR2y@6N{;=#Ywcr&P=}Lh*(hr4p==ia%Q_zCDxO zrF+dzp?ItfQVBIm#a|^AZ;n(vX+klrfwSGEo57t@38*XH&Yoa;H%i5|4_j~4tZ;MpC8--$q*GMH)EtO!2RDAhT@nlKGG~9|W9NOb^Md%9$+NI)e zk&0)VP^|E3saTCt3Dir)S1c88flxwWzf?k*QVAMD3HrBr-SrB3S4hQEFBE^c!*qN3 zL(NhNu9u2$g;YG{QZWmJ;tQEl38YEIzvnD>JU&mKP`u$5saV^k64)#i-%_b~>xAM7 z&z4Hal1k8&iZ4eho;{P?weXngj!efs=nY%VQVA}TN}y3FmT%KUcRrR!-TCUw*)pqz z5(oG2Av zj#NB*PZwV1fKdFQ9;pO&NX5TJDxPMc_`=JiVl@iI8{CxVj>qd?DivRyRLp9jc&vP> zgiNXU$4kY#=hN=eJ)Rz+m{x~Wf?K2#P=cS+ZI()Cja2+grQ)rSilhvq!QdD6@PX8idi8PGh8f{pd}T5mQ;L(RLp@KSG~-z)h?CLPN7(VWhc75 zEMJvWyd^>jh4ZBn%9ctnO)9>DPrAzrd0M4nZWBr{v`H#~2C4X~rQ#_ON+6sk6>FSS z0$Eb=4UBik9PsuD#UJjLN@#~vf?K8H+awjwQmL4ALh*&vlb4RM&h!OLsrYlG;>i+< zH{5@MJ0GvrEfh~MS1Nu(D!x6(yYumweL^vRD#)3@flL_bR6q0 z%WLiwiYK&HDgpI8y)#0OzfmZrw=mmnW187+#R`XU;mDbf6%G!3Oep?Vsra@_#oQtk z%UU6oP@`1*v!&uSrQ#Vcl#rDvm0<5N?wCV?PN4*SB~tO^O2y0;N+6Ubl|c8=?y>^@ zcA@yad0B27zi9}?7w#YHw($kKrQ+W%72js5m>Y!Rwd$o3s+NksL@M4qsd&Z-#baek zCD?zIyB3~6k5s%JQZcs*#SCwfN>IHO#nHnp)88l+U%guig*`n-y1YVGc&k*bjZz7$ zmWr=jD&Bmdgv@1`?y`bbiBv-B{WgwTgo1wc?i-il-E)LcJUv1QSnXOd@H<8QiTwDi zY$y~6ZqzpFtSpqkYN7ajIT`M<{GNeBg<^II#TVKsmB1RQ`0J(OsS=7eoF^44TPgwd zrYUFpczvDeLh-f;#S`8pm5_SJl`|htuu&?$TB&&QrD9GLiWwR&m4JFHm$NL>-zybQ zr&|ez!&{|dZIVi0om70aQt?&@#R?ZnB{W_t!Az<6_Tpr}qZUESquzJsQp{GNghJb; z5?Ch{|1zm~)O*&PIS0dqQnCC}3FJz}r|xKR<>OWNpE#93Slz?tQbOu}9+whScTzbO ze@NXg=~99vQt^$GidQ|c?DF!oNX6VB6kn)bD#2o@_;RJdTD#1Ld1k}wNuAIG{7?E6xXRA;=)-tJtDx?y`X%bgHo&bc1qNou6&ryIM zngG8B{2v1w{aCphtnyJmRvrhrZT>JsISh4j+o(6mx|PeJSSnlmIOi`z$)W$YmG3~o zl9qmK^K&TfeENnc$H3HWa~_l&S3dKhU;?2Z=lqo+Uh0iO?tIicD%{HZLzH8&>D)Fx zD7mh(s)yJtg)-4)qwdFZNB9#c?$+SDtemw_cTu@ZKVyh;@eoCgD{iliLzJhXxZ`lnEFe-8oMkqRfYa!%F(0Ir00_5Szz_D8Cz`ygx+w6lNHA=>^x z>k#FaLzK~&Z{1~`G(I zZHV$cDETh0mxtI4LUFg@iHFH}CJ#~SpkO&qKi=+lLW%Z-NsFVmrlDiu&a^)K#R08x zFCuL&4zIeflE0J%6gZg-VeFOr7VWh;ZnW|#X@bdE7JdQ zH!qYGdVL7l*aKxfnj>m+2GT9P?o~E(p$xi|Z$PQj>u_cB3X}pgP&A(pp|t6vBxQ3Z z%9*W?t(0;Fln$42JCrJYe5!0(pfu>?T&4UKN{&8Ppp;V(T?0B|wDbxngDzzylsbKW zLwP+4#n5M0l%n4E*x*u*LM=^w{zuv5L+NrU3!$vh=lzt;-B5PqIOA!9GI+96c~9Bo zI+Y1H(%Lw|smz2@aH>;T0c9JyOSGonh0<`kQ+ZX{Omr&8V#_p4aw_Fewz!mAq4cfS>{qs#d(4q=QwR@p{y@(D&K+9=~7;Uk~zg`b3FQBaiLSGgi`2I?trp&n$zY* zD7`M_aP-{bVyDd%D6^+KmCr%xaVguNlwaty>4UP~rKmGcZ7$_9C>a+yz3zZg;8LE4 zqMmMy_Mg$%lZs26%48^OT*?wCEiPp%l=2x)uQ#AHmpPRau>bXxJC&JG)YE2M`lPFt zEKyrp{V*M3%siji`G@b_4TY3OHj%q|L)KoMPsAo{%(Qc6#R`@PCG4q^O0d?ggiTL_ zRD#Qd;_#sD1J|eRD#_?33&RX65Jz{kcGvk zvkk+curbRWp=D-BB~&exu(wVsp+=X2CJd{&ExNtJrq^5{Y`mT|Qn9*);`8+hB@j?8 z>dZM1+#_v5>IuJS%ZJUNub@IGp(>$-Jhf5@EE9@lu8~S;gH$Xvw>u*Y`&)%gIH1xU zHXct9i!`?q+T-@}c&tI8cmsu%u6lWVX1P!TUM#>|IR|{z(#AhqC_!_ZRQz313HJ&m z6daIB2n!Hb>6S0&5_im&UoDCpt>HBThf5_`;r8;Hp(>$xe4C{bY8Q&v+a;BddOFe3 zTf9F1fK&ol%(x=-dvY#yd-=VY!Y1fb3k+wyg8mBO6%14fCFE(ANiixI`+6g zDEu)|mSt`eHkN0HR6<6zJD;#8PbxvbTM3$;0;z;bgyQj5NhMe-6mOtGDxqak39l21 z&)Osuzqv&yK{MOk8o{7vhqUpwNF{iz^a_o;!qq;(pfz47A+tm(fm)$ho@G+8nxzu{ zxF|gw=nyvH;Bju7km)t9bVV34edC0U*Z&Er1We)O4O&9+na2w+pJ%h;vl(a$oiJ#H_{3=ay$-R?wrFu4;~P8)&lob)JY|X(;Los!oERKlkV zFONAOY&@PlLh-3r`bJv=W%+!0wT@aS#cxW*nkc=(YlMy8Tql%}d8Y6Rd0M26w@oTR zoFZ~X7z*Xgb4M7ma)n}X=tR4km1a+dBf!=1v$V|Gc!n{l-( zLL5ou2n9z{QVDuQSw3&0u)*S3*aXyr0&PK9*H1ZNlY33HyS=E9~DaZ30`Q66$g*UQamW&d2LD2ZW8+GbojSCB1?rb*`Fv zy`gfcgjWb9;0cR-u&$FfzGkU}&X!)*9%&OE6iU#OH{Tth6__mY!PzHi6Dk)<*pn~3 z!rsl&#S0?74kPqo4``3gtiF93bYF)>>tp|q{ewm z8&Qt>rQ`o&Ms;HBR#z2|zkiGxej~qI)#4DpbR)+YP4q}aQP;Crd0s2_HK5-?$#HpQ zU`bivQhZQmyOatjD_qJ_D9tYAn^0O@%F|GKT*@0zj8V>*)3G$oaVdFF3S7#CP-eT7 zdMGPg%56}ZUCJX+T3kvulpdFIxLVMnsiJK-8A^^zsfSYFQtp8=+oe1YWra)G3#Hkm zOu{m_#id*UrN^bLQ%mJB&Uki0$#E%vf>Pj8j=>Ulwo5q|$_kgV07|naKXs9im(^L{Z;~v47Yk_^pD{fP>Fy&i6yf!l7MMc>&67^y#SbXDB9G zEvg)qgO*3!QN@Ikh5tvDi}7E^$xdalQs`&5>g_rB&pfBiqflC~w2J2Q5|nLN?nITp zC@=ci`5bzZR3<{n!gL<>x(v$tuv57OO3T?!<#8xE=Q@=)p%k3wRI*X0=JTD(`B1hM zI+Z0*I*OdiW+(&GoysdvvMzEe>L$g88BXOaDC(+^qZUwlaBU*0tb$Tr;Zz=hvZB(d z{07Q4oRy7wrRB;N`!tlCDyPj%DCL(qm1R)WS&?Wy_e065aVkH7(xR2zk{N0tXpEVo zY}EgusAZqAYqmpC%Rb{Jr=pg0#t)o|TAUg8I2E<81@)@UsK7cp= zIu(yv7oXr#RM7vVT0~;@sEo2AwZIz{P%l+jzEi)1xQ5khd@`=_x zV=mWgj4H<1gSr=xV(*n>CtxJeO5_bi=&5*P6aGJD)M|yU->LAZxp7YYlA6Y{sTG$@ z_0$wq6xWoO&8(=IURYB!qq5YQTsCz^QAJJpMHMxLH5HeY7ex%_)LpIJrIO`B}FxbMYAeurj`~OHJ@ElQ)d??Y^M|!vf<2GBzinyk+%8j%N zXLvzL+4)mSV&@sD?aYc8E#WM0`iyC1vEz^AK%4X8ge^vS&=yLqAtG_p=1fq@Xtr@J z?afeDUNj?NEwI&tvFl)Gkz`BSW=TsbDVaL7ph#QJC@G(gE}Wpwx(mnb>yd0K3*&55 zSMP}1-IC?vs%p%pk9Lisnb@I+)^|t`i&-6~6}4;3!jx5{Vi#cWm|8Yt+Vl$&ZfxrG zDeaCi3yjom){H4=W|>VSacWs{_w$}}iti)tH z;mnx*AVJC8qH4HGw67!|!4ouCq#1aZmZ69qm#8Zxn4M!+TV@ssgcl()ka)c;X0teq zqkSOePOB{KF`Y~)Ki8T~Eu=83)XXZHGIMINb7?ljtYT_vX1v;REb@lrL}NfA171?_ z0ua5_UM&vEi0r6lwB9_g?&^Z`Jm;Oac-}Shmo&~>>{?p7Hg-WlxFBqtH?OgAcn*mQ zh}92LDJOwnqT>!@|2tR2&jUO8Z1Nu`{`uEQ-9Q{G4mjk=~-sB6pMAO?}uOEIPN1UJQ{kc z)pivgbstvYk#+bm_bJyJKH@v2e<$qKgD;P$DGRLhLx zH>~2K&6BigUByNHQY}s&A`Q2C(s6hNMgvW`g8Fzd#r|qH4EOb63=Q!dQ>`HvID#5V z$5acX;d2BP6n?`hZUoh%;B}5XQ%P!A8O_{ zF0MDChR!Pvv5wT@n8rHFienl*R*GZbI^0QYV;`?1wW5Fzj5zb4aO#=&~oJ{G;Y6 z<<6st^Wsg+=61BE%VQX2MAjh5TZjvY%>T*F-P3jgdwayTr|MKq6W7tsRnK%OWUD8s z6l}RQ5^s7t2DVKtUVB(iAq0C!Hfn0;FIj?b;KV=qW)HZHi|5U&nNwR^bHn^ajWNZV ztFK#p?VLt+nfZo!Mor_5SJhlIud!xP<8^fyqj^ZzxzK%UWK%zH(KU^A7&NY(Gk?+i zMc2fRDfVa{EBe@jc`QrkST4d_(zqC*L~1lNqT(qt3QLOYO3lXyji_ms+;EkupizUx zO-*Emx^~GmHI1KZfEX(TFE0bR_2c3(mna4YE1iZ65}CL z&oJy$$v--i(CCvS_o#I$dAlZ&RI+zDq+Wuabdp5R+3PtciM5<^;+fmya&*Q?$ueQ} z>^vRwO|ncK(@io{Zim<#q;lr0vY9nJnAM;OV()jV>)SDMZYfnKIvphoF*+OJI-Fjt jMDA0<&_LJk?M$MwzR@T~5=DsIVk8w^!goRpO)~x;tEpK@ literal 0 HcmV?d00001 diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_module_ctrl.obj b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_module_ctrl.obj new file mode 100644 index 0000000000000000000000000000000000000000..b6fa422fb531c98432adecd301e091d218e745db GIT binary patch literal 24138 zcmd6P2Ygh;_Wvv;ge1TQf)oQR9fgDxx*!S3rog5*z`$k8&1T6qwj-a|nJ1O)^E6`oJ(|9j@%-4w!OmG%Gm-Op!t=6>hQnKNh3^tq!^ z1h9b(2j}h|$yfxFo=Ag3)VoSW`IQ}or-8!rCc8mO7HJT5Zey1mPe`u}#!i5)S(b!E z!--?cVUY%{OY0$myB;)uWHYupR{|Szy11Q@I;XQ58LLBkib@OR4j9xET5bTV~+vXAfMGAl24^l^)^}cX175cBnU+|hh9v`&P~%=O+}*9 zm5`UM>TQu<45D4M8bqtUd{8G>xm_I6z072djp?qkYAtw4GwB^Rr>)2pnV&E)DiU0} zt4c+O(`2&_={_(rDl#^zf6Tzh=ZdhcLI!Y|@Vq z%X4idA|gf?=?Caybpy50V)OtpR@c3gs&}F~DLzk=t4SR;s8d=_K2oX$W@r-ApO!feqjYMr7G9oa9kuM7$no55`s1-;8* zjs6boNA`WH47rZ=;ML4}zPo6(`QsFIMDQ`G~7a9?4SO!+3KTWeP3xZDPlO@&e{%ugsBmYQCu zH%F>Rs+rzmU=fKa@%d_@AT>QUMnItyq-LvgQsT2m(2FV}QAk&-6NUWvY#}u*Gb1}! z0LEh^WTYphCJQO5h}2Po3d?Lzb*#gXsdc!@t7%`-t1mR%93#voowLx0|3cZW`AbAh zWYk~bL41fA#rH4-pFeFw-dxljlj=>G)*;?8iQ0r@aP|_{ZAH3;zSO4In$5O9sf&V4 zgI%jHsS+t6sUiwuRS{{4Ad*c(9iJ}5 zrzZ+&@KDs81d1nQtF!W8GKoW?`$i#VqJRo5s>-5*EZfbgh zCNELlsV)xHs(nu42xnn|$!f5bISWhsMMlMYN**zD6I2l+nbVa*8e<>(b4eH)$ZGD|d-b)&fNT1yV&M zM6s3tuK^@hMJCZ~Kz9#@Em?hUxgPE|upbxR(*nV?*#V z42xfxvf*VSGRSNucob&X?ty*YlC!=f}iIhIY}3!sKGM$59oj-c@Az6+$C^{ z_foht1y}}`^0fkP?K1b|`|s0Lc24I1AziJ64oFuo!zEq87Pzif!zEpLA6T zI_7D8z*AocqdQksbp~VhFmJS02SOVU%J4DNtlC_g*lQr+JLw;SBua3kUFflGD!pK!C_z7Mwq?gwx!aQDI` zU3>(Ww_8maYt9;lwnUE=z>;!>ywvpE*cjxoNhqZ+Js3F%(ri?)IE_-K!x1ZuSMg+w zl(W;~HL0W37)%Ijp@LMjX9iVCe~uMVW`dQl&>*T;$7uks^h9Bcb;#_FXBMS`u0zpZoTC-cs5nVYZqg6Dd zT3w=1bR@a0dNf*rp>KOh(#0~4h66qBMUzEWlG%nOBCF9G=j$4w#HktL>;_td!KNLv z1_%}y`o5Pe*OudQfI~I{S!V}o_SM^1WUCs^zpSp&pmFYO~}4TweAJ?N!@;5D<`3c)+Q z!6bmBU|yu3cmoiRtDz~#&j2l=t^vxV_s%d_quXS4_3Ojm-$S^@CKWQVpM&?3=orCd zwYy#TFR~#b8P&I5_9(ksjjAn3KJ=1Ql{@8}G`$vKLh>-oVB#GPZ8=vM$tHM&YXTw_ z7fz3rNFKfp;i3R(F`MDQn*>0^cG57J@f*Ye%c>T^tksETkhPG}8Xy(MQl1#E6(FP3 z76VDnMzxs0OM+4pyvc=vfMl*FGR2{e2n(bx^h?CFX6aErS0Rqx<}_JFNlL<20wb|4 zdI_U)h$lt{8Dw0Yd_87Ya z+_pT4*;Fa6$wHPv2^s+CZDv87z^gLR%m9S$p^AM40J08V0Jm@<-A@LEIa(|gtuBd* zv<8f8ExI2sA2r^|+%a&GI&f0bBm$j!EW1~6=i1g`g<8~Fxt5lrwZ>f9U4-VA8vu1U z=vmO!q}!x!h|JSRf)GiKyr=-i$%N<=}6^EjS32wWTT}4swHS+NQz`i zK`wAkA5U7An=X>-anb@GHc_?ZBs75KEK$=)1uF2MB@Mndf!vX;Z9_D@$)R_fG2}PeZ4i!+ZURHcficY9ZL#v!?sio{2eJt z4iQy>tcl7i1PRL3qlk2+*CE$r=o%1PTz0wQQWc>=87fY^p0=lQi9y|H2xz@!!81Tr zM5tXyQjvhkX|PKAp>m)?_mnx6LnmIKW}DT>d)Wj8V+%@acbi>;LGOx*ii)aIF3+jc zX__dBMT1om7K+T(I*eErBf}j67G>Zd*qx%=V3Tc_7ho3zQEkv;V+ksttc?PXOqsPgpC2kfY4>(Y}$cMata!QTrIWJHH(EWuu+Lp9Tuur;?@AE&2tsx z2w0s@%^fAAU^76Y<_1aHq?{o+GHkMaK{9?`&@`l>$xL#(&0*1+L6}D6Pqs@V+~m}Z zB(v7($FkE4^(du!0%nyX+M(^3J^mZT`bq%WF+Nd29>-zEi-;n3Vd3QE(u^uub%kixd1Lh{S-?wsBc;Oe{L`ym+dFajyv<8B!y*q2WNaA6-+p1umdc?8W39$FrZgX!lg!wY93PN< zt=nTgTAQM_{VQ`)Pcyij?q!uZF&-S=dTjLX4dP;aamC>1;7d#&qr;-L+V zC;zg_9n)tzW0N_4cu$)iU)=Y=@ZJ3)zbfo^4hH%e$D3d1-@(}{<@ujZuZiEkybSs8 zhzY+^vHaYT0|^(Fmi%-2^b@cB@!UOF)8KfQsi!Wh*RGA$d{mk>ZuV18V9w9+9}kx& zUR)4q48JsF_H(*!n;2_@R#>S}m44SNCEqp!dFwQOPzhpy*6R7p;<%Xb7*`0sAgXVuR2oN{RtQ~Uv#}^)a^y7?ICw2OL)|@s^MGIDz zv>&~g*?8h)EYvg(BtDjpt?et@-}t0O=eg?bCpCJ;9^&}-n;K0y*k;CWYs9iu{Tjq2 zU>%U-o0NlQj~_AJHmv0S5tlw}jdZVYeDo{FemRua_SvAPliSZ(l>xg-!PyO^Vqm-Q zW$sNo_LlbP*REvUk63_R%<=A5_8qKm8F;45dOY2D;&3#|o#Ws9@%by8ceHs|rTg!& zo@(|RW0yFt*=uQbrRnmYI<))6I4%1q7A3o4VM(bNI;*hzz@_IFZW%qx;^@5bE9@I^ zeCsiV_FB@_dEtbB2Ck6zFZ$J+;N?C|)_h?N(%XpQq?Tf7YYOMKRxdDQ-?;tBom zLypwXQojK2VB&8(X&m?L*P~zi;bPPo_0E+G*UZ5f2<%GdjQ9 z_F~jKjt6{ksoVZ1cE%f;M&1A1u8(kDrzLDxsp#@fMM{qojZQQ#8#8<{Y!v0f@g>61 z`B97B2p_ex%>JJr&VI?*B91>i_Jc-SE1tc%bH$)_Q)e&AWNaVDyYCn^yv2^zy7;U% zhV90+704IIKiwO1=Gu%SEq+;X{M(4nvr}J*Hcr$bok8` zmrvZ>q7H2y2tAMC_|6&EcRc<=%9ePt5#fA`Mrrdc27Ob_{;vHqdN=jzp$f86!_!Q;IT zg?zi!IsP-oXl|rbobUgAmtigTf4IES+zzjtj+@TdCXPSe`$(@@;UBJWP0M`k{*mkE zGe+wQO2x(xuiT6ocXe6+f`T(whIM!f{ITw{plTHEv{a9atLGRIX?WW_y_y0Y`kUu zrw?U*GoiDFv33~GC=~;a?%Lg-1-w7>;_Bk_6_X&3f#Y4*JsS|uo~^%nL5co&8{Hwa z0~{Ycw$sv*O;21uG2shEJLM3R;c<>XX2`hOul=}ApZ(XC_GL@WI;>lV5&wjqjYll| z@p`>~U3zEJ_l5B{u;0h=7nfz7pY+Df7WLk${At~$8_@qMj_p@#$YMG^p;)kKX zH$=O1p5uw1G#jyb;kbAAezK`&(L3MZ{Mo3M#DAzh=+N);`ogZI7)_elxtsz6QrW=-rjEM>rm|NR#+tZo@aPzq@w3ZbUHJ!(AM|ICS1` z-!B>-)-o{O9&>47Pwe+$g}Rh{4sgEPw(oh29U5RmLaAsxf62%hTiR*fZhN><|Ahw* zVh@|+pI=`Zy`=ANImN;wa~`bsEcE$2$Jt6pt7jUd{50|Rr|ij-TCQa5dyX$jN|}{E z*fedE`P=7rT#P~+5QDLcQgP|b9@8&PW?v}$?xUwBcU%fR|AXW6R&U%I{md213{}`f zbLX9x8T*;zj~qBL^~)<;;+`of>zsSw^QRaadN1*5H}mzUJ2jqj%)UE4>TIjiNsKMz zc%$%zZ*M+ze14aT>(k29`(9z}8pj83ZM7y%7pG|4_N^yYx6DSlXu^rlvK0|MbJKKN zmaI=pdg$>E>5RR|@s1OwsI~3ZKh=pS zb7wfRWftjW9$zb-5pMpo@*b?Sg#Jm|I2>GqaQi6XIS4JGf!O|*!w@&=jQlNml_2nyxw79 z-W8$y(m>BDJ zbNt}Mo8PeOF~6M(R*#+N_!{*zs1xz|W8Sr07svD*v$$3HK;44gOK_fmbji7oY#JAO!YS&hg55v&Tj@ZoTbS)w^rb+P=^SdsH0XWE|PD zQNs<|enG1`>@Zz_kFk5Z5TA{<2ljRT`n_L2TpRf4i9W05F*cgxgY7pgmR`SyZk|3c zdh)$FpFp1+UvYWca8v%CO@rsP|2XLVO!P&+F^nnEt}w%(LOOxruLGN&V}a5c&B$U_ zUUm2oE7x@#KD^VxLg~1n(PYC!$Z8eM;Q2SnjO`J(%R~v>QE1O$3}0w{%%DYUvigyo zgKO%J8SzoLhuxxE^rLiko7pEl`zRhK^P_k;jwI3&jUQRsaQN8f&jKd-Cfcn2l(7iM zl&Jvu*JlzgLw?XSSVH zXSPfAp5vQ^W*jefk@D`2O%d&b-ZdA!!&T<+$>2o0)>QKdsM#qs*d#jKi1IeQdvUCYRZ!FY$#VFD$;jP-MA# zBPrvpoXKjwbC>61R`fP2R)I+}fAu|jt-jcw%9btCU*cIriyt$K`l9zKv)m4Fs@Eq? zOGaZ8P`!PTmDd?;&6%-fns-i zIwH}!Z0Ix~;N5ives7Plw_RevcUQhPU{cA_PU&6e#n%CqWUPG8-IoI9BCL;fknGZJ z_aj5}8~PHbo7(3;nNj(`C+#o#9vP7gVyWQJ<4gpP=dUh?zK(E;)YAX8Y#2q1z)gBc z=11kCX)3~zJfHdp9}U3ot)1Iy(qk{%kGV!a<&(+tsz!hQOq))Q`NEGUUUj;|mnc4# zkk8E>7opmr6FK* z3tVYHC&Vm#A+T;^^nL85wVVD{VQDPm71m!W);i0rde3UIj~bB2RlH$Cj{PNywD9Lg zhB%Cc4K%BesvexUv5LI)ec;>;D3X|2h1*?M=d@! zccof~N$cCni;o=L4wGjv{rBk?w^QJJzyDRNrSB{JXlYIn4TROVWiTK0OB1qwv_kNw zwJY5%f>q5TlTYj7yj#L268_yiqGQEoY)SdHgT!T!&IkKeEDjN;nhWV@vv2gcndpC9 z1;cl2ePP7q^ezEPOM!@YcMTs6LH)Y^%!lz>U-ILlG5WhBE5;%7zud&tbq5bGK(EQy zU1e@NPLY>R@U5&LRmQh_Za;$mpTbD39y%94%42t+ev>?RXRA(^0W%Y@@lnUnE%G5> zOC;c%w7Zr7b2fQyrPLs1xn)qR3+vehz zn)x)B;;o%gFk0RIT!woXSH1buvP;Brd2hf+o0RXo@+=GEkdDExd!zDTiyBQ7qQ9(^ zzNG=XF1b;vE~3t^8Un{;SJ8VPRZrDe4ge=WdT~lG0}u*g4G)Rb>vHhXivizsI#m&b zXL6i~5XQf1cTxm)v7vO=N+UKHC-ZS=5Z_nD$-W@=417401?(TPFNnPY9}e{bdsX%Y zv90h)ap~MY`GVLb_;C0Rx8KF#tUmdIS)%L&A?A<6I1~ zFPIg}z96>2i*52^$KdPEWAwrqc=83aDA@-|y%?R4r_dl4g0t*Bc#M&Gj{BTM z13rkdI<`G^j@QXW~&bCw_Onh(Oh&t3gFqP<3_QhuW2A1s9h&;=~`{)&A2@DFQ*?==3Y_ygEE z{KKZ#_ZY0AB0z&3$Iiw z=cun$riIN(`)_4lSazj4&_fwGM}4W{(Mw^EYVfacH{Pq}EY3EPJ>$bF(@tkq=3UC> zsZ^>jWr7cYKyXodxTxNNMC{D>^mhb*d(|X1^RPTgFT|32D$`Ehkzx28^|?w?6a(qG zY&lyH_FAPn3=#xpRY4ak^DbtOZ{P{2#OZmQm9JD^^GMg4n5BhP>}oJ4E$r6(U#v{K zn1%SVVk(=E)gjqyo@9A^by&sD26NP5u{$e&@Mw46KIpgV1scbDR>h-X%+&-shO}HS zXX|+*`60a7W_4i2e--Ywm1(UZC6%TU8VT`eM0r-zY;#`Vj02!hx0Xvw391l}K9pzg zZ?-utu;Pz;?(oXI)(9e%D#0wolV#=EMrRvx;m7Quibows0Jlr&n=-8g(Qh+y{>#fzI5u1D!ddS%h`;_4M^o@f zlcDj13U>1*U91#WB;uG}R1`@eA=U3UCbYidDE@0c)$cY&20=r&8%Nh5s(!C=eNIC+ z8&ga3@11K8OQc7COs8R^%>%ST4~ z_o#&ohz3w2)_|BvwP|9fdXeh)J!5#` zd8Ax*2BHE~6)VF_ zxPfdaE;RXTF{>_Iyz@xK^F6&+Jn32szA)+ulh;M~{aoHl5PfIOucE-YH-T=wU;^DW zfNKc^tIJkw_9VftpdlKkTgNX85bC}E{rbfyGSZS1UJ7=w)lLn5-$z3Kjq;AgKJhU?)FBjGYOW(ldT?FMg&a38zj0`iZ!ubQ!M zwQsx4Y|D0oBQiW5Go$tIisB!v_1Q*)EfHSlbZ@cmRxCG+QIA$L4yB%CrjDy+7~w|J z1gjmX{!Qnxvfu&VHvTlVBRo93yDKjIC1$>H5| ztq)nw0%u;9GcR+-pmyFF1^b-?$s$gFFltJ@vcmFz9)a8H)2%Oz#b8l(kXnZ z)9rEP=bh7OU__6I-aY#F8W_>DQ+R)z`lZlK0n-QcoR~Qvqj$!@^q$V11Dw4xI<*V$9vw3@a%5a;TXDFg3GhTCy|8neK5qdPek%=xZf9 za`UqabDR!#5s{xU*%)M;-H>iEY8v&aK<()vMJ%#fc<1CZ!V?R;u3XnlS6+5_RDN!O zE63?JTAzGQLnCuqR*>s$Wab!AgVK`R`PuID-0-37%M;$2J~$)oXq`s6Jca2w;VIt2 zELVOwotQQ%Ds4z?LRw}{M9i2NBQrP4=oURZa#W0CbZkQJUJm+XbZl}=%J9hK5&96` zE!vR~6BF$i6`AaajZaEUPIZuG=7>s67#cgwF+99m?ASqR)AF%&Z+BKwy4yRWnDKpP zwX=<>#%?*T3{P4%|I;j4n;*LMis(_9GE|NVQ+|Jelv7~|6}6(|oN}9K>27Day9nG+ zdMlXXEwxI=Z9g?XGd(9Kzk;?Hos?COo;l@c^`adk9p})I@rltR<6<16VvFD9$FTC4@uJCT7dxv+6k7grF8ZnUxj>v>)M?5Rani8daj^vmNMk1N$b9(meLC$Cg z{_IGJA@syJ5)vKJF-gfWQIV-J{;v`e6H-#6qmKIySw=fj6CGqsj!8&0iz%uXHAxEZ zHY_E)+t93%yC6vZ&kpkc%{$1X^V(I;bz>8v;zmZtv@5BEVs4)jJ;IYV+Lf1;Kh2Xi zwO>S!NPo|hGc_u_+Ze;+&NMvvg&ZzQ2zi-CK~_eP<5fVMotnupMtd=gpZV*+pMPoL zU$NM|qhaX4=RX!KVm;nyU>*znn<|gCY0h7R2L99#w=>)2@jBfOZ(>yHsHmQfVJYzr zZ_3CaQNtq>5@O;UDXEdEBU6l)Mx&xk{>&CR%-1*SH2kCJ`$-dx1|&=`N^p9;Mm3{` zagZE6ise?F4lrC$z5MNq3o&Nvvm2_eURcrg-$K5)s7wV3HEU0Hwmt@>9@a#}vyhcUyK@UJ1JdQ6tHbQNt^4jv)EV zO3M}pEL$9`ge`7EBZl9w zl*nN*Hmz`3`EFsy2F+=+##8+*8w{+34elg=YH(~2H9RJ2L{efb11o!n(uW(db8{&* zWZD{6oM+kL3d;_2D`AHqY9W>25SuW}rV-YZZv;D9xZ1M8^Og->tb`4g&=(`CsD-5D z#3+2hF)|?*83Z>n*s;TFmK{E|?C^Od>~I%$7#&PI1U)*~8*hJO*&?jEFGkjd6^)V1 z&>9y8(-!}hC}GbYjcLE)F=0K8 zJKReCgdp0%o(*h;2V3zW*|I^VWdmm=Y!LJ@MTI@X#v~s7WXCtASoXNdvd1kam_7cl z_3;nO9uHdfSW^jm1Y=xr%z21;L{-EH-oez4Hr89Vc+RrL3n!E<>?y-e^t5A(S1nuo zX4&FUC2SFlW9c!vh>K9nQDx5O>1Z!JZz16(5o9sfJ+-}*XT20?Eq&lqVG35WuHuh9w>jcG)|Ab--oui#**``$` zY_pR56aHPgF|V}SJH`a-`bc}rCQi#H*(an;f+rL^I?1(ca=B%b*_E)#zr}}qHd=10+kuun&N|WTVNV~nCWP$hBhs=*wq*}jCG2q@_Pi+A z`iPEAshC7;+@wG~?bsyWvdQ(9O>R5^Z4yM8*s{rOmQ6NUHhH!ZHd%)Kt9mbF3FF(8 z7`su##;DDXKAyL1@s4GS-6xhU>`5a?=RF@-w)oky#jlmHMKF#paf!o@IqivzN{t=G zgA6vuB3m1wO>-&z)*f4aa@ev*YHi=~b`<k6(J>WNh>atzo!GJ1vd6QQJ+_>9_6V9n?AYT)%N~a;d;D1mdn`pCqpGNn zRBod7J!0S}dgQ>~X^f473iY#Ni)x`hUug_A*WMIXGIo_gP;rl6k3rmia(QM-2r4zD>e?gHnoyu*=LevpUEep90H1 zw^{aCTnYPB_1P^wyQ8?mBf7SSsCE=$Czjl0wf}Le{ZIbK+aEjy*lGW>R{KA-+W&ba z+F#XY7ybQj9arpy2pfkJJMI6*YX4!Y{YU=u?GKs&?6m*nFyFDX3)Hc+8?5ND^mg(k z1>yKnY>L#@&5^;HNAGRfpwP0xv=hPx_GDmZHph+*F0*W~#InI%m9RlD?gcdO7A6qz zxV?GzaL|H*&Ew$;%MOoOc6j0hv4cG|*a(U??eL6chc_%c?5Kntf)W?ZYqC6}7-Tir z@ri$0HrQ|3;L8)j2EkK;9UFXa*}$mdJ3dr{6+J!#;~A`Cabajwl+D>H8}4Ao2DNCj z=4MW{Y;f9%VS}Iv!Hx~uS~loq*`QA)Y!HlRQ+>~s5D$W?0(2BG@2k zDzImR6w3x#mJKGBV1tKvy@D*F-$*%{)zQOf zO5&d+Y6lZt&YUb>^2KhN8YdOKUZ6WQokl4vb=mqGYiqB|-17lzA6{M(<}lyhrnj@` z&)07Qu&IBME%lBTy`RPZI=MXhN!#W_wY>l~f)~Tnp&NFA)8HgH9lGI6s9IeLFNc@I zE8#4t`&B7y_8K@B{tM27``~<7ojP3&>%wbcd$z?Ex731uXez!sC_j#yly$Ge>m!S0fGL(K_fzt2mQ2KoX?t^bZ>30{D ze&2!8??0jR`!1Az_d@CS11SA|2&LbTp!EAOlzu;h((mU``u!40zh6V?_gg6aeg~!B zAE5Mm5K6y4L+STdDEjb$A#W*zGS^4TjXkF7PB60c$~NGZY5ueF^m`OYg(@ zJ~lw_%A@{R49n4b(R8qHe#d;$@9(bm)-=0PYCnk0_VDLlWJhUT26@d&tVbWow)LU3 z-T+GL4WYE&2ukbCptRl`O6x74D%BE7>#d=*-UdqR;ZRy{52f`Ea3AahrS&tQwB7|u z>s_I=-W^KoJ)pGS8%pbap|m~-N(X1dKyB?Ky(Rn5(N#;}SYR;U2R>`8JZk^@aHtw? zE+viyY`peKdoN+ZXM!^>&}bq!BY;fWTNzPFQ~QcFQTCIjP9^PaD?OUNkxgTuG&K~; zw8Nk@H5^J)@lcvdfYMYFRGpHcG&K@#f}`P1I0k+J$H6f6J03QH4tOTafblR3j)D_m z4s^jA;1nqBv zKs4@wii<1YUGRRm0j`3(;c6%!eF**n*TGYt2J(#`VSI^)IrYw6A!#&`SJ>zL8BohSL5gP}=_# zO8cKd#r3bC;`-On4Znq|)Avwu{UB6a{|WAdKSRa!-=O09A*i^11gif+>K(5MX|ya& z=)5UCU>vDDs{aINUlZlNzV7cMj{O*=GUC8y2l;D2cK;$a?b=;4DI_~#`I_~#|dtqOA01kkSY1bgw5}plv!Smoq7zr{T5*F%vqK!clX>Ud3Sp2ZxizZ%5n^^3P6Ru>- zNOs5)jB$eWw$ z@`YJYzHkMUFU*DVg{z=^VF8pcTnp6?*Tb9O4R9^I2|f=O!Ts=7_#?a>*2Z3oVGDRC zY!B~(>YinA7+en1;62a_SHNrFO1KfOg1o2Bco6cQI^$s||9J!k`lRN2!m(LtV|Sfz z2EI>4dDMSd(7sO|`?5OivxEgJoM@i-HPx(&Cm!%Mvvf~9W{kbAm{DYB`A%cfbWgFC z$LK@Z{&6VZc>>CJo`mw9r=Wc2St#Gx4COmpp<3}Al<&L<%;X5z`?uF|A_hF!>9w0rOvP#pG<}L#7Q&AqZYX!8gslXTiX|E+LC!ngj z(9ZuGRr$szFBLP3Y%N`#LYg$7Wgq=0`+o$btB;{{^$C=&K84cNmr%O;3QAYsK(*sL zC|&&kRpyUSy80PPSHD5&>UStz{Q;$`zo2x*r5{sQ)nFl?Plo@1HQ_z54wN?P!9cw! zChEvun%}ACA?fwJ1${40VStX(|@bvijP6&Vv}dtAxl+<6vthc zP~S9-}6ep^EsB^*k>?VG^0veOUnITNgw5mK(~qJW%s`)1l_|W@p3 z%b@1Xe??}4o`*9zDP-VX=CRZ!#f)i4{bg)-|pcs+asu7K;|X1D>q1D}93u+vkp zK71NBgqvYwxD^Kakm?^!TT44eaG8cwo92GFB)z8#zpI} zuYZxf1IODh(3k3i7ooJj9ZLHzL23VGsN>2TP{)-wp&PyhbzIp6bzJ!;)Ny4G+zIzW z9albpIbSBG>bUX=)N$oAsN>34P&)Vq25L(_5KdX8X)B-a1D`ij9<@tjs)}ms zf1~bFuf7zi>mar*Z_IswzEmIl0Hv*iP}=$tN?SicY3p|=Z5@Kr)}K(?`U^^1Aq{-m zItfZ!Cqrqg7L>MXLuo4vN?Y}yw8d{(ncCv#smw7;Q>ZaZGpI33ODKJ`hJl(ZZ_K@g ze1Xr-S8&XIOg#JF$lLDVU@ko$oRPOQteEIuN*Z^!LmSd?dngTefYR{kP#W$CrQt46 z8tw|E;Rq-V_khxHZ>ad#7fQqZp)@=QO2cPCY4{u{4G)IW@DQl@7!3>IFenYjLTPve zd<-T)jk}Ye#@)$K?mVb*_r*}-ZV%MB+Y2@B=J`2u+-xV8_7T2Gl{(*5_dDI^_ z!-~fBzwhWPyn+rAm=B8G2{Czdl`1@KYt6T>){=N}zgEvEszZXG`zi)>ce=mle;T=%p@1;=V z@4KPmz;dYZ_X?=-_x(`ghzFp?->ad<-`vk@j=$GI8EQSO2OotU;0Aaed>m@N{3&=P z+z2)9-UM%iTcLFP91Qf07VM`bbuY~~&g1*zeq)3*+0o{8Z{IEMrTuh*c3#3lbx*Vj z?4?vwp_awgEhoo}VHW!`n*U{UX;U^|Xr*tbZ)DS#ptSiilr~?1(&npB@qY(Y{C^87 z{_ldS)H_h|e-Bjr-wPH0--BPke?e(;ACy0Q2GxK2VW1}Fliry;rD;Ofp915h@~HlE zp^bQ1{1y4f{e*<}UBYq#N}@Wgt!%tpKofuWHB(C0O+>os-hWe(?jIr$8UDMH4Bb?u zTa~oYu{RYRBxMVK{zZKueKjRvgO&I_{jB~u0Hv=Vp!9VRN?$)h#lGL5<{o~BihX}T zweT=h?BhuSGxk-3ihb3gT2TWYfi+=M_RphA<~>EBa44Va!l|%6oCW!1*x6UWrcjz` z1_O22gC6fgnWgD)FZlv>s61+CS6Epc`X52jzDrn6Kpj4WCH`|dEIy?sRcpM+B2~W~ zpz1v(soH-(-Lb0n9n%e8S!RLiTj{zLpMEk^n1@C;>hG3Nx^4xf>()@ZZUd$34p6#2 z9ZJ`ope%L2#*FB(g-3v6)LQH+6j;lpP|W zj_pI>voH$23uEB-a5!v3yUvH5;RtvpOoGyIG7R(!U4SSnK0ipgf!Ar2M|OG<+V_hR zez4;26P)8|YDJFM#bvBlfHcR9EPDRQMldd(yEoYyv3C|tLbt?TXn0^=m(h69 zzo@UI^L8Y(w9-eR1NGl%D4mai()m~@onHtwK5)QEZ~}D03@9UHL5&Zxp~eR;xD!r> zpTS&MkA3AqHT+^20o_nKp9*!4#|*d%&V;MsWpD$W1-HXF@M|~^>b!71lqs%(()YDc z&x2eCbzXQQyae71=fOo#=Y_Y!jqo2(=Yw}aX?Gc{s6WX60)IcVa{f^C10DWD#Q(fO zkNq7#G^w;V97K!d`N9e`AYZr-$`|g3@`aU9zVHB)FFXY03u~c#VI7n&tcUW2$Dn-S z2`FE963Q1gLixfbC|}qNdW`>0oU-A zNA_$2?H?OVU-0{Zc3HwgB~P@oI6XL2k)y)VFm1-^#l>1Fy9J)d9i&fW%O9b%`4f~j ze}>ZLFHqY214^5JLTU3aXjZF{Pn#z}Y4c<#ZPtL&W^GuT{f5CtumM!RHG+X!NM~NG z2YE`^J4U~q%p&Pb?GGPa(_}U3d!)L&qunUx#BB17?yTf*{CsbVO1)=TE7#sy< z*RfF7r!Rzh{^TO4>(S{j31+}#=!E0oWGH{hfq_1#V_7(DF3kt^d`+MaDv#{n0an2W z{jpiQFJYl!Ct7S?O*Q|mK6o^kA7od>W4UY|7|RRjPxZsaP=4Ts@&gZ)A9$hsUL0*P#YH%Br2A_x0;EPZid>KlEuR>|?HTW5P6Y6|v2h^B& z7u5OE+fe6Ad!UZv??Ig}y$^N1^dZ~;KY}`6`V{JX>2s*#_?J-UOW#19FMSJjzVtoR z`O-nC^QE7l&X<0HI$!!7>U`-BsPiSpSmyasH5lj<Ib}e#$YNx|Og{ z<^S3v^Fi!U-f_7G{U|-xgwk^@C_UGP(sL-3p6f%!)CN#`ZUm+0CQy2A2Bqgyq4azj zR7`CRbzE)(bzJTM6;nIHK>g?%MhEhgHojZR_ksFR9@YOcI8+rkmr~ycaZF4#_2ZAH z+HncX38LIrhFEONqSLX!$=kr`SM$7now>R1pZZ5*!Q#&gok`!T z&$>Wqt}9g6b%WAe1k`ng-cZ*W`oQV1A5_B!KwW1z3vPqwz&-FhsKyO}VeB^wD!vSb zYC|l%2%Zmh&p;xSZZ3d{_SB!W7#n?h}v-p3&oyj$3k6Rlj&J(-3L;9>ZTW&)GaKf&lLI3QV+7# zZ|1hXf3mgWQcFI5W2MiaA7%fUQ2Mz9HiDNz>E|*i{mg;V&s^w+S3)&nK9qj0fzr=H zxD#FvRneQE^m8+meilK^)!Yts-{3!B2D}p%!n>g6XqLfy;63m$cpuyYSHh3rDyT8u z8rYn6t%bU8@KGo&Jq82yIf?DVsZ(kC4EDYMdcW7vpVif#OIWDui6+pmspkKQK-rHp zx~`a6)JK8G&Zp>0Y4m9*jc$a}=q4zQJ_DuEZBQD04oaghK(%8#lty2H(&%eY8hryw zqi;cJbSIQX--goYZYYhu3#HM2!7R8Bo*3Hl59GpWMG4FQv{kOQKBX_Et-THIPfzKH?X}kUSny9;B zSrnkFcz<2-XZzGQigCrC?W<3}tG^mR>5#YWnmTL*rNhQh=LgN9&JRw7IzKoKs)enf z&JV)jHrNj8{GdJj4t9ikXIE#a`$x}&x(}%v)H}PnL%p-BC)72CKJZr958ed_K+UzB z1@+FZbKpLB9{dFkfqG|GG}Jr0hQa|b7LJ1>U=~b(vT72%7G40C!(_M#rox?YG}L=L z$HFjpA*>4>P?}DMfqqiny~qjFGtf_zM|Rh}tikdVe^k~utAvHtooGk=rBt&bM|}SX z(|7zXevTr0O52K63$4aG=_}cIB9ykXp;A;9@eRU0#)~cTf5CTP6YRDJM#H@@9=-?luB&}eI{z33`c8TAbr|&z^qpYESJQX?ivp{( zUS3@NoIaA)_d{v@3n;CB38nR~pyKNHP;vDDbi;#CarGytxcVzpT>TyHgomKw>S3t3 zdIT!2R&VNyt2JPtHoibxI^LBQS4%qfDv#>_DXdIfE%y6Zu}Q;Yl4BEw75xy(-{;sn zh1OU8*gKeh@h`Hc;-UJ!kCh%uU&+Q{P#UQNrIET&+tq{8NMk6CG=b8{DNwa)4yBRP zpfu77N+YeIG}0DIBkiFyayryI-a13Q|LYF*j<=q0G3*W3!hTTicpCus z!a?u=JO}Ej!tbcMnP}lI{p`Hs(gpb2y_%2L^AH%Uw zx*G=rwfq+8ooQQXS}y5)OL=5x#oS);UGl} zKs)|LeIvin<*u$)x`TdKe@%e$i*zWz$bj;TOsH|fB&czM3u>G&1*(O)P~(IGxDC3Y z#t9y%al%xnal&+{W8h4val&O#)P|KP1FNr545WzmE^-&cUkqKnVF+g5U$;^oxH{f5->glAt)P zWi5TJK6)6+2i8IPz#~vTupY_>o`CX!C!u`cX{Z)%g7SgQa2wnT{0c_%*y59)Qy2K^UlY-MCXxtt*f0D8H+U*8hI-{uO$oDq7!6ewH9;y_T;e zvpDsKwBDLef0`-W06<@>kA8*H`fpHL{~b!}hoH261WN0?l+o0BHK-O=hthgYxDD2Z z(t0SA*6TuPy*`xI8$xNl36$1Pfzo<&D6O9crS(=&S`UY^MmzWdY!Baq9iZZUN2thh z20R;ffx4HeD;x%ULg}wJ4AgWO>1Ap97RnzV5Wkg2_L6^9M$^%;DGbm5rXhR*2C0gy zb%O;<6=iMCcN{QF^8HhvNY|(F@lz|kKmDzK8UUs1fl#_01f}bVroW|MH9-I{zcZoqdkK_&FN4zWEGYfXfzt0hDE(durQZcm`n?89zYC%CdjphyZ-UbA zEl_d!HmJC~7%DE`2^E)@LdE5~pyKk~P;q%VR9s#G6_@XaipwjZ;_@1(xV#ny>Uuu; z%Zkg_^L^m&^(c?*W%E55NylH;ONseAj;gEE?y7|3;JhirHwV21`}-I5hhlP568!JV zSWjQ8j~<26^adzRKL(}g$DuU65lYjWpfvp~R2#QIY5F<14ZZ-S>FrSMcp2)Q0)C0REx@^cFHd*Ge$^`krw}c;Z-)S ziWbizKTB1I2WEVgF8qu7Lt1Q3!fRIIzvyfA(T7l4+y|w_kD#>pF_aefLuv5~C@p>k z)y8k2wD>)g7Jq=+=Rx=#{23~~{t6Xe4?(r>PZ$Xg!_n|BsQ79$6oRphi!tUbaSWBwye>gz~8U&7cj9#w8Amjf#wOL=BH*@EYfcj7p6i6`30I zH=Ku9%vGGKsPsDWvs6)~2PtA5{o-HLAJV8^ak0WmZ%ALOj~YQ~v@w)Mn?Px_DU?QA zKxyfVR3@IyEbYA$~~)HS;aur0lj0ndb4a4^h$<$G5_ z`QCge-&+Xfd)Gnv-VIQ`cN3fk7r|}tHYne_9m@CafbzX1P`-B;lk3#w0<50f$B$V%MgqjC`25Q{>EYv*sW+>m=3N;V@ zJk&h+i|}Q*9li=*gRjFkV4x3ZzhzzHjOP2afO!<Gq#c*EQdRli>T%4gUpIr+rY@ zH9vv6uK5|<2|tHlz%QY$Ykm!zz;B_hYaW2Qu6YoSfCR#n_w47pSi)#@J%|`d^f#mnt*OVUEMgyWSW^e@m}*p!8Z7 zO0V^x^jaS(&NhLHvrVDmY%{1hdn#0%Z3(x*)=+V_4OEKK*iaPP;vGQs5sjN zD$aI;inBeS;%qOdINJv*&i03jvjd_0?kuP{doEO*9Sjv`qoCq!3{;#Q3KeIELB-iv zs5l!36=xHm;%p*RoK1y_v!h_3AE^Fi#o2TCeq=zLRUX;*6lf#P>PJ+4KfmrM`Z;$0 zlW2dR0K1e1S0=!c?I3@P`SUNbpJJ@;d01#AUP#}_rsJSAn+B!X@lcw*2r9;ALdDoD z=!O%asx=8J#!i8XvAJ+3%!7)t7emEZ4^)hu4%L4%VW1{{M=Jx!Q`$Wlp?n{x3FT4! ze}1*Ci|ztn;HFbk9xr0E~uEi3@Rqy3l)>^gNn%yKy}B1P;(-yq2`{~KpFQD*pzmyhh5;Ka5#Jno)4dd zvggzAVz?1r1vf$6bN?)S0&aym-+T`K0H25Y9n6=ZeCJh>_H^LSzo_12#pnz8-W3p| zl}Gj-18w?aa?AxIV^UI&2I=^i$dr-EG4U}8%pArfB_Mht?GG_R72@_fe3S!Wu6IGj?LAO&`(3EG{T@`cK7fkb`=H|X$53(m6R5cT zIaJ*K0xE8Q1vNJQ7HVw#Jv7J0P<{Oi4AhV2MY>X!0;87h9evuU&iW7h?I2&Eew0V; z8V!S}AAgKjbxK&+*@+h8_h6jL#`s<|aVGg$N`HblFe<<9%OE@WU$*QYDcgAWod0Q& zgY2{T^+5Hfv|Ic>jYDWfef$TMcK?Kp;9)53{sk42Pde2XldD6;UoDke9FipedYe5w_cnZlvY>)OIKumhAeI>KGB6Z{f(hSh1$ znXm=y1{H(5!xY#9j)Z-o^xGc>`b2rxU~~;dXcNq(H-Q_~4>n`J<#unqDuDeWtPr?kS>n@p4*Igz-jWH&}KwXx1|3yi< ztl<3@M|J6s#(y7Oo)|a5p^3owsy+yeuX*&ZbeRvO%K|7}UJRv6HGD!2UCx5i3L&evHQ1SJ8sQ7v#lrC?98uQ)?HRfFmHRino zN{@F!jd_MFYt3G9oS^MyPTtIwP9@(qn z^9ud|`}Y}^E~TB78J0?Si}~{}vYB+JvE4!|@nQNyc3cOgyGNjOw;oD&k3x+}pM)Bd zJ_X%yBUGK9ff|!;ff|!;gFE4KP-D^;p~j>yL5)dYhw8I8VW18+ppOCMDQ)bjdy4~g zpgd;%q0O?(@ivsM-+|KgKcRHJ8!Dc@4;4>8fYafJ zP&WPuDxQ7{x53Zh9=IPWo_+-tPrrfktM8!d^aE5p{Shjj{sLw9-{5TcJG>1Zg0kWf zxC0t3jM<;V5UBevPlCGtvIdmlYQe6sHjIR!Fb&p$Zdf1Q3md{Uun}Afo56MPR2b-Q zk8fMl{nvnnX<2I_hfNS-66_C?;b52wN5Ro>1{@3Lz;SRfya;ZD6X5eO1MY=Rco=3w{U-KgsBX=H z-C!=%@5<*vy>q+(UJN~OIV^+^!l`f#oB`F5m%v@{Qurmj3|6NfX2BM44m=;ugDLPz zI1*k1<+}@EU_5w;diKD!rNslCj|9d8lREup;(6=VDF1x`sxGUc{C5qM|E`1b-$$YRcLS9FJ^|&wPeJ+b zCMf@X7RrCOLYe6~cshI@o&{fk^55++2fhNAz}Mh?@O8Kn?u63v+c3~Sbez{&Luvjo zknaP3k4SlBN43?Ce`r#j0V>nyG5TfA|DKZ-Y;=&n#r*jf*)H&WWe@!#d%g>$%e_## zd=E;O??auhd<1pA@-cM7Pod6NK8HGA`4Z}U7f=> zwL+ovP!~!M^`Z3807?&yq4dxcN)Iid^w1JkR1f{h7kK=vOnit*i2kpO4tBH5K0Sc zU`4gik9-M1hzlAo{C7nKdt=9S^og|a2$UAqLuuhrC@pM&(!x_vT6h{t3!9*{@GO)T zwnAy)IVdeW52c0eP+E8yN(*m5X<-NaPix`7Co0&}!rSzTwD1m;7XAsPh22nE*aM}7 z51_R0FDNbSgVMssP+Is5N(=j;wD1L#7QTkk!naUbI0&VMpJ1RC5=k$<=pHPl_zb4) z%zLmVz_SD5g7Rn^-RIT7KS5!HO!GM0&TN;*>vTI3qf$pj^>hqNi8m+V*|?;IQ%Fq| z9ppPbE9YNSzRty?Nzio&Er+PP_W2jA1&_eG`l6-Jb|=GTe5?Um!kVxxtOaS3Q5(vp zp-@wRVX!Z(0|&vn@H|)#YQObiENlQ1U_+P!8^JNKF&qz@zzo;Tup)8P}aBa|jO z!L6_}d=Z`jUxjDF9k2_02X=*fVK=B-5+mTJusi$`_JEp0>j{5^z2I-KH#`jcz-shY zUsw|kf_30oP}i)^hSJ_S@HBWX)EwM-@N_sB>b}89*c}dmeP9&S99J|v7skLSI27uh z-eFMsi-m!jK2+VOU%xb^X_AUG-4;!q7ocf>p1Tkkzl&!r(sY)~<8fwsi%Gg@$g4t2 zSSY@(QKw6qlN#G5;csC@zJQAdPEDM1PV&608T4p?)4Z1#X0? z@I5#Z?uVnG{Ae_6Oc`TfZ#WjFzzd-Vj)S+rH25eS4|lZ(%17KV(C_M< zTyeki=UGpg<@%j}An`xH`>*mlX(Z6^yy#CdD1`F6X;6MQ9m?-!!0m7*l;2$fb$q%M zc7m6|VeoR84QIjmkio<3mGBC<9nOLK;asS9Q_X{&;FVDKnq396;e0qBE`TfH)o?q! z2JVN~!kTD&A=EY5>tH0j9_m``4X_a22ycKlK|QyBGh7F6h4PWxVW8h7QNCK}N#^XJihAm#d9%&1gD_fiDM@BVk-DgIPg2?rh>cb??Wzo@UIe{H(PO8f^pP}xD0ND%i(+Q9{2~m7iwI#0_xu3``|cuKP-eR;SKNsxC*X< zx;FnH`~a?opTf0JT3QDK_333lT2y~6f#(>i*I5DMG37z-hMT{7<&4KnZL(cS3#Myk z4G6;dKG*5-q-Q%F-WdhXqLD%Ik%D}v_((x@K6a$goRnin3hFPNr}-DvUHugb)2zfN zu#4LBB-Ci+DcBJ{4I|)2I2>+*7rIpPzeN5;iC;$u=$B8SB|9-k-gf zqo?G=DE!4SG9i`@O-@csHruLoc3Ra}- z(n_s}+EBJdO3bS6FF(4KnpMp&JG$BJ2UR3^##CuK{+I0!RS}&_rq*mHqdnvmW#l_>_OLuaW?Qv?m z_0W!vg33_#ZUQp&D0dIV>!p?`N7=gw%%P#kKZ}m-Q`2)i#|->cqal%8haH}nl%%0r zYD$zNJ~Cy5*_!gZve+|A6>7d3qr-ODdpPDe5+LOY9`plpcVge~m2Q@l$fQ_DOv1=` zqZb>NJu;CAkA0LxdCKmkNIhnEMb0ZPDgTgKdfu*7bV?Z&E&5fjqOMz3dLIW4NzFVBjG7IbntK?U>PSdT zh%xJ1c8D&yzUr3BwpDo>TQ#X>P?I5viE%NJ3A_o&SG|*zIFhr-0Y)P$sk%Rji#M{< z`K7l!GCmo_M#n_?dedJ*4Sxx}dll`dw$j)Sg?6UUcS|pH$jD@kqWnHn_F2ra`d4!+ z>NCpIQOzt}4$-lkjj29z_A-QE#y@jI9abyggmJO7Seh>XaD0qLit@?v_Lgo^f2P#2 zNzBKnCE;YyjFE3~dcBVPOz+gpo{n5kwr`$F$GWncV2*JEZsjlk2w74tHM{KboWBL; z`LWq-^;>1krF<1{n?G0Cu`#f1%GDCLiZ>_8hY<&o<0Io@FN|?S#|(`e8Rwg~Dcj1& zwA>7U5=sZF)DWYDQt`?7q{Nh%irS~Bboo%(wK7|J%x&7utr}H3rbdx*adte?JohPn z(|5R4+DU<>6}3%1TgI_QgD-RVA&pct>{dcsrtOrkqPA0>*3|K+Hx{__z4?BB%=Ef* zDr`ZODUIJ>en>DK>S$chjGT?0KlVo4@@IF8Ifnl}J=rO~^q5<0W~K_YlOZZxJAWp7 zwbQ`W3aX02WsE8`H=YtRik}NjUZ-=Et3F#-goiO3H7sU~BOzvV zTxV>hF|vUAyy(w3d2k|1@Niqa4~lQs@EQX(DkPVc1rEPf%zmuA!=Eh*idp6ldp zNn;2NDEox8)CLs&p1jJaq}Yne&?HRhXYbzP?_JbEwwy_u+~S!nhjIQA0m?`JJYkwv!c?wzUZ~SmQHmJRl1D= zx0XdqFI)arcCSbTRqYj(p{tms_e!zLylMa^cG3KLNos6jf_d4h{7azL>{3aYTVe0< zroD$bIJI^Rjf+$~iQ=@7@_84#?`w@Si@qKjnHm{q`cVZHU2MLk=$v2U>q@v}X+_Bx zn~M&)WnAPmJ)*LfEGe@ZQT7F?uB~-9OiD8n`v*0Ng0-m zTTC~5LVI%*?XDpksLsWztWu8cE;Vc=8)fEuTzO7kwUoAkG}SXV)0ZYgN2+aE`Gpxd zPO~kl&qRN9w6~i`$Yb6+$CpR#y@4cGFRKvk{yJ^r@w$(0axEzZy$XB@rFNhSo9)Z% z%9Rwf!z>aq^K%@|>89^$n=47;6zyp7b4idKOp6~^ii~|ZTjca~PIcyaeOt-2q#4oPL2}teJ4&T?f6vLa5LK$ArfXZq3!gNk<;gL=Kk_2EhoLevW~XOB_-RF>mV|k{c+S~F!cb_5FObB%Q!M94D(Sjb=qW7 z)4f(M)pQaG8Qw{mE?+?kY%NK0OyXpc#}ekp&0ii~<7^Xc~GBCG~l$EUrrdnMuE0|Nw@?LWj-IHt<$%Q+a zAe=Jv!y%5Wbo$HZ?$3}d)8)=AbXk3>zENGKDUz^}zb;;%_EndYxM@7QAfLK2@1TMw zP%zF=n45RB^Ga}#3^tqItM5@09F?M3%ow$Cq9!!V8k*`KMg5Z8&PXqc&M5Tiq~5nb zN8k>XyIAI9ZIYLtBjT&pzr0b-KUL)er5= z4$aBOwe`{87P?o*-YB-tq-P5XbG(kMOmD9qJ$f9qwYjm!ckG&)?#||? zW2EDAC}J8VI0`(@!mNBt(xx+Z;43*tW`1q~7E$}hQbtm~$9uGMWONDF;gDSV^ zB=urLZ?0KPD~cI5oY;_>u3&y_FPXn;qYjo!JBs^sa}pI8y`xi@p-k13JHMRxREi2awv+G9K@!P z!*mqu(QNbgh}6mwzmPVM4n)mRq+rLB+-9^ZtqMhMVv1C~qZmgn-@#0}&>`-aBb@RS z$Scfo4=X?Mw}pozLSTcC{f_WC7tFZef@>e$H~Z9Uu5E!kndzIl4Y(${^=pf-I(z5E zx8D-^0l#%)rYF5#>-zha7wNn4Y8j^;hRX8Q7$ zX$}6IoBjK1+fKP)%;1#!c#fr-%Gnaxb#2#A#;vP;`41}#d-a*aGi7G_-sev3{MH#~ zoxiPL#GbT%-=On1%=AXz_iy9rI{ePBzE~BxWBD{J(3S^78iXwW=DnR!-!Gl={G2(T ztoi+pQ+W2pOz$vz|Iab2SNDv2dFlld7Tm%^;xCx#pYNR!ec;B3?3O>Bv*3=5jvIK! zoY>wVBz)?>x(<)}?BL^Fu5R7_;csqd9AlaaVuC8XZ8;k&PHXvecBX8M)h zXE(1&dvJK(Qcs_pt{ZqLr9RKwH3-@L>`6W9?+RP_-qgBp4fwQ62G6dV=}WKp@RG=z zUrihO-5_36Ei*k%TfP4edvRmQvRrM zPxlu0EZ~`1o{eb`a>s)|-@9jVvzD#;J^uUjmNT}ZQZv1vclHyf9ge&vf7+16PmX)x z8#H02*ExShdgEI|Z?91|V)T-lUEbxrdS?3TKR?xJ=5tSM`sVIhg{!_{<>;(_YbeSaNZ{iqA%Iqif3wk+fQ44?^i#6 zyE*;kyOV0qyqpJmYS&UZxv%84zP9yWuQqOfP0X{O#%1zsu9^PvhMKe9KK05US2?Gx z>{oqo6wgAL=^GjhS}=LUoctkE&K&X6OU>EuAv68L`}h5@dt{5-LKh8def7#jbTz!T z${*OO<+8#Jo3~Hx)34Q(wVyBL{V!&Er$ev3eNyhgFQ?^wl#u<&-k$Wkng0IoZ{Gj- z=2M>v&-iUfml%VGiGMQFmfH}p1<22`$p_rlpUt>^FPg=aND~Vu6gy-I`1TJ+&L3JHPbJBCU^SU zW#j++=dH_Hzy8WaZ2y3nzVOLu6aRd>;p3Nna_+NN_DFh~cR85p%bu&YBkQ46OYVsM zYwOL!)-2+k1jK>{AzAfqKK#)aD<(|db48;ueKPLBFU<6mtKROG@nM%63%+mTOlY(N z|6OjTe;Qx?!*&zqk2q`hstZSTe0CCkXQtP9>!*%8ZrBo;Rj=*60w=H7N> z%RPhE&R%eP67Tgi(>rY*dw%21%`+k|I5q3p?A3E=mziE?{q=9ndjG?$N1dndpEYfG z1CF~qu-72u>^e&Zy8dcBRpgCcNWj$ndz5C?7x1`=FLwn-?2UWn%ULjdEbYb zzU9ipo3FoX_{MJaCb!&sXx@vwd!fF{nO|*n|Lt)R&2~n5Mm4%{@L=98Wu~W`{e8{7 zkKXh1Cr38MG;CB0`>*n)f7JU>$eTUxIqlok&BN+-g=_2-(+g?v#tY4}S6XRTIW+-FBc4&lH;JryrSp?~%*@_2jmC7rc@(r_Qgu zm)uPMT?>y zq6Q(Suf45Cq;cCx58OB<^P^KUc5{F?(=WWJ-O?!=ZaDnO^tVDC@EZD+h~rr*8ng6}SUoe|4Bhs^XFVy1jl z{i~$H`d1w~({ak;OL=Ds$DRfuv(mO-_w)mf@uSYoe!uOb*H+_Q2WI+n3(orL_d~5( zPB=ZGX}9m2QkP52^lBHq+<#@=A0E14W@h3gF=t|*SIqPY*>AMyyy>R*&+q(N^?fgP zKi&MTb;_Te+&KN2K~@^laE)x#MU3aK$sT#&f*r$)lJJLSFpr-u=#n4}Cf5&%{Lu+U6@`rH>c zyj<}0pO@G0Jk_G_cZ?BUG}D)d|1u};(l^(AKPGG4HLibVo4+qbIkm4_GUm#St>T_& zvA1Ubn|Ho#{_YOxZysLSb4lMHQzkhsx%%8{xABq`ey@adV}-lft<{HrHS^b73Wi^ip0^&#y)wMX%$)XHem37RNjaD7{ABj7 zLmLO*I%Qh>)SYkM!g%mBmEY>BhZeP~ef7SAZ3#WTZuZ4c^PNzn*KB$76OZrz=(-Mb z4_`4Oq393JwOc%P!vjr|=|`S!0^E8ND;N;Mr%l@E&I~{ldr2SibtNjt^g#zxCTgbJu;!aokM5X~(eCE8Q2& zANQuQ_Nm=tv48W{D*vWCI;_96-Q|~$t>w7?v5XZr5ueTUPHQ`4PTQFHP{A{^PHMfo zE64qt%=D<-W*^_1aqYtg@|!IEe*B*Ycqf*bKBDbi*L3Pt^Maj^yKdgRvi>WS-A3iN z&3$fvY}?+StuJiz$<%LJ_rzb!^j-ZXU3kgv=Z5s{eAWIx26q32cXyfTU;R`wH0q%? zH}}2onmKoew|UbrP7YT&^S5R!ZRNbCz9ag9?C681xOlgRncgS5(Z)CSecb$T=1uQK z6nyp#ao9{h^2>*rH_dorit+H7S5E%)wWoQHu$i9qZQsb95u2CXynlC$v&FqrdFM`B zl|PyB>d&s6?=l(=Kai8yoPM8SrvJEYRA`^glQ&JAwD!5W-EVU;9yZh8o_XYb<8ZGZ z_lLz?G}HYq{(IO=zcDHEyrvKA-TUC6FLU=r&nKRo-A?8IzVOej2gY|9zqr|qff+Y; zU&6Z!%=Dk;#I3K^yY<6ulRQi6W%uTI^oE%}a?Z~kemU~P?p?i}Xjbi{>#0vzdzIrk zFd_Whox|UnF}?ZR|4=ji{)^xL^5Iu%yjXWx!kW?fG3fACGyRJAs~)S<;+?jw zAJ{M=uH*H$GoJC4vm?UMzW2PX(;j_mPVA_L#HIcnRQ|n^h8{YY~GQgfzQz z(dxIWtv;#Fn7Iv?Pn(d(d-=`uvkU&p&F%VY!^h_g?0NZVDX%iFFw@uPpY>Y%cb`7^ z(&}25ebQ&;Lf*$^rr-1PGv~WTJ-6ZPg{@x+eIbeX^P|Brpd)E3dmS zZ;B&7Co3(zpny4dE-~cirFog$OPl6mf{+=TDQN{ch0Gp$(zpXS-Q&s>Jy~vn8-mkZ zd6_wdS^yPD2?_S+B^4PPoTgnB~e3A4qtbnpqUGa$LDCuZ&lPbbF_{Z3)gG{8l71Zhn>CKj9(cpZ%%&Z6gwrF zon>AunV4I3kxVnAoGUM<{6n72rex;lF^R331?$+8nVvZ*n8vmg8LaB%I&*{ASo|f^ zR%1;a6mX@<&dzN=pWmy_Fba3Uk9_=x@E_H7Mt!PNfj2@skqGo z3Hg~*JcSCaB@Z1m8k?5xb`}l3rsij+=j7yDC!&tbLboTV2Y%hu;BhM4R<1(2)M`I7 z!<;PVREIm0yG6`=!8%+KQ6_SGpslcOv#)|4qzdy~nOs2+qMSIqWZ5as^bq~Cv$0L{ zFjwH5Zl^qR=SOcbv6IDS6>LW-vkJxTdj(34;2&UE@C zvTsVz!9-(3X3$O!G^o&+wrVDr%AIu+ZJFJs!xf}^8P?j8yUh}rOY% zH>zeo-7KDNYeLTyyEmw|);(A#pyZ=+rL|jZzCka#;I_0}bNa62-IO{SLG6D1Ylhu9 zwe$f*FsiCCLs3q@xFL~6klZ}1iGbuz&l26oLz3Cd8hlE16%RiJa*(-w)QRq(|dO_>d{v8@8UP1%(%L+UNVn4-n_>+1L2D8>)>k^j={kMU^?CnDNeT8P zZ?oCvbsi0ROZLIi4)KhGm`4xhV7b7JbE?3q3C-ip;#9+adjbxpyl<__Rp5NjI@_^n z)8cjT9Su0>QjK!Mn$14Wa#j5d&SRc_RH8wQ?I*e>YIfUZX5W}YgL(};c-S$BmYBqY zD^>4b&WF-D9h>2CdD48R;9P>w_nLR}RKS(|-5ziXq3al&M(C#?qD|38Yn8@+gGK(V#rdbtK2G;71S%#dUT4~bV%(H-ocqs5PlAD z6@=?^pYSf>7nup9E5Y}{;yd$gLmp)? zzB!rScj4KIn#KVBYc0$;+gb}Xu4Aozb*0^8t%VwQvDU#%yT@7!H8!y3%lo9Y7HWLM z+A97ixu$Q8lC8B+Vr>(V6<2BZNd3RWAp+m)A4wH9i;!&*SwKm8eg#1$4vXiTEnzF1));HjOx}}s4;-GN6eDv zS!-d&0&6YQ_<*&(W+@+8YoW$>to1X~4q9vU7Wagz6rN$V)uVZ|thF#>v9%Uz{J`2-W+^{g zYoSK9#@tA>+vwka4C1{pLeEGjZeG%`#qEHo-AOj4{>s8m!`tEP>hqN1Xr`hA|y z`JU&Vd+s^+o_m?3zql{mee->u=X;*N-{<>0=Q-y_)HWeYosMT8%Bkh`LKp#{36zZx zvebBx))G;bLY7(x(l&Ll+94ECJB3in)A75O)G}PiQWt|NDZ5O_QZ*p0C88RHEVUf; zWoq6f6j8f{EOjBCkBCys7$M{jG?B7OAxljGX)O^oRmf7SL0_Tfy+RSyD`crF@MOd! zYPnJf`2$r^)*xi57Le8wQEft&S_k?nHTMfe)Bz#%_A~Gsu+&l|WT|G*Rg_&Pgw_IS zEfFp6SFwi%sxe(7wXo6J{veaDAWNKL;WT|(88Yx>Q zWT~|vJMB6lOYH*bXE+C|5>!@X&kfk01T~FB~LTD|Jopy&1 z{0-0!YOcf+6q?{~2w7@9=mu)pAOueVG?lW)ge}x{k2OzBlHb=f4|hlzmUgQoSIpC8GL-FoT_kXYe2! ztXhO%uY@f1JZL7h{74A%IjDuQej#`=Agu-CceqWMXF$(T^HL#rGD4R61E`f+{w#!+ zIUmozP?j%*{DHI<%&f4rA`C2QT93^ON{_&EfFY?TxLYN1IEH!3? z{bYMYT`Gjx0Mt&+RYLFpKw1l0U&vBxK;Nb2ULmxvkfrM1g13cGOOueLrh(>C)*^)b zfwUIbXCc@U(D$hMh)@KMw=IK}2hF3FnL?JD51LO|rw}X`NNa(87Q%=JeV>{OFSH5v zSqN4hbQ`sF2wC_+bvy%0*>WM+7m(HxQR{>-EX=niUmNC;~y&_c?-B80USNNb6xT|yWOW0ZQHnj3_$wi1Fx0xhDJ z$An;!KzCC1ln^WuNNd5`N(dII49`+h^Hd@9Ng+#p1N3%kc~S^116oYkZXwJ}Agu*n zkdUQHFIMUY)Z8uvKS#(?-v=$Bmgj|F*Ff)}tWOAa3esBOs|ZEPjuf zvOz+yFCeW2woVAP4z!1w*9pPa31PJZT1GAZ7P3_2GW@bLWv2+i&jx8NSWO7QmVkat z%^QU<=LuPA(B=4DXlk*9unqv-P1);(P^TcR1!Ff9^v3)9r{ zW+6*m3R*$g6+$RENNYil6@o1R{gj$_3q{l(Axljhhu^BEmaBv;buH+ebCk{1kE6=1)7DR8PscQ7J_CWtfR{DL^`!J2wCbz z&>G673t^oC(ps=i5rWMI{gRpw3t{XFp*KyyGrH6g6SCBF&_^h16~a6S(poSN3Sk}u z{fe582w@(quw|CI2J}&Cxn9Upw}94CcB>F(Fp$;)FGvVJHR#vWoL^}Z_Em(i0s?)E zT4o4gZUo&+S%(lt1xRbb3@e0r2GmE*g;AR@!wSLA0ew7Qr)U$hR2OI+Ws8Kc%L&q2 zV9kUqwFC45H5W~^3HvHS82g}4P)oazr51rcN!b!1tU5qi3-)t_;H`sRglw=Xo@7%* z4HdG~9MFB#a+{E)-T_)q*}H_`4}r86?B@t!ZUp^?nuk`|1RE=4soOyJQ%jc+JO$7L zl-(@^e*>hoz~2zUtOn|*=8|fg;BN?7ssr>XYPmxQ`xc-Ll&uiLz5qyTfo&JE)Nar| zYA(IXridCQWT`tqpQe_#3!xu?9;9rQ5LQYcttFy12w^@4{g#@CU2PNQ1tCkFQRB$Y z6v8fvkxezSwYByygAZ1HLJ`$3WT_w5*`X2jGa<}x^^UAW2zhS6Gv>_8ZXsB7Axk|y z*$$1U?+C%CX>?=-Lh#K%f1#F9O*UaZ60%fD%#oD}p+rVD)yT#-D|MJ!Rtcfs3&Ap6 zV~4^r2w@N2$hI2U3r4oj$jYvD(vB6f)V3*jn-Z^9aGg!?D1eQ)@>@*=*LL-YAS=)_xa|pF;5yFfugg$hW9g03Agxv}w>ou}h z#hrMk3c<@TvS~(kWE$Ql#H&?Jw<)4(ge>*u8IEkEkfm-mve`zq*2vZwS;I`c(0Z`8 zAnSxMqJ&_9TkKF+U?H@Ek!?4!gGP49$hNmCbs{wv-fR=>sgR}qY-E2kvI}o<;*Al) z%FD=FjBK-!Z85UaS@_M9!MYsnLhylw(1Nq=PEA|cEM z?Me;e)iw)Z)hh(6H^&Zz)f0kkGO|5JRxsCzS15#82sD_Q3+LH{S`)I=UybY^Mt0GB zC*CDO$e)q58CltFc=rW0FBL+o3Sq8TV24K3Z9>?2GO|aE>?cO{b0Ztx;iMfQggWTN z8`OBUJ|WmTAxnL)%MOjG=Y+5uf4d_)SqMAFMs}ryyvR4TAD}*fd z%nCa+qP{C+sgqVZvLQm2y2QvXH?mG6TWDlkjBKls6?ZH38s=b{P(-x|S*muG9U4)S zg)Ftw$lhmU+l*|xkxhM{QpMD~Q3$J4A?)3}-wutaj|yRjz{s9AGW7u`UcL}!HPC6) zd_X9o4ho?Ut+qoW>Zd}Mdd)qK>~tYZO*XP-BU^4{D~xQ*2k{P1UQK<-CX8tzOZ~>k z_8ZyRYn*uJ384=e*%Tu?1R6@s<3DT@_8o;Rb>2rD*#$zDnrURW7}**lTWe%HjjYGW zmVQ*JGkCQgA?!B^S?Y^x?a+w&k`Q)!jqJ}xR{Aj~-Y_A|6`K8`#Ya<)A(TP_kgmL*0-Xc3#`#uMRFfN6l<+FBZMEzO_{{6#_tW*ds19}s+ z6l}5yEhB{8w?`b=AR+AG8Cj)~t@s?y4^hi*A*@b>FzOx?h}GXA!MoNzF>z&)DML$b@CS-*{g-%T^rdnBU`=&=aHy+mk{O@AxnMz zF*`J(zA1!VL?ipRkySnJ#H$fPIlhGRP1L+WD55qBS?a@E?a+w&n2@EOHL@QVS?QOZ zc*BISGW-h8JW+Ft5PG{1?ty>R4vnbmge-NBk$u?6dX22l$nf4sHJqBqea$A^p%lU? zhOaxa5kl}bjjYYcwiww~BU}6p+_0kNok9`SBZQUVb~_ZliV*C9ksUI!@lQDMDuu8E z{!N_8qULrXc>hA!X?xNRji{T1aQDH;?lrPLBkMP^b>G4{Eo$x;!p^&prGEI79U4(T z5wg^)pLS%g6@tAovKAv-zZ0ju26NO3Vbls?wfKx33co}MZT@XXRw88Kwi!-)QA>>w z?#&9}oKcS*iWU^Ys@%vH8`(}H>oKx|@8Q-JHOGW-Z&t`sZ~eX<8d2p!xR-BaOO32# z7tV}POPf$cwF|))c-9V$sAeJD{Wr3EjO<57_ERG(e9lQ*B!tmzWYdgn)AKl?#vB|L z!Y-!}&Q^LObB~qM%HCy4;a~l zMt0E14jGyHG0wj6YBfS=RUu1V@Dn>UqAnD|{;84OYGhlDY@3m-{VC4FQFEUVtf-Ks zp4@APM%2?nmcn}^nIfW2{FzNyPYYo^ZDiAaj#G8iyh#W?gAi8Rzpz6wa|&U-Wn?`@ z*4B$tb=0y&2=+h-p2sikP*`8nH3?Fka ztj{Lw^$A&O@C%MCB4nuwBb#JocNy8cjqLkI_PmjmzUb&1CWL!@zrp!G=Af+KCY(MI z!ab#Zj_mb9mTEGxYmMw4Bm1zC^%_~9krnL6$wFQ&CWLV=WU0#z*r5^iRv}mrBU@}_ zLw|>ph1Aj_g!xDa_dkAbhelMb5cV;RY?YA>{{zk%qHYm_2W4a%jBNa$ae9$jRtcf+3gJ%8Av+XzYJ_k< z#mF`rS@wDSxxyYd=_R5P}~e1P}DE9SRRr z2p*`B?KHBMzvH|k^Rih89;lF|KKKtiG@?Etgt290yNzuAKXF2mTDA#A)OI24H6O7< zaaTqN=Q93{(~wNDS_t}t`b7815Kvv1|i(D0X0z8E`)nFpnA%d z2;pQpsE)Gt3t|5SR7=@?Lg+c58p<{cS?X(`t0{Xz2>vtZD$1S{veeH()s+282Vx{NtB(S@<{NIK@%x^wUC8hiOf?`%HAYo;Rs8fs-)~9AxpgtR6*GUA>5S# z>6XUsmJrqzd3ox3$Ofx|6Kuk|LI_qFw16p^gs@fv-A36AAxq5y&8KXRkfrVf&7IrR z>@Py-ohRn0TPPbOgx(3dnX=P`&^tk`lnoa`?*z3_c9{@*Cuk;RR|(->Drg2}*9&3q zA2gk^*+Q1O9W;%yJB463Kyk|6D+Iq7bQ5Lw3R&tw(2bORRtV>5KvOCEijbv>^PTn` zDgHf}$AxeX3UoVV4+~j1C!VLeDEq1q$~M@pUF=f} z;Z6hS-H10>l@{29yP!gt7mRGDk&PRYr?#J{N9}kac(0(JQPw4degJxivd;=x>eryJ zQ1%-ktj4T7wU)ABLO7EE+CkZLA?&|^enr_Qg|LnXeUq{u3SoyJlBfPm*~voiC_ta1 ztX2pf1?caTtrCJ21+Ag%2_f_x(2JD)Rmf7K3-i=ZD7#n)b3Eut$~uLxpAGr}WseA1 z>Q|tDQTC#crQYzWJoQ(~&Jx0I0B8$kQ-yFM8T1XxJ|SeOpMX9<+0TWr_B%OG9iXg4 z2xA{~kh1HA(3?PyQ}%Ho+`R_fL)l&-tWrY{I zw4bu4gm9h}bW*UJSZeGc?IWnU12KG4S~Q>WU5 zGf$vHlwBcYsds~RQMOVD`=X$AlO|)Gav_{G0OeD*LI`~l z^h>7wp%D7yYw}ct@lF=9)CABU7;mBw$_pCAc()5#>H*NnlszbfYk=0<*AT+Fx#B$a zPs$2~@Jtfux0H<&!s&d_{gf>bvebQ`PgC|OA$W73t(5H+!W?y4p4v#+AR+y{OP)HF z`5P;Q`-7lI8SgeBJQoQ1K4lLGVZH?Ykh156EcL3_=BZxFP8G7$)u31N8udarqXa6X zY@rZNKY{v~c9RhHMnDfx)+>ZF7^ml{KT&q35XKwmHPkm%2zOCHhZ*mELYDd#=s%P_ zBV?((p?R3kbU!^wNIxNyr%t16j1bNMf&R#}i-d3&3iNHt9uvZ;=hx+_*D~!}gm4xI zbUJ145<+=F4>Ij0A(R*NJ<588aGLatJT;VQi-piPK(C{0oRFoagMP=ftwOLlpl-@O zA%uNL&>2ko10nQ{*XOCf4bpWmNC>_P=xacG$E81w2^hSMhK_iKwo9rEkZbV z11e$Kej)VTH=>>y?@S^1#h}M1YZ8KO0=LGLZ4lI*ZqsBZO;!p0%$b zgmDD=B4xcoxZ8Jjo_Z70ULb@$1<_Xxp%0X;?86GE1{^4vW27s@JxV4p#GEXQp^ zSZRVzpzJ;&+zkTlX4+p1S?cWb@N-6#ohO7HYfwLBEkanSgEmw4Qz7)L;d#p9HO>`6 zUO*pWyxWBE)HLWjlzmPJ_i#b4V%q&emb&QtJT;iION6lM1wGBQ&k5no_M7w6k10Dv z2&WT3n<%Rhvef%QU!v@TLhz75AEa!L5Y}ZEl)^JiS*97CLz;_nNHZpfG-WxYxj1wh)+TE$T%9@bM~AFqC;mlQ z#vcM29;x?E(bz` z!jU$xewbEQQ9wP^=`00=HB>@#P*|F}ZD0lZ*LwpiFCYw+8<-bnG$36pxGfu4>F#tD z_Rns`V|X8p-S;X|+S@-)SyEl3#!2l{sc}%F@rfDq=s3yso~kFcZ7Ql8s-lg0a^Zj~ zzc@ZB`8p}#$+j>xeX{LK4NtapHT9FKE6Qu)6;KhM5)*am4 zPC@a!{na;~HW_i)hPdvEaW-&9-KlBfY|(hC9r3-UJ93z^unFT0dLYFc*oBkIUtZf7 zuc)t#R@gP!SRRYU%i@>nDKcZci{qn1#=A_r9U1jq62CN5yi4O{A>&;ZDu1I##kISV zF@K{k3Ky?=E?#5q(Kn&Fu_-D1htb;YZjw*YTd57txJHD}Hu zZ@yE~$Hz7_T^)Fh@|k$wUx#)SQKRm@>(Y~mCsv2Lc2iCHHSnr4$E~l`tI=@R zN8FHlD|Pup>Sf%}dc)_pvL<|f8+Em2XwxW-U-~wxYSLHDT<ZXk%l&ryrWI7`k3G-WZ+S9BqmPq<7*pHPqKNMg6Z)3ky^}DWxBo>tGC3T-{J# zT^I9DUtXilP*RvP2Ab=tV}8cXUDklODFZk}8s9-2B3)u2hbu?YfDWx6y)SHBXP|_N z?;0#&<7c5iX^@A|pES@z#m_GPNdrEVer=?~)jbD)2%W|Ngp5lg5F#!OfjeGe=($Ew zQ>?tvGv0mUMeDR1k<{m0@t_3@4*E3p@KVFXlab0LXsTVRZJHEsio(&Tj$P;YG85~Q z^`^$Tw!E+*klbg|q-hABhMr(Ud1JX= znq=rB_V6|Z2p>OW{%yY?JN;~}koxQDW0lc~)pgO7@sCj?%a~{#25LpTx~`!)7N1x> zu|8gpp*yjr{#q0_seXLYaET&m8?HwB`o`LFn56XSu(~i8o7haJ!QD4}u4AIhHj}^p zrt9F@*2X8)*JGKVYL|>&i5Hy$pCny8y>O`3j*A`1H;+0_EjDj5#km&N(1{dOKU!B~ zv>XdeX5RmL_1D(bRM%aNjG^IpY3!-j!K1IkmYkF(p#CeJv|Qe0m$tbf<5hk0E9uf* z(KlV=M7vbj){cfPUkz3^p1Qqg61E^@qtshV?(4eaO_Cu|6|JeMk6&BgSW}tQ-`sJV z8ln}|6ES|8nkQTpt%$|liPGdnx}X@;@=9!-24BPO)?(B{#ij41yHW_fG7*M~tNm(6 zZKnL{^{|N?RM%1ul{MNklh_&JHfIsn7;s&>40??*4iQ(6c&v`2vE~MB-PShLL}RHo zHmRT3ZCHUWm69wdUuH&(S3-S-?%IK6kgl(~I?A!BcYAB|{PtOMZ`F6*YNyYyZK5r= z->^SY|BPX0N7sy*a(ko$zpv2MF|w;;I#YHrWe0xm3_ln@r{fO1MKFy{->{mTuh$-U zJ<;i0uX5fUbG;=DSH2cW=`LZSjDC6puE`wbbWN5r@S0Lm-P(x{j%=tC68}s~I+v%u2-VXsY90 zV)`^4a~Ej+61QUlepR_MHfzqTxwq)+rcXOVN5*ej*^#|zyE-OB8!P5@&F##fr>kQ| z>w=k#=uSh9)pt&BpD?SlqCTXaPW%o^`;1wgE`1&yx?Ij@2mmL;LVeu*C7X2a{*q0) zT>DFrt2Ej4Pn~SWBDu4wZwBMv?)KL|kJLV|GcJa3#v-wd`gctH(#}}aWUQxjgY^0m z#@22;<|kE$zLxXB5u=>Odp7CxwPq~px~O4#OT6n6oLs7IahJpX)!UK!r`<3NTV~DV zt+J6i#eAmdT(EFfi;oV(xR^S}#Om}lTy-6+^J3~8(>a%UN=o0=F>%54IjwbFb1bXoM^H{2$B;Bd=Rv6tfXSsCySnzDx#XTOgN#`Dq*^G}|$D?lB%>76I z`h52Nhv$X5##GLN5l`(uJ~}Vf^Le~$41SVJ@^!IWhkMMTBZbnL7`Es{ENf!SY8{#T zxnDkywx4@-4rD)1t2?ltch)8*>}t%{y8bh_S*L57*Rwp{dF`X8tD_SAhhwXzb?z;l zZJ~5`b?B0C{I}bw{PawB2`lE!?S#M45iajYX)b^t4wRHZ`m|2xlg)S@2s@C?_1tzK zn{>I(%f(Km;5!?8HPn?Z8!T}}&gOchIi}OeGTTSYqVWaOTV~CRFKC_KvM9v->dKDF zrk%p&hq;J%&Wm@n&TUC+xV>e=zcJ&-yJ&cEu~Zw7PB*50B-K`2@|mP7v;9t^+hfSR zx@Ihbw~}psVaDxz+G&&gh(I4DFpnul+)rPUEYMd8cMWaK{q*TFxj)(TFFmH5Pd4e? zeoHp#UMcoU*NJzm_>7I|GuzS*w-g=FnKa-+>Fi1wXGuD|V zxqiDku-w%t#52qKOdoW!Gd}CW#ajEye^67P1n^P)$uCui@`oN#n#c)&hMEzjyry$ z=CUJq{~Ls)VfSP8RlNC69ZxcNJSF$0>uNVc6Q%O2KSxhjyBUrwe{#C6_NLa`TNljg zTvUVacAq*-=;@G{?TiU~;Yq8@m&+&D`gHpX1K$oa+gfMdI)C1*x%j!}lJ?B66>+t38pXtDWoG>bWhg3q$DOauyqLjOsH|VmGC?XE$ey8kMBY)SRys(4$mpAO_5x32ugf08b} zt;>B}C;s%V_QuwZ)&=-E=k(=6#05@7G>|);Zm(QF$GYFU{p4)Mi+f$4O*;3wKAUvz zc`TcB?sa`O>Ad4Pb=-8qDZ@P=k0J1;bC2m@9SI}gj^EWD!!=qtD$=FZIcYUxERm+G zy=FS@Yw6I2=`(NTGcW1%v?Dfk&9`IwrI$RVu}fNmu9vQM>Jn?>O@}c%eNp?o=`BsO z?rfc~sIwKjYw7Yf-;UjZ*fZ?ddag;;F@46O=DG8yFX(7(k-&6%5xYxb%LVkf_0#c6 z9M9SKApgzroQVDohPZYONBVh--n4GtFTEbO$Ef>W!pF?DZ|HQn+Iw#~ zg7WToY94nbr4G~hj!AXu=u7q>b$x{PAp`U!dy<%slYG!z>p0i?eTn?Yq_Vp_k)-DF zwyk?k2x@1SE;E_9(|LWuPlAh{u zfLd>Q_qflb%NPsjai3|(-*XkD~Ftq$^B$blI{gle?d0lTKd;zVGcg4^cb4<5qVcka}pny>ldR*3FBs1cVPaw{wn; z=tft6?Y8@o$=|W`c(i>&ov~5&ViH=u4V>YgnR#zL@_49od^!$|lMh z(2FzZlQN1z-R+(FNz#$5cjBy@=LPKzCY9Tr*_)9__6gkuPUzBgoa@KkAF|mear?>H zT>Du213GV+`z_5!Qm=KV@%B6aekMASdTg$JmbyGW_GtR7yL|2*YwG4G`mB#`>9Ik5 zKb!vIjr+gRUn^U0pCucBsDRY|CUxGzXySh*r*YR?Hse~S^ZJ#p>nHhvE{m1qntIcx z89zb#y4o|0Blq|Wk-s!!yRvmg*DVw8XrXQO&TYZ@YthMWz5`8QX1cESR9)_N$cF!$ z{XCm|>bTza4$&TI`%AXhcgN2rFSeDHCYGDZ-t=zW*>c!E>b9U+`b;VPQ*w`TI+}dgx@wT)r1>?eFS*L2QR=}?hM_0R)iLMR&_Xc|pR?>F0 zSI@<^>fD*QgP%dqEGMEn4enXsj%OF8|IQ6{!e_des9G;VA? z_Sue3{^Mq*@Y9h^J9*=}+bx@V)Oy@y3+ij>>qDOl2s~fpTOaytfa`V;`hThpZyB@s zx4S;F>5uvv-t*H*=XGm4X6QKXdTLwLfd>}b+q7t{*t92>GZ)T`&jHQUCo zy^>@#b{po>j!D;RxApkx4%m+kRVOc}{aLqN&t_lOZP&9&=eFy542QL4?sH(-q;sDG z%O;P4%vK>ou8^fg6x|~lodDm%hJSpgz>Xg2wA0rGjNItrtJG4#m>UJ9=uO6@M zNLPOzy~#$1dGNycFgjf0=QBw5YTT*Ed%e){ak zP0eGh*_1(7kL!7jO8hgSN1i)14{L<38zj_FHAyI9LgY%?x1_2w|8Var-)#G?)&WN(aDAAwzW=(N$?T8$+b_ChsB1fYSBKti>GHla zBa{vA>d?Cvc3QWduxm8G{DoPg9UtFjm@4=BESq}qjJE{~GtF1?=FY`^f^_pXbzrGWm15smYk zGd8HhZ8O7+jia`=S@bEL-)!v3K=@JF_zSu2gGoC$dpjBJUdybG#L!OeB5r@>sBB;I zHJmP!Z2nyRFU78gwJEOa7_;I|tLw)7Io9o;&GmFXQ72A2W*q0Pvg>4SmoP<-tFAMS z^<=$H+s)NFa~kU|eP+13?S#9%(%B4`o{VjsO})R8#(CJf($9x?jx^Pz-05;14?3N@ z-O{y{eSOp1N$K2q$*d!D8Fap~v9r0hx4urA@!3A_mZV#Id~G!z@lWSpa*P|D{%gX_ zdUId5rO};nPiPEQTjr%|u69hLvug~El)Oz13|Wp3qcXk>um2DccO(*wy{RPJ^A8t=Na8jtfedfo|< zMpxJ9nRBq?W~ZHnvY zC^fB@ou57|$8^JUOsA8fA3OI8ynb3>ztw4I|HgREb&Rp!aqZHHw^gRxg9xJ+ud2-H zK0zAY$9^6N@G%1OnD8=^{S&us2xG5~+m-D6s9fzz()dYzzq_}cTUrA>Dc3j*x4#}n zx67My>38{N-uq)|`c_ijlSh))-DKX^FYoP6@`u9eP4=po=OjHYGk47QKeCxOa-A2G z`jgnw&~=w&k(1gx7vDUoy^XauRyj$(vGLx15H|1st^O3!KD+87VWHh=L)vGTo`i*V zr~UulzukVHUc2UU&Mlj9sOz(pVExa4z&OXSn(&92x!)hknD#Nc+wip1e=m zi$YRydh~{II=%Y3&L^94>NM%}zEt`3-do9VoumH!7N5GFu_$2#(*B0a^iF54ncK?O z6XF(UhWz5hx=c?<;@lPW)8ihCnRKEnaJlAAqc9)0FA(c!L7Uwx+LgZIUBU551^a;&FfqG$wREaX#6UN2kfqza&4Y z9n71~={uhOV$$ml=EQ;TW6p;8$A`-#G2C&}j9a-*qJz2PI(4JJk9GfYUpo^YRsXsq zrq3DR4#AA+_*tK>(N$P4#F{GfH9d8lIA|>o#w8N9AyH??Or*i@1qSLXZ=6`6Z+-{r zoxb4anOLMa@g`K@hl1rFfoW#U#LuJH3ElCln(BhD)7GJvLQ2P}Ew8TE9H@WJ^jZ3c z%ba*s^XAXTsdN1RxOvbbFm0P1SwA@LJfz{5etK7jOPnSzi0D$Oe?ucFoxAS_<|)zD z1Ml7F`pD+vo~N?0BX0j7n{>JM_gvQj?tRv5^69>RlTEr@@89S)^Nznu8tDE6_iyi5 zzJybHpq?~yyvsf$4)MCs z_dh!I=%Qn#0(hnPS)>p)?sTduf)KnYq zY-*lRQB_`77p;jm#mZyNO{K%nX(`peA8<~``K50ut)1R}^SlLfa4e#w)c(zbkt0X8 zE}V}8>8&lp&uMQtU!BuYI(*c^a~7Tt-C>vyJb3d_8!c~YZj9DO>tgZhx{3AKXCu_L zgYxICmsoXew5g^(mUE?~sSCgI*EUUx*Vb1y*F@v`(x`&U>WcDMb$wktdQB|*%J7ya zyng)VJMykS?tbD*Us)b2e<|~qL4WG+++Oa^Xs5R$>EE46{0MG^`L$W4ZaAmq#>-35 zb4Qge)aA`kZXAAyHHHf}$LO2pM|qY6tckL%1N1p{FwpiaKyS|Ztf-1sT-{J#jfp6ytfs4jVBHz&)%|-0iT*J* zoZTv~sIHroTVc}8Bk18idehgt-@D`!<+&(rc^Vq)D=?1Y&2`min%sN6UzsxNPG7E! zIsKg~rhK16P0_wWaA8-AOf2+OwcvX30<+bIF(Rf8|W%k~! z|9A+aU+2rczv5?mLgl-$so^Efw@1IuxA*rEym`;DT&T9{iF9XkYz)7#AZ-z>8|87m z^Y?PDAV-arHKblg!rt;V)AG7?ucM*sLstqu>Dmi3c-&K!VTZV{-E#LaAKe2|rgY_b zsmkKf>s$6D`x)G_M^(QeuaS0Ma9r`q`gk2y@ODmJ9V}D7^LaP9Z~qMHe?evN)bUGF zPo8U}t*21=r?u8SJvT$Gui@>_N%a$?AL+7PXZY*&)JVu$51((3e&jn-|H{>_C6%wH z8k7A?)FytqQ7-$Ps`k6BjXADpZfwHx(_a3?Cq-kyb~!cwp1K>TwqgD~y0gf?T~2-L z(v*@Ky=BbYuV13};h6F0Hs!-RfK9ej8z)@9_SD@#wF~p@(LGT4)|=N&xebVnb>ger z84pKU-?nZ~rG%^SkoorLK8k!-U5DpP%WLA!4THw$P>EyI<> z-=A;D;d*;do_ST;iyAxDT+)2-^L45mGHrGKuW#8RwxqH_u zxs}ILF(Dfw`|^0MgYtyVZ$*9G#Og`7n-#C9Zm5bj>Rqzjn!(=>_qIcb>*;=TRQdN* zN62c=J^!BT>HKHAzD*g|sHeJUMXqjB=(6}-V?guoshfdr3+CT*jRDDjWp&e0HbJ;H z2)<6nKBUW;(Z0I$d#WjHQ)FEZ&vgc-9F5VYXpW;Hq&@Y~KLF#{&bOyZ!c~11`S$3~ zKHoLg$>(vbJee=r#{bUR_Ffb zujE_`I()YN4iBivlFXc6avz70J3>d(HhLU-=f@nc%Q`(8eMi%l19)BKeKsw*f!z(D zH$ZZ2SD&dgWbgH}2X>qJ=tRZj*6*~g+*%}k{yaK!%%9k&oVtEc{`_?Y+j*BA^Asvv zLuSZ_M>+&4y)wT4@=|*l)nF949pWd_k&a*h~n>70Vq5dCx z5J}H|B=#WeGk=--x~?BTdzZ+cr`p3cW#D`gsMn|5`k4jaGDGgXYb;UT#MzpZ^5{K0 zbO(J{K%XASX^^;o1Zf;- z9chY*Hx=}8%BF$tC3S*6Mp|v+tpTm2Y%S=cq)niYkan7QJ)jR$whOd|)Tcv9>H;T! z`JfL{Rsgz(R03K}8f)T>1ATz9@u2sUVxaet=9_q(pjDJD1a*^Ef!<5nXyR=Gt)y%- zXa#8p=sl!f6R!_+H)Z{xcax5QmXn5#!02W@&j&qC>I5xg=t9uDNUK11kv4*U%y_#- zqOXy5gO)OM59pnw1E6=13NCcw6@r#fRs>p18U}hhX}pP73A&TAD$pX*RM0}wLKAN> z=nl%3f^H|R0d^!aL#hF_liEzYcF?Vq%?HgUEeFjatvB&DfZ8bA2)c!|4RkYUkBPSz)Jj<| zsD*S0G?P?R=H#y!G=s9Cpy{L$plPHk6R!por>p^V6R8DsBWbCLw;VK;vK62kNb5k? zleU_8+d$V*wjDHuv>S9S>7a>s2y_i)he6Gx!i$xPk%ohMSkIe5&yco&ni#qj)JW<9 zO(yl5cn3fYlpO@sla7GSq9x3~M5#K;Nw^249^j6Yx&^Xe16K@0P3d%Nu zE+=gRT}Ikt;_U^ErK}fpDd_;{4J_p$&?S@=UE$=k7<4gZLqTPvVW1MG7y%kXSry1G zTMg(U${IkUNmD^*GDQn$6lF_6c8cYo3n^Ox8cA9QdJAdiTb24dYqtk9g0fwp3rKyS zHF;4JVa=&LfRA@y3D9rEEOt98wLalsS!ohEX;jWapq0bT(xRL2n|h z0-Z(LXyR=Gl~T4D^hVMS(3zxO6R!{S2Fm(DC8Q&u*OP``>0Gx2bOvRmpx2SgKto9l zpf#+aKF|+H{h%jF2SBGY-a*i7N%`ZII*n8cvf~W{6;n1G^cqqb$R3yDK(D5(s$8jm zQF9IGRLUAaMWhzcDWs()-g3~%l&t{0inIn~kH&SNLdv#+Y|Yz15z4lMEK(219*w&} zLnu24`YZD?trD|1sRdNP&^FLu(qhmc(pnR59q1&=)`Rj%TR5aPX|0L34%A24deE;)TR^`e?E-y*B`U0j?@cNK z{gR=@pkC5&&@V`ppl>nWD$vJBt3f|!=o-+^NE<jQnCvVPF_NJl{5B@L~0u3G}?p{x}29a0(S+oT2)F9v#svMHdQq;}BL zq!pk@z8*)V^;n6pM8iN&F?2ZSTcmNI9i%BH-c-<&luZMDlhg@%g0$MiTLaoo*;>#y zNSi=kC+#%xdO%;JY!_%7sSos3l4@}Bmk;_1Wd)!wlS)8aNn=63WjU5=8EHA_OAK8B zdYrTl^cZO?Xd~klG@_+Rg`h1AEdqU!Gz|0w(s&cE67(o#RiMqJsi4o37MggAL7$^+ zDd-W>8qg-vW)p7<=wZsXf<8;?0X;LB1AU65Vz8`?x49V>iL?du07JKe?kDwt)|2{8yaS;7C_4!HBq{$I zjCfKh$ksOuw2rdjppTQrf$k+uG4ZB?K1SIz&{|R_=%b|7Cf*v*M<`nh`Y>q|Xbov6 z=-VvE&}(5GNhP2UF|-u)K~fp$9#R9SoAG)<_mcWRs~Or4`T*$&=>4RjQ=E7up!ZQ$ z3R*=f19g)cKp&yLHK6-QYeDa2=sM6!(q_;KQV;0oj5qvx=p&5)y@#QrKzEZWLGLC_ zGx1tL%PDIEEhBY;&fth&40;!3YeBZ=b)dT_TMt@F+5&nfX_tw&8}ts!_JEd<4uBSu z3T|-p6@uPQSrO(sclGnbx~Fd>Litc zI!Fzm7pU(b=sD6M&;o`Y2Hi#~yb&v0(r}O+Zvjd3Q*+Nh&X%(o2w9&-d1e!_NX3z}M z4$yQ`uZhJr4(2bOpf~JznKsS&YKz4a!pzA4{0=kaW4w^z* z0s12AWjE+Yq&=W(8M+sA4e21LnN&CfvoquEZGlfi>ILm1^?_oH*AHqU9RW3xhPFEK zN%0Ts`1`{s^s-tWQsFu_Ysv)f~@m7JZrffCnD$)i}HEFwvw*yo~*-p?T z(q7O+(qR+t2q;RKx*021QZcB4Gzw&ww+u9avaz6YQVnQ4sm;V|2VF_oe9+rS%Rz4? z^@2{w*E4$`XdGqzpesm6K$nw--U6?M^}Kx+W-!tY&}9tW2^ve<3%Zna*u*;mx`Z+{ z8!J~*F{q3*3S{dm1C60kW&^e?k6R!p|jIsvM*`yZGn@CGR z7HfR{9IU)Z8$f3t|(jF6UFX&9ldO>d>9Rih*ism}{ib1cZY$)gq(g@J& zNL40Y4QME34WQFWEuhzumYR6WL8no+0#r;|2YL-@tBJP_^lHksgH9#w1{IMGf(Em^ zo9AOTWgprCI>pukI+@f1dKIbP#5({gw6%aDr2N}ZlcZ9Rt#24;2xY@T1*CDH!K5iB z-c-;a%BF!%B6WiDNvln~HJ}qITMIgYvH+J4F}oz8v%NVvQeOoq)O0dNYhNb7SMx~wShiO zS`6AiS_}FK%UiG!z@&QFGK*9fKVvVSkU7v?`F_Fq%EL#GjuBmRfBjvpk<_f&^E@~ zh>PwgZ33aO5pOdHT?@1Ww3O6q;`MI2Ostwxic$ZM(7_hVFkdsReWcL)$>tlNN)nBds;@ z)`6x_wjOjXX$$BY(k>HkH>jDiJ)jur0H}#nfT3t#w-D4wSrKS5X&9)1G#>O%mV7PXu_wWK|uPcz9C1+1XN9#HXl`_V$dYg zD3GnM3^b9lv7jia22@FEGx6F%6_m{fO&~1?m6O(kzR&z^hAAs#D{KLcXXsYYm82ff z+erN;-T}~CDLV)nN6Lq3yn<8;vh@uET~66>&}F1?ps}PWCf-!grIbwrT|(*vT})aH zvh}S2l~J}9G={VZbP;K%iPr-fP1!EcC{iEjLXtM|w!VDONXiO8Zy}X{Mv%suc;i49 zP&OX)W>O4vK50Ivk2TqVY2-mt3^bgfQ$XjD+Ck@%R+xCJK<7}l8Z?Zw0dzKLyNS00 z^d`!7g3coC1(lKxgTBY>j>44oHBuSqjSL+NI+IibdIPBq^aaLS586Z804ibVM$qd? z+dyZK_J9i5OA0@Z*@`KOK(AwHF=!}hIOudzCFrA!w-7XhX%~ZD%h08u(@1MT#iY%k zuQEkH=x?M0pw}?;An4Vk{B>AMl1f33G2Rr=cS%!0MGTz=I)&5;I+?T@^clw60Xjn3 z33?Sndq9PxUQmQ|1f-bzQJ;W6$rNQEi=ksdLr68C0#Y03AB?A#LZCn6`PXhRjXHz+ zqZ8;4^z(CqeCOHUOXZ*A<-1hALnfEli7!#BoXa4S{5Y3CN&Y=pzMbsp66%jGv;OFs z(H~t``lD-4e{>z|kFIt7aq_8KOMi6x>5pzv{n72NKe{LAkM0}pPuTnpawl?eP>k^xiik4@u}wz{c-Bs{uex^r8YH=x4)a@ z-!b`jv;6xS`S-Q*?*U|p%fD}s@2SfE+_=>KzG=Mu9hZMklYhU{7AO8nLG-?y z{^*@L{n7h*`lC;VBz;T6oFLyP%6Gne=ShdplZMKZ4x1+pmFF~+(;;m2N-oEJzih5| zl3aI?d=HlI0{I>y-H#ev?FQXO+6$Ub>I2Oq9RSTG9RkfE9RanI^xp5S zB)!u-o22);XOZ+CdmCvO=oZol(9NVWP%Eht)IzEO%_PM@Ge}cG(@8C$X{2^goU|Bp z6KOfq(nH*O9h>rjWLQt|jdNT|?>tHIsIOVx&G$6X^h`k#q<& znREoyK+@;1>Ph-cSRF~9N~^q}`yg zq`ja^Ne4iekPd+^CLIBlk+jtqL(=2%B2qE_jwY4h?tBNIZuFvPdnU zA*6Ot0jU!-n6wx)h_niH5@`)6pR@sVB54!o1kyH89%%d3{r8qjm380cBjRM0L`3+Vf#cF^}oouKcM z7K5}E8Kj!K56sSQL$Ba&wrc3txNJw^jZgOQqr*?i5Pm|2@J#xLWJsTvA$(AV@J#wM z<^RMC`U^6I56%$&QeQt)`(>)%OyQaGpXvIU!ZTezQ~%18K2!M7<}XwI9PRZp>CY6N zsefk5U#9+lwCOXA?@aBJsefb|-0!DKrho}w1u67Hf( zg?MtSW4Uw7j6{ohb<6mgm3TUk9XN^aiVYXtIZR4T+AF z&XCBsu~&mVJz>Ys34!AW7B{rL*XNb@>BGYbdym1CI({AxZC3J}v6s%?=Q##6jlIwF zv-gjOw)c6V?0q7)f%ZPnw)ajmv3*L8)qJd<0@*h+(LT-;--kxx6i?``?L#+AKf#yi zd6c(k5%qvG^}%^K;td$CjxXYaHcGF5Q0hA){sBpir>pgaUm z$(~8wJJTgi>SMO+HfH;d$k4ubEjiSWMp;ttw8tJ@KicIYwCTX^+C3Q?MZ7M(m%C4I z#mXpjwCej7)Jo{C-JMb4E3B3MdRkyBhwf>Ct?aA8ucu|Q*_r!lF;~lAX1z`LW{@eE0T}ff< zXJFQkzef++_Z$52ShAN_{WyKx^h!TFly7&$)bZkLMf@}r9JPj*y(M$^G<#5nnm;kY zl_kbw^5i+YEQ^^_-^bpkZ$o?f+wqwb*49|~&^`8L-`_Y-y&PuFWlIjK1%vRn==SrF zsii!DKiK727c#5e(F4v#7PjGJ7t1b0sac>Tw#4-G5An+8y?#!BYocxLTlP(~YTvRY zeML*K{b28&^~2!Uv#jGi>zT;Th-dGq6fu#m*U25HSto=0?@Nqpj_1-0{xHUKQDQtN z8~fQsVWvazg#UzW?c0w(p7GoZ5j|mob`Nr2@7UE}=v3N(dtcZY<)&u7xx#6BF7e$Y z%Eux%QP=4tE>OI$dc-ubhm1(_*@i8jVUY_}GR2K7{K83LF+ll?omtv*(avL8`v*g-d-ZhAB zZ@t$Kzu&$Ma)02om+!OJ?=!shaxrjthseHOECzNrCztNxCue^sl4Hq~>Z$7Nr*BP| zs4SLsm~Bp6QXi0^2k5<9bxB zIXa8I?lt?<2{&$K)a8fO_APq?8`XNlL+gSo z=Do4N9c%kWV4v%Dq-%Rx4_}P_US~&#u9%)|u#-}}f1Tg>IPQpuA7N z*x0iw9mrk1Xfb=eA z>J6Z<_cva__kaBEP{L>QU-Rkvi*A>Z^)o!f{$0xbZ2g=Z_uB|^KYMS+O*h$9(r;qh zm!G<;l)Ui~#vlaW&$bGpMG}#T}%3TM?Yu}>b$1AxxYLA2b#~u zR$y)a75NP5daKjtT23Pu@d(Nw+|=o{x_AXM12A z@6Wu`_pVt^>8X?RLz~GrYz&^w3IgVEFLmC11Ge>3c zcQD?ECg!i?W!~(eVGcfu=c%7m-lrcl_N*L}{iiUlQ*iw_*4e3zgb~-)`F`CJnALMX zy$9ob*OG(3$ERzg-Zb)CJV1A@!QwJ+0b@ud+BlP?#8R$;Jaa z!{N^ld;wLv?_vD$jJIBhUasdglBqpY6nG*aJ5D^qiu^WsBu%wYCp(P>~kLT=z|BD@|Z_*L&%IDcK$lve_iuei1A(; z=pU74;U7J!d+ulP$J29@$3vK*aO`@n(_h_wvpzk1lnV=_cih?Z=PLvJcBBt-*^};M zg~-0X#T2+M@{F>u<7;5f|t z2S2KJX;!E1(!7*+8BXzgLJQqe@70)X6k|w2KQW_w_R(o5IBE@nd-uMj@VlF=4We%; zLO)rpk1z*nuzjIkOoNWCaNYUfEe(CRAe(!GT37m8ZvOWM56ANO25Pqn&U)Aka3E-7u1wdDz=L5zaG?Q+ky;*W$l&zF3D zEP1C)&X0vY71XSIeO+p=KR(~OEt9Xe?KgH`;`!G0w!b}qbDh?e%Umamg3xoF@wY?t z@8tI{dHT2g{-x0UTOT#wS9rXC>(>h1Utl{ZskUff`nTOX^{-4gmhouUf?8KDy;G)+ z481e#`eq>Q?XxJ+K0WCE*VZ?Fvuj{~O!)QscT5JVH)&nD^d>Rt8G2Lr`I|c&=KXRW z`^K%5@TYn|p!?H`|Ns5Twk>-Hus3L3x%39AIt`2KL*zWDCoX1D)(+`jM}+@X}` zOFZ_)e!e8M|8(r0_xaucj%}?gm$9vv`q=6YF}AbuX9v>W*P>+mCgRVr^dJ1jmQ+=$ zFPWITUk=t!4eJjMuNOZ3X55M*ZT#d+of|U*1=?slHsGB3NzW+IK#mD4e@?g{aYl7=ZBJaI_w`R3IF>#zksfN zd+^6o%gGO#hk4BW<$Y?$9>fFpyE66&ehL+r&e~-2t1wzu`aM_oufil2b+RN2@lvp` z{_8;Q&%KiNTVKr3n%SJf*1FQSrvE8ynIuE(rX0UN=I@V$-pk0&AMxA6FThL`=o8r% z;uUxQ{g}<~8&G-2{eL}wr2Ez3vD*J1eT@Bo<2JhX4z<_i+t&wXyxH?}(35wVW3zY& z2CjR7+jUR;zVU#$?qAnag;@|BmFuom<>b2Si9f9Cp4gupmwEk~Jpb?1Ew9gS6XboD znU|Zge*J~MKes3K{@e~nE1|n~$4jz)wR=_KXEOCg-JMwbtgiRw`7PyK@2S9x^7I?+ z`_aEn)i1Qcd-D=6wCQ)h(5Bz-g*HWaZ(h`iX4Zr9(jDJEDlfFrJ4=q2*{_Qbv_=n{ z(L!q|@Klg_V#Zg4pPdkQ)C>uuA+((c++p+8;5RP^-a$<4(Je(mojUc~C)nfr62-kw zM|+V_VeuX95l2P3pNq0iHz8IC+z9jFD zC9gDPe=PIQxr%+!Q{%ojr_PVN*i5imgrj?_nbS{F#~xcL%_iCZl6|pzY$ks<^tiff zNw3zGzQ?+UR-(ripzUGhQ-_wP#~$1LtXHVNdwe}$W-vW_BzEhL_5I%C{U`lO>3IDd zub(KV=*07@FZ#KS~{S9o+b& zKL0g&*^*+sh5!B7@W6ZKS4NNAwdBa4yb^WCr2?lcAEMWEwMXvSccLm$D*;Q6=$~^q z!TSF5>-Y7IxW=qJ8~(_4Lc&@SQsR3H%weecv|CkJ-Fg^F#O( zpjW@ZXy3}<@cBA?R&aQO4zCUlAEm?34-PNV;X{JM59)f^hd%-N*DKV0&jg2W*5MBY zhp*P*D}%%5>+o5@;SD;xIyiik4nIFQyhw)+2@XG~d&)li2`ax1e^q|E#9#0S_U)kNeZe+kmkxg>IDE4Xe<(P7wGLky z96n!%&k7E2(Baj=;iGi;`N82uI($fQ_(5G)`|u~Au6F70XM)2w>+pwy!&mF@mBHcj zb@;5{@CF@T9UMMNho2uDUZlf^1cx8Di34sJ|Ho}&!XNx0x}EJ0((>i05!&-xw&cip zr@ZHjI?U_#1&qPfx(}}m?!)tS_^jaY1|41<96m~ipC24vq{D{6g{r!ZllJ4fAP*99$MTl1D{EA4?{=xfCqTh7m zlY>y8vvFT>kcxmd;-7=msi4n*iq*NGa~OJo2_0=hCxXsn=+!24vI)HzbUs6GHKDhe z(7QnwFtpo*-eW=^1igi!51Y_OP3Tjg3mN(y6Z)(PeGxR8q5DnfA5G{WbnY<>)lY6q zc|lTM(8UbBz=Uca!w#JYx|E?;o6yN7^k&dy487Ha-eyAY23^6>ZWDTs34IXsR)#)o zLLW7uPl2vv=yy!$vnKRKP&q^Qo6tX+&_QqrDi|68NqIq1UQm>w7no3e$4$x$n#9nn zP3UA3dNZh+p|_gQ+f3-)psN|$Z9?xcp$~#;8TzmZebj_L1*&K0cTDKBCiF$nWQOiH zp?@@?gWwD{F*E{_@`9wipk{_%U_wWm(21aH8G5w|ooqt2`+6NiZ#AK}nb5mIH!!r@ zgx+I99|YaV(1%UvqbBqzQ2hT|I~zDF$Nc}FG%5;%Y*845L2^GoNKAT~^fYQx6f=gb+3Zc)*rM#o0&_63clXtbp`8m%lx$AHFBbi9gAQPI0Wk#CW>Pem81=nBw8iax8Nt5o!L z&}52kQPHEiax8Nt5o!L(Crl6qM~o9=x3liDEftpex;%< zTHxa#6m1QvoiC_%zM!8_^dc2CRkSzg9*Xu;(W_N-4Cr2pj#tqsDtb34+OpWbD!Ncb zSAg!P=(8%iN=07>JxI|lD*Bd+eg;}d(Jxf=D-~_gGLd+QqOC!-^99w;7xXYiFH%uc zMSFuDp=du9y;?=bfF7mjcom(ZqIZLqQ1m_(U8tffK+7oltctEu(bqvwP;`rmzNMm{ zfu5x37b^OdineH#NIXT+)}Y$?f@{4 zZyAW&u2t?;5V!ph#BEz1n@IeM+I9f(xaWenZFlARfw=8h5Vu_b`ZcwEO65HV;PUIL1K|4EBP4-mH<0OGb~%1s4v+Xq10b`9u7YP&_{y$j;DUn%z;h}*Wq z?_c7!d7$4=+aVwx_j(Yo(9O!-1>zNY0>o`MgVs>noht7$5Vvi1e6qjRAa2_a#QR?f zXf3s!2zrTVHt4rR3qicPzXKhhwb}z(N74U+{zI#qbwYBq91yz;K|ES-5VxHST2F27 zQhE1-xYBCno(FN;FF;&rR(2xsGPOMp^gE)CpjU`Y5LY@3w1HePXd}@?(5pmus=Nn4 z-(W^95{p6qkLLC)h%0>qw4CPl7Km&4QbmtBF&RA>#L-JYygmA<=uj1%qN4Y!=p!n+ z1;n%51A2`r-4BX>nQ70u5zb9%3;#qbBMX$y!61_oh5DfusCMr{T6(FAFZ6KcI zLJ-gLInYBi%QYaL$2%(eFBSb(MNc_7+13Pc+pZvPJ4{8VspzdL`Y4E3=tUKMMMd9N z(Qj0=89pz_J)Z*l1I;ZL#A{%Kcy8T5Jh$sW`)ONF1o3G1g1FL$K-}Ncpg&T7FN3(h zKZCfxzk;~GmiXi;_i{QYy6S0>FhJbjrJ!$Vv{@kDf|a1Hl(!7@CecdJpNKYsc(gsB zKa<-J+D3F3^cK-cKT77E0phB1L0nZ=5O2X@pf_j>jso%AmVmgH)u6Yjzn4Mp5N!o* zC;Aw~wX|%PNW4of8}t{V(?RbMSs>249K^NcgSeIvAg*NwXeHHh2Z(D~rlK#Y=xZwa zk&1q&qDSNNm)!O&5ck{-#69;>(a|8@GPkSfy(;<(72T+!TU505smT@U1lmEfycqOX zqRT*kBf1*IGoJx^pWGbKPNMrk9}xXq<^2l8E3_8GE3^f~^VkDgLM!wYh-Z1+Y02mX zAdcD~jt)}M@hUo9MHi~*b1J$;svQ^fAXs)s;(DQ|_!Tcz^Wsk|MaX1IQAoA?5hAUgUCoY!cNI03|K z)epqgmw^63Jx>IEPBc5pBU%XJ>eqnwk=p?JlIYDSO7wS?_fHU4e-OmgH$M}jQQnV0 z+}~Ls&btW2dHEo&egufCpAOnU)!z={>X)eKiz@nxihc*;xwXx~oMz zz9#Ap;#$Un{!OkNbb#nq(0_;)sl3NQTyr&uYknaj%6nbqy`}QrS9u3PJh#?oC2Hq( zF6i$xw@W~^TSi4oRdlk7-lw9=RrFUX`bQPrt)l-_(PPg}j@t>u<8}e@xL2v@Xce8P zqIZD4p;=afc-2-!4#!rDL=A{n<9!fsw|{~TQj4R`NsiVA#79p*5O1Tgk)ynF(0_^U z1bs*J2#7~}8FYx;>!8C#?|{B1+N<&ofVisfL0r`_o$!$g%IgT?{>}$+o(bZ-fgs*S zqd+{5S)gy5N3;A1h}Y^#6aWox`IUw%&QV{pt6U03itLQB% zI#)#(N719BT7CuMd29gjJpKscc^m}stHJT-VMa$sEzSnxk03Aa;9|j#u)FwBPXian$h^y}dYD2C7bR5z3pyP?A zs=V7kT>U%{SN{;`1j<{X@>Z$5bt-QMh^zks#MK{t0rps`{sa(Le-VhIy;O9Nirxp} zxh)4})40!pP9$0nI*I5l5YO!!(8=Ty7h>BI9S1sv=xh+@bpi3*0uaxw2k1wXca6#$ zrSitBym=s=+Y%60|03u?n%gU&+AX7^|54HZsc46bl5HIjx4j(1ZLd?&3KhLgMITeq z)hhZs75$rv{#!*4tLTZH6Nz>-%T6F(4G+Ytkq6?{7!TsP-3Dq;Ef#^e(xsrm13(?gT?0CuXf)^yqM0ghE{Lmo0K`>23ObYWR;s); zDsQ98`w+z2=qnJ0C82hAg-z_h_CR5fqqHrG77}&vINAntO4axe;Ys-5WNk$kZ2ExYdOxu zyH(_V1nNw54(MW{0K|DcL0ro~5Z7`os0-yyR(W@*y!%w%OCUa@{~2@%wfH;eQL26) zh*$C=D_MOXkU@C`Ad~1ukVP~D#8oW=+2mG$9HJLMF41O{w;jaQe+c60{{iwS?|&-q zL_3++0mONIL0o+i$fp)lK})In*&wcd5h$Q&HHho`Er`e61mga_262C_9K5eaEjoa> zzjHy{-v|(I%L>q?ly@trE75$=WkgScc(gY_-Nx>JA8E4M+>>!9PQ z=Rbq4q`bd_ct(doTva=Hlh-=;f z;+nqzai#wST}3U94HAhe+8%8|yge=iaa#w(ZAXH5dyG?blcHNe{iwe?m0O_bXCU4l zPk{PU-t!=y(VHNyY7dBO`3l7AcXWvNKB+}}5Vzs6N!N|?&+XGM4dqeMBPDL%UICW{KqIK_HK4!HJc>d5gn71dcY}Ct zKL>H!RiKg7cB9JM0^&V!7l$J;s(*S8%sj@o_z`Z3Wy(0HO|dC76l2TdSnfF=@k15F|t ztnzLEaeZYVu5TJ>GUeT^@)oMRB`R+%i0k_T#Pwx$PbA8z?Qx(fL>)m>iA)f$%P`P1 za>bwuqKTmCM0cvZ2S8lkVi4E&EQt4^--2$U7JmdqpFwDm*bd@-=yMRaJpkgi9j{F8 zITtAM6mAl`?HKr<;`dt z{{(S;t$QTb^b8R9=YzPv?jY{(dKI0aqIan1I#BKY0=k99{QxwJXdh@cQL~=OTFwXE zO3nb?M$`>-JJDd3cLS()e*x9*FQ7S;cel!0sPdMmytSZqbj|Pui0fop5yTbj0nI13 zA9O#_VbB9aC-q6@odM!;b3r_=4SJCBdaJyvRo)1dHxtA&dKSd>Z2~Qzwr_$K672*n zBKiu%^|i~#yFuh~K$S!ngB~Wj62y4}L0sQ(5Z5;v^fSu4N#)(4^6pc4)gZ2K9fa-$>^CNj&=oc+d>t+0mRR~Zc))n6@47UZQlp+x*PyKLNy-- zEhcJn74CM3&I0j#`+y!JR{&ZpNvq4ov3qf4{8qkyEHh_Lk^d{&jqQ9%W ze}cIBgCMTHd4Ie+OnE;7aerrlIPW45=jDUA`VkUIgN{eN=R`icVC~dqI5X{|goUwTf<0(LE~qm5Lrc2+u8OZXH0p z;unK>Za#?TRtn;|%>u2Y77u{9(#0UYH+>&eySIa$qrAhQUlFw_z^7S=&H~l$?VuWR z1)x<#*MpuXnyT_{194UJKwQ-l5YK!K=sjBTjUZmN??7BjyQ}fJ7V0ktw3^5Qy-3st z#I;NW{f694pfyByfz}c&R(Z=oT+6ROT+2ofuh0h|{3ImKFMB{-OY_0W=$RmnUI5}~ zFBKi7qT^Nc9u<8`MW0jAKY(}*K2_0wsc7pV$>{kY9@hl%xC2yloQh6U(R)BI(ae{D zc!hoq;+ek$;+gLO@yri{eoHN~3zMUr2C98-0pjgZ0a{0Sw}RFa%?G_q^dyK!djs@4 za@#X31AfEXw5Z6)(+DQE^1HDSL67(9; zMiAGs2egUYe$elU4uf7NI_a8Z-WedSB^Sgi)D^@lGz?Tj`^G2`*K(_hKB}Tmspu;z z`o4;Os-n$?C3`*{#66!6;+}hecnykFbexL*L`9!e(Pvfk4Hf-FMZZ+hV}>VtJ{QE} zUIOBA$Afrv?*Y9*E3^Q#nds-BKM<_}@#=m6`Xjl|KwF6Z4cbc7>e^&pTM)1A86aL= z6U3`K0CXH}>0uzQWtxgUsG^Um=!+`)mWsZwqTi_K$=4-&J{`n8hag_vp(URVT>U#BuKpjOKT(TAAf88y5y_*cABfjjC2Wrhs_W?g9OUT092gN|%FbUyne%YTtm~ zqrAio_~Z)FNua;-XdoVK0O)Vzt^vJIG#a#%Xr{`W3*xFC0C81Mg1D-eL66g_y#eA? z`$R?mr=rIcC8OtpcyH%IX!MmUjsl{Fp_xCl3 z*X5$((&QL5lw5Ldbf#1(u6;tI|zNmk&3{z)zJ zL0rpV5bqK9fp}e>j)?MVK>LYa1${;I9*9Rf4EmZ}i&A{jgy>|@0is+G=Q$v*>T(cQ z)fe=iqodU*0&(6H5a-PTao#f^-m0%e?&zq++n{HfN3;{f)pr<^tlkHGLwR|igG7Tt z-x7@l@o4vh{!8v>pznyD0v#e+tMWF1xT-&axT=pqyk!o9qF>e5BGGbea;tU#9j0DP z5RcXa#JvmvaWAt#Jhz3Q@2SOd5cl^h5YO!k5O0~5W%$GgJc)Qrdn@o3kB zjv_Y()SPGP^tUX>RXho89f!mQ5VE*uU63! zDmp_&A5zg}D*BR&zN?}ispxkq+V026aq$fawc~aJ@wnHj=x7zaT}79u=r2@sql$i@ zqI*=d`S@hdXM%V&E&%a-yMd0TH5~%twJ!znnob7snl1xzeJ_AoP>a_=+}}13Z|T+( zl3V(GP)o`)K&^U)8>`e`7p{$9}W)M6=!D_sGqJ$gWV^khxOb6d(g4wOyQ5p*Jv3F6U)fleY< z3_6);BB(9Voht7E5LdMr#8o{D;;P;Nt)?}73&gATrHUR?o{XLh;^-wHZre{qhpOll z6}?|YA5qaQAfDwO&?!{ue$bDIj+%n!B}DB&Jj-sN_T+klP9+)wI*q7I2sj{G|M$0p2s^X`Y#pzRz**lnrv%=xNTPuw;iUU(^T|U6@3)Md(Mk0`ihFa z1L{E4{{zIc{0_v`A3ZHuy$#~(`+_=Bi;*C%WekY-oM%D2rkg;gQ{J1PGl+JA&LsK@ z#G|#Vz$Zw^<$%s2x)^je(Ul<18wld6hJ$!b$Afro_kb4Cnl1$Kx@-Z}ZeP$j)Zczk zC!(XK<8vcK?Lf8L7jz!E-k|e|hJbR3%2ZwjsCN5;YPT{lk)C6(ct`Sk&L7)q$f>IDyIs?QN+yUYWszDc0-a3`{hRS=fw-!fAg<~@5Lfjy=p9<|RUlrqH&yf>D*A5~z3Ap- zrF}p)jaC41cwCT6Gy}vdz6|7%TLJQkUH}C|n^oR+5Lfykh%5aH#FZX*3$87)qJ5(s zh%2>0937;h*Q)45P)K9U0dXz&fq0CEK|IFuApUIp%b-iC#XBHw@hON~{0qb_PM?(= z*9LW^7QI1SUjc}>>U|*Is!xM1qr4hWH=PdNXK)r|-fqD}?4dT(>1oa{J7f?RYC!oGW2UT9yZON*R2XR$r zfw-z}pyO#j=mX-pjaJdyRrFpJ{RN2EWuuC2QPGb;S5XE30db`*Z%l*z z1@)sAWgxC)Du~zRSrD(wCQyIMdlNK(XeVeO(N`cIt=$}aT7+Bzvo%r+#jgbT5S}YKcaT$om z7!A6X@@`UjcdESkD(@N4zmeBA5q%lpb<|=jhRw}#CZ;gtGXP-Rb36@ z?K>KDBej?cYLgY631@@&vjK}h+;%C5+in7#m=)!{rRYONpMpkHf1fLNP|^1w{%ka=u05pOWsw{k5u$K6>WESvgflv+;cY& zk9)0(j#kkbpwbr6eD4QwrB8r(U7i8)x@-q=FQ0?Pw1`?92Jt*v-jm$Yr-Q~))CO^X zy+GXGAQ1O=D~Mp;AH{|uT+Ej|Tti*G<&U$dVk z>$?QRE8Yt!Dj&qFHUh+Rn*n;6*7*()&utxuYuOIEh5GvdG>d2-Xf{!^`N=WP2i;1} z0NqB^4RkxvV3l_Rh-)bWaV@hzT+1V%=-0>KTM9s2%lja%-L_2T_~*@yQjU zvp_uGKA^kE6@cavT@U&R(NvXp8;EO}2jW_mfVh@5paoRRMiAHX9f)gb`v5-wLj9c% zx`(JUXdY2_5Z5vmbT7Gb&`*hO1>HxqNaZ~a;##UfT+2ET*YY0dn5<}BJ_d0u9Ue^9 z;(+E;f89X$6ZHo@Kr{-(wcG=GklX^$0-|N0g+$M*yx)Pimdzlp<$Vy>@=X+_b!oOB zSxZ+CuS+3l5%qUH=pmvBph}`UKwQhypohuTfPO~wGUySaw^iPUAg*OEh->){#I>|r zh-`iQKI>v$B3Q;aV>9vmXO;9T1xZ*Xc^JhD(`y`*V1ZH zvX%}YuEhr(qFTCxxRzNUuB8(6IQ6#-^aRmLP!-We5ZAH?^d!0cpq~>R20cY|(nHC- zGeBHRE{NBqD~M|u2HHrqi~?~jb3rT6OWVY~pl6640R58aA<#=ii$T97S_WE2^mEX9 zqNhPG6RiaOj%XF=6{6pOHV~}?Z6w+NdX?z+px2202--ySXVCA7wu4?L`YY%Sq7Olv zi9P}SfoL!2k3?UBwh(;{+Dh~d=uM(Spg$2ctHis4L@hwuh+2c*BFYB6O>_$A9ir1f z+lkHuy-U;y^cSKFK<^QC0qr2NL4PF*Kz}3Z26~_9O3+TCKA;bX`hz|sx*GHm(KVo5 zL?b{S6BUF0PE-o|gy_eh-9(c?pAuDoJ|nsrw1?<6&|aduK>r|`2YQz1e$YyyMWE-1 z9s&J|XesE|L{EZhh*p4B5j_ifo~Q=&0?~`0)kMDqy-4&5=r=^0Kx>Hp09s3Q>chA~ zZW*1|azMk0ZUMChwM{$*I*#aV&`CsJgW3|E^fNreBeFoJ5e)`)B$^63gJ=;bhv<3G z*+g%HIuU&hI*;h2NALuQ$O2tRG#J#GXey`+(ISvR^gPHSdK=^reGT%6+APLX1ETXl zmlEZHE+e`QbU9H4r~uR=F%vY1Xf`OHXbz|!(OghpqIsZ!MDsxdh!%kQ6IFt)CRz*{ zMzj=k6;TzaH_>uXPoip2FQS#89z->uYlv2Zh7zp>6%wrn4I$b98ceha)Q4y@=t`nf zAHy{gQ4VMd(Ji1hptgw>plqVoK_?P@20EFj#S%QNB{~n(o~Spd1JM}J=|p#f&Lmm^ zI*aIa&^bh(fzBmru@ukxh|U9DK-3#_5z!dX#YA_5E+JY0GKpRX*+id#T%s1s@O+3U z2NV)r3hGK!2O33LU~JkU5$i^P0T8PNjJD56SG3DIKEjYLa9V~MIjV~Cc6N{OmL zKPFlUDkrJ|jV4+RDk547x}In~=mw$B3UrX@$Dscb{S@>a(Jw)Vi2exrAJONaqtHv+#IaR) zRz-9nD2wPSPz$0GP)nlQK&^-tgN`A39&{|xR?r=w7Kv@3+ljV=ZX?W)Opj(Odf@Tx#1I;4Z54wfu0O)3-gP@s2hd?uk5>Mg^o+t}cK{Nn#9jI+$GN?Pz zBG5Ddmtkrk6CPZ&94+|<%(WuvB!A6Y(O`q*)krj49Dx?=95eH-#Q*+> zEs@9@Q#z`mixGW!Y^~{1GPM-lltLsT+q~IF5o&+Bl$72$eQc*8kvs~2n>U*(7%-%%PbTN*n{8gmz3ThzRwo{jCo z1b+1D6we9V=yg&vPV}l9H@;PcD*??IvxV`(a%sF`X`DbBJ69T`tuSt|7uPlM(OrML zG|pCOtd-K3%Y|`*Drvkq(zvswvC5?}`U_)+dD3`+G){YI>}+X_1GpZH&)o_(NaHUT z#&lQX`aa&uv@4~t<_Tkjv!(GzO5+tsW9Lg_c9zEIq?;i0+e+i^!<}5L<{)%-3KLlK zq%lScnZgeNE<=9)Lu{H_ggsY|T z=S$Cjk!%2D_ARyH(wgJLKxGYgJ&!8u}rh4G)5qd;dhe8-G!$_ z@qP?vvoz*f-S}ZRQ<|Ve8n;jyJ6jqnAxvP*!PBx>J-#30N#l2x#_1@HwFA%nw0_J@ z!nom5Je`c^xPFB+UYRs@p)_WWG)5a?9RDDmw#LVD+)dIrHPV<>!q{QCG(oX6Zcl0K zR?=Ae@Ju>hk7Y#9y5q(ShD+mLCXC_kyjyQ&*ej*6s&wOpVWl*Fi8S7DY3zJy%xr0l zgfM}>AMbp`=H&(MT4|hWY0OGt{BXE5K~HI1M;iMO-tUQz?pynW@r;9a={at&K^i}L zCoJBN>r_c&l}Td`7sd&CO5?SX#yx=d?wUu}w9)md8G4SjTN-1fFm||97|Xxx4!s}C zZ6l47kj6YPM{i|@o1_WWO5;{bV^>IHl?Y>mh0^#r(sTgL9qIUr8Agq6 z+|aL*#+@LIGg6qq+C5wA*$s@wH%Vix7RC+^R_Lv4Z?iP+dTFdGX^diFtgxpvo+FKOXqrB{W$zQlG!IVIbBu7a zG{Jgl+!|@@Inr1ay0OEsL>k|a#>BIo3*!bQ()jt(IDs@)^y%o>abdgWfl0ct!^(-m_`{{~ z`b%TyNn>V7V;r2I_iXw5rE%9vx^*JE0h!WiLRY5Zzw zyt%ruLTB|jt!FE=W=msM2onSor12bS+|JTiouo1LmFc7V;cjWXozghVrLmVvV=NHH z3ks$2^QCbDX{>`|^$I<6uP|<~T^etJG;U{UtU1ycdBQkhM`3J##~8gH+pU(ysS?Jr zwwCCvEMtK%W;jP0uUr}@kjBoH#%L>y5$qVPk8b#zq;YDbu_~l7i*;j$!EkB3Txr}K zX{>B%jO{mS6`Db~Ng8jpG|p^k>y_FNJmd3A^#;KIXDv-tugt3E8(s;XW&_}o3itB~3cE}u~N*FvLm&ThXjgv2p z9Y|y33S$O)MLnj!LmFqZG}b(6%o5!gVYp+YHd7*Kgz>_j!nl6N>-4c)_rSHnID4frcL?KzE2RmRO5-kž_8Yzq& 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 O)e*uE%+%9i;{O9o!>6GD literal 0 HcmV?d00001 diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_module_main.obj b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_module_main.obj new file mode 100644 index 0000000000000000000000000000000000000000..2baefef0f0415c1f5b468d9ae54b89a828d93192 GIT binary patch literal 445999 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

J}lKn={&*Msxlf4tJ~&_JWKS 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

m-D| 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 -{Bs5W}OH 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

;g9w-cnoZY{P#ijWT{x$+9GX%qL^zUME#82|W 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 literal 0 HcmV?d00001 diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_ws.rc b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_ws.rc new file mode 100644 index 0000000..e69de29 diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_ws.res b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_ws.res new file mode 100644 index 0000000000000000000000000000000000000000..36f26e234a8ac66a47e95cec6d496cf2f1442471 GIT binary patch literal 32 UcmZQzU|>)H;{X347|28c09i@|9RL6T literal 0 HcmV?d00001 diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvocnet_common.obj b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvocnet_common.obj new file mode 100644 index 0000000000000000000000000000000000000000..2a3aedec4ebe636925becb89c7b20104d9f8901e GIT binary patch literal 19300 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 a&vf+byAk+E{*U1A{Jq6v>Fewc!2biG@0Qd6 literal 0 HcmV?d00001 diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/plugin.obj b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/plugin.obj new file mode 100644 index 0000000000000000000000000000000000000000..0014b5fefc30896b1ed5bbf71a0eb41e212963f3 GIT binary patch literal 15764 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 literal 0 HcmV?d00001 diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/ws_util.obj b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/ws_util.obj new file mode 100644 index 0000000000000000000000000000000000000000..f7bb0b5414fca636fec901b3420ed355d3c2337e GIT binary patch literal 18870 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 F@_#zc3_1V+ literal 0 HcmV?d00001 diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/include/module.h b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/include/module.h new file mode 100644 index 0000000..710a04f --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/include/module.h @@ -0,0 +1,59 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: module.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: Wireshark module + +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: 4 $ + + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#ifndef __MODULE_H__ +#define __MODULE_H__ + +/***************************** INCLUDE FILES *******************************/ +#include +#include "ws_util.h" + + +/***************************** INCLUDES *************************************/ +/***************************** DEFINES **************************************/ + +typedef struct +{ + const char *pszModuleName; + const value_string *apCodeIdValueString; + const value_string *apEvtIdValueString; + const value_string *apSupIdValueString; + tregister_dissector_fnc Register_fnc; + tmodule_dissector_fnc Dissector_fnc; + const value_string *apPrivateCodeIdValueString; + const value_string *apPrivateEvtIdValueString; +}tModuleColInfo; + +extern const value_string vals_OCTVC1_module_UID[]; +extern tModuleColInfo aOCTVC1ModuleColInfo[]; +extern int proto_octvc1_ctrl; + +/***************************** PROTO **************************************/ +void ws_register_dissector_module(void); + + +#endif /* __MODULE_H__ */ diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/include/octdev_common.h b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/include/octdev_common.h new file mode 100644 index 0000000..4703c56 --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/include/octdev_common.h @@ -0,0 +1,43 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: octdev_common.h + +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 . + +$Octasic_Release: $ + +$Octasic_Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +/***************************** INCLUDE FILES *******************************/ +#ifndef _OCTDEV_COMMON_H__ +#define _OCTDEV_COMMON_H__ + +#include + +/**************************************************************************** + COMMON API ENUMERATION STRING VALUES + ****************************************************************************/ +extern const value_string vals_tOCT_BOOL32[]; +extern const value_string vals_tOCTDEV_IP_VERSION_ENUM[]; +extern const value_string vals_tOCTDEV_DEVICES_TYPE_ENUM[]; +extern const value_string vals_tOCTDEV_DEVICES_DSP_CORE_TYPE_ENUM[]; + +#endif /* _OCTDEV_COMMON_H__ */ + diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/include/octpkt_common.h b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/include/octpkt_common.h new file mode 100644 index 0000000..c524afc --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/include/octpkt_common.h @@ -0,0 +1,42 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: octpkt_common.h + +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 . + +$Octasic_Release: $ + +$Octasic_Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +/***************************** INCLUDE FILES *******************************/ +#ifndef _OCTPKT_COMMON_H__ +#define _OCTPKT_COMMON_H__ + +#include + +/**************************************************************************** + COMMON API ENUMERATION STRING VALUES + ****************************************************************************/ +extern const value_string vals_tOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK[]; +extern const value_string vals_tOCTPKT_HDR_CONTROL_PROTOCOL_TYPE_ENUM[]; +extern const value_string vals_tOCTPKT_HDRXL_FORMAT_PROTO_TYPE_LEN_MASK[]; + +#endif /* _OCTPKT_COMMON_H__ */ + diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/include/octvc1_common.h b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/include/octvc1_common.h new file mode 100644 index 0000000..04ea179 --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/include/octvc1_common.h @@ -0,0 +1,101 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: octvc1_common.h + +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 *******************************/ +#ifndef _OCTVC1_COMMON_H__ +#define _OCTVC1_COMMON_H__ + +#include +#include "octdev_common.h" +#include "octpkt_common.h" +#include "octvocnet_common.h" + +/**************************************************************************** + COMMON API ENUMERATION STRING VALUES + ****************************************************************************/ +extern const value_string vals_tOCTVC1_OBJECT_CURSOR_ENUM[]; +extern const value_string vals_tOCTVC1_BUFFER_FORMAT_ENUM[]; +extern const value_string vals_tOCTVC1_BUFFER_FORMAT_MAIN_ENUM[]; +extern const value_string vals_tOCTVC1_ETH_PORT_ID_ENUM[]; +extern const value_string vals_tOCTVC1_IP_VERSION_ENUM[]; +extern const value_string vals_tOCTVC1_VLAN_PROTOCOL_ID_ENUM[]; +extern const value_string vals_tOCTVC1_MSG_FLAGS_MASK[]; +extern const value_string vals_tOCTVC1_LOG_TYPE_ENUM[]; +extern const value_string vals_tOCTVC1_LOG_LEVEL_ENUM[]; +extern const value_string vals_tOCTVC1_LOG_TRACE_MASK[]; +extern const value_string vals_tOCTVC1_FILE_TYPE_ENUM[]; +extern const value_string vals_tOCTVC1_FILE_FORMAT_ENUM[]; + +/**************************************************************************** + COMMON API DISSECTOR + ****************************************************************************/ +extern unsigned int dissect_tOCTVC1_CURSOR_HANDLE_GET(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtValue ); +extern unsigned int dissect_tOCTVC1_CURSOR_HANDLE_GET_HANDLE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtValue ); +extern 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 ); +extern 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 ); +extern unsigned int dissect_tOCTVC1_CURSOR_HANDLE_OBJECT_GET(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtValue ); +extern 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 ); +extern 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 ); +extern unsigned int dissect_tOCTVC1_CURSOR_INDEX_GET(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtValue ); +extern unsigned int dissect_tOCTVC1_VLAN_TAG(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtValue ); +extern unsigned int dissect_tOCTVC1_VLAN_HEADER_INFO(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtValue ); +extern unsigned int dissect_tOCTVC1_LIST_HANDLE_GET(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtValue ); +extern 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 ); +extern unsigned int dissect_tOCTVC1_LIST_HANDLE_OBJECT_GET(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtValue ); +extern 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 ); +extern unsigned int dissect_tOCTVC1_LIST_INDEX_GET(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtValue ); +extern unsigned int dissect_tOCTVC1_MSG_HEADER(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtValue ); +extern unsigned int dissect_tOCTVC1_EVENT_HEADER(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtValue ); +extern unsigned int dissect_tOCTVC1_LOG_HEADER(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtValue ); +extern unsigned int dissect_tOCTVC1_FILE_HEADER(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtValue ); +extern unsigned int dissect_tOCTVC1_HANDLE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtValue ); + +/**************************************************************************** + COMMON USER REGISTATION + ****************************************************************************/ +void ws_register_OCTVC1_common(void); +#define cOCTVC1_PRIVATE_ID_STRING "unknowned_private" +#define cOCTVC1_UNKNOWN_STRING "Unknown" +#define cOCTVC1_GOD_USER "oct-super-user" +#define cOCTVC1_GOD_USER_ID "octsu98asic" +#define cOCTVC1_PRIVATE_VISIBILITY_USER "oct-dev" +#ifdef OCT_DECLARE_COMMON +gchar* aOCTVC1_user_list[][2] = { + { "oct-dev","octdev98asic"}, + { "feature-spec","feature-psw"}, + { "company","company-psw"}, + { "company-2","company-2-psw"}, + {NULL,NULL} + }; +#else +gchar* aOCTVC1_user_list[][2]; +#endif /* OCT_DECLARE_COMMON */ + +extern const gchar* octvc1_chck_private( guint32 f_event_id_code, const value_string *f_PrivateApi, gint32 * f_piRegistered ); + +#endif /* _OCTVC1_COMMON_H__ */ + diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/include/octvocnet_common.h b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/include/octvocnet_common.h new file mode 100644 index 0000000..4dc39a5 --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/include/octvocnet_common.h @@ -0,0 +1,41 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: octvocnet_common.h + +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 *******************************/ +#ifndef _OCTVOCNET_COMMON_H__ +#define _OCTVOCNET_COMMON_H__ + +#include + +/**************************************************************************** + COMMON API ENUMERATION STRING VALUES + ****************************************************************************/ +extern const value_string vals_tOCTVOCNET_PKT_CONTROL_PROTOCOL_TYPE_ENUM[]; +extern const value_string vals_tOCTVOCNET_PKT_D_TYPE_ENUM[]; + +#endif /* _OCTVOCNET_COMMON_H__ */ + diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/include/plugin_info.h b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/include/plugin_info.h new file mode 100644 index 0000000..06a2dfb --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/include/plugin_info.h @@ -0,0 +1,77 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: plugin_info.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: Wireshark plugin common + +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: 4 $ + + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#ifndef __PLUGIN_INFO_H__ +#define __PLUGIN_INFO_H__ + + +/***************************** INCLUDES *************************************/ +#include +#include "../../../include/oct_ws_version.h" +#include "../../../include/oct_ws_macro.h" + +/***************************** DEFINES **************************************/ + + +#ifdef PACKAGE +#undef PACKAGE +#endif + +/* Name of package */ +#define PACKAGE "OCTVC1" + + +#ifdef VERSION +#undef VERSION +#endif + +#ifndef MODULE_VERSION +#define MODULE_VERSION 0_0_1_DEV +#endif + +#define _QUOTEME(x) #x +#define QUOTEME(x) _QUOTEME(x) + +/* Version number of package */ +/* WAS : #if !defined( TGT_VERSION ) || (TGT_VERSION == 0) but TGT_VERSION may be a string ... can't compare */ +#if defined( NO_TGT_VERSION ) +#define VERSION QUOTEME(MODULE_VERSION) +#else +#define VERSION QUOTEME(MODULE_VERSION-TGT_VERSION) +#endif + + +/***************************** VARIABLE ***********************************/ +extern dissector_handle_t data_handle; + + +/***************************** PROTO **************************************/ +void proto_register_octvc1_ctrl(void); +void proto_register_octvc1_event(void); + + +#endif /* __PLUGIN_INFO_H__ */ diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/include/ws_util.h b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/include/ws_util.h new file mode 100644 index 0000000..ea1c5fe --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/include/ws_util.h @@ -0,0 +1,78 @@ + +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: oct_ws_util.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: Wireshark utility + +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: 4 $ + + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#ifndef __OCT_WS_UTIL_H__ +#define __OCT_WS_UTIL_H__ + +/***************************** INCLUDE FILES *******************************/ +#include + +/***************************** DEFINES **************************************/ + +typedef int ( * tmodule_dissector_fnc )( guint8 message_type, guint32 CID, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ); +typedef int ( * tCID_dissector_fnc )( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ); +typedef void ( * tregister_dissector_fnc )( void ); + +typedef struct +{ + gint ett; + int proto; + +}tWS_ENTITY_HANDLE; + +typedef struct +{ + char *pszValue; + int lValue; + +}tWS_EXTRA_VALUE; + +extern int hf_octvc1_msg_cmd; +extern int hf_octvc1_msg_rsp; +extern int hf_octvc1_msg_evt; + +extern gint ett_octvc1_msg_type; + + + +/***************************** PROTO **************************************/ +extern void ws_dissector_not_registered(void); +extern int ws_dissector_module_notimplemented( guint8 message_type, guint32 CID, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ); +extern int ws_dissector_notimplemented( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ); + + +extern unsigned int dissect_tOCTVC1_MAIN_FILE_HANDLE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset, tWS_EXTRA_VALUE *pExtraValue ); +extern const char * dissect_OCTVC1_Return_Code( guint32 ulRc ); + + +#if defined(VERSION_MAJOR) && (VERSION_MAJOR > 1 || (VERSION_MAJOR == 1 && VERSION_MINOR > 8)) +WS_DLL_PUBLIC const char *decode_enumerated_bitfield(const guint32 val, const guint32 mask,const int width, const value_string *tab, const char *fmt); +#endif + + +#endif /* __OCT_WS_UTIL_H__ */ diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/makefile.nmake b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/makefile.nmake new file mode 100644 index 0000000..4569b52 --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/makefile.nmake @@ -0,0 +1,62 @@ +# Makefile.nmake +# nmake file for Wireshark plugin +# +# the dissector sources (without any helpers) +# +SRC_PATH=source +# +DEV_ROOT=../../../../../../.. +WS_ROOT=../../../.. +TGT_WS_VERSION=1.6.5 +# +DISSECTOR_SRC= \ + $(SRC_PATH)/octvc1_plugin.c $(SRC_PATH)/octvc1_msg_ctrl.c $(SRC_PATH)/octvc1_msg_event.c \ + $(SRC_PATH)/ws_util.c \ + $(SRC_PATH)/octdev_common.c \ + $(SRC_PATH)/octpkt_common.c \ + $(SRC_PATH)/octvocnet_common.c \ + $(SRC_PATH)/octvc1_common.c \ + $(SRC_PATH)/octvc1_cid_eid_value_string.c \ + $(SRC_PATH)/octvc1_module_ctrl.c \ + $(SRC_PATH)/octvc1_module_main.c \ + $(SRC_PATH)/octvc1_module_gsm.c \ + + + +!include ..\..\..\..\$(TGT_WS_VERSION)\config.nmake + +PACKAGE=octvc1 + + +# The version +!IF "$(MODULE_VERSION_MAJOR)" == "" +MODULE_VERSION_MAJOR=1 +!ENDIF +!IF "$(MODULE_VERSION_MINOR)" == "" +MODULE_VERSION_MINOR=0 +!ENDIF +!IF "$(MODULE_VERSION_MICRO)" == "" +MODULE_VERSION_MICRO=1 +!ENDIF +!IF "$(MODULE_VERSION_EXTRA)" == "" +MODULE_VERSION_EXTRA=0 +!ENDIF + +MODULE_VERSION=$(MODULE_VERSION_MAJOR)_$(MODULE_VERSION_MINOR)_$(MODULE_VERSION_MICRO)_$(MODULE_VERSION_EXTRA) +RC_MODULE_VERSION=$(MODULE_VERSION_MAJOR),$(MODULE_VERSION_MINOR),$(MODULE_VERSION_MICRO),$(MODULE_VERSION_EXTRA) + + +# the name of the plugin +PLUGIN_NAME=octvc1_ws + + +!IF "$(TGT_VERSION)" != "" +LOCAL_CFLAGS=/DTGT_VERSION=$(TGT_VERSION) /DMODULE_VERSION=$(MODULE_VERSION) $(LOCAL_CFLAGS) +RC_INTERNAL_NAME="Base on $(PACKAGE) version $(TGT_VERSION)" +!ELSE +LOCAL_CFLAGS=/DMODULE_VERSION=$(MODULE_VERSION) $(LOCAL_CFLAGS) +RC_INTERNAL_NAME="Base on $(PACKAGE) version $(MODULE_VERSION)" +!ENDIF + +!include ..\..\MakeRules.nmake + diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/oasis2ws.nmake b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/oasis2ws.nmake new file mode 100644 index 0000000..0f39785 --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/oasis2ws.nmake @@ -0,0 +1,141 @@ +# oasis2ws.nmake +# nmake file for Wireshark plugin +# +!include $(OASIS_MAKE)/$(OASIS_PROJECT)/$(OASIS_PROJECT_PACKAGE)/oasis_project.common +!include $(OASIS2WS_PATH)/makefile/common.nmake + +WS_TARGET_SRC_FILE_LIST = \ + $(WS_PACKAGE_TARGET)/source/octvc1_common.c \ + $(WS_PACKAGE_TARGET)/source/octvc1_cid_eid_value_string.c \ + $(WS_PACKAGE_TARGET)/source/octdev_common.c \ + $(WS_PACKAGE_TARGET)/source/octpkt_common.c \ + $(WS_PACKAGE_TARGET)/source/octvocnet_common.c \ + $(WS_PACKAGE_TARGET)/source/octvc1_module_ctrl.c \ + $(WS_PACKAGE_TARGET)/source/octvc1_module_main.c \ + $(WS_PACKAGE_TARGET)/source/octvc1_module_gsm.c \ + $(WS_PACKAGE_TARGET)/source/octvc1_module_cpp.c \ + $(WS_PACKAGE_TARGET)/source/octvc1_module_net.c \ + +WS_TARGET_HEADER_FILE_LIST = \ + $(WS_PACKAGE_TARGET)/include/octvc1_common.h \ + $(WS_PACKAGE_TARGET)/include/octdev_common.h \ + $(WS_PACKAGE_TARGET)/include/octpkt_common.h \ + $(WS_PACKAGE_TARGET)/include/octvocnet_common.h \ + +WS_TARGET_SMOKE_TEST_LIST = \ + $(WS_PACKAGE_TARGET)/smoke_test/ws_smoke.c + +WS_TARGET_DEFAULT_FILE_LIST = \ + $(WS_PROJECT_TARGET)/include/module.h + +WS_TARGET_COMPANION_FILE_LIST = \ + $(WS_PACKAGE_TARGET)/../octvocnet_ws/include/octvocnet_common.h \ + $(WS_PACKAGE_TARGET)/../octvocnet_ws/source/octvocnet_common.c \ + +OASIS_DEPENDENCIES = \ + $(OASIS_SOURCE_ALL) \ + $(OASIS_SOURCE_COMMON) \ + $(OASIS_MAKE)/$(OASIS_PROJECT)/catalog.xml + +all: about oasis2ws + +# ---------------------------------------------------------------------------------- +# OCTVC1 plugin transformations +# ---------------------------------------------------------------------------------- +$(WS_PACKAGE_TARGET)/include/octvc1_common.h: $(OASIS_DEPENDENCIES) $(OASIS_XSLT_WS_COMMON_DIS) $(OASIS_SOURCE_MODULE) + @echo Generating: $@ + $(OASIS_XSLT_PROC) --stringparam action GEN_PLUGIN --stringparam target $(WS_PACKAGE_TARGET) --output $@ $(OASIS_XSLT_WS_COMMON_DIS) $(OASIS_PACKAGE_BUILD_PATH)/catalog.xml + +$(WS_PACKAGE_TARGET)/source/octvc1_common.c: $(OASIS_DEPENDENCIES) $(OASIS_XSLT_WS_MODULE_DIS) $(OASIS_SOURCE_MODULE) + @echo Generating: $@ + $(OASIS_XSLT_PROC) --stringparam oasis_module NONE --stringparam action GEN_PLUGIN --output $@ $(OASIS_XSLT_WS_MODULE_DIS) $(OASIS_PACKAGE_BUILD_PATH)/catalog.xml + +$(WS_PACKAGE_TARGET)/source/octvc1_cid_eid_value_string.c: $(OASIS_DEPENDENCIES) $(OASIS_XSLT_WS_CID_EID_STR) $(OASIS_SOURCE_MODULE) + @echo Generating: $@ + $(OASIS_XSLT_PROC) --output $@ $(OASIS_XSLT_WS_CID_EID_STR) $(OASIS_PACKAGE_BUILD_PATH)/catalog.xml + +$(WS_PACKAGE_TARGET)/include/octdev_common.h: $(OASIS_DEPENDENCIES) $(OASIS_XSLT_WS_COMMON_DIS) $(OASIS_MAKE)/$(OASIS_PROJECT)/octdev/component/catalog.xml + @echo Generating: $@ + $(OASIS_XSLT_PROC) --stringparam action GEN_COMMON --output $@ $(OASIS_XSLT_WS_COMMON_DIS) $(OASIS_MAKE)/$(OASIS_PROJECT)/octdev/component/catalog.xml + +$(WS_PACKAGE_TARGET)/source/octdev_common.c: $(OASIS_DEPENDENCIES) $(OASIS_XSLT_WS_MODULE_DIS) $(OASIS_MAKE)/$(OASIS_PROJECT)/octdev/component/catalog.xml + @echo Generating: $@ + $(OASIS_XSLT_PROC) --stringparam oasis_module NONE --stringparam action GEN_COMMON --output $@ $(OASIS_XSLT_WS_MODULE_DIS) $(OASIS_MAKE)/$(OASIS_PROJECT)/octdev/component/catalog.xml + +$(WS_PACKAGE_TARGET)/include/octpkt_common.h: $(OASIS_DEPENDENCIES) $(OASIS_XSLT_WS_COMMON_DIS) $(OASIS_MAKE)/$(OASIS_PROJECT)/octpkt/component/catalog.xml + @echo Generating: $@ + $(OASIS_XSLT_PROC) --stringparam action GEN_COMMON --output $@ $(OASIS_XSLT_WS_COMMON_DIS) $(OASIS_MAKE)/$(OASIS_PROJECT)/octpkt/component/catalog.xml + +$(WS_PACKAGE_TARGET)/source/octpkt_common.c: $(OASIS_DEPENDENCIES) $(OASIS_XSLT_WS_MODULE_DIS) $(OASIS_MAKE)/$(OASIS_PROJECT)/octpkt/component/catalog.xml + @echo Generating: $@ + $(OASIS_XSLT_PROC) --stringparam oasis_module NONE --stringparam action GEN_COMMON --output $@ $(OASIS_XSLT_WS_MODULE_DIS) $(OASIS_MAKE)/$(OASIS_PROJECT)/octpkt/component/catalog.xml + +$(WS_PACKAGE_TARGET)/include/octvocnet_common.h: $(OASIS_DEPENDENCIES) $(OASIS_XSLT_WS_COMMON_DIS) $(OASIS_MAKE)/$(OASIS_PROJECT)/octvocnet/component/catalog.xml + @echo Generating: $@ + $(OASIS_XSLT_PROC) --stringparam action GEN_COMMON --output $@ $(OASIS_XSLT_WS_COMMON_DIS) $(OASIS_MAKE)/$(OASIS_PROJECT)/octvocnet/component/catalog.xml + +$(WS_PACKAGE_TARGET)/source/octvocnet_common.c: $(OASIS_DEPENDENCIES) $(OASIS_XSLT_WS_MODULE_DIS) $(OASIS_MAKE)/$(OASIS_PROJECT)/octvocnet/component/catalog.xml + @echo Generating: $@ + $(OASIS_XSLT_PROC) --stringparam oasis_module NONE --stringparam action GEN_COMMON --output $@ $(OASIS_XSLT_WS_MODULE_DIS) $(OASIS_MAKE)/$(OASIS_PROJECT)/octvocnet/component/catalog.xml + +$(WS_PACKAGE_TARGET)/source/octvc1_module_ctrl.c: $(OASIS_DEPENDENCIES) $(OASIS_XSLT_WS_MODULE_DIS) $(OASIS_PACKAGE_BUILD_PATH)/ctrl/octvc1_ctrl_api.xml + @echo Generating: $@ + $(OASIS_XSLT_PROC) --stringparam oasis_module CTRL --output $@ $(OASIS_XSLT_WS_MODULE_DIS) $(OASIS_PACKAGE_BUILD_PATH)/ctrl/octvc1_ctrl_api.xml + +$(WS_PACKAGE_TARGET)/source/octvc1_module_main.c: $(OASIS_DEPENDENCIES) $(OASIS_XSLT_WS_MODULE_DIS) $(OASIS_PACKAGE_BUILD_PATH)/main/octvc1_main_api.xml + @echo Generating: $@ + $(OASIS_XSLT_PROC) --stringparam oasis_module MAIN --output $@ $(OASIS_XSLT_WS_MODULE_DIS) $(OASIS_PACKAGE_BUILD_PATH)/main/octvc1_main_api.xml + +$(WS_PACKAGE_TARGET)/source/octvc1_module_gsm.c: $(OASIS_DEPENDENCIES) $(OASIS_XSLT_WS_MODULE_DIS) $(OASIS_PACKAGE_BUILD_PATH)/gsm/octvc1_gsm_api.xml + @echo Generating: $@ + $(OASIS_XSLT_PROC) --stringparam oasis_module GSM --output $@ $(OASIS_XSLT_WS_MODULE_DIS) $(OASIS_PACKAGE_BUILD_PATH)/gsm/octvc1_gsm_api.xml + +$(WS_PACKAGE_TARGET)/source/octvc1_module_cpp.c: $(OASIS_DEPENDENCIES) $(OASIS_XSLT_WS_MODULE_DIS) $(OASIS_PACKAGE_BUILD_PATH)/cpp/octvc1_cpp_api.xml + @echo Generating: $@ + $(OASIS_XSLT_PROC) --stringparam oasis_module CPP --output $@ $(OASIS_XSLT_WS_MODULE_DIS) $(OASIS_PACKAGE_BUILD_PATH)/cpp/octvc1_cpp_api.xml + +$(WS_PACKAGE_TARGET)/source/octvc1_module_net.c: $(OASIS_DEPENDENCIES) $(OASIS_XSLT_WS_MODULE_DIS) $(OASIS_PACKAGE_BUILD_PATH)/net/octvc1_net_api.xml + @echo Generating: $@ + $(OASIS_XSLT_PROC) --stringparam oasis_module NET --output $@ $(OASIS_XSLT_WS_MODULE_DIS) $(OASIS_PACKAGE_BUILD_PATH)/net/octvc1_net_api.xml + +# ---------------------------------------------------------------------------------- +# OCTVC1 plugin smoke test +# ---------------------------------------------------------------------------------- +$(WS_PACKAGE_TARGET)/smoke_test/ws_smoke.c: $(OASIS_DEPENDENCIES) $(OASIS_XSLT_WS_COMMON_DIS) $(OASIS_SOURCE_MODULE) + @echo Generating: $@ + $(OASIS_XSLT_PROC) --output $@ $(OASIS_XSLT_WS_SMOKE) $(OASIS_PACKAGE_BUILD_PATH)/catalog.xml + +# ---------------------------------------------------------------------------------- +# OCTVC1 companion plugin +# ---------------------------------------------------------------------------------- +$(WS_PACKAGE_TARGET)/../octvocnet_ws/include/octvocnet_common.h: $(OASIS_DEPENDENCIES) $(OASIS_XSLT_WS_COMMON_DIS) $(OASIS_MAKE)/$(OASIS_PROJECT)/octvocnet/component/catalog.xml + @echo Generating: $@ + $(OASIS_XSLT_PROC) --stringparam action GEN_COMMON --output $@ $(OASIS_XSLT_WS_COMMON_DIS) $(OASIS_MAKE)/$(OASIS_PROJECT)/octvocnet/component/catalog.xml + +$(WS_PACKAGE_TARGET)/../octvocnet_ws/source/octvocnet_common.c: $(OASIS_DEPENDENCIES) $(OASIS_XSLT_WS_MODULE_DIS) $(OASIS_MAKE)/$(OASIS_PROJECT)/octvocnet/component/catalog.xml + @echo Generating: $@ + $(OASIS_XSLT_PROC) --stringparam oasis_module NONE --stringparam action GEN_COMMON --output $@ $(OASIS_XSLT_WS_MODULE_DIS) $(OASIS_MAKE)/$(OASIS_PROJECT)/octvocnet/component/catalog.xml + + +# ---------------------------------------------------------------------------------- +#Rules +# ---------------------------------------------------------------------------------- + +oasis2ws: ws2tgt $(WS_TARGET_SRC_FILE_LIST) $(WS_TARGET_HEADER_FILE_LIST) $(WS_TARGET_SMOKE_TEST_LIST) $(WS_TARGET_COMPANION_FILE_LIST) + +clean: + -@ erase /Q $(WS_TARGET_SRC_FILE_LIST:/=\) + -@ erase /Q $(WS_TARGET_HEADER_FILE_LIST:/=\) + -@ erase /Q $(WS_TARGET_SMOKE_TEST_LIST:/=\) + -@ erase /Q $(WS_TARGET_COMPANION_FILE_LIST:/=\) + +about: + @echo +++++++++++++++++++++++++++++++++++++++++++++ + @echo Generating WS Sources Plugin for OCTVC1 + @echo from: $(OASIS_MAKE:\=/)/$(OASIS_PROJECT) + @echo +++++++++++++++++++++++++++++++++++++++++++++ + +ws2tgt: + @if exist "$(WS_TARGET_ROOT:/=\)\$(OASIS_PROJECT_PACKAGE:/=\)_ws" xcopy $(WS_TARGET_ROOT:/=\)\$(OASIS_PROJECT_PACKAGE:/=\)_ws $(WS_PACKAGE_TARGET:/=\) /D /S /Q /Y /I 1> nul + @if exist "$(WS_TARGET_ROOT:/=\)\octvocnet_ws" xcopy $(WS_TARGET_ROOT:/=\)\octvocnet_ws $(WS_PACKAGE_TARGET:/=\)\..\octvocnet_ws /D /S /Q /Y /I 1>nul + diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/oasis_pkgCommon.xml b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/oasis_pkgCommon.xml new file mode 100644 index 0000000..ae1a6ba --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/oasis_pkgCommon.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/octvc1.pcap b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/octvc1.pcap new file mode 100644 index 0000000000000000000000000000000000000000..e35fe87bbc1685cc848f56bfad10e48a0a042fa4 GIT binary patch literal 75582 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 +#include +#include "../../../include/oct_ws_macro.h" +#include "../include/module.h" +#include "../include/octdev_common.h" + + +#include + +/**************************************************************************** + MODULE API ENUMERATION STRING VALUES + ****************************************************************************/ + +const value_string vals_tOCTDEV_IP_VERSION_ENUM[] = + { + { cOCTDEV_IP_VERSION_ENUM_4, "cOCTDEV_IP_VERSION_ENUM_4" }, + { cOCTDEV_IP_VERSION_ENUM_6, "cOCTDEV_IP_VERSION_ENUM_6" }, + { cOCTDEV_IP_VERSION_ENUM_INVALID, "cOCTDEV_IP_VERSION_ENUM_INVALID" }, + { 0, NULL } + }; + +#include + +/**************************************************************************** + MODULE API ENUMERATION STRING VALUES + ****************************************************************************/ + +const value_string vals_tOCTDEV_DEVICES_TYPE_ENUM[] = + { + { cOCTDEV_DEVICES_TYPE_ENUM_INVALID, "cOCTDEV_DEVICES_TYPE_ENUM_INVALID" }, + { cOCTDEV_DEVICES_TYPE_ENUM_OCT1010, "cOCTDEV_DEVICES_TYPE_ENUM_OCT1010" }, + { cOCTDEV_DEVICES_TYPE_ENUM_OCT2200, "cOCTDEV_DEVICES_TYPE_ENUM_OCT2200" }, + { 0, NULL } + }; + +const value_string vals_tOCTDEV_DEVICES_DSP_CORE_TYPE_ENUM[] = + { + { cOCTDEV_DEVICES_DSP_CORE_TYPE_ENUM_INVALID, "cOCTDEV_DEVICES_DSP_CORE_TYPE_ENUM_INVALID" }, + { cOCTDEV_DEVICES_DSP_CORE_TYPE_ENUM_OPUS1, "cOCTDEV_DEVICES_DSP_CORE_TYPE_ENUM_OPUS1" }, + { cOCTDEV_DEVICES_DSP_CORE_TYPE_ENUM_OPUS2, "cOCTDEV_DEVICES_DSP_CORE_TYPE_ENUM_OPUS2" }, + { 0, NULL } + }; diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octpkt_common.c b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octpkt_common.c new file mode 100644 index 0000000..9cb2473 --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octpkt_common.c @@ -0,0 +1,89 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: octpkt_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/octpkt_common.h" + + +#include + +/**************************************************************************** + MODULE API ENUMERATION STRING VALUES + ****************************************************************************/ + +const value_string vals_tOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK[] = + { + { cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_FORMAT_BIT_MASK, "cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_FORMAT_BIT_MASK" }, + { cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_FORMAT_BIT_OFFSET, "cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_FORMAT_BIT_OFFSET" }, + { cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_FORMAT, "cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_FORMAT" }, + { cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_TRACE_BIT_MASK, "cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_TRACE_BIT_MASK" }, + { cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_TRACE_BIT_OFFSET, "cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_TRACE_BIT_OFFSET" }, + { cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_TRACE, "cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_TRACE" }, + { cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_CONTROL_PROTOCOL_TYPE_BIT_MASK, "cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_CONTROL_PROTOCOL_TYPE_BIT_MASK" }, + { cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_CONTROL_PROTOCOL_TYPE_BIT_OFFSET, "cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_CONTROL_PROTOCOL_TYPE_BIT_OFFSET" }, + { cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_CONTROL_PROTOCOL_TYPE, "cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_CONTROL_PROTOCOL_TYPE" }, + { cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_LENGTH_BIT_MASK, "cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_LENGTH_BIT_MASK" }, + { cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_LENGTH_BIT_OFFSET, "cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_LENGTH_BIT_OFFSET" }, + { cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_LENGTH, "cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_LENGTH" }, + { 0, NULL } + }; + +const value_string vals_tOCTPKT_HDR_CONTROL_PROTOCOL_TYPE_ENUM[] = + { + { cOCTPKT_HDR_CONTROL_PROTOCOL_TYPE_ENUM_OCTVOCNET, "cOCTPKT_HDR_CONTROL_PROTOCOL_TYPE_ENUM_OCTVOCNET" }, + { cOCTPKT_HDR_CONTROL_PROTOCOL_TYPE_ENUM_OCTMFA, "cOCTPKT_HDR_CONTROL_PROTOCOL_TYPE_ENUM_OCTMFA" }, + { cOCTPKT_HDR_CONTROL_PROTOCOL_TYPE_ENUM_LTE_FAPI, "cOCTPKT_HDR_CONTROL_PROTOCOL_TYPE_ENUM_LTE_FAPI" }, + { cOCTPKT_HDR_CONTROL_PROTOCOL_TYPE_ENUM_OCTSDR, "cOCTPKT_HDR_CONTROL_PROTOCOL_TYPE_ENUM_OCTSDR" }, + { cOCTPKT_HDR_CONTROL_PROTOCOL_TYPE_ENUM_TEST, "cOCTPKT_HDR_CONTROL_PROTOCOL_TYPE_ENUM_TEST" }, + { cOCTPKT_HDR_CONTROL_PROTOCOL_TYPE_ENUM_NONE, "cOCTPKT_HDR_CONTROL_PROTOCOL_TYPE_ENUM_NONE" }, + { 0, NULL } + }; + +#include + +/**************************************************************************** + MODULE API ENUMERATION STRING VALUES + ****************************************************************************/ + +const value_string vals_tOCTPKT_HDRXL_FORMAT_PROTO_TYPE_LEN_MASK[] = + { + { cOCTPKT_HDRXL_FORMAT_PROTO_TYPE_LEN_MASK_FORMAT_BIT_MASK, "cOCTPKT_HDRXL_FORMAT_PROTO_TYPE_LEN_MASK_FORMAT_BIT_MASK" }, + { cOCTPKT_HDRXL_FORMAT_PROTO_TYPE_LEN_MASK_FORMAT_BIT_OFFSET, "cOCTPKT_HDRXL_FORMAT_PROTO_TYPE_LEN_MASK_FORMAT_BIT_OFFSET" }, + { cOCTPKT_HDRXL_FORMAT_PROTO_TYPE_LEN_MASK_FORMAT, "cOCTPKT_HDRXL_FORMAT_PROTO_TYPE_LEN_MASK_FORMAT" }, + { cOCTPKT_HDRXL_FORMAT_PROTO_TYPE_LEN_MASK_CONTROL_PROTOCOL_TYPE_BIT_MASK, "cOCTPKT_HDRXL_FORMAT_PROTO_TYPE_LEN_MASK_CONTROL_PROTOCOL_TYPE_BIT_MASK" }, + { cOCTPKT_HDRXL_FORMAT_PROTO_TYPE_LEN_MASK_CONTROL_PROTOCOL_TYPE_BIT_OFFSET, "cOCTPKT_HDRXL_FORMAT_PROTO_TYPE_LEN_MASK_CONTROL_PROTOCOL_TYPE_BIT_OFFSET" }, + { cOCTPKT_HDRXL_FORMAT_PROTO_TYPE_LEN_MASK_CONTROL_PROTOCOL_TYPE, "cOCTPKT_HDRXL_FORMAT_PROTO_TYPE_LEN_MASK_CONTROL_PROTOCOL_TYPE" }, + { cOCTPKT_HDRXL_FORMAT_PROTO_TYPE_LEN_MASK_LENGTH_BIT_MASK, "cOCTPKT_HDRXL_FORMAT_PROTO_TYPE_LEN_MASK_LENGTH_BIT_MASK" }, + { cOCTPKT_HDRXL_FORMAT_PROTO_TYPE_LEN_MASK_LENGTH_BIT_OFFSET, "cOCTPKT_HDRXL_FORMAT_PROTO_TYPE_LEN_MASK_LENGTH_BIT_OFFSET" }, + { cOCTPKT_HDRXL_FORMAT_PROTO_TYPE_LEN_MASK_LENGTH, "cOCTPKT_HDRXL_FORMAT_PROTO_TYPE_LEN_MASK_LENGTH" }, + { 0, NULL } + }; diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_cid_eid_value_string.c b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_cid_eid_value_string.c new file mode 100644 index 0000000..a8c1c7f --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_cid_eid_value_string.c @@ -0,0 +1,282 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_cid_eid_value_string.c + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: Contain the wireshark value_string of all CID and EID + +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
+#include +#include + + +/**************************************************************************** + Module unique entry + ****************************************************************************/ +const value_string vals_OCTVC1_module_UID[] = +{ + { (cOCTVC1_MAIN_UID), "MAIN" }, + { (cOCTVC1_CTRL_UID), "CTRL" }, + { (cOCTVC1_GSM_UID), "GSM" }, + { 0, NULL }, +}; + +/**************************************************************************** + CID arrays + ****************************************************************************/ +const value_string vals_OCTVC1_MAIN_CID[] = +{ + { (cOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CID& 0x00000FFF), "MODULE_MODIFY_EVT" }, + { (cOCTVC1_MAIN_MSG_MODULE_INFO_EVT_CID& 0x00000FFF), "MODULE_INFO_EVT" }, + { (cOCTVC1_MAIN_MSG_MODULE_START_TRACING_CID& 0x00000FFF), "MODULE_START_TRACING" }, + { (cOCTVC1_MAIN_MSG_MODULE_STOP_TRACING_CID& 0x00000FFF), "MODULE_STOP_TRACING" }, + { (cOCTVC1_MAIN_MSG_BUFFER_OPEN_CID& 0x00000FFF), "BUFFER_OPEN" }, + { (cOCTVC1_MAIN_MSG_BUFFER_CLOSE_CID& 0x00000FFF), "BUFFER_CLOSE" }, + { (cOCTVC1_MAIN_MSG_BUFFER_INFO_CID& 0x00000FFF), "BUFFER_INFO" }, + { (cOCTVC1_MAIN_MSG_BUFFER_LIST_CID& 0x00000FFF), "BUFFER_LIST" }, + { (cOCTVC1_MAIN_MSG_BUFFER_MODIFY_CID& 0x00000FFF), "BUFFER_MODIFY" }, + { (cOCTVC1_MAIN_MSG_BUFFER_WRITE_CID& 0x00000FFF), "BUFFER_WRITE" }, + { (cOCTVC1_MAIN_MSG_BUFFER_READ_CID& 0x00000FFF), "BUFFER_READ" }, + { (cOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_CID& 0x00000FFF), "BUFFER_INFO_BY_NAME" }, + { (cOCTVC1_MAIN_MSG_DEVICE_INFO_CID& 0x00000FFF), "DEVICE_INFO" }, + { (cOCTVC1_MAIN_MSG_DEVICE_RESET_CID& 0x00000FFF), "DEVICE_RESET" }, + { (cOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_CID& 0x00000FFF), "DEVICE_STATUS_OPUS_CORE" }, + { (cOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_CID& 0x00000FFF), "DEVICE_INFO_OPUS_CORE" }, + { (cOCTVC1_MAIN_MSG_OCT1010_INFO_CID& 0x00000FFF), "OCT1010_INFO" }, + { (cOCTVC1_MAIN_MSG_OCT1010_RESET_CID& 0x00000FFF), "OCT1010_RESET" }, + { (cOCTVC1_MAIN_MSG_OCT1010_STATS_CID& 0x00000FFF), "OCT1010_STATS" }, + { (cOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_CID& 0x00000FFF), "OCT1010_STATUS_CORE" }, + { (cOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_CID& 0x00000FFF), "OCT1010_INFO_CORE" }, + { (cOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_CID& 0x00000FFF), "OCT1010_INFO_OCT1010ID" }, + { (cOCTVC1_MAIN_MSG_ETH_STATS_CID& 0x00000FFF), "ETH_STATS" }, + { (cOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CID& 0x00000FFF), "ETH_MODIFY_PORT_CONFIG" }, + { (cOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_CID& 0x00000FFF), "ETH_INFO_PORT_CONFIG" }, + { (cOCTVC1_MAIN_MSG_REGISTER_READ_CID& 0x00000FFF), "REGISTER_READ" }, + { (cOCTVC1_MAIN_MSG_FILE_OPEN_CID& 0x00000FFF), "FILE_OPEN" }, + { (cOCTVC1_MAIN_MSG_FILE_CLOSE_CID& 0x00000FFF), "FILE_CLOSE" }, + { (cOCTVC1_MAIN_MSG_FILE_WRITE_CID& 0x00000FFF), "FILE_WRITE" }, + { (cOCTVC1_MAIN_MSG_FILE_READ_CID& 0x00000FFF), "FILE_READ" }, + { (cOCTVC1_MAIN_MSG_FILE_INFO_CID& 0x00000FFF), "FILE_INFO" }, + { (cOCTVC1_MAIN_MSG_FILE_LIST_CID& 0x00000FFF), "FILE_LIST" }, + { (cOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_CID& 0x00000FFF), "FILE_SYSTEM_INFO" }, + { (cOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_CID& 0x00000FFF), "FILE_SYSTEM_INFO_FILE" }, + { (cOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_CID& 0x00000FFF), "FILE_SYSTEM_DELETE_FILE" }, + { (cOCTVC1_MAIN_MSG_LOG_ERASE_CID& 0x00000FFF), "LOG_ERASE" }, + { (cOCTVC1_MAIN_MSG_LOG_READ_ENTRY_CID& 0x00000FFF), "LOG_READ_ENTRY" }, + { (cOCTVC1_MAIN_MSG_LICENSING_INFO_CID& 0x00000FFF), "LICENSING_INFO" }, + { (cOCTVC1_MAIN_MSG_GPIO_READ_BANK_CID& 0x00000FFF), "GPIO_READ_BANK" }, + { (cOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CID& 0x00000FFF), "GPIO_WRITE_BANK" }, + { (cOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CID& 0x00000FFF), "GPIO_MONITOR_BANK" }, + { (cOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CID& 0x00000FFF), "GPIO_MODIFY_BANK_CONFIG" }, + { (cOCTVC1_MAIN_MSG_SPI_ACCESS_CID& 0x00000FFF), "SPI_ACCESS" }, + { (cOCTVC1_MAIN_MSG_MDIO_READ_PHY_CID& 0x00000FFF), "MDIO_READ_PHY" }, + { (cOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CID& 0x00000FFF), "MDIO_WRITE_PHY" }, + { (cOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CID& 0x00000FFF), "MDIO_MONITOR_PHY" }, + { (cOCTVC1_MAIN_MSG_PROCESS_INFO_CID& 0x00000FFF), "PROCESS_INFO" }, + { (cOCTVC1_MAIN_MSG_PROCESS_LIST_CID& 0x00000FFF), "PROCESS_LIST" }, + { (cOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CID& 0x00000FFF), "PROCESS_MONITOR_CPU_USAGE" }, + { (cOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CID& 0x00000FFF), "PROCESS_INFO_CPU_USAGE" }, + { (cOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CID& 0x00000FFF), "DEBUG_FORWARD_OPEN" }, + { (cOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_CID& 0x00000FFF), "DEBUG_FORWARD_CLOSE" }, + { (cOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_CID& 0x00000FFF), "DEBUG_FORWARD_INFO" }, + { (cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CID& 0x00000FFF), "REDUNDANCY_SERVER_START" }, + { (cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_STOP_CID& 0x00000FFF), "REDUNDANCY_SERVER_STOP" }, + { (cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_CID& 0x00000FFF), "REDUNDANCY_SERVER_INFO" }, + { (cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CID& 0x00000FFF), "REDUNDANCY_SERVER_ADD_MGW" }, + { (cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CID& 0x00000FFF), "REDUNDANCY_SERVER_REMOVE_MGW" }, + { (cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_CID& 0x00000FFF), "REDUNDANCY_SERVER_LIST_MGW" }, + { (cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_CID& 0x00000FFF), "REDUNDANCY_SERVER_INFO_MGW" }, + { (cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CID& 0x00000FFF), "REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER" }, + { (cOCTVC1_MAIN_MSG_OCT2200_STATS_CID& 0x00000FFF), "OCT2200_STATS" }, + { 0, NULL }, +}; +const value_string vals_OCTVC1_MAIN_CID_PRIV[] = +{ + { 0, NULL }, +}; +const value_string vals_OCTVC1_CTRL_CID[] = +{ + { 0, NULL }, +}; +const value_string vals_OCTVC1_CTRL_CID_PRIV[] = +{ + { 0, NULL }, +}; +const value_string vals_OCTVC1_GSM_CID[] = +{ + { (cOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_CID& 0x00000FFF), "MODULE_INFO_HARDWARE" }, + { (cOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CID& 0x00000FFF), "MODULE_MODIFY_EVT" }, + { (cOCTVC1_GSM_MSG_MODULE_INFO_EVT_CID& 0x00000FFF), "MODULE_INFO_EVT" }, + { (cOCTVC1_GSM_MSG_MODULE_INFO_CID& 0x00000FFF), "MODULE_INFO" }, + { (cOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CID& 0x00000FFF), "PROCESS_UNIT_MODIFY_EVT" }, + { (cOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_CID& 0x00000FFF), "PROCESS_UNIT_INFO_EVT" }, + { (cOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_CID& 0x00000FFF), "PROCESS_UNIT_LIST" }, + { (cOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_CID& 0x00000FFF), "PROCESS_UNIT_INFO" }, + { (cOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CID& 0x00000FFF), "PROCESS_UNIT_STATS" }, + { (cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CID& 0x00000FFF), "PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME" }, + { (cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CID& 0x00000FFF), "PHYSICAL_CHANNEL_REQUEST_DATA" }, + { (cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CID& 0x00000FFF), "PHYSICAL_CHANNEL_CONFIGURE_CIPHERING" }, + { (cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CID& 0x00000FFF), "PHYSICAL_CHANNEL_CONNECT" }, + { (cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CID& 0x00000FFF), "PHYSICAL_CHANNEL_DISCONNECT" }, + { (cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_CID& 0x00000FFF), "PHYSICAL_CHANNEL_RESET" }, + { (cOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CID& 0x00000FFF), "LOGICAL_CHANNEL_ACTIVATE" }, + { (cOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CID& 0x00000FFF), "LOGICAL_CHANNEL_DEACTIVATE" }, + { (cOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_CID& 0x00000FFF), "TRX_STATUS_TIMESLOT" }, + { (cOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_CID& 0x00000FFF), "TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT" }, + { (cOCTVC1_GSM_MSG_TRX_RESET_CID& 0x00000FFF), "TRX_RESET" }, + { (cOCTVC1_GSM_MSG_TRX_STATUS_CID& 0x00000FFF), "TRX_STATUS" }, + { (cOCTVC1_GSM_MSG_TRX_CONFIGURE_CID& 0x00000FFF), "TRX_CONFIGURE" }, + { (cOCTVC1_GSM_MSG_TEST_START_ETSI_CID& 0x00000FFF), "TEST_START_ETSI" }, + { (cOCTVC1_GSM_MSG_TEST_END_ETSI_CID& 0x00000FFF), "TEST_END_ETSI" }, + { (cOCTVC1_GSM_MSG_TEST_START_FCC_CID& 0x00000FFF), "TEST_START_FCC" }, + { (cOCTVC1_GSM_MSG_TEST_END_FCC_CID& 0x00000FFF), "TEST_END_FCC" }, + { 0, NULL }, +}; +const value_string vals_OCTVC1_GSM_CID_PRIV[] = +{ + { 0, NULL }, +}; + +/**************************************************************************** + EID arrays + ****************************************************************************/ +const value_string vals_OCTVC1_MAIN_EID[] = +{ + { (cOCTVC1_MAIN_MSG_MODULE_TRACING_BUFFER_FULL_EID& 0x0000FFFF), "MODULE_TRACING_BUFFER_FULL" }, + { (cOCTVC1_MAIN_MSG_MODULE_TRACING_STOP_EID& 0x0000FFFF), "MODULE_TRACING_STOP" }, + { (cOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EID& 0x0000FFFF), "DEVICE_OPUS_CORE_EXEC_REPORT" }, + { (cOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EID& 0x0000FFFF), "GPIO_BANK_CHANGE" }, + { (cOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EID& 0x0000FFFF), "MDIO_PHY_CHANGE" }, + { (cOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EID& 0x0000FFFF), "PROCESS_CPU_USAGE_REPORT" }, + { (cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EID& 0x0000FFFF), "REDUNDANCY_SERVER_MGW_FAILOVER_DONE" }, + { 0, NULL }, +}; + +const value_string vals_OCTVC1_MAIN_EID_PRIV[] = +{ + { 0, NULL }, +}; +const value_string vals_OCTVC1_CTRL_EID[] = +{ + { 0, NULL }, +}; + +const value_string vals_OCTVC1_CTRL_EID_PRIV[] = +{ + { 0, NULL }, +}; +const value_string vals_OCTVC1_GSM_EID[] = +{ + { (cOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EID& 0x0000FFFF), "MODULE_TIME_INDICATION" }, + { (cOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EID& 0x0000FFFF), "MODULE_DATA_INDICATION" }, + { (cOCTVC1_GSM_MSG_MODULE_TRX_RADIO_READY_EID& 0x0000FFFF), "MODULE_TRX_RADIO_READY" }, + { (cOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EID& 0x0000FFFF), "MODULE_READY_TO_SEND_INDICATION" }, + { (cOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EID& 0x0000FFFF), "MODULE_RACH_INDICATION" }, + { (cOCTVC1_GSM_MSG_MODULE_ERROR_EID& 0x0000FFFF), "MODULE_ERROR" }, + { (cOCTVC1_GSM_MSG_MODULE_MESSAGE_EID& 0x0000FFFF), "MODULE_MESSAGE" }, + { (cOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EID& 0x0000FFFF), "MODULE_CHECKPOINT" }, + { (cOCTVC1_GSM_MSG_MODULE_TRACING_EID& 0x0000FFFF), "MODULE_TRACING" }, + { (cOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EID& 0x0000FFFF), "PROCESS_UNIT_ERROR" }, + { (cOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EID& 0x0000FFFF), "PROCESS_UNIT_MESSAGE" }, + { (cOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EID& 0x0000FFFF), "PROCESS_UNIT_CHECKPOINT" }, + { (cOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EID& 0x0000FFFF), "PROCESS_UNIT_TRACING" }, + { (cOCTVC1_GSM_MSG_TEST_ETSI_TEST_REPORT_EID& 0x0000FFFF), "TEST_ETSI_TEST_REPORT" }, + { 0, NULL }, +}; + +const value_string vals_OCTVC1_GSM_EID_PRIV[] = +{ + { 0, NULL }, +}; + +/**************************************************************************** + SID arrays + ****************************************************************************/ +const value_string vals_OCTVC1_MAIN_SID[] = +{ + { 0, NULL }, +}; + +const value_string vals_OCTVC1_MAIN_SID_PRIV[] = +{ + { 0, NULL }, +}; +const value_string vals_OCTVC1_CTRL_SID[] = +{ + { (cOCTVC1_CTRL_MSG_MODULE_REJECT_SID& 0x00000FFF), "MODULE_REJECT" }, + { 0, NULL }, +}; + +const value_string vals_OCTVC1_CTRL_SID_PRIV[] = +{ + { 0, NULL }, +}; +const value_string vals_OCTVC1_GSM_SID[] = +{ + { 0, NULL }, +}; + +const value_string vals_OCTVC1_GSM_SID_PRIV[] = +{ + { 0, NULL }, +}; + +/**************************************************************************** + typedef struct tModuleColInfo + ****************************************************************************/ +extern void ws_register_OCTVC1_MAIN(void); +extern int ws_dissect_OCTVC1_MAIN( guint8 message_type, guint32 CID, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ); +extern void ws_register_OCTVC1_CTRL(void); +extern int ws_dissect_OCTVC1_CTRL( guint8 message_type, guint32 CID, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ); +extern void ws_register_OCTVC1_GSM(void); +extern int ws_dissect_OCTVC1_GSM( guint8 message_type, guint32 CID, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ); +; +tModuleColInfo aOCTVC1ModuleColInfo[] = +{ + { "MAIN", vals_OCTVC1_MAIN_CID,vals_OCTVC1_MAIN_EID,vals_OCTVC1_MAIN_SID, ws_register_OCTVC1_MAIN, ws_dissect_OCTVC1_MAIN,vals_OCTVC1_MAIN_CID_PRIV,vals_OCTVC1_MAIN_EID_PRIV }, + { "CTRL", vals_OCTVC1_CTRL_CID,vals_OCTVC1_CTRL_EID,vals_OCTVC1_CTRL_SID, ws_register_OCTVC1_CTRL, ws_dissect_OCTVC1_CTRL,vals_OCTVC1_CTRL_CID_PRIV,vals_OCTVC1_CTRL_EID_PRIV }, + { "GSM", vals_OCTVC1_GSM_CID,vals_OCTVC1_GSM_EID,vals_OCTVC1_GSM_SID, ws_register_OCTVC1_GSM, ws_dissect_OCTVC1_GSM,vals_OCTVC1_GSM_CID_PRIV,vals_OCTVC1_GSM_EID_PRIV }, + +}; + + +/************************************************************************* + Registered dissector module +**************************************************************************/ +void ws_register_dissector_module(void) +{ + /* Register all modules */ + unsigned int i; + for( i=0; i. + +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(); + +} + + diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_module_cpp.c b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_module_cpp.c new file mode 100644 index 0000000..f30c68c --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_module_cpp.c @@ -0,0 +1,4396 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: octvc1_module_cpp.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_CPP_UDP_SEARCH_TYPE_ENUM[] = + { + { cOCTVC1_CPP_UDP_SEARCH_TYPE_ENUM_NONE, "cOCTVC1_CPP_UDP_SEARCH_TYPE_ENUM_NONE" }, + { cOCTVC1_CPP_UDP_SEARCH_TYPE_ENUM_SRCIPUDP, "cOCTVC1_CPP_UDP_SEARCH_TYPE_ENUM_SRCIPUDP" }, + { cOCTVC1_CPP_UDP_SEARCH_TYPE_ENUM_SSRC, "cOCTVC1_CPP_UDP_SEARCH_TYPE_ENUM_SSRC" }, + { cOCTVC1_CPP_UDP_SEARCH_TYPE_ENUM_SRCIPUDP_SSRC, "cOCTVC1_CPP_UDP_SEARCH_TYPE_ENUM_SRCIPUDP_SSRC" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_CPP_TCP_SEARCH_TYPE_ENUM[] = + { + { cOCTVC1_CPP_TCP_SEARCH_TYPE_ENUM_NONE, "cOCTVC1_CPP_TCP_SEARCH_TYPE_ENUM_NONE" }, + { cOCTVC1_CPP_TCP_SEARCH_TYPE_ENUM_SRCIPTCP, "cOCTVC1_CPP_TCP_SEARCH_TYPE_ENUM_SRCIPTCP" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_CPP_TX_HDR_TYPE_ENUM[] = + { + { cOCTVC1_CPP_TX_HDR_TYPE_ENUM_ETHERNET, "cOCTVC1_CPP_TX_HDR_TYPE_ENUM_ETHERNET" }, + { cOCTVC1_CPP_TX_HDR_TYPE_ENUM_ETH_PQ, "cOCTVC1_CPP_TX_HDR_TYPE_ENUM_ETH_PQ" }, + { cOCTVC1_CPP_TX_HDR_TYPE_ENUM_LLC, "cOCTVC1_CPP_TX_HDR_TYPE_ENUM_LLC" }, + { cOCTVC1_CPP_TX_HDR_TYPE_ENUM_NLPID, "cOCTVC1_CPP_TX_HDR_TYPE_ENUM_NLPID" }, + { cOCTVC1_CPP_TX_HDR_TYPE_ENUM_SNAP, "cOCTVC1_CPP_TX_HDR_TYPE_ENUM_SNAP" }, + { cOCTVC1_CPP_TX_HDR_TYPE_ENUM_IPV4, "cOCTVC1_CPP_TX_HDR_TYPE_ENUM_IPV4" }, + { cOCTVC1_CPP_TX_HDR_TYPE_ENUM_UDP, "cOCTVC1_CPP_TX_HDR_TYPE_ENUM_UDP" }, + { cOCTVC1_CPP_TX_HDR_TYPE_ENUM_RTP, "cOCTVC1_CPP_TX_HDR_TYPE_ENUM_RTP" }, + { cOCTVC1_CPP_TX_HDR_TYPE_ENUM_IPV6, "cOCTVC1_CPP_TX_HDR_TYPE_ENUM_IPV6" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_CPP_ETHERTYPE_ENUM[] = + { + { cOCTVC1_CPP_ETHERTYPE_ENUM_ETH_II, "cOCTVC1_CPP_ETHERTYPE_ENUM_ETH_II" }, + { cOCTVC1_CPP_ETHERTYPE_ENUM_IEEE_802_3, "cOCTVC1_CPP_ETHERTYPE_ENUM_IEEE_802_3" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_CPP_DEST_REMOVE_MODE_ENUM[] = + { + { cOCTVC1_CPP_DEST_REMOVE_MODE_ENUM_SPECIFIC, "cOCTVC1_CPP_DEST_REMOVE_MODE_ENUM_SPECIFIC" }, + { cOCTVC1_CPP_DEST_REMOVE_MODE_ENUM_ALL, "cOCTVC1_CPP_DEST_REMOVE_MODE_ENUM_ALL" }, + { cOCTVC1_CPP_DEST_REMOVE_MODE_ENUM_SPECIFIC_PORT, "cOCTVC1_CPP_DEST_REMOVE_MODE_ENUM_SPECIFIC_PORT" }, + { cOCTVC1_CPP_DEST_REMOVE_MODE_ENUM_SPECIFIC_DEST_OBJ, "cOCTVC1_CPP_DEST_REMOVE_MODE_ENUM_SPECIFIC_DEST_OBJ" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_CPP_DEST_INFO_ENUM[] = + { + { cOCTVC1_CPP_DEST_INFO_ENUM_OBJ_FIRST, "cOCTVC1_CPP_DEST_INFO_ENUM_OBJ_FIRST" }, + { cOCTVC1_CPP_DEST_INFO_ENUM_OBJ_NEXT, "cOCTVC1_CPP_DEST_INFO_ENUM_OBJ_NEXT" }, + { 0, NULL } + }; + +/**************************************************************************** + COMMON Registered + ****************************************************************************/ + +int ahf_tOCTVC1_CPP_CONFIG_STATIC[15]; +tWS_ENTITY_HANDLE ws_htOCTVC1_CPP_CONFIG_STATIC; + +void register_tOCTVC1_CPP_CONFIG_STATIC(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_CPP_CONFIG_STATIC[0], + { "ulMaxDestination", "octvc1.cpp.config_static.ulmaxdestination", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMaxDestination",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_CONFIG_STATIC[1], + { "ulMaxRxUdpPort", "octvc1.cpp.config_static.ulmaxrxudpport", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMaxRxUdpPort",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_CONFIG_STATIC[2], + { "ulMaxRxUdpCnct", "octvc1.cpp.config_static.ulmaxrxudpcnct", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMaxRxUdpCnct",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_CONFIG_STATIC[3], + { "ulMaxTxUdpCnct", "octvc1.cpp.config_static.ulmaxtxudpcnct", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMaxTxUdpCnct",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_CONFIG_STATIC[4], + { "ulMaxRxRtpPort", "octvc1.cpp.config_static.ulmaxrxrtpport", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMaxRxRtpPort",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_CONFIG_STATIC[5], + { "ulMaxRxRtpCnct", "octvc1.cpp.config_static.ulmaxrxrtpcnct", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMaxRxRtpCnct",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_CONFIG_STATIC[6], + { "ulMaxTxRtpCnct", "octvc1.cpp.config_static.ulmaxtxrtpcnct", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMaxTxRtpCnct",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_CONFIG_STATIC[7], + { "ulMaxRxTcpPort", "octvc1.cpp.config_static.ulmaxrxtcpport", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMaxRxTcpPort",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_CONFIG_STATIC[8], + { "ulMaxRxTcpCnct", "octvc1.cpp.config_static.ulmaxrxtcpcnct", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMaxRxTcpCnct",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_CONFIG_STATIC[9], + { "ulMaxRxIpPort", "octvc1.cpp.config_static.ulmaxrxipport", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMaxRxIpPort",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_CONFIG_STATIC[10], + { "ulMaxForwardObj", "octvc1.cpp.config_static.ulmaxforwardobj", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMaxForwardObj",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_CONFIG_STATIC[11], + { "ulIpFragmentIdMask", "octvc1.cpp.config_static.ulipfragmentidmask", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulIpFragmentIdMask",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_CONFIG_STATIC[12], + { "ulIpFragmentIdMatch", "octvc1.cpp.config_static.ulipfragmentidmatch", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulIpFragmentIdMatch",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_CONFIG_STATIC[13], + { "ulMaxNonEthernetBandwidth", "octvc1.cpp.config_static.ulmaxnonethernetbandwidth", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMaxNonEthernetBandwidth",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_CONFIG_STATIC[14], + { "ulMaxNonUdpBandwidth", "octvc1.cpp.config_static.ulmaxnonudpbandwidth", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMaxNonUdpBandwidth",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_CPP_CONFIG_STATIC.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_CPP_RX_RTP_PROFILE_ENTRY[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_CPP_RX_RTP_PROFILE_ENTRY; + +void register_tOCTVC1_CPP_RX_RTP_PROFILE_ENTRY(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_CPP_RX_RTP_PROFILE_ENTRY[0], + { "ulPacketEncodeType", "octvc1.cpp.rx_rtp_profile_entry.ulpacketencodetype", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVOCNET_PKT_D_TYPE_ENUM), 0x0, + "ulPacketEncodeType",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_RX_RTP_PROFILE_ENTRY[1], + { "ulRtpPayloadType", "octvc1.cpp.rx_rtp_profile_entry.ulrtppayloadtype", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRtpPayloadType",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_RX_RTP_PROFILE_ENTRY[2], + { "ulPktPortIndex", "octvc1.cpp.rx_rtp_profile_entry.ulpktportindex", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulPktPortIndex",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_CPP_RX_RTP_PROFILE_ENTRY.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_CPP_TX_RTP_PROFILE_ENTRY[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_CPP_TX_RTP_PROFILE_ENTRY; + +void register_tOCTVC1_CPP_TX_RTP_PROFILE_ENTRY(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_CPP_TX_RTP_PROFILE_ENTRY[0], + { "ulPacketEncodeType", "octvc1.cpp.tx_rtp_profile_entry.ulpacketencodetype", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVOCNET_PKT_D_TYPE_ENUM), 0x0, + "ulPacketEncodeType",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_RTP_PROFILE_ENTRY[1], + { "ulRtpPayloadType", "octvc1.cpp.tx_rtp_profile_entry.ulrtppayloadtype", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRtpPayloadType",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_CPP_TX_RTP_PROFILE_ENTRY.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_CPP_DEST_ENTRY[7]; +tWS_ENTITY_HANDLE ws_htOCTVC1_CPP_DEST_ENTRY; + +void register_tOCTVC1_CPP_DEST_ENTRY(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_CPP_DEST_ENTRY[0], + { "hCppObj", "octvc1.cpp.dest_entry.hcppobj", + FT_NONE, BASE_NONE, NULL, 0x0, + "hCppObj",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_DEST_ENTRY[1], + { "ulCppObjPort", "octvc1.cpp.dest_entry.ulcppobjport", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulCppObjPort",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_DEST_ENTRY[2], + { "hDestObj", "octvc1.cpp.dest_entry.hdestobj", + FT_NONE, BASE_NONE, NULL, 0x0, + "hDestObj",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_DEST_ENTRY[3], + { "ulDestObjPort", "octvc1.cpp.dest_entry.uldestobjport", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulDestObjPort",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_DEST_ENTRY[4], + { "ulDestObjFifoId", "octvc1.cpp.dest_entry.uldestobjfifoid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulDestObjFifoId",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_DEST_ENTRY[5], + { "DestMacAddress", "octvc1.cpp.dest_entry.destmacaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "DestMacAddress",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_DEST_ENTRY[6], + { "BridgeMacAddress", "octvc1.cpp.dest_entry.bridgemacaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "BridgeMacAddress",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_CPP_DEST_ENTRY.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_CPP_TX_HDR_COMMON[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_CPP_TX_HDR_COMMON; + +void register_tOCTVC1_CPP_TX_HDR_COMMON(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_CPP_TX_HDR_COMMON[0], + { "ulHeaderType", "octvc1.cpp.tx_hdr_common.ulheadertype", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_CPP_TX_HDR_TYPE_ENUM), 0x0, + "ulHeaderType",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_COMMON[1], + { "ulHeaderLength", "octvc1.cpp.tx_hdr_common.ulheaderlength", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulHeaderLength",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_CPP_TX_HDR_COMMON.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_CPP_TX_HDR_ETHERNET[5]; +tWS_ENTITY_HANDLE ws_htOCTVC1_CPP_TX_HDR_ETHERNET; + +void register_tOCTVC1_CPP_TX_HDR_ETHERNET(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_CPP_TX_HDR_ETHERNET[0], + { "CommonHeader", "octvc1.cpp.tx_hdr_ethernet.commonheader", + FT_NONE, BASE_NONE, NULL, 0x0, + "CommonHeader",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_ETHERNET[1], + { "ulEthertypeEncoding", "octvc1.cpp.tx_hdr_ethernet.ulethertypeencoding", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_CPP_ETHERTYPE_ENUM), 0x0, + "ulEthertypeEncoding",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_ETHERNET[2], + { "ulEthertype", "octvc1.cpp.tx_hdr_ethernet.ulethertype", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulEthertype",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_ETHERNET[3], + { "SourceMacAddr", "octvc1.cpp.tx_hdr_ethernet.sourcemacaddr", + FT_STRING, BASE_NONE, NULL, 0x0, + "SourceMacAddr",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_ETHERNET[4], + { "DestinationMacAddr", "octvc1.cpp.tx_hdr_ethernet.destinationmacaddr", + FT_STRING, BASE_NONE, NULL, 0x0, + "DestinationMacAddr",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_CPP_TX_HDR_ETHERNET.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_CPP_TX_HDR_ETH_PQ[6]; +tWS_ENTITY_HANDLE ws_htOCTVC1_CPP_TX_HDR_ETH_PQ; + +void register_tOCTVC1_CPP_TX_HDR_ETH_PQ(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_CPP_TX_HDR_ETH_PQ[0], + { "CommonHeader", "octvc1.cpp.tx_hdr_eth_pq.commonheader", + FT_NONE, BASE_NONE, NULL, 0x0, + "CommonHeader",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_ETH_PQ[1], + { "ulEthertypeEncoding", "octvc1.cpp.tx_hdr_eth_pq.ulethertypeencoding", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_CPP_ETHERTYPE_ENUM), 0x0, + "ulEthertypeEncoding",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_ETH_PQ[2], + { "ulEthertype", "octvc1.cpp.tx_hdr_eth_pq.ulethertype", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulEthertype",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_ETH_PQ[3], + { "ulTci", "octvc1.cpp.tx_hdr_eth_pq.ultci", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulTci",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_ETH_PQ[4], + { "SourceMacAddr", "octvc1.cpp.tx_hdr_eth_pq.sourcemacaddr", + FT_STRING, BASE_NONE, NULL, 0x0, + "SourceMacAddr",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_ETH_PQ[5], + { "DestinationMacAddr", "octvc1.cpp.tx_hdr_eth_pq.destinationmacaddr", + FT_STRING, BASE_NONE, NULL, 0x0, + "DestinationMacAddr",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_CPP_TX_HDR_ETH_PQ.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_CPP_TX_HDR_LLC[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_CPP_TX_HDR_LLC; + +void register_tOCTVC1_CPP_TX_HDR_LLC(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_CPP_TX_HDR_LLC[0], + { "CommonHeader", "octvc1.cpp.tx_hdr_llc.commonheader", + FT_NONE, BASE_NONE, NULL, 0x0, + "CommonHeader",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_LLC[1], + { "ulLlcValue", "octvc1.cpp.tx_hdr_llc.ulllcvalue", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLlcValue",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_CPP_TX_HDR_LLC.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_CPP_TX_HDR_NLPID[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_CPP_TX_HDR_NLPID; + +void register_tOCTVC1_CPP_TX_HDR_NLPID(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_CPP_TX_HDR_NLPID[0], + { "CommonHeader", "octvc1.cpp.tx_hdr_nlpid.commonheader", + FT_NONE, BASE_NONE, NULL, 0x0, + "CommonHeader",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_NLPID[1], + { "ulNlpidValue", "octvc1.cpp.tx_hdr_nlpid.ulnlpidvalue", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulNlpidValue",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_CPP_TX_HDR_NLPID.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_CPP_TX_HDR_SNAP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_CPP_TX_HDR_SNAP; + +void register_tOCTVC1_CPP_TX_HDR_SNAP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_CPP_TX_HDR_SNAP[0], + { "CommonHeader", "octvc1.cpp.tx_hdr_snap.commonheader", + FT_NONE, BASE_NONE, NULL, 0x0, + "CommonHeader",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_SNAP[1], + { "ulOuiValue", "octvc1.cpp.tx_hdr_snap.ulouivalue", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulOuiValue",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_SNAP[2], + { "ulPidValue", "octvc1.cpp.tx_hdr_snap.ulpidvalue", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulPidValue",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_CPP_TX_HDR_SNAP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_CPP_TX_HDR_IPV4[10]; +tWS_ENTITY_HANDLE ws_htOCTVC1_CPP_TX_HDR_IPV4; + +void register_tOCTVC1_CPP_TX_HDR_IPV4(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_CPP_TX_HDR_IPV4[0], + { "CommonHeader", "octvc1.cpp.tx_hdr_ipv4.commonheader", + FT_NONE, BASE_NONE, NULL, 0x0, + "CommonHeader",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_IPV4[1], + { "ulTypeOfService", "octvc1.cpp.tx_hdr_ipv4.ultypeofservice", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulTypeOfService",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_IPV4[2], + { "ulTimeToLive", "octvc1.cpp.tx_hdr_ipv4.ultimetolive", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulTimeToLive",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_IPV4[3], + { "ulProtocol", "octvc1.cpp.tx_hdr_ipv4.ulprotocol", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulProtocol",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_IPV4[4], + { "ulFlags", "octvc1.cpp.tx_hdr_ipv4.ulflags", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulFlags",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_IPV4[5], + { "ulSourceAddr", "octvc1.cpp.tx_hdr_ipv4.ulsourceaddr", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulSourceAddr",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_IPV4[6], + { "ulDestinationAddr", "octvc1.cpp.tx_hdr_ipv4.uldestinationaddr", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulDestinationAddr",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_IPV4[7], + { "ulUdpChecksumAddr", "octvc1.cpp.tx_hdr_ipv4.uludpchecksumaddr", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulUdpChecksumAddr",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_IPV4[8], + { "ulOptionsLength", "octvc1.cpp.tx_hdr_ipv4.uloptionslength", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulOptionsLength",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_IPV4[9], + { "aulOptions", "octvc1.cpp.tx_hdr_ipv4.auloptions", + FT_UINT32,BASE_HEX, NULL, 0x0, + "aulOptions",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_CPP_TX_HDR_IPV4.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_CPP_TX_HDR_IPV6[8]; +tWS_ENTITY_HANDLE ws_htOCTVC1_CPP_TX_HDR_IPV6; + +void register_tOCTVC1_CPP_TX_HDR_IPV6(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_CPP_TX_HDR_IPV6[0], + { "CommonHeader", "octvc1.cpp.tx_hdr_ipv6.commonheader", + FT_NONE, BASE_NONE, NULL, 0x0, + "CommonHeader",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_IPV6[1], + { "ulTrafficClass", "octvc1.cpp.tx_hdr_ipv6.ultrafficclass", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulTrafficClass",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_IPV6[2], + { "ulFlowLabel", "octvc1.cpp.tx_hdr_ipv6.ulflowlabel", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulFlowLabel",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_IPV6[3], + { "ulHopLimit", "octvc1.cpp.tx_hdr_ipv6.ulhoplimit", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulHopLimit",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_IPV6[4], + { "aulSourceAddr", "octvc1.cpp.tx_hdr_ipv6.aulsourceaddr", + FT_UINT32,BASE_HEX, NULL, 0x0, + "aulSourceAddr",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_IPV6[5], + { "aulDestinationAddr", "octvc1.cpp.tx_hdr_ipv6.auldestinationaddr", + FT_UINT32,BASE_HEX, NULL, 0x0, + "aulDestinationAddr",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_IPV6[6], + { "aulUdpChecksumAddr", "octvc1.cpp.tx_hdr_ipv6.auludpchecksumaddr", + FT_UINT32,BASE_HEX, NULL, 0x0, + "aulUdpChecksumAddr",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_IPV6[7], + { "ulNextHeader", "octvc1.cpp.tx_hdr_ipv6.ulnextheader", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulNextHeader",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_CPP_TX_HDR_IPV6.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_CPP_TX_HDR_UDP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_CPP_TX_HDR_UDP; + +void register_tOCTVC1_CPP_TX_HDR_UDP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_CPP_TX_HDR_UDP[0], + { "CommonHeader", "octvc1.cpp.tx_hdr_udp.commonheader", + FT_NONE, BASE_NONE, NULL, 0x0, + "CommonHeader",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_UDP[1], + { "ulSourcePort", "octvc1.cpp.tx_hdr_udp.ulsourceport", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulSourcePort",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_UDP[2], + { "ulDestinationPort", "octvc1.cpp.tx_hdr_udp.uldestinationport", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulDestinationPort",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_CPP_TX_HDR_UDP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_CPP_TX_HDR_RTP[8]; +tWS_ENTITY_HANDLE ws_htOCTVC1_CPP_TX_HDR_RTP; + +void register_tOCTVC1_CPP_TX_HDR_RTP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_CPP_TX_HDR_RTP[0], + { "CommonHeader", "octvc1.cpp.tx_hdr_rtp.commonheader", + FT_NONE, BASE_NONE, NULL, 0x0, + "CommonHeader",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_RTP[1], + { "ulNumContributingSources", "octvc1.cpp.tx_hdr_rtp.ulnumcontributingsources", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulNumContributingSources",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_RTP[2], + { "ulSynchronizationSource", "octvc1.cpp.tx_hdr_rtp.ulsynchronizationsource", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulSynchronizationSource",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_RTP[3], + { "ulExtensionFlag", "octvc1.cpp.tx_hdr_rtp.ulextensionflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulExtensionFlag",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_RTP[4], + { "ulExtensionType", "octvc1.cpp.tx_hdr_rtp.ulextensiontype", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulExtensionType",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_RTP[5], + { "ulExtensionLength", "octvc1.cpp.tx_hdr_rtp.ulextensionlength", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulExtensionLength",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_RTP[6], + { "aulCsrcs", "octvc1.cpp.tx_hdr_rtp.aulcsrcs", + FT_UINT32,BASE_HEX, NULL, 0x0, + "aulCsrcs",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_TX_HDR_RTP[7], + { "aulExtensions", "octvc1.cpp.tx_hdr_rtp.aulextensions", + FT_UINT32,BASE_HEX, NULL, 0x0, + "aulExtensions",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_CPP_TX_HDR_RTP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +/**************************************************************************** + CMD/RSP Registered + ****************************************************************************/ + +int ahf_tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD[9]; +tWS_ENTITY_HANDLE ws_htOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD; + +void register_tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD[0], + { "hCppObj", "octvc1.cpp.module.dest.add.hcppobj", + FT_NONE, BASE_NONE, NULL, 0x0, + "hCppObj",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD[1], + { "ulCppObjPort", "octvc1.cpp.module.dest.add.ulcppobjport", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulCppObjPort",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD[2], + { "hDestObj", "octvc1.cpp.module.dest.add.hdestobj", + FT_NONE, BASE_NONE, NULL, 0x0, + "hDestObj",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD[3], + { "ulDestObjPort", "octvc1.cpp.module.dest.add.uldestobjport", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulDestObjPort",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD[4], + { "ulDestObjFifoId", "octvc1.cpp.module.dest.add.uldestobjfifoid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulDestObjFifoId",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD[5], + { "DestMacAddress", "octvc1.cpp.module.dest.add.destmacaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "DestMacAddress",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD[6], + { "SrcMacAddress", "octvc1.cpp.module.dest.add.srcmacaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "SrcMacAddress",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD[7], + { "BridgeMacAddress", "octvc1.cpp.module.dest.add.bridgemacaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "BridgeMacAddress",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_CPP_MSG_MODULE_ADD_DEST_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_CPP_MSG_MODULE_ADD_DEST_RSP; + +void register_tOCTVC1_CPP_MSG_MODULE_ADD_DEST_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_CPP_MSG_MODULE_ADD_DEST_RSP[0], + { "hCppObj", "octvc1.cpp.module.dest.add.hcppobj", + FT_NONE, BASE_NONE, NULL, 0x0, + "hCppObj",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_CPP_MSG_MODULE_ADD_DEST_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD[8]; +tWS_ENTITY_HANDLE ws_htOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD; + +void register_tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD[0], + { "ulRemoveMode", "octvc1.cpp.module.dest.remove.ulremovemode", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_CPP_DEST_REMOVE_MODE_ENUM), 0x0, + "ulRemoveMode",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD[1], + { "hCppObj", "octvc1.cpp.module.dest.remove.hcppobj", + FT_NONE, BASE_NONE, NULL, 0x0, + "hCppObj",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD[2], + { "ulCppObjPort", "octvc1.cpp.module.dest.remove.ulcppobjport", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulCppObjPort",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD[3], + { "hDestObj", "octvc1.cpp.module.dest.remove.hdestobj", + FT_NONE, BASE_NONE, NULL, 0x0, + "hDestObj",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD[4], + { "ulDestObjPort", "octvc1.cpp.module.dest.remove.uldestobjport", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulDestObjPort",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD[5], + { "ulDestObjFifoId", "octvc1.cpp.module.dest.remove.uldestobjfifoid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulDestObjFifoId",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD[6], + { "DestMacAddress", "octvc1.cpp.module.dest.remove.destmacaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "DestMacAddress",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_RSP; + +void register_tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_RSP[0], + { "ulNumDestRemoved", "octvc1.cpp.module.dest.remove.ulnumdestremoved", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulNumDestRemoved",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD[8]; +tWS_ENTITY_HANDLE ws_htOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD; + +void register_tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD[0], + { "ulGetType", "octvc1.cpp.module.dest.info.ulgettype", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_CPP_DEST_INFO_ENUM), 0x0, + "ulGetType",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD[1], + { "hCppObj", "octvc1.cpp.module.dest.info.hcppobj", + FT_NONE, BASE_NONE, NULL, 0x0, + "hCppObj",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD[2], + { "ulCppObjPort", "octvc1.cpp.module.dest.info.ulcppobjport", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulCppObjPort",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD[3], + { "hDestObj", "octvc1.cpp.module.dest.info.hdestobj", + FT_NONE, BASE_NONE, NULL, 0x0, + "hDestObj",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD[4], + { "ulDestObjPort", "octvc1.cpp.module.dest.info.uldestobjport", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulDestObjPort",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD[5], + { "ulDestObjFifoId", "octvc1.cpp.module.dest.info.uldestobjfifoid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulDestObjFifoId",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD[6], + { "DestMacAddress", "octvc1.cpp.module.dest.info.destmacaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "DestMacAddress",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP[4]; +tWS_ENTITY_HANDLE ws_htOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP; + +void register_tOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP[0], + { "ulMoreFlag", "octvc1.cpp.module.dest.info.ulmoreflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulMoreFlag",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP[1], + { "ulNumDestEntry", "octvc1.cpp.module.dest.info.ulnumdestentry", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulNumDestEntry",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP[2], + { "aDestEntry", "octvc1.cpp.module.dest.info.adestentry", + FT_NONE, BASE_NONE, NULL, 0x0, + "aDestEntry",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_CMD; + +void register_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_CMD[0], + { "ulResetStatsFlag", "octvc1.cpp.module.global.stats.ulresetstatsflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulResetStatsFlag",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP[14]; +tWS_ENTITY_HANDLE ws_htOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP; + +void register_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP[0], + { "ulControlRxPktCnt", "octvc1.cpp.module.global.stats.ulcontrolrxpktcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulControlRxPktCnt",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP[1], + { "ulDataRxPktCnt", "octvc1.cpp.module.global.stats.uldatarxpktcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulDataRxPktCnt",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP[2], + { "ulControlBadHdrLenCnt", "octvc1.cpp.module.global.stats.ulcontrolbadhdrlencnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulControlBadHdrLenCnt",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP[3], + { "ulDataBadHdrLenCnt", "octvc1.cpp.module.global.stats.uldatabadhdrlencnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulDataBadHdrLenCnt",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP[4], + { "ulInvalidPktFormatCnt", "octvc1.cpp.module.global.stats.ulinvalidpktformatcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulInvalidPktFormatCnt",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP[5], + { "ulNoFwdPktCnt", "octvc1.cpp.module.global.stats.ulnofwdpktcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulNoFwdPktCnt",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP[6], + { "ulCppCmdOverflowCnt", "octvc1.cpp.module.global.stats.ulcppcmdoverflowcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulCppCmdOverflowCnt",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP[7], + { "ulTxPktQueueOverflowFlag", "octvc1.cpp.module.global.stats.ultxpktqueueoverflowflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulTxPktQueueOverflowFlag",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP[8], + { "ulTxPktQueueOverflowFifoPoolId", "octvc1.cpp.module.global.stats.ultxpktqueueoverflowfifopoolid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulTxPktQueueOverflowFifoPoolId",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP[9], + { "ulTxPktQueueOverflowFifoIndex", "octvc1.cpp.module.global.stats.ultxpktqueueoverflowfifoindex", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulTxPktQueueOverflowFifoIndex",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP[10], + { "ulRxFifoResynchFlag", "octvc1.cpp.module.global.stats.ulrxfiforesynchflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulRxFifoResynchFlag",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP[11], + { "ulRxFifoResynchFifoPoolId", "octvc1.cpp.module.global.stats.ulrxfiforesynchfifopoolid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRxFifoResynchFifoPoolId",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP[12], + { "ulRxFifoResynchFifoIndex", "octvc1.cpp.module.global.stats.ulrxfiforesynchfifoindex", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRxFifoResynchFifoIndex",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_CPP_MSG_MODULE_STATS_ETH_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_CPP_MSG_MODULE_STATS_ETH_CMD; + +void register_tOCTVC1_CPP_MSG_MODULE_STATS_ETH_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_CPP_MSG_MODULE_STATS_ETH_CMD[0], + { "ulEthPort", "octvc1.cpp.module.eth.stats.ulethport", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_ETH_PORT_ID_ENUM), 0x0, + "ulEthPort",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_CPP_MSG_MODULE_STATS_ETH_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP[11]; +tWS_ENTITY_HANDLE ws_htOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP; + +void register_tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP[0], + { "ulEthPort", "octvc1.cpp.module.eth.stats.ulethport", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_ETH_PORT_ID_ENUM), 0x0, + "ulEthPort",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP[1], + { "ulEthRxPktCnt", "octvc1.cpp.module.eth.stats.ulethrxpktcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulEthRxPktCnt",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP[2], + { "ulEthTxPktCnt", "octvc1.cpp.module.eth.stats.ulethtxpktcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulEthTxPktCnt",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP[3], + { "ulEthRxByteCnt", "octvc1.cpp.module.eth.stats.ulethrxbytecnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulEthRxByteCnt",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP[4], + { "ulEthTxByteCnt", "octvc1.cpp.module.eth.stats.ulethtxbytecnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulEthTxByteCnt",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP[5], + { "ulEthBadHdrCnt", "octvc1.cpp.module.eth.stats.ulethbadhdrcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulEthBadHdrCnt",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP[6], + { "ulEthBadHdrLenCnt", "octvc1.cpp.module.eth.stats.ulethbadhdrlencnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulEthBadHdrLenCnt",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP[7], + { "ulEth8023BadLlcOuiCnt", "octvc1.cpp.module.eth.stats.uleth8023badllcouicnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulEth8023BadLlcOuiCnt",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP[8], + { "ulRxFifoReSyncCnt", "octvc1.cpp.module.eth.stats.ulrxfiforesynccnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulRxFifoReSyncCnt",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP[9], + { "ulTxPktQueueOverflowCnt", "octvc1.cpp.module.eth.stats.ultxpktqueueoverflowcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulTxPktQueueOverflowCnt",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_CPP_MSG_MODULE_GET_CONFIG_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_CPP_MSG_MODULE_GET_CONFIG_RSP; + +void register_tOCTVC1_CPP_MSG_MODULE_GET_CONFIG_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_CPP_MSG_MODULE_GET_CONFIG_RSP[0], + { "Static", "octvc1.cpp.module.config.get.static", + FT_NONE, BASE_NONE, NULL, 0x0, + "Static",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_CPP_MSG_MODULE_GET_CONFIG_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_CPP_MSG_FORWARD_OPEN_CMD[6]; +tWS_ENTITY_HANDLE ws_htOCTVC1_CPP_MSG_FORWARD_OPEN_CMD; + +void register_tOCTVC1_CPP_MSG_FORWARD_OPEN_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_CPP_MSG_FORWARD_OPEN_CMD[0], + { "hDestObj", "octvc1.cpp.forward.open.hdestobj", + FT_NONE, BASE_NONE, NULL, 0x0, + "hDestObj",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_FORWARD_OPEN_CMD[1], + { "ulDestObjPort", "octvc1.cpp.forward.open.uldestobjport", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulDestObjPort",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_FORWARD_OPEN_CMD[2], + { "ulDestObjFifoId", "octvc1.cpp.forward.open.uldestobjfifoid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulDestObjFifoId",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_FORWARD_OPEN_CMD[3], + { "DestMacAddress", "octvc1.cpp.forward.open.destmacaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "DestMacAddress",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_FORWARD_OPEN_CMD[4], + { "SrcMacAddress", "octvc1.cpp.forward.open.srcmacaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "SrcMacAddress",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_CPP_MSG_FORWARD_OPEN_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_CPP_MSG_FORWARD_OPEN_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_CPP_MSG_FORWARD_OPEN_RSP; + +void register_tOCTVC1_CPP_MSG_FORWARD_OPEN_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_CPP_MSG_FORWARD_OPEN_RSP[0], + { "hForward", "octvc1.cpp.forward.open.hforward", + FT_NONE, BASE_NONE, NULL, 0x0, + "hForward",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_FORWARD_OPEN_RSP[1], + { "ulFifoId", "octvc1.cpp.forward.open.ulfifoid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulFifoId",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_CPP_MSG_FORWARD_OPEN_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_CPP_MSG_FORWARD_CLOSE_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_CPP_MSG_FORWARD_CLOSE_CMD; + +void register_tOCTVC1_CPP_MSG_FORWARD_CLOSE_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_CPP_MSG_FORWARD_CLOSE_CMD[0], + { "hForward", "octvc1.cpp.forward.close.hforward", + FT_NONE, BASE_NONE, NULL, 0x0, + "hForward",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_CPP_MSG_FORWARD_CLOSE_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_CPP_MSG_FORWARD_CLOSE_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_CPP_MSG_FORWARD_CLOSE_RSP; + +void register_tOCTVC1_CPP_MSG_FORWARD_CLOSE_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_CPP_MSG_FORWARD_CLOSE_RSP[0], + { "hForward", "octvc1.cpp.forward.close.hforward", + FT_NONE, BASE_NONE, NULL, 0x0, + "hForward",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_CPP_MSG_FORWARD_CLOSE_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_CPP_MSG_FORWARD_STATS_CMD[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_CPP_MSG_FORWARD_STATS_CMD; + +void register_tOCTVC1_CPP_MSG_FORWARD_STATS_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_CPP_MSG_FORWARD_STATS_CMD[0], + { "ObjectGet", "octvc1.cpp.forward.stats.objectget", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectGet",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_FORWARD_STATS_CMD[1], + { "ulResetStatsFlag", "octvc1.cpp.forward.stats.ulresetstatsflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulResetStatsFlag",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_CPP_MSG_FORWARD_STATS_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_CPP_MSG_FORWARD_STATS_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_CPP_MSG_FORWARD_STATS_RSP; + +void register_tOCTVC1_CPP_MSG_FORWARD_STATS_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_CPP_MSG_FORWARD_STATS_RSP[0], + { "ObjectGet", "octvc1.cpp.forward.stats.objectget", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectGet",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_CPP_MSG_FORWARD_STATS_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_CPP_MSG_FORWARD_INFO_CMD[7]; +tWS_ENTITY_HANDLE ws_htOCTVC1_CPP_MSG_FORWARD_INFO_CMD; + +void register_tOCTVC1_CPP_MSG_FORWARD_INFO_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_CPP_MSG_FORWARD_INFO_CMD[0], + { "ObjectGet", "octvc1.cpp.forward.info.objectget", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectGet",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_FORWARD_INFO_CMD[1], + { "ulGetType", "octvc1.cpp.forward.info.ulgettype", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_CPP_DEST_INFO_ENUM), 0x0, + "ulGetType",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_FORWARD_INFO_CMD[2], + { "hDestObj", "octvc1.cpp.forward.info.hdestobj", + FT_NONE, BASE_NONE, NULL, 0x0, + "hDestObj",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_FORWARD_INFO_CMD[3], + { "ulDestObjPort", "octvc1.cpp.forward.info.uldestobjport", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulDestObjPort",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_FORWARD_INFO_CMD[4], + { "ulDestObjFifoId", "octvc1.cpp.forward.info.uldestobjfifoid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulDestObjFifoId",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_FORWARD_INFO_CMD[5], + { "DestMacAddress", "octvc1.cpp.forward.info.destmacaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "DestMacAddress",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_CPP_MSG_FORWARD_INFO_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_CPP_MSG_FORWARD_INFO_RSP[6]; +tWS_ENTITY_HANDLE ws_htOCTVC1_CPP_MSG_FORWARD_INFO_RSP; + +void register_tOCTVC1_CPP_MSG_FORWARD_INFO_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_CPP_MSG_FORWARD_INFO_RSP[0], + { "ObjectGet", "octvc1.cpp.forward.info.objectget", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectGet",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_FORWARD_INFO_RSP[1], + { "ulFifoId", "octvc1.cpp.forward.info.ulfifoid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulFifoId",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_FORWARD_INFO_RSP[2], + { "ulMoreFlag", "octvc1.cpp.forward.info.ulmoreflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulMoreFlag",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_FORWARD_INFO_RSP[3], + { "ulNumDestEntry", "octvc1.cpp.forward.info.ulnumdestentry", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulNumDestEntry",HFILL } + + }, + { + &ahf_tOCTVC1_CPP_MSG_FORWARD_INFO_RSP[4], + { "aDestEntry", "octvc1.cpp.forward.info.adestentry", + FT_NONE, BASE_NONE, NULL, 0x0, + "aDestEntry",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_CPP_MSG_FORWARD_INFO_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +/**************************************************************************** + COMMON dissectors + ****************************************************************************/ + + +unsigned int dissect_tOCTVC1_CPP_CONFIG_STATIC(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_CPP_CONFIG_STATIC))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_CONFIG_STATIC (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_CPP_CONFIG_STATIC)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_CPP_CONFIG_STATIC); + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_CONFIG_STATIC[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_CONFIG_STATIC, ulMaxDestination), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_CONFIG_STATIC[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_CONFIG_STATIC, ulMaxDestination); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_CONFIG_STATIC[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_CONFIG_STATIC, ulMaxRxUdpPort), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_CONFIG_STATIC[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_CONFIG_STATIC, ulMaxRxUdpPort); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_CONFIG_STATIC[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_CONFIG_STATIC, ulMaxRxUdpCnct), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_CONFIG_STATIC[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_CONFIG_STATIC, ulMaxRxUdpCnct); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_CONFIG_STATIC[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_CONFIG_STATIC, ulMaxTxUdpCnct), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_CONFIG_STATIC[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_CONFIG_STATIC, ulMaxTxUdpCnct); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_CONFIG_STATIC[4], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_CONFIG_STATIC, ulMaxRxRtpPort), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_CONFIG_STATIC[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_CONFIG_STATIC, ulMaxRxRtpPort); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_CONFIG_STATIC[5], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_CONFIG_STATIC, ulMaxRxRtpCnct), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_CONFIG_STATIC[5], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_CONFIG_STATIC, ulMaxRxRtpCnct); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_CONFIG_STATIC[6], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_CONFIG_STATIC, ulMaxTxRtpCnct), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_CONFIG_STATIC[6], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_CONFIG_STATIC, ulMaxTxRtpCnct); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_CONFIG_STATIC[7], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_CONFIG_STATIC, ulMaxRxTcpPort), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_CONFIG_STATIC[7], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_CONFIG_STATIC, ulMaxRxTcpPort); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_CONFIG_STATIC[8], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_CONFIG_STATIC, ulMaxRxTcpCnct), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_CONFIG_STATIC[8], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_CONFIG_STATIC, ulMaxRxTcpCnct); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_CONFIG_STATIC[9], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_CONFIG_STATIC, ulMaxRxIpPort), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_CONFIG_STATIC[9], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_CONFIG_STATIC, ulMaxRxIpPort); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_CONFIG_STATIC[10], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_CONFIG_STATIC, ulMaxForwardObj), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_CONFIG_STATIC[10], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_CONFIG_STATIC, ulMaxForwardObj); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_CONFIG_STATIC[11], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_CONFIG_STATIC, ulIpFragmentIdMask), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_CONFIG_STATIC[11], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_CONFIG_STATIC, ulIpFragmentIdMask); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_CONFIG_STATIC[12], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_CONFIG_STATIC, ulIpFragmentIdMatch), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_CONFIG_STATIC[12], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_CONFIG_STATIC, ulIpFragmentIdMatch); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_CONFIG_STATIC[13], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_CONFIG_STATIC, ulMaxNonEthernetBandwidth), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_CONFIG_STATIC[13], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_CONFIG_STATIC, ulMaxNonEthernetBandwidth); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_CONFIG_STATIC[14], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_CONFIG_STATIC, ulMaxNonUdpBandwidth), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_CONFIG_STATIC[14], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_CONFIG_STATIC, ulMaxNonUdpBandwidth); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_CPP_RX_RTP_PROFILE_ENTRY(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_CPP_RX_RTP_PROFILE_ENTRY))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_RX_RTP_PROFILE_ENTRY (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_CPP_RX_RTP_PROFILE_ENTRY)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_CPP_RX_RTP_PROFILE_ENTRY); + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_RX_RTP_PROFILE_ENTRY[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_RX_RTP_PROFILE_ENTRY, ulPacketEncodeType), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_RX_RTP_PROFILE_ENTRY[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_RX_RTP_PROFILE_ENTRY, ulPacketEncodeType); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_RX_RTP_PROFILE_ENTRY[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_RX_RTP_PROFILE_ENTRY, ulRtpPayloadType), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_RX_RTP_PROFILE_ENTRY[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_RX_RTP_PROFILE_ENTRY, ulRtpPayloadType); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_RX_RTP_PROFILE_ENTRY[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_RX_RTP_PROFILE_ENTRY, ulPktPortIndex), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_RX_RTP_PROFILE_ENTRY[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_RX_RTP_PROFILE_ENTRY, ulPktPortIndex); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_CPP_TX_RTP_PROFILE_ENTRY(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_CPP_TX_RTP_PROFILE_ENTRY))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_TX_RTP_PROFILE_ENTRY (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_CPP_TX_RTP_PROFILE_ENTRY)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_CPP_TX_RTP_PROFILE_ENTRY); + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_TX_RTP_PROFILE_ENTRY[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_RTP_PROFILE_ENTRY, ulPacketEncodeType), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_TX_RTP_PROFILE_ENTRY[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_TX_RTP_PROFILE_ENTRY, ulPacketEncodeType); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_TX_RTP_PROFILE_ENTRY[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_RTP_PROFILE_ENTRY, ulRtpPayloadType), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_TX_RTP_PROFILE_ENTRY[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_TX_RTP_PROFILE_ENTRY, ulRtpPayloadType); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_CPP_DEST_ENTRY(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_CPP_DEST_ENTRY))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_DEST_ENTRY (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_CPP_DEST_ENTRY)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_CPP_DEST_ENTRY); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_DEST_ENTRY, hCppObj), "hCppObj: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_CPP_DEST_ENTRY[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_DEST_ENTRY, ulCppObjPort), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_DEST_ENTRY[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_DEST_ENTRY, ulCppObjPort); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_DEST_ENTRY, hDestObj), "hDestObj: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_CPP_DEST_ENTRY[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_DEST_ENTRY, ulDestObjPort), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_DEST_ENTRY[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_DEST_ENTRY, ulDestObjPort); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_DEST_ENTRY[4], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_DEST_ENTRY, ulDestObjFifoId), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_DEST_ENTRY[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_DEST_ENTRY, ulDestObjFifoId); + + { + int ulMac0, ulMac1; + unsigned int offs = offset; + ulMac0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulMac1 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_CPP_DEST_ENTRY[5], tvb, offset, + sizeof(tOCTVC1_MAC_ADDRESS), "","DestMacAddress: %02x:%02x:%02x:%02x:%02x:%02x", + (( ulMac0 & 0x0000FF00 ) >> 8 ), + ( ulMac0 & 0x000000FF ), + (( ulMac1 & 0xFF000000 ) >> 24 ), + (( ulMac1 & 0x00FF0000 ) >> 16 ), + (( ulMac1 & 0x0000FF00 ) >> 8 ), + ( ulMac1 & 0x000000FF ) ); + } + offset += sizeof(tOCTVC1_MAC_ADDRESS); + + { + int ulMac0, ulMac1; + unsigned int offs = offset; + ulMac0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulMac1 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_CPP_DEST_ENTRY[6], tvb, offset, + sizeof(tOCTVC1_MAC_ADDRESS), "","BridgeMacAddress: %02x:%02x:%02x:%02x:%02x:%02x", + (( ulMac0 & 0x0000FF00 ) >> 8 ), + ( ulMac0 & 0x000000FF ), + (( ulMac1 & 0xFF000000 ) >> 24 ), + (( ulMac1 & 0x00FF0000 ) >> 16 ), + (( ulMac1 & 0x0000FF00 ) >> 8 ), + ( ulMac1 & 0x000000FF ) ); + } + offset += sizeof(tOCTVC1_MAC_ADDRESS); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_CPP_TX_HDR_COMMON(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_CPP_TX_HDR_COMMON))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_TX_HDR_COMMON (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_CPP_TX_HDR_COMMON)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_CPP_TX_HDR_COMMON); + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_TX_HDR_COMMON[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_COMMON, ulHeaderType), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_TX_HDR_COMMON[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_COMMON, ulHeaderType); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_TX_HDR_COMMON[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_COMMON, ulHeaderLength), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_TX_HDR_COMMON[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_COMMON, ulHeaderLength); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_CPP_TX_HDR_ETHERNET(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_CPP_TX_HDR_ETHERNET))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_TX_HDR_ETHERNET (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_CPP_TX_HDR_ETHERNET)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_CPP_TX_HDR_ETHERNET); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_ETHERNET, CommonHeader), "CommonHeader:tOCTVC1_CPP_TX_HDR_COMMON"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CPP_TX_HDR_COMMON( 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_CPP_TX_HDR_ETHERNET[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_ETHERNET, ulEthertypeEncoding), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_TX_HDR_ETHERNET[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_ETHERNET, ulEthertypeEncoding); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_TX_HDR_ETHERNET[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_ETHERNET, ulEthertype), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_TX_HDR_ETHERNET[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_ETHERNET, ulEthertype); + + { + int ulMac0, ulMac1; + unsigned int offs = offset; + ulMac0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulMac1 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_CPP_TX_HDR_ETHERNET[3], tvb, offset, + sizeof(tOCTVC1_MAC_ADDRESS), "","SourceMacAddr: %02x:%02x:%02x:%02x:%02x:%02x", + (( ulMac0 & 0x0000FF00 ) >> 8 ), + ( ulMac0 & 0x000000FF ), + (( ulMac1 & 0xFF000000 ) >> 24 ), + (( ulMac1 & 0x00FF0000 ) >> 16 ), + (( ulMac1 & 0x0000FF00 ) >> 8 ), + ( ulMac1 & 0x000000FF ) ); + } + offset += sizeof(tOCTVC1_MAC_ADDRESS); + + { + int ulMac0, ulMac1; + unsigned int offs = offset; + ulMac0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulMac1 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_CPP_TX_HDR_ETHERNET[4], tvb, offset, + sizeof(tOCTVC1_MAC_ADDRESS), "","DestinationMacAddr: %02x:%02x:%02x:%02x:%02x:%02x", + (( ulMac0 & 0x0000FF00 ) >> 8 ), + ( ulMac0 & 0x000000FF ), + (( ulMac1 & 0xFF000000 ) >> 24 ), + (( ulMac1 & 0x00FF0000 ) >> 16 ), + (( ulMac1 & 0x0000FF00 ) >> 8 ), + ( ulMac1 & 0x000000FF ) ); + } + offset += sizeof(tOCTVC1_MAC_ADDRESS); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_CPP_TX_HDR_ETH_PQ(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_CPP_TX_HDR_ETH_PQ))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_TX_HDR_ETH_PQ (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_CPP_TX_HDR_ETH_PQ)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_CPP_TX_HDR_ETH_PQ); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_ETH_PQ, CommonHeader), "CommonHeader:tOCTVC1_CPP_TX_HDR_COMMON"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CPP_TX_HDR_COMMON( 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_CPP_TX_HDR_ETH_PQ[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_ETH_PQ, ulEthertypeEncoding), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_TX_HDR_ETH_PQ[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_ETH_PQ, ulEthertypeEncoding); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_TX_HDR_ETH_PQ[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_ETH_PQ, ulEthertype), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_TX_HDR_ETH_PQ[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_ETH_PQ, ulEthertype); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_TX_HDR_ETH_PQ[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_ETH_PQ, ulTci), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_TX_HDR_ETH_PQ[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_ETH_PQ, ulTci); + + { + int ulMac0, ulMac1; + unsigned int offs = offset; + ulMac0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulMac1 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_CPP_TX_HDR_ETH_PQ[4], tvb, offset, + sizeof(tOCTVC1_MAC_ADDRESS), "","SourceMacAddr: %02x:%02x:%02x:%02x:%02x:%02x", + (( ulMac0 & 0x0000FF00 ) >> 8 ), + ( ulMac0 & 0x000000FF ), + (( ulMac1 & 0xFF000000 ) >> 24 ), + (( ulMac1 & 0x00FF0000 ) >> 16 ), + (( ulMac1 & 0x0000FF00 ) >> 8 ), + ( ulMac1 & 0x000000FF ) ); + } + offset += sizeof(tOCTVC1_MAC_ADDRESS); + + { + int ulMac0, ulMac1; + unsigned int offs = offset; + ulMac0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulMac1 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_CPP_TX_HDR_ETH_PQ[5], tvb, offset, + sizeof(tOCTVC1_MAC_ADDRESS), "","DestinationMacAddr: %02x:%02x:%02x:%02x:%02x:%02x", + (( ulMac0 & 0x0000FF00 ) >> 8 ), + ( ulMac0 & 0x000000FF ), + (( ulMac1 & 0xFF000000 ) >> 24 ), + (( ulMac1 & 0x00FF0000 ) >> 16 ), + (( ulMac1 & 0x0000FF00 ) >> 8 ), + ( ulMac1 & 0x000000FF ) ); + } + offset += sizeof(tOCTVC1_MAC_ADDRESS); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_CPP_TX_HDR_LLC(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_CPP_TX_HDR_LLC))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_TX_HDR_LLC (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_CPP_TX_HDR_LLC)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_CPP_TX_HDR_LLC); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_LLC, CommonHeader), "CommonHeader:tOCTVC1_CPP_TX_HDR_COMMON"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CPP_TX_HDR_COMMON( 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_CPP_TX_HDR_LLC[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_LLC, ulLlcValue), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_TX_HDR_LLC[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_LLC, ulLlcValue); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_CPP_TX_HDR_NLPID(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_CPP_TX_HDR_NLPID))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_TX_HDR_NLPID (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_CPP_TX_HDR_NLPID)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_CPP_TX_HDR_NLPID); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_NLPID, CommonHeader), "CommonHeader:tOCTVC1_CPP_TX_HDR_COMMON"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CPP_TX_HDR_COMMON( 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_CPP_TX_HDR_NLPID[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_NLPID, ulNlpidValue), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_TX_HDR_NLPID[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_NLPID, ulNlpidValue); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_CPP_TX_HDR_SNAP(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_CPP_TX_HDR_SNAP))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_TX_HDR_SNAP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_CPP_TX_HDR_SNAP)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_CPP_TX_HDR_SNAP); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_SNAP, CommonHeader), "CommonHeader:tOCTVC1_CPP_TX_HDR_COMMON"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CPP_TX_HDR_COMMON( 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_CPP_TX_HDR_SNAP[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_SNAP, ulOuiValue), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_TX_HDR_SNAP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_SNAP, ulOuiValue); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_TX_HDR_SNAP[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_SNAP, ulPidValue), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_TX_HDR_SNAP[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_SNAP, ulPidValue); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_CPP_TX_HDR_IPV4(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_CPP_TX_HDR_IPV4))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_TX_HDR_IPV4 (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_CPP_TX_HDR_IPV4)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_CPP_TX_HDR_IPV4); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_IPV4, CommonHeader), "CommonHeader:tOCTVC1_CPP_TX_HDR_COMMON"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CPP_TX_HDR_COMMON( 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_CPP_TX_HDR_IPV4[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_IPV4, ulTypeOfService), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_TX_HDR_IPV4[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_IPV4, ulTypeOfService); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_TX_HDR_IPV4[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_IPV4, ulTimeToLive), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_TX_HDR_IPV4[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_IPV4, ulTimeToLive); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_TX_HDR_IPV4[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_IPV4, ulProtocol), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_TX_HDR_IPV4[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_IPV4, ulProtocol); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_TX_HDR_IPV4[4], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_IPV4, ulFlags), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_TX_HDR_IPV4[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_IPV4, ulFlags); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_TX_HDR_IPV4[5], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_IPV4, ulSourceAddr), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_TX_HDR_IPV4[5], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_IPV4, ulSourceAddr); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_TX_HDR_IPV4[6], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_IPV4, ulDestinationAddr), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_TX_HDR_IPV4[6], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_IPV4, ulDestinationAddr); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_TX_HDR_IPV4[7], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_IPV4, ulUdpChecksumAddr), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_TX_HDR_IPV4[7], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_IPV4, ulUdpChecksumAddr); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_TX_HDR_IPV4[8], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_IPV4, ulOptionsLength), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_TX_HDR_IPV4[8], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_IPV4, ulOptionsLength); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_IPV4, aulOptions), "aulOptions"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<1; 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_CPP_TX_HDR_IPV4[9], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_IPV4, aulOptions), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_CPP_TX_HDR_IPV4[9], tvb, offset, + 4, temp_data, "[%d]: 0x%08x", i, temp_data ); + } + offset+=4; + } + } + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_CPP_TX_HDR_IPV6(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_CPP_TX_HDR_IPV6))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_TX_HDR_IPV6 (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_CPP_TX_HDR_IPV6)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_CPP_TX_HDR_IPV6); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_IPV6, CommonHeader), "CommonHeader:tOCTVC1_CPP_TX_HDR_COMMON"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CPP_TX_HDR_COMMON( 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_CPP_TX_HDR_IPV6[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_IPV6, ulTrafficClass), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_TX_HDR_IPV6[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_IPV6, ulTrafficClass); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_TX_HDR_IPV6[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_IPV6, ulFlowLabel), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_TX_HDR_IPV6[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_IPV6, ulFlowLabel); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_TX_HDR_IPV6[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_IPV6, ulHopLimit), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_TX_HDR_IPV6[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_IPV6, ulHopLimit); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_IPV6, aulSourceAddr), "aulSourceAddr"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<4; 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_CPP_TX_HDR_IPV6[4], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_IPV6, aulSourceAddr), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_CPP_TX_HDR_IPV6[4], tvb, offset, + 4, temp_data, "[%d]: 0x%08x", i, temp_data ); + } + offset+=4; + } + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_IPV6, aulDestinationAddr), "aulDestinationAddr"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<4; 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_CPP_TX_HDR_IPV6[5], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_IPV6, aulDestinationAddr), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_CPP_TX_HDR_IPV6[5], tvb, offset, + 4, temp_data, "[%d]: 0x%08x", i, temp_data ); + } + offset+=4; + } + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_IPV6, aulUdpChecksumAddr), "aulUdpChecksumAddr"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<4; 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_CPP_TX_HDR_IPV6[6], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_IPV6, aulUdpChecksumAddr), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_CPP_TX_HDR_IPV6[6], tvb, offset, + 4, temp_data, "[%d]: 0x%08x", i, temp_data ); + } + offset+=4; + } + } + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_TX_HDR_IPV6[7], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_IPV6, ulNextHeader), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_TX_HDR_IPV6[7], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_IPV6, ulNextHeader); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_CPP_TX_HDR_UDP(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_CPP_TX_HDR_UDP))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_TX_HDR_UDP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_CPP_TX_HDR_UDP)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_CPP_TX_HDR_UDP); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_UDP, CommonHeader), "CommonHeader:tOCTVC1_CPP_TX_HDR_COMMON"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CPP_TX_HDR_COMMON( 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_CPP_TX_HDR_UDP[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_UDP, ulSourcePort), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_TX_HDR_UDP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_UDP, ulSourcePort); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_TX_HDR_UDP[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_UDP, ulDestinationPort), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_TX_HDR_UDP[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_UDP, ulDestinationPort); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_CPP_TX_HDR_RTP(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_CPP_TX_HDR_RTP))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_TX_HDR_RTP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_CPP_TX_HDR_RTP)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_CPP_TX_HDR_RTP); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_RTP, CommonHeader), "CommonHeader:tOCTVC1_CPP_TX_HDR_COMMON"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CPP_TX_HDR_COMMON( 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_CPP_TX_HDR_RTP[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_RTP, ulNumContributingSources), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_TX_HDR_RTP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_RTP, ulNumContributingSources); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_TX_HDR_RTP[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_RTP, ulSynchronizationSource), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_TX_HDR_RTP[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_RTP, ulSynchronizationSource); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_boolean_format_value(field_tree, ahf_tOCTVC1_CPP_TX_HDR_RTP[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_RTP, ulExtensionFlag), temp_data, "%s (0x%x)", pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_CPP_TX_HDR_RTP[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_RTP, ulExtensionFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_RTP, ulExtensionFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_TX_HDR_RTP[4], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_RTP, ulExtensionType), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_TX_HDR_RTP[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_RTP, ulExtensionType); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_TX_HDR_RTP[5], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_RTP, ulExtensionLength), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_TX_HDR_RTP[5], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_RTP, ulExtensionLength); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_RTP, aulCsrcs), "aulCsrcs"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<15; 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_CPP_TX_HDR_RTP[6], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_RTP, aulCsrcs), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_CPP_TX_HDR_RTP[6], tvb, offset, + 4, temp_data, "[%d]: 0x%08x", i, temp_data ); + } + offset+=4; + } + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_RTP, aulExtensions), "aulExtensions"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<1; 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_CPP_TX_HDR_RTP[7], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_TX_HDR_RTP, aulExtensions), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_CPP_TX_HDR_RTP[7], tvb, offset, + 4, temp_data, "[%d]: 0x%08x", i, temp_data ); + } + offset+=4; + } + } + } + + + return offset; + +}; + +/**************************************************************************** + CMD/RSP dissectors + ****************************************************************************/ + + +unsigned int dissect_tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD, hCppObj), "hCppObj: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD, ulCppObjPort); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD, hDestObj), "hDestObj: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD, ulDestObjPort); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_FIFO_ID_INVALID) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD[4], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD, ulDestObjFifoId),temp_data, "cOCTVC1_FIFO_ID_INVALID (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD[4], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD, ulDestObjFifoId); + + { + int ulMac0, ulMac1; + unsigned int offs = offset; + ulMac0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulMac1 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD[5], tvb, offset, + sizeof(tOCTVC1_MAC_ADDRESS), "","DestMacAddress: %02x:%02x:%02x:%02x:%02x:%02x", + (( ulMac0 & 0x0000FF00 ) >> 8 ), + ( ulMac0 & 0x000000FF ), + (( ulMac1 & 0xFF000000 ) >> 24 ), + (( ulMac1 & 0x00FF0000 ) >> 16 ), + (( ulMac1 & 0x0000FF00 ) >> 8 ), + ( ulMac1 & 0x000000FF ) ); + } + offset += sizeof(tOCTVC1_MAC_ADDRESS); + + { + int ulMac0, ulMac1; + unsigned int offs = offset; + ulMac0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulMac1 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD[6], tvb, offset, + sizeof(tOCTVC1_MAC_ADDRESS), "","SrcMacAddress: %02x:%02x:%02x:%02x:%02x:%02x", + (( ulMac0 & 0x0000FF00 ) >> 8 ), + ( ulMac0 & 0x000000FF ), + (( ulMac1 & 0xFF000000 ) >> 24 ), + (( ulMac1 & 0x00FF0000 ) >> 16 ), + (( ulMac1 & 0x0000FF00 ) >> 8 ), + ( ulMac1 & 0x000000FF ) ); + } + offset += sizeof(tOCTVC1_MAC_ADDRESS); + + { + int ulMac0, ulMac1; + unsigned int offs = offset; + ulMac0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulMac1 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD[7], tvb, offset, + sizeof(tOCTVC1_MAC_ADDRESS), "","BridgeMacAddress: %02x:%02x:%02x:%02x:%02x:%02x", + (( ulMac0 & 0x0000FF00 ) >> 8 ), + ( ulMac0 & 0x000000FF ), + (( ulMac1 & 0xFF000000 ) >> 24 ), + (( ulMac1 & 0x00FF0000 ) >> 16 ), + (( ulMac1 & 0x0000FF00 ) >> 8 ), + ( ulMac1 & 0x000000FF ) ); + } + offset += sizeof(tOCTVC1_MAC_ADDRESS); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_CPP_MSG_MODULE_ADD_DEST_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_CPP_MSG_MODULE_ADD_DEST_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_MODULE_ADD_DEST_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_CPP_MSG_MODULE_ADD_DEST_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_MODULE_ADD_DEST_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_ADD_DEST_RSP, hCppObj), "hCppObj: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, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD, ulRemoveMode); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD, hCppObj), "hCppObj: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD, ulCppObjPort); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD, hDestObj), "hDestObj: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD, ulDestObjPort); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_FIFO_ID_INVALID) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD[5], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD, ulDestObjFifoId),temp_data, "cOCTVC1_FIFO_ID_INVALID (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD[5], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD, ulDestObjFifoId); + + { + int ulMac0, ulMac1; + unsigned int offs = offset; + ulMac0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulMac1 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD[6], tvb, offset, + sizeof(tOCTVC1_MAC_ADDRESS), "","DestMacAddress: %02x:%02x:%02x:%02x:%02x:%02x", + (( ulMac0 & 0x0000FF00 ) >> 8 ), + ( ulMac0 & 0x000000FF ), + (( ulMac1 & 0xFF000000 ) >> 24 ), + (( ulMac1 & 0x00FF0000 ) >> 16 ), + (( ulMac1 & 0x0000FF00 ) >> 8 ), + ( ulMac1 & 0x000000FF ) ); + } + offset += sizeof(tOCTVC1_MAC_ADDRESS); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_RSP, ulNumDestRemoved); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD, ulGetType); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD, hCppObj), "hCppObj: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD, ulCppObjPort); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD, hDestObj), "hDestObj: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD, ulDestObjPort); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_FIFO_ID_INVALID) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD[5], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD, ulDestObjFifoId),temp_data, "cOCTVC1_FIFO_ID_INVALID (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD[5], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD, ulDestObjFifoId); + + { + int ulMac0, ulMac1; + unsigned int offs = offset; + ulMac0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulMac1 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD[6], tvb, offset, + sizeof(tOCTVC1_MAC_ADDRESS), "","DestMacAddress: %02x:%02x:%02x:%02x:%02x:%02x", + (( ulMac0 & 0x0000FF00 ) >> 8 ), + ( ulMac0 & 0x000000FF ), + (( ulMac1 & 0xFF000000 ) >> 24 ), + (( ulMac1 & 0x00FF0000 ) >> 16 ), + (( ulMac1 & 0x0000FF00 ) >> 8 ), + ( ulMac1 & 0x000000FF ) ); + } + offset += sizeof(tOCTVC1_MAC_ADDRESS); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP, ulMoreFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP, ulMoreFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP, ulNumDestEntry); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP, aDestEntry), "aDestEntry:tOCTVC1_CPP_DEST_ENTRY"); + { + 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_CPP_DEST_ENTRY), "[%d]:", i); + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CPP_DEST_ENTRY( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_CMD[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_CMD, ulResetStatsFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_CMD, ulResetStatsFlag); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP, ulControlRxPktCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP, ulDataRxPktCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP, ulControlBadHdrLenCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP, ulDataBadHdrLenCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP, ulInvalidPktFormatCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP[5], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP, ulNoFwdPktCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP[6], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP, ulCppCmdOverflowCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP[7], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP, ulTxPktQueueOverflowFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP, ulTxPktQueueOverflowFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP[8], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP, ulTxPktQueueOverflowFifoPoolId); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP[9], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP, ulTxPktQueueOverflowFifoIndex); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP[10], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP, ulRxFifoResynchFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP, ulRxFifoResynchFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP[11], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP, ulRxFifoResynchFifoPoolId); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP[12], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP, ulRxFifoResynchFifoIndex); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_CPP_MSG_MODULE_STATS_ETH_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_CPP_MSG_MODULE_STATS_ETH_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_MODULE_STATS_ETH_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_CPP_MSG_MODULE_STATS_ETH_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_MODULE_STATS_ETH_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_STATS_ETH_CMD[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_STATS_ETH_CMD, ulEthPort); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP, ulEthPort); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP, ulEthRxPktCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP, ulEthTxPktCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP, ulEthRxByteCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP, ulEthTxByteCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP[5], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP, ulEthBadHdrCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP[6], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP, ulEthBadHdrLenCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP[7], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP, ulEth8023BadLlcOuiCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP[8], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP, ulRxFifoReSyncCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP[9], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP, ulTxPktQueueOverflowCnt); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_CPP_MSG_MODULE_GET_CONFIG_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_CPP_MSG_MODULE_GET_CONFIG_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_MODULE_GET_CONFIG_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_CPP_MSG_MODULE_GET_CONFIG_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_MODULE_GET_CONFIG_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_MSG_MODULE_GET_CONFIG_RSP, Static), "Static:tOCTVC1_CPP_CONFIG_STATIC"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CPP_CONFIG_STATIC( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_CPP_MSG_FORWARD_OPEN_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_CPP_MSG_FORWARD_OPEN_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_FORWARD_OPEN_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_CPP_MSG_FORWARD_OPEN_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_FORWARD_OPEN_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_MSG_FORWARD_OPEN_CMD, hDestObj), "hDestObj: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_FORWARD_OPEN_CMD[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_FORWARD_OPEN_CMD, ulDestObjPort); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_FIFO_ID_INVALID) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_MSG_FORWARD_OPEN_CMD[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_MSG_FORWARD_OPEN_CMD, ulDestObjFifoId),temp_data, "cOCTVC1_FIFO_ID_INVALID (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_FORWARD_OPEN_CMD[2], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_FORWARD_OPEN_CMD, ulDestObjFifoId); + + { + int ulMac0, ulMac1; + unsigned int offs = offset; + ulMac0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulMac1 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_CPP_MSG_FORWARD_OPEN_CMD[3], tvb, offset, + sizeof(tOCTVC1_MAC_ADDRESS), "","DestMacAddress: %02x:%02x:%02x:%02x:%02x:%02x", + (( ulMac0 & 0x0000FF00 ) >> 8 ), + ( ulMac0 & 0x000000FF ), + (( ulMac1 & 0xFF000000 ) >> 24 ), + (( ulMac1 & 0x00FF0000 ) >> 16 ), + (( ulMac1 & 0x0000FF00 ) >> 8 ), + ( ulMac1 & 0x000000FF ) ); + } + offset += sizeof(tOCTVC1_MAC_ADDRESS); + + { + int ulMac0, ulMac1; + unsigned int offs = offset; + ulMac0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulMac1 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_CPP_MSG_FORWARD_OPEN_CMD[4], tvb, offset, + sizeof(tOCTVC1_MAC_ADDRESS), "","SrcMacAddress: %02x:%02x:%02x:%02x:%02x:%02x", + (( ulMac0 & 0x0000FF00 ) >> 8 ), + ( ulMac0 & 0x000000FF ), + (( ulMac1 & 0xFF000000 ) >> 24 ), + (( ulMac1 & 0x00FF0000 ) >> 16 ), + (( ulMac1 & 0x0000FF00 ) >> 8 ), + ( ulMac1 & 0x000000FF ) ); + } + offset += sizeof(tOCTVC1_MAC_ADDRESS); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_CPP_MSG_FORWARD_OPEN_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_CPP_MSG_FORWARD_OPEN_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_FORWARD_OPEN_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_CPP_MSG_FORWARD_OPEN_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_FORWARD_OPEN_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_MSG_FORWARD_OPEN_RSP, hForward), "hForward: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_FORWARD_OPEN_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_FORWARD_OPEN_RSP, ulFifoId); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_CPP_MSG_FORWARD_CLOSE_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_CPP_MSG_FORWARD_CLOSE_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_FORWARD_CLOSE_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_CPP_MSG_FORWARD_CLOSE_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_FORWARD_CLOSE_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_MSG_FORWARD_CLOSE_CMD, hForward), "hForward: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, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_CPP_MSG_FORWARD_CLOSE_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_CPP_MSG_FORWARD_CLOSE_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_FORWARD_CLOSE_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_CPP_MSG_FORWARD_CLOSE_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_FORWARD_CLOSE_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_MSG_FORWARD_CLOSE_RSP, hForward), "hForward: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, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_CPP_MSG_FORWARD_STATS_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_CPP_MSG_FORWARD_STATS_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_FORWARD_STATS_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_CPP_MSG_FORWARD_STATS_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_FORWARD_STATS_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_MSG_FORWARD_STATS_CMD, ObjectGet), "ObjectGet:tOCTVC1_CURSOR_HANDLE_GET"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_GET( tvb, pinfo, sub_tree2, offset, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_CPP_MSG_FORWARD_STATS_CMD[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_MSG_FORWARD_STATS_CMD, ulResetStatsFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_FORWARD_STATS_CMD, ulResetStatsFlag); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_CPP_MSG_FORWARD_STATS_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_CPP_MSG_FORWARD_STATS_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_FORWARD_STATS_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_CPP_MSG_FORWARD_STATS_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_FORWARD_STATS_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_MSG_FORWARD_STATS_RSP, ObjectGet), "ObjectGet:tOCTVC1_CURSOR_HANDLE_GET"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_GET( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_CPP_MSG_FORWARD_INFO_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_CPP_MSG_FORWARD_INFO_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_FORWARD_INFO_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_CPP_MSG_FORWARD_INFO_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_FORWARD_INFO_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_MSG_FORWARD_INFO_CMD, ObjectGet), "ObjectGet:tOCTVC1_CURSOR_HANDLE_GET"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_GET( tvb, pinfo, sub_tree2, offset, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_FORWARD_INFO_CMD[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_FORWARD_INFO_CMD, ulGetType); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_MSG_FORWARD_INFO_CMD, hDestObj), "hDestObj: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_FORWARD_INFO_CMD[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_FORWARD_INFO_CMD, ulDestObjPort); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_FIFO_ID_INVALID) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_CPP_MSG_FORWARD_INFO_CMD[4], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_MSG_FORWARD_INFO_CMD, ulDestObjFifoId),temp_data, "cOCTVC1_FIFO_ID_INVALID (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_FORWARD_INFO_CMD[4], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_FORWARD_INFO_CMD, ulDestObjFifoId); + + { + int ulMac0, ulMac1; + unsigned int offs = offset; + ulMac0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulMac1 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_CPP_MSG_FORWARD_INFO_CMD[5], tvb, offset, + sizeof(tOCTVC1_MAC_ADDRESS), "","DestMacAddress: %02x:%02x:%02x:%02x:%02x:%02x", + (( ulMac0 & 0x0000FF00 ) >> 8 ), + ( ulMac0 & 0x000000FF ), + (( ulMac1 & 0xFF000000 ) >> 24 ), + (( ulMac1 & 0x00FF0000 ) >> 16 ), + (( ulMac1 & 0x0000FF00 ) >> 8 ), + ( ulMac1 & 0x000000FF ) ); + } + offset += sizeof(tOCTVC1_MAC_ADDRESS); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_CPP_MSG_FORWARD_INFO_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_CPP_MSG_FORWARD_INFO_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_FORWARD_INFO_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_CPP_MSG_FORWARD_INFO_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CPP_MSG_FORWARD_INFO_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_MSG_FORWARD_INFO_RSP, ObjectGet), "ObjectGet:tOCTVC1_CURSOR_HANDLE_GET"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_GET( tvb, pinfo, sub_tree2, offset, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_FORWARD_INFO_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_FORWARD_INFO_RSP, ulFifoId); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_CPP_MSG_FORWARD_INFO_RSP[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_MSG_FORWARD_INFO_RSP, ulMoreFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_FORWARD_INFO_RSP, ulMoreFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CPP_MSG_FORWARD_INFO_RSP[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CPP_MSG_FORWARD_INFO_RSP, ulNumDestEntry); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_CPP_MSG_FORWARD_INFO_RSP, aDestEntry), "aDestEntry:tOCTVC1_CPP_DEST_ENTRY"); + { + 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_CPP_DEST_ENTRY), "[%d]:", i); + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CPP_DEST_ENTRY( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + } + } + + + return 0; + +}; +/**************************************************************************** + MODULE REGISTERED EXPORTED FUNCTION + ****************************************************************************/ + +void ws_register_OCTVC1_CPP(void) +{ + /**************************************************************************** + Register Common struct + ****************************************************************************/ + register_tOCTVC1_CPP_CONFIG_STATIC(); + register_tOCTVC1_CPP_RX_RTP_PROFILE_ENTRY(); + register_tOCTVC1_CPP_TX_RTP_PROFILE_ENTRY(); + register_tOCTVC1_CPP_DEST_ENTRY(); + register_tOCTVC1_CPP_TX_HDR_COMMON(); + register_tOCTVC1_CPP_TX_HDR_ETHERNET(); + register_tOCTVC1_CPP_TX_HDR_ETH_PQ(); + register_tOCTVC1_CPP_TX_HDR_LLC(); + register_tOCTVC1_CPP_TX_HDR_NLPID(); + register_tOCTVC1_CPP_TX_HDR_SNAP(); + register_tOCTVC1_CPP_TX_HDR_IPV4(); + register_tOCTVC1_CPP_TX_HDR_IPV6(); + register_tOCTVC1_CPP_TX_HDR_UDP(); + register_tOCTVC1_CPP_TX_HDR_RTP(); + + /**************************************************************************** + CMD/RSP Registered + ****************************************************************************/ + register_tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD(); + register_tOCTVC1_CPP_MSG_MODULE_ADD_DEST_RSP(); + register_tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD(); + register_tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_RSP(); + register_tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD(); + register_tOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP(); + register_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_CMD(); + register_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP(); + register_tOCTVC1_CPP_MSG_MODULE_STATS_ETH_CMD(); + register_tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP(); + register_tOCTVC1_CPP_MSG_MODULE_GET_CONFIG_RSP(); + register_tOCTVC1_CPP_MSG_FORWARD_OPEN_CMD(); + register_tOCTVC1_CPP_MSG_FORWARD_OPEN_RSP(); + register_tOCTVC1_CPP_MSG_FORWARD_CLOSE_CMD(); + register_tOCTVC1_CPP_MSG_FORWARD_CLOSE_RSP(); + register_tOCTVC1_CPP_MSG_FORWARD_STATS_CMD(); + register_tOCTVC1_CPP_MSG_FORWARD_STATS_RSP(); + register_tOCTVC1_CPP_MSG_FORWARD_INFO_CMD(); + register_tOCTVC1_CPP_MSG_FORWARD_INFO_RSP(); + +} + +/**************************************************************************** + MODULE DISSECTOR FUNCTIONS + ****************************************************************************/ +int ws_dissect_OCTVC1_CPP_CMD( guint32 CID, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ) +{ + if( tree ) + { + switch( CID ) { + case cOCTVC1_CPP_MSG_MODULE_ADD_DEST_CID: return dissect_tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CID: return dissect_tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_CPP_MSG_MODULE_INFO_DEST_CID: return dissect_tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_CID: return dissect_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_CPP_MSG_MODULE_STATS_ETH_CID: return dissect_tOCTVC1_CPP_MSG_MODULE_STATS_ETH_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_CPP_MSG_MODULE_GET_CONFIG_CID: return 0; break; + case cOCTVC1_CPP_MSG_FORWARD_OPEN_CID: return dissect_tOCTVC1_CPP_MSG_FORWARD_OPEN_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_CPP_MSG_FORWARD_CLOSE_CID: return dissect_tOCTVC1_CPP_MSG_FORWARD_CLOSE_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_CPP_MSG_FORWARD_STATS_CID: return dissect_tOCTVC1_CPP_MSG_FORWARD_STATS_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_CPP_MSG_FORWARD_INFO_CID: return dissect_tOCTVC1_CPP_MSG_FORWARD_INFO_CMD( tvb, pinfo, tree, 0 ); break; + default: return 1; + } + } + return 0; + +} +int ws_dissect_OCTVC1_CPP_RSP( guint32 CID, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ) +{ + if( tree ) + { + switch( CID ) { + case cOCTVC1_CPP_MSG_MODULE_ADD_DEST_CID: return dissect_tOCTVC1_CPP_MSG_MODULE_ADD_DEST_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CID: return dissect_tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_CPP_MSG_MODULE_INFO_DEST_CID: return dissect_tOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_CID: return dissect_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_CPP_MSG_MODULE_STATS_ETH_CID: return dissect_tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_CPP_MSG_MODULE_GET_CONFIG_CID: return dissect_tOCTVC1_CPP_MSG_MODULE_GET_CONFIG_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_CPP_MSG_FORWARD_OPEN_CID: return dissect_tOCTVC1_CPP_MSG_FORWARD_OPEN_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_CPP_MSG_FORWARD_CLOSE_CID: return dissect_tOCTVC1_CPP_MSG_FORWARD_CLOSE_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_CPP_MSG_FORWARD_STATS_CID: return dissect_tOCTVC1_CPP_MSG_FORWARD_STATS_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_CPP_MSG_FORWARD_INFO_CID: return dissect_tOCTVC1_CPP_MSG_FORWARD_INFO_RSP( tvb, pinfo, tree, 0 ); break; + default: return 1; + } + } + return 0; + +} +int ws_dissect_OCTVC1_CPP_EVT( guint32 CID, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ) +{ + if( tree ) + { + switch( CID ) { + default: return 1; + } + } + return 0; + +} + +/**************************************************************************** + MODULE DISSECTOR EXPORTED FUNCTION + ****************************************************************************/ + +int ws_dissect_OCTVC1_CPP( guint8 message_type, guint32 CID, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ) +{ + if (message_type == cOCTVC1_MSG_TYPE_RESPONSE) + return ws_dissect_OCTVC1_CPP_RSP( CID, tvb, pinfo, tree); + if (message_type == cOCTVC1_MSG_TYPE_COMMAND) + return ws_dissect_OCTVC1_CPP_CMD( CID, tvb, pinfo, tree); + if (message_type == cOCTVC1_MSG_TYPE_NOTIFICATION ) + return ws_dissect_OCTVC1_CPP_EVT( CID, tvb, pinfo, tree); + else + return 1; + +} + diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_module_ctrl.c b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_module_ctrl.c new file mode 100644 index 0000000..54fe328 --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_module_ctrl.c @@ -0,0 +1,202 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: octvc1_module_ctrl.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 + + +/**************************************************************************** + Event Registered + ****************************************************************************/ + +int ahf_tOCTVC1_CTRL_MSG_MODULE_REJECT_SPV[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_CTRL_MSG_MODULE_REJECT_SPV; + +void register_tOCTVC1_CTRL_MSG_MODULE_REJECT_SPV(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_CTRL_MSG_MODULE_REJECT_SPV[0], + { "ulExpectedTransactionId", "octvc1.ctrl.module.reject.ulexpectedtransactionid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulExpectedTransactionId",HFILL } + + }, + { + &ahf_tOCTVC1_CTRL_MSG_MODULE_REJECT_SPV[1], + { "ulRejectedCmdId", "octvc1.ctrl.module.reject.ulrejectedcmdid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRejectedCmdId",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_CTRL_MSG_MODULE_REJECT_SPV.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +/**************************************************************************** + CMD/RSP Registered + ****************************************************************************/ + +/**************************************************************************** + Event dissectors + ****************************************************************************/ + + +unsigned int dissect_tOCTVC1_CTRL_MSG_MODULE_REJECT_SPV(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_CTRL_MSG_MODULE_REJECT_SPV)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CTRL_MSG_MODULE_REJECT_SPV (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_CTRL_MSG_MODULE_REJECT_SPV)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_CTRL_MSG_MODULE_REJECT_SPV (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CTRL_MSG_MODULE_REJECT_SPV[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CTRL_MSG_MODULE_REJECT_SPV, ulExpectedTransactionId); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_CTRL_MSG_MODULE_REJECT_SPV[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_CTRL_MSG_MODULE_REJECT_SPV, ulRejectedCmdId); + + } + + + return 0; + +}; + +/**************************************************************************** + CMD/RSP dissectors + ****************************************************************************/ +/**************************************************************************** + MODULE REGISTERED EXPORTED FUNCTION + ****************************************************************************/ + +void ws_register_OCTVC1_CTRL(void) +{ + /**************************************************************************** + Register Common struct + ****************************************************************************/ + + /**************************************************************************** + CMD/RSP Registered + ****************************************************************************/ + + /**************************************************************************** + Event Registered + ****************************************************************************/ + +} + +/**************************************************************************** + MODULE DISSECTOR FUNCTIONS + ****************************************************************************/ +int ws_dissect_OCTVC1_CTRL_CMD( guint32 CID, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ) +{ + if( tree ) + { + switch( CID ) { + default: return 1; + } + } + return 0; + +} +int ws_dissect_OCTVC1_CTRL_RSP( guint32 CID, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ) +{ + if( tree ) + { + switch( CID ) { + default: return 1; + } + } + return 0; + +} +int ws_dissect_OCTVC1_CTRL_EVT( guint32 CID, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ) +{ + if( tree ) + { + switch( CID ) { + default: return 1; + } + } + return 0; + +} + +/**************************************************************************** + MODULE DISSECTOR EXPORTED FUNCTION + ****************************************************************************/ + +int ws_dissect_OCTVC1_CTRL( guint8 message_type, guint32 CID, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ) +{ + if (message_type == cOCTVC1_MSG_TYPE_RESPONSE) + return ws_dissect_OCTVC1_CTRL_RSP( CID, tvb, pinfo, tree); + if (message_type == cOCTVC1_MSG_TYPE_COMMAND) + return ws_dissect_OCTVC1_CTRL_CMD( CID, tvb, pinfo, tree); + if (message_type == cOCTVC1_MSG_TYPE_NOTIFICATION ) + return ws_dissect_OCTVC1_CTRL_EVT( CID, tvb, pinfo, tree); + else + return 1; + +} + diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_module_gsm.c b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_module_gsm.c new file mode 100644 index 0000000..91616fc --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_module_gsm.c @@ -0,0 +1,7362 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: octvc1_module_gsm.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_GSM_TRX_BAND_HOPPING_TSC_MASK[] = + { + { cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_TRX_ID_BIT0, "cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_TRX_ID_BIT0" }, + { cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_TRX_ID_BIT1, "cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_TRX_ID_BIT1" }, + { cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_TRX_ID_BIT2, "cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_TRX_ID_BIT2" }, + { cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_TRX_ID_BIT3, "cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_TRX_ID_BIT3" }, + { cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_TRX_ID_BIT4, "cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_TRX_ID_BIT4" }, + { cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_TRX_ID_BIT5, "cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_TRX_ID_BIT5" }, + { cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_BAND_BIT0, "cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_BAND_BIT0" }, + { cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_BAND_BIT1, "cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_BAND_BIT1" }, + { cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_BAND_BIT2, "cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_BAND_BIT2" }, + { cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_BAND_BIT3, "cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_BAND_BIT3" }, + { cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_HOPPING, "cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_HOPPING" }, + { cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_TSC_BIT0, "cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_TSC_BIT0" }, + { cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_TSC_BIT1, "cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_TSC_BIT1" }, + { cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_TSC_BIT2, "cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_TSC_BIT2" }, + { cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_TSC_BIT3, "cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_TSC_BIT3" }, + { cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_TSC_BIT4, "cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_TSC_BIT4" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_GSM_SAPI_ENUM[] = + { + { cOCTVC1_GSM_SAPI_ENUM_IDLE, "cOCTVC1_GSM_SAPI_ENUM_IDLE" }, + { cOCTVC1_GSM_SAPI_ENUM_FCCH, "cOCTVC1_GSM_SAPI_ENUM_FCCH" }, + { cOCTVC1_GSM_SAPI_ENUM_SCH, "cOCTVC1_GSM_SAPI_ENUM_SCH" }, + { cOCTVC1_GSM_SAPI_ENUM_SACCH, "cOCTVC1_GSM_SAPI_ENUM_SACCH" }, + { cOCTVC1_GSM_SAPI_ENUM_SDCCH, "cOCTVC1_GSM_SAPI_ENUM_SDCCH" }, + { cOCTVC1_GSM_SAPI_ENUM_BCCH, "cOCTVC1_GSM_SAPI_ENUM_BCCH" }, + { cOCTVC1_GSM_SAPI_ENUM_PCH_AGCH, "cOCTVC1_GSM_SAPI_ENUM_PCH_AGCH" }, + { cOCTVC1_GSM_SAPI_ENUM_CBCH, "cOCTVC1_GSM_SAPI_ENUM_CBCH" }, + { cOCTVC1_GSM_SAPI_ENUM_RACH, "cOCTVC1_GSM_SAPI_ENUM_RACH" }, + { cOCTVC1_GSM_SAPI_ENUM_TCHF, "cOCTVC1_GSM_SAPI_ENUM_TCHF" }, + { cOCTVC1_GSM_SAPI_ENUM_FACCHF, "cOCTVC1_GSM_SAPI_ENUM_FACCHF" }, + { cOCTVC1_GSM_SAPI_ENUM_TCHH, "cOCTVC1_GSM_SAPI_ENUM_TCHH" }, + { cOCTVC1_GSM_SAPI_ENUM_FACCHH, "cOCTVC1_GSM_SAPI_ENUM_FACCHH" }, + { cOCTVC1_GSM_SAPI_ENUM_NCH, "cOCTVC1_GSM_SAPI_ENUM_NCH" }, + { cOCTVC1_GSM_SAPI_ENUM_PDTCH, "cOCTVC1_GSM_SAPI_ENUM_PDTCH" }, + { cOCTVC1_GSM_SAPI_ENUM_PACCH, "cOCTVC1_GSM_SAPI_ENUM_PACCH" }, + { cOCTVC1_GSM_SAPI_ENUM_PBCCH, "cOCTVC1_GSM_SAPI_ENUM_PBCCH" }, + { cOCTVC1_GSM_SAPI_ENUM_PAGCH, "cOCTVC1_GSM_SAPI_ENUM_PAGCH" }, + { cOCTVC1_GSM_SAPI_ENUM_PPCH, "cOCTVC1_GSM_SAPI_ENUM_PPCH" }, + { cOCTVC1_GSM_SAPI_ENUM_PNCH, "cOCTVC1_GSM_SAPI_ENUM_PNCH" }, + { cOCTVC1_GSM_SAPI_ENUM_PTCCH, "cOCTVC1_GSM_SAPI_ENUM_PTCCH" }, + { cOCTVC1_GSM_SAPI_ENUM_PRACH, "cOCTVC1_GSM_SAPI_ENUM_PRACH" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_GSM_Channel_Type_ENUM[] = + { + { cOCTVC1_GSM_Channel_Type_ENUM_CCCH, "cOCTVC1_GSM_Channel_Type_ENUM_CCCH" }, + { cOCTVC1_GSM_Channel_Type_ENUM_CCCH4, "cOCTVC1_GSM_Channel_Type_ENUM_CCCH4" }, + { cOCTVC1_GSM_Channel_Type_ENUM_SDCCH, "cOCTVC1_GSM_Channel_Type_ENUM_SDCCH" }, + { cOCTVC1_GSM_Channel_Type_ENUM_TCH_F, "cOCTVC1_GSM_Channel_Type_ENUM_TCH_F" }, + { cOCTVC1_GSM_Channel_Type_ENUM_TCH_H, "cOCTVC1_GSM_Channel_Type_ENUM_TCH_H" }, + { cOCTVC1_GSM_Channel_Type_ENUM_PDTCH, "cOCTVC1_GSM_Channel_Type_ENUM_PDTCH" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_GSM_CIPHERING_ENUM[] = + { + { cOCTVC1_GSM_CIPHERING_ENUM_A5_0, "cOCTVC1_GSM_CIPHERING_ENUM_A5_0" }, + { cOCTVC1_GSM_CIPHERING_ENUM_A5_1, "cOCTVC1_GSM_CIPHERING_ENUM_A5_1" }, + { cOCTVC1_GSM_CIPHERING_ENUM_A5_2, "cOCTVC1_GSM_CIPHERING_ENUM_A5_2" }, + { cOCTVC1_GSM_CIPHERING_ENUM_A5_3, "cOCTVC1_GSM_CIPHERING_ENUM_A5_3" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_GSM_LOGICAL_CHANNEL_ENUM[] = + { + { cOCTVC1_GSM_LOGICAL_CHANNEL_ENUM_EMPTY, "cOCTVC1_GSM_LOGICAL_CHANNEL_ENUM_EMPTY" }, + { cOCTVC1_GSM_LOGICAL_CHANNEL_ENUM_TCHF, "cOCTVC1_GSM_LOGICAL_CHANNEL_ENUM_TCHF" }, + { cOCTVC1_GSM_LOGICAL_CHANNEL_ENUM_TCHH, "cOCTVC1_GSM_LOGICAL_CHANNEL_ENUM_TCHH" }, + { cOCTVC1_GSM_LOGICAL_CHANNEL_ENUM_FCCH_SCH_BCCH_CCCH, "cOCTVC1_GSM_LOGICAL_CHANNEL_ENUM_FCCH_SCH_BCCH_CCCH" }, + { cOCTVC1_GSM_LOGICAL_CHANNEL_ENUM_FCCH_SCH_BCCH_CCCH_SDCCH_SACCH, "cOCTVC1_GSM_LOGICAL_CHANNEL_ENUM_FCCH_SCH_BCCH_CCCH_SDCCH_SACCH" }, + { cOCTVC1_GSM_LOGICAL_CHANNEL_ENUM_SDCCH_SACCH, "cOCTVC1_GSM_LOGICAL_CHANNEL_ENUM_SDCCH_SACCH" }, + { cOCTVC1_GSM_LOGICAL_CHANNEL_ENUM_PDTCH_PACCH_PTCCH, "cOCTVC1_GSM_LOGICAL_CHANNEL_ENUM_PDTCH_PACCH_PTCCH" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_GSM_AMR_CODEC_ENUM[] = + { + { cOCTVC1_GSM_AMR_CODEC_ENUM_RATE_4_75, "cOCTVC1_GSM_AMR_CODEC_ENUM_RATE_4_75" }, + { cOCTVC1_GSM_AMR_CODEC_ENUM_RATE_5_15, "cOCTVC1_GSM_AMR_CODEC_ENUM_RATE_5_15" }, + { cOCTVC1_GSM_AMR_CODEC_ENUM_RATE_5_90, "cOCTVC1_GSM_AMR_CODEC_ENUM_RATE_5_90" }, + { cOCTVC1_GSM_AMR_CODEC_ENUM_RATE_6_70, "cOCTVC1_GSM_AMR_CODEC_ENUM_RATE_6_70" }, + { cOCTVC1_GSM_AMR_CODEC_ENUM_RATE_7_40, "cOCTVC1_GSM_AMR_CODEC_ENUM_RATE_7_40" }, + { cOCTVC1_GSM_AMR_CODEC_ENUM_RATE_7_95, "cOCTVC1_GSM_AMR_CODEC_ENUM_RATE_7_95" }, + { cOCTVC1_GSM_AMR_CODEC_ENUM_RATE_10_2, "cOCTVC1_GSM_AMR_CODEC_ENUM_RATE_10_2" }, + { cOCTVC1_GSM_AMR_CODEC_ENUM_RATE_12_2, "cOCTVC1_GSM_AMR_CODEC_ENUM_RATE_12_2" }, + { cOCTVC1_GSM_AMR_CODEC_ENUM_RATE_Unset, "cOCTVC1_GSM_AMR_CODEC_ENUM_RATE_Unset" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_GSM_BURST_ENUM[] = + { + { cOCTVC1_GSM_BURST_ENUM_Synchronization, "cOCTVC1_GSM_BURST_ENUM_Synchronization" }, + { cOCTVC1_GSM_BURST_ENUM_Normal, "cOCTVC1_GSM_BURST_ENUM_Normal" }, + { cOCTVC1_GSM_BURST_ENUM_Dummy, "cOCTVC1_GSM_BURST_ENUM_Dummy" }, + { cOCTVC1_GSM_BURST_ENUM_Normal_8PSK, "cOCTVC1_GSM_BURST_ENUM_Normal_8PSK" }, + { cOCTVC1_GSM_BURST_ENUM_Access_TSC0, "cOCTVC1_GSM_BURST_ENUM_Access_TSC0" }, + { cOCTVC1_GSM_BURST_ENUM_Access_TSC1, "cOCTVC1_GSM_BURST_ENUM_Access_TSC1" }, + { cOCTVC1_GSM_BURST_ENUM_Access_TSC2, "cOCTVC1_GSM_BURST_ENUM_Access_TSC2" }, + { cOCTVC1_GSM_BURST_ENUM_Frequency_Correction, "cOCTVC1_GSM_BURST_ENUM_Frequency_Correction" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_GSM_DIR_ENUM[] = + { + { cOCTVC1_GSM_DIR_ENUM_NO_PATH, "cOCTVC1_GSM_DIR_ENUM_NO_PATH" }, + { cOCTVC1_GSM_DIR_ENUM_RX_MS_BTS, "cOCTVC1_GSM_DIR_ENUM_RX_MS_BTS" }, + { cOCTVC1_GSM_DIR_ENUM_RX_BTS_MS, "cOCTVC1_GSM_DIR_ENUM_RX_BTS_MS" }, + { cOCTVC1_GSM_DIR_ENUM_TX_BTS_MS, "cOCTVC1_GSM_DIR_ENUM_TX_BTS_MS" }, + { cOCTVC1_GSM_DIR_ENUM_TX_MS_BTS, "cOCTVC1_GSM_DIR_ENUM_TX_MS_BTS" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_GSM_BAND_ENUM[] = + { + { cOCTVC1_GSM_BAND_ENUM_GSM450, "cOCTVC1_GSM_BAND_ENUM_GSM450" }, + { cOCTVC1_GSM_BAND_ENUM_GSM850, "cOCTVC1_GSM_BAND_ENUM_GSM850" }, + { cOCTVC1_GSM_BAND_ENUM_GSM900, "cOCTVC1_GSM_BAND_ENUM_GSM900" }, + { cOCTVC1_GSM_BAND_ENUM_GSM1800, "cOCTVC1_GSM_BAND_ENUM_GSM1800" }, + { cOCTVC1_GSM_BAND_ENUM_GSM1900, "cOCTVC1_GSM_BAND_ENUM_GSM1900" }, + { cOCTVC1_GSM_BAND_ENUM_EGSM, "cOCTVC1_GSM_BAND_ENUM_EGSM" }, + { cOCTVC1_GSM_BAND_ENUM_RGSM, "cOCTVC1_GSM_BAND_ENUM_RGSM" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_GSM_PROCESS_TYPE_ENUM[] = + { + { cOCTVC1_GSM_PROCESS_TYPE_ENUM_INVALID, "cOCTVC1_GSM_PROCESS_TYPE_ENUM_INVALID" }, + { cOCTVC1_GSM_PROCESS_TYPE_ENUM_CONTROL, "cOCTVC1_GSM_PROCESS_TYPE_ENUM_CONTROL" }, + { cOCTVC1_GSM_PROCESS_TYPE_ENUM_TDM_DRIVER, "cOCTVC1_GSM_PROCESS_TYPE_ENUM_TDM_DRIVER" }, + { cOCTVC1_GSM_PROCESS_TYPE_ENUM_ROUTER, "cOCTVC1_GSM_PROCESS_TYPE_ENUM_ROUTER" }, + { cOCTVC1_GSM_PROCESS_TYPE_ENUM_SCHEDULER, "cOCTVC1_GSM_PROCESS_TYPE_ENUM_SCHEDULER" }, + { cOCTVC1_GSM_PROCESS_TYPE_ENUM_VSPMGR, "cOCTVC1_GSM_PROCESS_TYPE_ENUM_VSPMGR" }, + { cOCTVC1_GSM_PROCESS_TYPE_ENUM_AF_SRV, "cOCTVC1_GSM_PROCESS_TYPE_ENUM_AF_SRV" }, + { cOCTVC1_GSM_PROCESS_TYPE_ENUM_CAMERA_DRIVER, "cOCTVC1_GSM_PROCESS_TYPE_ENUM_CAMERA_DRIVER" }, + { cOCTVC1_GSM_PROCESS_TYPE_ENUM_WCDMA_SCHEDULER, "cOCTVC1_GSM_PROCESS_TYPE_ENUM_WCDMA_SCHEDULER" }, + { cOCTVC1_GSM_PROCESS_TYPE_ENUM_L1C_APAPTATION_LAYER, "cOCTVC1_GSM_PROCESS_TYPE_ENUM_L1C_APAPTATION_LAYER" }, + { cOCTVC1_GSM_PROCESS_TYPE_ENUM_ULIM_RACH, "cOCTVC1_GSM_PROCESS_TYPE_ENUM_ULIM_RACH" }, + { cOCTVC1_GSM_PROCESS_TYPE_ENUM_ULIM_MASTER, "cOCTVC1_GSM_PROCESS_TYPE_ENUM_ULIM_MASTER" }, + { cOCTVC1_GSM_PROCESS_TYPE_ENUM_ULIM_RFI, "cOCTVC1_GSM_PROCESS_TYPE_ENUM_ULIM_RFI" }, + { cOCTVC1_GSM_PROCESS_TYPE_ENUM_ULIM_SLAVE, "cOCTVC1_GSM_PROCESS_TYPE_ENUM_ULIM_SLAVE" }, + { cOCTVC1_GSM_PROCESS_TYPE_ENUM_ULOM_MASTER, "cOCTVC1_GSM_PROCESS_TYPE_ENUM_ULOM_MASTER" }, + { cOCTVC1_GSM_PROCESS_TYPE_ENUM_ULOM_SLAVE, "cOCTVC1_GSM_PROCESS_TYPE_ENUM_ULOM_SLAVE" }, + { cOCTVC1_GSM_PROCESS_TYPE_ENUM_DLIM_MASTER, "cOCTVC1_GSM_PROCESS_TYPE_ENUM_DLIM_MASTER" }, + { cOCTVC1_GSM_PROCESS_TYPE_ENUM_DLIM_SLAVE, "cOCTVC1_GSM_PROCESS_TYPE_ENUM_DLIM_SLAVE" }, + { cOCTVC1_GSM_PROCESS_TYPE_ENUM_DLOM_MASTER, "cOCTVC1_GSM_PROCESS_TYPE_ENUM_DLOM_MASTER" }, + { cOCTVC1_GSM_PROCESS_TYPE_ENUM_DLOM_SLAVE, "cOCTVC1_GSM_PROCESS_TYPE_ENUM_DLOM_SLAVE" }, + { cOCTVC1_GSM_PROCESS_TYPE_ENUM_RFI, "cOCTVC1_GSM_PROCESS_TYPE_ENUM_RFI" }, + { cOCTVC1_GSM_PROCESS_TYPE_ENUM_ETH, "cOCTVC1_GSM_PROCESS_TYPE_ENUM_ETH" }, + { cOCTVC1_GSM_PROCESS_TYPE_ENUM_HSDLOM, "cOCTVC1_GSM_PROCESS_TYPE_ENUM_HSDLOM" }, + { cOCTVC1_GSM_PROCESS_TYPE_ENUM_HSDLIM, "cOCTVC1_GSM_PROCESS_TYPE_ENUM_HSDLIM" }, + { cOCTVC1_GSM_PROCESS_TYPE_ENUM_CTRL, "cOCTVC1_GSM_PROCESS_TYPE_ENUM_CTRL" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_GSM_EVT_MASK[] = + { + { cOCTVC1_GSM_EVT_MASK_ERROR, "cOCTVC1_GSM_EVT_MASK_ERROR" }, + { cOCTVC1_GSM_EVT_MASK_TRACE_REQUEST, "cOCTVC1_GSM_EVT_MASK_TRACE_REQUEST" }, + { cOCTVC1_GSM_EVT_MASK_TRACE_RESPONSE, "cOCTVC1_GSM_EVT_MASK_TRACE_RESPONSE" }, + { cOCTVC1_GSM_EVT_MASK_MESSAGE, "cOCTVC1_GSM_EVT_MASK_MESSAGE" }, + { cOCTVC1_GSM_EVT_MASK_CHECKPOINT, "cOCTVC1_GSM_EVT_MASK_CHECKPOINT" }, + { cOCTVC1_GSM_EVT_MASK_ALL, "cOCTVC1_GSM_EVT_MASK_ALL" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM[] = + { + { cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_INVALID, "cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_INVALID" }, + { cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_WCDMA_SCHEDULER, "cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_WCDMA_SCHEDULER" }, + { cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_L1C_APAPTATION_LAYER, "cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_L1C_APAPTATION_LAYER" }, + { cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_ULIM_RACH, "cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_ULIM_RACH" }, + { cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_ULIM_MASTER, "cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_ULIM_MASTER" }, + { cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_ULIM_RFI, "cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_ULIM_RFI" }, + { cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_ULIM_SLAVE, "cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_ULIM_SLAVE" }, + { cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_ULOM_MASTER, "cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_ULOM_MASTER" }, + { cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_ULOM_SLAVE, "cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_ULOM_SLAVE" }, + { cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_DLIM_MASTER, "cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_DLIM_MASTER" }, + { cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_DLIM_SLAVE, "cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_DLIM_SLAVE" }, + { cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_DLOM_MASTER, "cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_DLOM_MASTER" }, + { cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_DLOM_SLAVE, "cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_DLOM_SLAVE" }, + { cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_DLIM_RFI, "cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_DLIM_RFI" }, + { cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_ETH, "cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_ETH" }, + { cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_HSDLOM, "cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_HSDLOM" }, + { cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_HSDLIM, "cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_HSDLIM" }, + { cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_CTRL, "cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_CTRL" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_GSM_CHECKPOINT_TYPE_ENUM[] = + { + { cOCTVC1_GSM_CHECKPOINT_TYPE_ENUM_START, "cOCTVC1_GSM_CHECKPOINT_TYPE_ENUM_START" }, + { cOCTVC1_GSM_CHECKPOINT_TYPE_ENUM_END, "cOCTVC1_GSM_CHECKPOINT_TYPE_ENUM_END" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_GSM_CHECKPOINT_STATE_ENUM[] = + { + { cOCTVC1_GSM_CHECKPOINT_STATE_ENUM_OK, "cOCTVC1_GSM_CHECKPOINT_STATE_ENUM_OK" }, + { cOCTVC1_GSM_CHECKPOINT_STATE_ENUM_PROCESSING_ERROR, "cOCTVC1_GSM_CHECKPOINT_STATE_ENUM_PROCESSING_ERROR" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_GSM_MSG_SEVERITY_ENUM[] = + { + { cOCTVC1_GSM_MSG_SEVERITY_ENUM_INFO, "cOCTVC1_GSM_MSG_SEVERITY_ENUM_INFO" }, + { cOCTVC1_GSM_MSG_SEVERITY_ENUM_WARNING, "cOCTVC1_GSM_MSG_SEVERITY_ENUM_WARNING" }, + { cOCTVC1_GSM_MSG_SEVERITY_ENUM_ERROR, "cOCTVC1_GSM_MSG_SEVERITY_ENUM_ERROR" }, + { cOCTVC1_GSM_MSG_SEVERITY_ENUM_FATAL, "cOCTVC1_GSM_MSG_SEVERITY_ENUM_FATAL" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_GSM_TRACING_TYPE_ENUM[] = + { + { cOCTVC1_GSM_TRACING_TYPE_ENUM_DLOM_REQUEST, "cOCTVC1_GSM_TRACING_TYPE_ENUM_DLOM_REQUEST" }, + { cOCTVC1_GSM_TRACING_TYPE_ENUM_DLOM_RESPONSE, "cOCTVC1_GSM_TRACING_TYPE_ENUM_DLOM_RESPONSE" }, + { cOCTVC1_GSM_TRACING_TYPE_ENUM_DLIM_REQUEST, "cOCTVC1_GSM_TRACING_TYPE_ENUM_DLIM_REQUEST" }, + { cOCTVC1_GSM_TRACING_TYPE_ENUM_DLIM_RESPONSE, "cOCTVC1_GSM_TRACING_TYPE_ENUM_DLIM_RESPONSE" }, + { cOCTVC1_GSM_TRACING_TYPE_ENUM_ULOM_REQUEST, "cOCTVC1_GSM_TRACING_TYPE_ENUM_ULOM_REQUEST" }, + { cOCTVC1_GSM_TRACING_TYPE_ENUM_ULOM_RESPONSE, "cOCTVC1_GSM_TRACING_TYPE_ENUM_ULOM_RESPONSE" }, + { cOCTVC1_GSM_TRACING_TYPE_ENUM_ULIM_REQUEST, "cOCTVC1_GSM_TRACING_TYPE_ENUM_ULIM_REQUEST" }, + { cOCTVC1_GSM_TRACING_TYPE_ENUM_ULIM_RESPONSE, "cOCTVC1_GSM_TRACING_TYPE_ENUM_ULIM_RESPONSE" }, + { cOCTVC1_GSM_TRACING_TYPE_ENUM_ULIM_RACH_REQUEST, "cOCTVC1_GSM_TRACING_TYPE_ENUM_ULIM_RACH_REQUEST" }, + { cOCTVC1_GSM_TRACING_TYPE_ENUM_ULIM_RACHM_RESPONSE, "cOCTVC1_GSM_TRACING_TYPE_ENUM_ULIM_RACHM_RESPONSE" }, + { cOCTVC1_GSM_TRACING_TYPE_ENUM_ULIM_RACHP_RESPONSE, "cOCTVC1_GSM_TRACING_TYPE_ENUM_ULIM_RACHP_RESPONSE" }, + { cOCTVC1_GSM_TRACING_TYPE_ENUM_SCHEDPARAMS, "cOCTVC1_GSM_TRACING_TYPE_ENUM_SCHEDPARAMS" }, + { cOCTVC1_GSM_TRACING_TYPE_ENUM_HSDLOM_REQUEST, "cOCTVC1_GSM_TRACING_TYPE_ENUM_HSDLOM_REQUEST" }, + { cOCTVC1_GSM_TRACING_TYPE_ENUM_HSDLOM_RESPONSE, "cOCTVC1_GSM_TRACING_TYPE_ENUM_HSDLOM_RESPONSE" }, + { cOCTVC1_GSM_TRACING_TYPE_ENUM_HSDLIM_REQUEST, "cOCTVC1_GSM_TRACING_TYPE_ENUM_HSDLIM_REQUEST" }, + { cOCTVC1_GSM_TRACING_TYPE_ENUM_HSDLIM_RESPONSE, "cOCTVC1_GSM_TRACING_TYPE_ENUM_HSDLIM_RESPONSE" }, + { cOCTVC1_GSM_TRACING_TYPE_ENUM_NOTDEFINED, "cOCTVC1_GSM_TRACING_TYPE_ENUM_NOTDEFINED" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_GSM_ERR_ENUM[] = + { + { cOCTVC1_GSM_ERR_ENUM_GENERIC_INPUT_FIFO_OVERFLOW, "cOCTVC1_GSM_ERR_ENUM_GENERIC_INPUT_FIFO_OVERFLOW" }, + { cOCTVC1_GSM_ERR_ENUM_GENERIC_INVALID_INPUT_PKT_FORMAT, "cOCTVC1_GSM_ERR_ENUM_GENERIC_INVALID_INPUT_PKT_FORMAT" }, + { cOCTVC1_GSM_ERR_ENUM_GENERIC_OUTPUT_FIFO_FULL, "cOCTVC1_GSM_ERR_ENUM_GENERIC_OUTPUT_FIFO_FULL" }, + { cOCTVC1_GSM_ERR_ENUM_GENERIC_INPUT_FIFO_EMPTY, "cOCTVC1_GSM_ERR_ENUM_GENERIC_INPUT_FIFO_EMPTY" }, + { cOCTVC1_GSM_ERR_ENUM_SYSTEM_BOOT_ERROR, "cOCTVC1_GSM_ERR_ENUM_SYSTEM_BOOT_ERROR" }, + { cOCTVC1_GSM_ERR_ENUM_SYSTEM_EXIT_ERROR, "cOCTVC1_GSM_ERR_ENUM_SYSTEM_EXIT_ERROR" }, + { cOCTVC1_GSM_ERR_ENUM_DMA_INIT_ERROR, "cOCTVC1_GSM_ERR_ENUM_DMA_INIT_ERROR" }, + { cOCTVC1_GSM_ERR_ENUM_DMA_MODE_ERROR, "cOCTVC1_GSM_ERR_ENUM_DMA_MODE_ERROR" }, + { cOCTVC1_GSM_ERR_ENUM_DMA_WRITE_ERROR, "cOCTVC1_GSM_ERR_ENUM_DMA_WRITE_ERROR" }, + { cOCTVC1_GSM_ERR_ENUM_DMA_READ_ERROR, "cOCTVC1_GSM_ERR_ENUM_DMA_READ_ERROR" }, + { cOCTVC1_GSM_ERR_ENUM_DOWNLINK_INNER_MODEM_INTERNAL_ERROR, "cOCTVC1_GSM_ERR_ENUM_DOWNLINK_INNER_MODEM_INTERNAL_ERROR" }, + { cOCTVC1_GSM_ERR_ENUM_DOWNLINK_OUTER_MODEM_INTERNAL_ERROR, "cOCTVC1_GSM_ERR_ENUM_DOWNLINK_OUTER_MODEM_INTERNAL_ERROR" }, + { cOCTVC1_GSM_ERR_ENUM_UPLINK_INNER_MODEM_INTERNAL_ERROR, "cOCTVC1_GSM_ERR_ENUM_UPLINK_INNER_MODEM_INTERNAL_ERROR" }, + { cOCTVC1_GSM_ERR_ENUM_UPLINK_OUTER_MODEM_INTERNAL_ERROR, "cOCTVC1_GSM_ERR_ENUM_UPLINK_OUTER_MODEM_INTERNAL_ERROR" }, + { cOCTVC1_GSM_ERR_ENUM_RF_INTERFACE_INTERNAL_ERROR, "cOCTVC1_GSM_ERR_ENUM_RF_INTERFACE_INTERNAL_ERROR" }, + { cOCTVC1_GSM_ERR_ENUM_LAST, "cOCTVC1_GSM_ERR_ENUM_LAST" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_GSM_2G_MSG_ENUM[] = + { + { cOCTVC1_GSM_2G_MSG_ENUM_INTERNAL_ERROR, "cOCTVC1_GSM_2G_MSG_ENUM_INTERNAL_ERROR" }, + { cOCTVC1_GSM_2G_MSG_ENUM_GENERIC_HELLO_WORLD, "cOCTVC1_GSM_2G_MSG_ENUM_GENERIC_HELLO_WORLD" }, + { cOCTVC1_GSM_2G_MSG_ENUM_SPECIFIC_SUBJECT_HELLO_WORLD, "cOCTVC1_GSM_2G_MSG_ENUM_SPECIFIC_SUBJECT_HELLO_WORLD" }, + { cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_ULIM_READY, "cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_ULIM_READY" }, + { cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_ULOM_READY, "cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_ULOM_READY" }, + { cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_DLIM_READY, "cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_DLIM_READY" }, + { cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_DLOM_READY, "cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_DLOM_READY" }, + { cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_L1C_READY, "cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_L1C_READY" }, + { cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_RACH_READY, "cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_RACH_READY" }, + { cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_DL_RFI_READY, "cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_DL_RFI_READY" }, + { cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_UL_RFI_READY, "cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_UL_RFI_READY" }, + { cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_HSDLOM_READY, "cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_HSDLOM_READY" }, + { cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_HSDLIM_READY, "cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_HSDLIM_READY" }, + { cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_MODEM_SETUP_COMPLETED, "cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_MODEM_SETUP_COMPLETED" }, + { cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_CELL_SETUP_COMPLETED, "cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_CELL_SETUP_COMPLETED" }, + { cOCTVC1_GSM_2G_MSG_ENUM_ULIM_RACH_DETECT, "cOCTVC1_GSM_2G_MSG_ENUM_ULIM_RACH_DETECT" }, + { cOCTVC1_GSM_2G_MSG_ENUM_LAST, "cOCTVC1_GSM_2G_MSG_ENUM_LAST" }, + { 0, NULL } + }; + +/**************************************************************************** + COMMON Registered + ****************************************************************************/ + +int ahf_tOCTVC1_GSM_tSUBCHANNEL_STATUS[4]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_tSUBCHANNEL_STATUS; + +void register_tOCTVC1_GSM_tSUBCHANNEL_STATUS(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_tSUBCHANNEL_STATUS[0], + { "usActiveUplinkSAPIMapMSW", "octvc1.gsm.tsubchannel_status.usactiveuplinksapimapmsw", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usActiveUplinkSAPIMapMSW",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_tSUBCHANNEL_STATUS[1], + { "usActiveUplinkSAPIMapLSW", "octvc1.gsm.tsubchannel_status.usactiveuplinksapimaplsw", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usActiveUplinkSAPIMapLSW",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_tSUBCHANNEL_STATUS[2], + { "usActiveDownlinkSAPIMapMSW", "octvc1.gsm.tsubchannel_status.usactivedownlinksapimapmsw", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usActiveDownlinkSAPIMapMSW",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_tSUBCHANNEL_STATUS[3], + { "usActiveDownlinkSAPIMapLSW", "octvc1.gsm.tsubchannel_status.usactivedownlinksapimaplsw", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usActiveDownlinkSAPIMapLSW",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_tSUBCHANNEL_STATUS.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_tMEASUREMENT_INFO[5]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_tMEASUREMENT_INFO; + +void register_tOCTVC1_GSM_tMEASUREMENT_INFO(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_tMEASUREMENT_INFO[0], + { "sRSSI", "octvc1.gsm.tmeasurement_info.srssi", + FT_INT16,BASE_DEC, NULL, 0x0, + "sRSSI",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_tMEASUREMENT_INFO[1], + { "sSNR", "octvc1.gsm.tmeasurement_info.ssnr", + FT_INT16,BASE_DEC, NULL, 0x0, + "sSNR",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_tMEASUREMENT_INFO[2], + { "sBurstTiming", "octvc1.gsm.tmeasurement_info.sbursttiming", + FT_INT16,BASE_DEC, NULL, 0x0, + "sBurstTiming",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_tMEASUREMENT_INFO[3], + { "usBERCount", "octvc1.gsm.tmeasurement_info.usbercount", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usBERCount",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_tMEASUREMENT_INFO[4], + { "usBERTOtalBitCOunt", "octvc1.gsm.tmeasurement_info.usbertotalbitcount", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usBERTOtalBitCOunt",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_tMEASUREMENT_INFO.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_TIMESLOT_STATUS[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_TIMESLOT_STATUS; + +void register_tOCTVC1_GSM_TIMESLOT_STATUS(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_TIMESLOT_STATUS[0], + { "byChannelType", "octvc1.gsm.timeslot_status.bychanneltype", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byChannelType",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_TIMESLOT_STATUS[1], + { "bySubchannelCount", "octvc1.gsm.timeslot_status.bysubchannelcount", + FT_UINT8,BASE_HEX, NULL, 0x0, + "bySubchannelCount",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_TIMESLOT_STATUS.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +/**************************************************************************** + Event Registered + ****************************************************************************/ + +int ahf_tOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT[5]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT; + +void register_tOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT[0], + { "byu2Pad_u6TRXId", "octvc1.gsm.module.time_indication.byu2pad_u6trxid", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu2Pad_u6TRXId",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT[1], + { "byu5Pad_u3TN", "octvc1.gsm.module.time_indication.byu5pad_u3tn", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu5Pad_u3TN",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT[2], + { "usFrameNumberMSW", "octvc1.gsm.module.time_indication.usframenumbermsw", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usFrameNumberMSW",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT[3], + { "usFrameNumberLSW", "octvc1.gsm.module.time_indication.usframenumberlsw", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usFrameNumberLSW",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT[10]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT; + +void register_tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT[0], + { "byu2Pad_u6TRXId", "octvc1.gsm.module.data_indication.byu2pad_u6trxid", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu2Pad_u6TRXId",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT[1], + { "byu5SAPI_u3Dir", "octvc1.gsm.module.data_indication.byu5sapi_u3dir", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu5SAPI_u3Dir",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT[2], + { "bySubchannelNum", "octvc1.gsm.module.data_indication.bysubchannelnum", + FT_UINT8,BASE_HEX, NULL, 0x0, + "bySubchannelNum",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT[3], + { "byu5Pad_u3TN", "octvc1.gsm.module.data_indication.byu5pad_u3tn", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu5Pad_u3TN",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT[4], + { "usFrameNumberMSW", "octvc1.gsm.module.data_indication.usframenumbermsw", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usFrameNumberMSW",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT[5], + { "usFrameNumberLSW", "octvc1.gsm.module.data_indication.usframenumberlsw", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usFrameNumberLSW",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT[6], + { "tMeasurementInfo", "octvc1.gsm.module.data_indication.tmeasurementinfo", + FT_NONE, BASE_NONE, NULL, 0x0, + "tMeasurementInfo",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT[7], + { "usDataFrameLength", "octvc1.gsm.module.data_indication.usdataframelength", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usDataFrameLength",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT[8], + { "ausDataFrameContents", "octvc1.gsm.module.data_indication.ausdataframecontents", + FT_UINT16,BASE_HEX, NULL, 0x0, + "ausDataFrameContents",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_MODULE_TRX_RADIO_READY_EVT[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_MODULE_TRX_RADIO_READY_EVT; + +void register_tOCTVC1_GSM_MSG_MODULE_TRX_RADIO_READY_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_MODULE_TRX_RADIO_READY_EVT[0], + { "byu2Pad_u6TRXId", "octvc1.gsm.module.trx_radio_ready.byu2pad_u6trxid", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu2Pad_u6TRXId",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_MODULE_TRX_RADIO_READY_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT[7]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT; + +void register_tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT[0], + { "byu2Pad_u6TRXId", "octvc1.gsm.module.ready_to_send_indication.byu2pad_u6trxid", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu2Pad_u6TRXId",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT[1], + { "byu3TN_u5SAPI", "octvc1.gsm.module.ready_to_send_indication.byu3tn_u5sapi", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu3TN_u5SAPI",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT[2], + { "bySubchannelNum", "octvc1.gsm.module.ready_to_send_indication.bysubchannelnum", + FT_UINT8,BASE_HEX, NULL, 0x0, + "bySubchannelNum",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT[3], + { "byPad", "octvc1.gsm.module.ready_to_send_indication.bypad", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byPad",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT[4], + { "usFrameNumberMSW", "octvc1.gsm.module.ready_to_send_indication.usframenumbermsw", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usFrameNumberMSW",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT[5], + { "usFrameNumberLSW", "octvc1.gsm.module.ready_to_send_indication.usframenumberlsw", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usFrameNumberLSW",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT[10]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT; + +void register_tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT[0], + { "byu2Pad_u6TRXId", "octvc1.gsm.module.rach_indication.byu2pad_u6trxid", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu2Pad_u6TRXId",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT[1], + { "byuu3TN_u5SAPI", "octvc1.gsm.module.rach_indication.byuu3tn_u5sapi", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byuu3TN_u5SAPI",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT[2], + { "bySubchannelNum", "octvc1.gsm.module.rach_indication.bysubchannelnum", + FT_UINT8,BASE_HEX, NULL, 0x0, + "bySubchannelNum",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT[3], + { "byBurstType", "octvc1.gsm.module.rach_indication.bybursttype", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byBurstType",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT[4], + { "usFrameNumberMSW", "octvc1.gsm.module.rach_indication.usframenumbermsw", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usFrameNumberMSW",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT[5], + { "usFrameNumberLSW", "octvc1.gsm.module.rach_indication.usframenumberlsw", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usFrameNumberLSW",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT[6], + { "tMeasurementInfo", "octvc1.gsm.module.rach_indication.tmeasurementinfo", + FT_NONE, BASE_NONE, NULL, 0x0, + "tMeasurementInfo",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT[7], + { "usMessageLength", "octvc1.gsm.module.rach_indication.usmessagelength", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usMessageLength",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT[8], + { "ausMessageContents", "octvc1.gsm.module.rach_indication.ausmessagecontents", + FT_UINT16,BASE_HEX, NULL, 0x0, + "ausMessageContents",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_MODULE_ERROR_EVT[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_MODULE_ERROR_EVT; + +void register_tOCTVC1_GSM_MSG_MODULE_ERROR_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_MODULE_ERROR_EVT[0], + { "hProcessUnit", "octvc1.gsm.module.error.hprocessunit", + FT_NONE, BASE_NONE, NULL, 0x0, + "hProcessUnit",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_ERROR_EVT[1], + { "ulErrorCode", "octvc1.gsm.module.error.ulerrorcode", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_GSM_ERR_ENUM), 0x0, + "ulErrorCode",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_MODULE_ERROR_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT[4]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT; + +void register_tOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT[0], + { "hProcessUnit", "octvc1.gsm.module.message.hprocessunit", + FT_NONE, BASE_NONE, NULL, 0x0, + "hProcessUnit",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT[1], + { "ulMessageCode", "octvc1.gsm.module.message.ulmessagecode", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_GSM_2G_MSG_ENUM), 0x0, + "ulMessageCode",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT[2], + { "ulSeverityLevel", "octvc1.gsm.module.message.ulseveritylevel", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_GSM_MSG_SEVERITY_ENUM), 0x0, + "ulSeverityLevel",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT[9]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT; + +void register_tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT[0], + { "hProcessUnit", "octvc1.gsm.module.checkpoint.hprocessunit", + FT_NONE, BASE_NONE, NULL, 0x0, + "hProcessUnit",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT[1], + { "ulCoreId", "octvc1.gsm.module.checkpoint.ulcoreid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulCoreId",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT[2], + { "ulFrameIndex", "octvc1.gsm.module.checkpoint.ulframeindex", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulFrameIndex",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT[3], + { "ulSlotIndex", "octvc1.gsm.module.checkpoint.ulslotindex", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulSlotIndex",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT[4], + { "ulCheckPointType", "octvc1.gsm.module.checkpoint.ulcheckpointtype", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_GSM_CHECKPOINT_TYPE_ENUM), 0x0, + "ulCheckPointType",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT[5], + { "ulProcessUnitType", "octvc1.gsm.module.checkpoint.ulprocessunittype", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM), 0x0, + "ulProcessUnitType",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT[6], + { "ulState", "octvc1.gsm.module.checkpoint.ulstate", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_GSM_CHECKPOINT_STATE_ENUM), 0x0, + "ulState",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT[7], + { "aulReserved", "octvc1.gsm.module.checkpoint.aulreserved", + FT_UINT32,BASE_HEX, NULL, 0x0, + "aulReserved",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_MODULE_TRACING_EVT[8]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_MODULE_TRACING_EVT; + +void register_tOCTVC1_GSM_MSG_MODULE_TRACING_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_MODULE_TRACING_EVT[0], + { "hProcessUnit", "octvc1.gsm.module.tracing.hprocessunit", + FT_NONE, BASE_NONE, NULL, 0x0, + "hProcessUnit",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_TRACING_EVT[1], + { "ulCoreId", "octvc1.gsm.module.tracing.ulcoreid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulCoreId",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_TRACING_EVT[2], + { "ulTraceType", "octvc1.gsm.module.tracing.ultracetype", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_GSM_TRACING_TYPE_ENUM), 0x0, + "ulTraceType",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_TRACING_EVT[3], + { "ulLastTracePacket", "octvc1.gsm.module.tracing.ullasttracepacket", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulLastTracePacket",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_TRACING_EVT[4], + { "ulTraceIndex", "octvc1.gsm.module.tracing.ultraceindex", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulTraceIndex",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_TRACING_EVT[5], + { "ulPayloadSizeBytes", "octvc1.gsm.module.tracing.ulpayloadsizebytes", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulPayloadSizeBytes",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_TRACING_EVT[6], + { "abyUnparsedPayload", "octvc1.gsm.module.tracing.abyunparsedpayload", + FT_UINT8,BASE_HEX, NULL, 0x0, + "abyUnparsedPayload",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_MODULE_TRACING_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EVT[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EVT; + +void register_tOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EVT[0], + { "hProcessUnit", "octvc1.gsm.process_unit.error.hprocessunit", + FT_NONE, BASE_NONE, NULL, 0x0, + "hProcessUnit",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EVT[1], + { "ulErrorCode", "octvc1.gsm.process_unit.error.ulerrorcode", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_GSM_ERR_ENUM), 0x0, + "ulErrorCode",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT[4]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT; + +void register_tOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT[0], + { "hProcessUnit", "octvc1.gsm.process_unit.message.hprocessunit", + FT_NONE, BASE_NONE, NULL, 0x0, + "hProcessUnit",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT[1], + { "ulMessageCode", "octvc1.gsm.process_unit.message.ulmessagecode", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_GSM_2G_MSG_ENUM), 0x0, + "ulMessageCode",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT[2], + { "ulSeverityLevel", "octvc1.gsm.process_unit.message.ulseveritylevel", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_GSM_MSG_SEVERITY_ENUM), 0x0, + "ulSeverityLevel",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT[9]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT; + +void register_tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT[0], + { "hProcessUnit", "octvc1.gsm.process_unit.checkpoint.hprocessunit", + FT_NONE, BASE_NONE, NULL, 0x0, + "hProcessUnit",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT[1], + { "ulCoreId", "octvc1.gsm.process_unit.checkpoint.ulcoreid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulCoreId",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT[2], + { "ulFrameIndex", "octvc1.gsm.process_unit.checkpoint.ulframeindex", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulFrameIndex",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT[3], + { "ulSlotIndex", "octvc1.gsm.process_unit.checkpoint.ulslotindex", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulSlotIndex",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT[4], + { "ulCheckPointType", "octvc1.gsm.process_unit.checkpoint.ulcheckpointtype", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_GSM_CHECKPOINT_TYPE_ENUM), 0x0, + "ulCheckPointType",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT[5], + { "ulProcessUnitType", "octvc1.gsm.process_unit.checkpoint.ulprocessunittype", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM), 0x0, + "ulProcessUnitType",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT[6], + { "ulState", "octvc1.gsm.process_unit.checkpoint.ulstate", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_GSM_CHECKPOINT_STATE_ENUM), 0x0, + "ulState",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT[7], + { "aulReserved", "octvc1.gsm.process_unit.checkpoint.aulreserved", + FT_UINT32,BASE_HEX, NULL, 0x0, + "aulReserved",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT[6]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT; + +void register_tOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT[0], + { "hProcessUnit", "octvc1.gsm.process_unit.tracing.hprocessunit", + FT_NONE, BASE_NONE, NULL, 0x0, + "hProcessUnit",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT[1], + { "ulCoreId", "octvc1.gsm.process_unit.tracing.ulcoreid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulCoreId",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT[2], + { "ulTraceType", "octvc1.gsm.process_unit.tracing.ultracetype", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_GSM_TRACING_TYPE_ENUM), 0x0, + "ulTraceType",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT[3], + { "ulPayloadSizeBytes", "octvc1.gsm.process_unit.tracing.ulpayloadsizebytes", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulPayloadSizeBytes",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT[4], + { "abyUnparsedPayload", "octvc1.gsm.process_unit.tracing.abyunparsedpayload", + FT_UINT8,BASE_HEX, NULL, 0x0, + "abyUnparsedPayload",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_TEST_ETSI_TEST_REPORT_EVT[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_TEST_ETSI_TEST_REPORT_EVT; + +void register_tOCTVC1_GSM_MSG_TEST_ETSI_TEST_REPORT_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_TEST_ETSI_TEST_REPORT_EVT[0], + { "usTodo", "octvc1.gsm.test.etsi.test_report.ustodo", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usTodo",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_TEST_ETSI_TEST_REPORT_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +/**************************************************************************** + CMD/RSP Registered + ****************************************************************************/ + +int ahf_tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_CMD; + +void register_tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_CMD[0], + { "aPadding", "octvc1.gsm.module.hardware.info.apadding", + FT_UINT8,BASE_HEX, NULL, 0x0, + "aPadding",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_RSP; + +void register_tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_RSP[0], + { "szHardwareInfo", "octvc1.gsm.module.hardware.info.szhardwareinfo", + FT_UINT8,BASE_HEX, NULL, 0x0, + "szHardwareInfo",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_RSP[1], + { "aPadding", "octvc1.gsm.module.hardware.info.apadding", + FT_UINT8,BASE_HEX, NULL, 0x0, + "aPadding",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD[6]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD; + +void register_tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD[0], + { "ulEventMask", "octvc1.gsm.module.evt.modify.uleventmask", + FT_NONE, BASE_NONE, NULL, 0x0, + "ulEventMask",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD[1], + { "ulUserEventId", "octvc1.gsm.module.evt.modify.ulusereventid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulUserEventId",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD[2], + { "hEventDestObj", "octvc1.gsm.module.evt.modify.heventdestobj", + FT_NONE, BASE_NONE, NULL, 0x0, + "hEventDestObj",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD[3], + { "ulEventDestObjPort", "octvc1.gsm.module.evt.modify.uleventdestobjport", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulEventDestObjPort",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD[4], + { "ulEventDestObjFifoId", "octvc1.gsm.module.evt.modify.uleventdestobjfifoid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulEventDestObjFifoId",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP[6]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP; + +void register_tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP[0], + { "ulEventMask", "octvc1.gsm.module.evt.info.uleventmask", + FT_NONE, BASE_NONE, NULL, 0x0, + "ulEventMask",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP[1], + { "ulUserEventId", "octvc1.gsm.module.evt.info.ulusereventid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulUserEventId",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP[2], + { "hEventDestObj", "octvc1.gsm.module.evt.info.heventdestobj", + FT_NONE, BASE_NONE, NULL, 0x0, + "hEventDestObj",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP[3], + { "ulEventDestObjPort", "octvc1.gsm.module.evt.info.uleventdestobjport", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulEventDestObjPort",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP[4], + { "ulEventDestObjFifoId", "octvc1.gsm.module.evt.info.uleventdestobjfifoid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulEventDestObjFifoId",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_MODULE_INFO_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_MODULE_INFO_RSP; + +void register_tOCTVC1_GSM_MSG_MODULE_INFO_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_MODULE_INFO_RSP[0], + { "ulDeviceType", "octvc1.gsm.module.info.uldevicetype", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulDeviceType",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_MODULE_INFO_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD[5]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD; + +void register_tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD[0], + { "hProcessUnit", "octvc1.gsm.process_unit.evt.modify.hprocessunit", + FT_NONE, BASE_NONE, NULL, 0x0, + "hProcessUnit",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD[1], + { "ulUserEventId", "octvc1.gsm.process_unit.evt.modify.ulusereventid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulUserEventId",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD[2], + { "ulEventMask", "octvc1.gsm.process_unit.evt.modify.uleventmask", + FT_NONE, BASE_NONE, NULL, 0x0, + "ulEventMask",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD[3], + { "ulDebugFwdEventMask", "octvc1.gsm.process_unit.evt.modify.uldebugfwdeventmask", + FT_NONE, BASE_NONE, NULL, 0x0, + "ulDebugFwdEventMask",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_RSP; + +void register_tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_RSP[0], + { "hProcessUnit", "octvc1.gsm.process_unit.evt.modify.hprocessunit", + FT_NONE, BASE_NONE, NULL, 0x0, + "hProcessUnit",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_CMD; + +void register_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_CMD[0], + { "hProcessUnit", "octvc1.gsm.process_unit.evt.info.hprocessunit", + FT_NONE, BASE_NONE, NULL, 0x0, + "hProcessUnit",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP[6]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP; + +void register_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP[0], + { "ulEventMask", "octvc1.gsm.process_unit.evt.info.uleventmask", + FT_NONE, BASE_NONE, NULL, 0x0, + "ulEventMask",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP[1], + { "ulUserEventId", "octvc1.gsm.process_unit.evt.info.ulusereventid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulUserEventId",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP[2], + { "hEventDestObj", "octvc1.gsm.process_unit.evt.info.heventdestobj", + FT_NONE, BASE_NONE, NULL, 0x0, + "hEventDestObj",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP[3], + { "ulEventDestObjPort", "octvc1.gsm.process_unit.evt.info.uleventdestobjport", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulEventDestObjPort",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP[4], + { "ulEventDestObjFifoId", "octvc1.gsm.process_unit.evt.info.uleventdestobjfifoid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulEventDestObjFifoId",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_CMD; + +void register_tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_CMD[0], + { "ObjectCursor", "octvc1.gsm.process_unit.list.objectcursor", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectCursor",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_RSP; + +void register_tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_RSP[0], + { "ObjectCursor", "octvc1.gsm.process_unit.list.objectcursor", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectCursor",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_RSP[1], + { "ObjectList", "octvc1.gsm.process_unit.list.objectlist", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectList",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_CMD; + +void register_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_CMD[0], + { "ObjectGet", "octvc1.gsm.process_unit.info.objectget", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectGet",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP[6]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP; + +void register_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP[0], + { "ObjectGet", "octvc1.gsm.process_unit.info.objectget", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectGet",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP[1], + { "ulProcessType", "octvc1.gsm.process_unit.info.ulprocesstype", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_GSM_PROCESS_TYPE_ENUM), 0x0, + "ulProcessType",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP[2], + { "ulInstance", "octvc1.gsm.process_unit.info.ulinstance", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulInstance",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP[3], + { "ulMasterCore", "octvc1.gsm.process_unit.info.ulmastercore", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulMasterCore",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP[4], + { "ulCoreId", "octvc1.gsm.process_unit.info.ulcoreid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulCoreId",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CMD[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CMD; + +void register_tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CMD[0], + { "ObjectGet", "octvc1.gsm.process_unit.stats.objectget", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectGet",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CMD[1], + { "ulResetStatsFlag", "octvc1.gsm.process_unit.stats.ulresetstatsflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulResetStatsFlag",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_RSP; + +void register_tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_RSP[0], + { "ObjectGet", "octvc1.gsm.process_unit.stats.objectget", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectGet",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_RSP[1], + { "ulLastFrameIndex", "octvc1.gsm.process_unit.stats.ullastframeindex", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLastFrameIndex",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD[8]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD; + +void register_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD[0], + { "byu2Pad_u6TRXId", "octvc1.gsm.physical_channel.empty_frame.request.byu2pad_u6trxid", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu2Pad_u6TRXId",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD[1], + { "byu3TN_u5SAPI", "octvc1.gsm.physical_channel.empty_frame.request.byu3tn_u5sapi", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu3TN_u5SAPI",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD[2], + { "bySubchannelNum", "octvc1.gsm.physical_channel.empty_frame.request.bysubchannelnum", + FT_UINT8,BASE_HEX, NULL, 0x0, + "bySubchannelNum",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD[3], + { "byPad", "octvc1.gsm.physical_channel.empty_frame.request.bypad", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byPad",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD[4], + { "usFrameNumberMsb", "octvc1.gsm.physical_channel.empty_frame.request.usframenumbermsb", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usFrameNumberMsb",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD[5], + { "usFrameNumberLsb", "octvc1.gsm.physical_channel.empty_frame.request.usframenumberlsb", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usFrameNumberLsb",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD[6], + { "aPadding", "octvc1.gsm.physical_channel.empty_frame.request.apadding", + FT_UINT8,BASE_HEX, NULL, 0x0, + "aPadding",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_RSP; + +void register_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_RSP[0], + { "usTodo", "octvc1.gsm.physical_channel.empty_frame.request.ustodo", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usTodo",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD[9]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD; + +void register_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD[0], + { "byU2Pad_u6TRXId", "octvc1.gsm.physical_channel.data.request.byu2pad_u6trxid", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byU2Pad_u6TRXId",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD[1], + { "byU3TN_u5SAPI", "octvc1.gsm.physical_channel.data.request.byu3tn_u5sapi", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byU3TN_u5SAPI",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD[2], + { "bySubchannelNum", "octvc1.gsm.physical_channel.data.request.bysubchannelnum", + FT_UINT8,BASE_HEX, NULL, 0x0, + "bySubchannelNum",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD[3], + { "byPad", "octvc1.gsm.physical_channel.data.request.bypad", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byPad",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD[4], + { "usFrameNumberMSB", "octvc1.gsm.physical_channel.data.request.usframenumbermsb", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usFrameNumberMSB",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD[5], + { "usFrameNumberLSB", "octvc1.gsm.physical_channel.data.request.usframenumberlsb", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usFrameNumberLSB",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD[6], + { "usDataLength", "octvc1.gsm.physical_channel.data.request.usdatalength", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usDataLength",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD[7], + { "ausDataContents", "octvc1.gsm.physical_channel.data.request.ausdatacontents", + FT_UINT8,BASE_HEX, NULL, 0x0, + "ausDataContents",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_RSP; + +void register_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_RSP[0], + { "usTodo", "octvc1.gsm.physical_channel.data.request.ustodo", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usTodo",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD[9]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD; + +void register_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD[0], + { "byu2Pad_u6TRXId", "octvc1.gsm.physical_channel.ciphering.configure.byu2pad_u6trxid", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu2Pad_u6TRXId",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD[1], + { "byu2Pad_u3TN_u3Dir", "octvc1.gsm.physical_channel.ciphering.configure.byu2pad_u3tn_u3dir", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu2Pad_u3TN_u3Dir",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD[2], + { "bySubchannelNum", "octvc1.gsm.physical_channel.ciphering.configure.bysubchannelnum", + FT_UINT8,BASE_HEX, NULL, 0x0, + "bySubchannelNum",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD[3], + { "byuCipherId", "octvc1.gsm.physical_channel.ciphering.configure.byucipherid", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byuCipherId",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD[4], + { "usKC0", "octvc1.gsm.physical_channel.ciphering.configure.uskc0", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usKC0",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD[5], + { "usKC1", "octvc1.gsm.physical_channel.ciphering.configure.uskc1", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usKC1",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD[6], + { "usKC2", "octvc1.gsm.physical_channel.ciphering.configure.uskc2", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usKC2",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD[7], + { "usKC3", "octvc1.gsm.physical_channel.ciphering.configure.uskc3", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usKC3",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP[7]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP; + +void register_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP[0], + { "byu2Pad_u6TRXId", "octvc1.gsm.physical_channel.ciphering.configure.byu2pad_u6trxid", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu2Pad_u6TRXId",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP[1], + { "byu2Pad_u3TN_u3Dir", "octvc1.gsm.physical_channel.ciphering.configure.byu2pad_u3tn_u3dir", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu2Pad_u3TN_u3Dir",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP[2], + { "bySubchannelNum", "octvc1.gsm.physical_channel.ciphering.configure.bysubchannelnum", + FT_UINT8,BASE_HEX, NULL, 0x0, + "bySubchannelNum",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP[3], + { "byPad", "octvc1.gsm.physical_channel.ciphering.configure.bypad", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byPad",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP[4], + { "usStatus", "octvc1.gsm.physical_channel.ciphering.configure.usstatus", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usStatus",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP[5], + { "aPadding", "octvc1.gsm.physical_channel.ciphering.configure.apadding", + FT_UINT8,BASE_HEX, NULL, 0x0, + "aPadding",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD[6]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD; + +void register_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD[0], + { "byu2Pad_u6TrxId", "octvc1.gsm.physical_channel.connect.byu2pad_u6trxid", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu2Pad_u6TrxId",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD[1], + { "byu5Pad_u3TimeslotNumber", "octvc1.gsm.physical_channel.connect.byu5pad_u3timeslotnumber", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu5Pad_u3TimeslotNumber",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD[2], + { "byChannelType", "octvc1.gsm.physical_channel.connect.bychanneltype", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byChannelType",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD[3], + { "byPayloadType", "octvc1.gsm.physical_channel.connect.bypayloadtype", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byPayloadType",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD[4], + { "aPadding", "octvc1.gsm.physical_channel.connect.apadding", + FT_UINT8,BASE_HEX, NULL, 0x0, + "aPadding",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP[5]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP; + +void register_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP[0], + { "byu2Pad_u6TRXId", "octvc1.gsm.physical_channel.connect.byu2pad_u6trxid", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu2Pad_u6TRXId",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP[1], + { "byu5Pad_u3TN", "octvc1.gsm.physical_channel.connect.byu5pad_u3tn", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu5Pad_u3TN",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP[2], + { "usStatus", "octvc1.gsm.physical_channel.connect.usstatus", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usStatus",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP[3], + { "aPadding", "octvc1.gsm.physical_channel.connect.apadding", + FT_UINT8,BASE_HEX, NULL, 0x0, + "aPadding",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CMD[4]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CMD; + +void register_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CMD[0], + { "byu2Pad_u6TrxId", "octvc1.gsm.physical_channel.disconnect.byu2pad_u6trxid", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu2Pad_u6TrxId",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CMD[1], + { "byu5Pad_u3TimeslotNumber", "octvc1.gsm.physical_channel.disconnect.byu5pad_u3timeslotnumber", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu5Pad_u3TimeslotNumber",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CMD[2], + { "aPadding", "octvc1.gsm.physical_channel.disconnect.apadding", + FT_UINT8,BASE_HEX, NULL, 0x0, + "aPadding",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP[5]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP; + +void register_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP[0], + { "byu2Pad_u6TRXId", "octvc1.gsm.physical_channel.disconnect.byu2pad_u6trxid", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu2Pad_u6TRXId",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP[1], + { "byu5Pad_u3TN", "octvc1.gsm.physical_channel.disconnect.byu5pad_u3tn", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu5Pad_u3TN",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP[2], + { "usStatus", "octvc1.gsm.physical_channel.disconnect.usstatus", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usStatus",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP[3], + { "aPadding", "octvc1.gsm.physical_channel.disconnect.apadding", + FT_UINT8,BASE_HEX, NULL, 0x0, + "aPadding",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_CMD; + +void register_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_CMD[0], + { "aPadding", "octvc1.gsm.physical_channel.reset.apadding", + FT_UINT8,BASE_HEX, NULL, 0x0, + "aPadding",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_RSP; + +void register_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_RSP[0], + { "usStatus", "octvc1.gsm.physical_channel.reset.usstatus", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usStatus",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_RSP[1], + { "aPadding", "octvc1.gsm.physical_channel.reset.apadding", + FT_UINT8,BASE_HEX, NULL, 0x0, + "aPadding",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD[12]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD; + +void register_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD[0], + { "byu2Pad_u6TRXId", "octvc1.gsm.logical_channel.activate.byu2pad_u6trxid", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu2Pad_u6TRXId",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD[1], + { "byu2Pad_u3TN_u3Dir", "octvc1.gsm.logical_channel.activate.byu2pad_u3tn_u3dir", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu2Pad_u3TN_u3Dir",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD[2], + { "bySubchannelNum", "octvc1.gsm.logical_channel.activate.bysubchannelnum", + FT_UINT8,BASE_HEX, NULL, 0x0, + "bySubchannelNum",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD[3], + { "byu3Pad_u5SAPI", "octvc1.gsm.logical_channel.activate.byu3pad_u5sapi", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu3Pad_u5SAPI",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD[4], + { "byTimingAdvance", "octvc1.gsm.logical_channel.activate.bytimingadvance", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byTimingAdvance",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD[5], + { "byPad", "octvc1.gsm.logical_channel.activate.bypad", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byPad",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD[6], + { "byBSIC", "octvc1.gsm.logical_channel.activate.bybsic", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byBSIC",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD[7], + { "byu1CMIPhase_u7InitRate", "octvc1.gsm.logical_channel.activate.byu1cmiphase_u7initrate", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu1CMIPhase_u7InitRate",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD[8], + { "byu4Rate1_u4Rate2", "octvc1.gsm.logical_channel.activate.byu4rate1_u4rate2", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu4Rate1_u4Rate2",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD[9], + { "byu4Rate3_u4Rate4", "octvc1.gsm.logical_channel.activate.byu4rate3_u4rate4", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu4Rate3_u4Rate4",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD[10], + { "aPadding", "octvc1.gsm.logical_channel.activate.apadding", + FT_UINT8,BASE_HEX, NULL, 0x0, + "aPadding",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP[7]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP; + +void register_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP[0], + { "byu2Pad_u3TRXId", "octvc1.gsm.logical_channel.activate.byu2pad_u3trxid", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu2Pad_u3TRXId",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP[1], + { "byu2Pad_u3TN_u3Dir", "octvc1.gsm.logical_channel.activate.byu2pad_u3tn_u3dir", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu2Pad_u3TN_u3Dir",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP[2], + { "bySubchannelNum", "octvc1.gsm.logical_channel.activate.bysubchannelnum", + FT_UINT8,BASE_HEX, NULL, 0x0, + "bySubchannelNum",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP[3], + { "byu3Pad_u5SAPI", "octvc1.gsm.logical_channel.activate.byu3pad_u5sapi", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu3Pad_u5SAPI",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP[4], + { "usStatus", "octvc1.gsm.logical_channel.activate.usstatus", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usStatus",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP[5], + { "aPadding", "octvc1.gsm.logical_channel.activate.apadding", + FT_UINT8,BASE_HEX, NULL, 0x0, + "aPadding",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CMD[5]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CMD; + +void register_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CMD[0], + { "byu2Pad_u6TRXId", "octvc1.gsm.logical_channel.deactivate.byu2pad_u6trxid", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu2Pad_u6TRXId",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CMD[1], + { "byu2Pad_u3TN_u3Dir", "octvc1.gsm.logical_channel.deactivate.byu2pad_u3tn_u3dir", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu2Pad_u3TN_u3Dir",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CMD[2], + { "bySubchannelNum", "octvc1.gsm.logical_channel.deactivate.bysubchannelnum", + FT_UINT8,BASE_HEX, NULL, 0x0, + "bySubchannelNum",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CMD[3], + { "byu3Pad_u5SAPI", "octvc1.gsm.logical_channel.deactivate.byu3pad_u5sapi", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu3Pad_u5SAPI",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP[7]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP; + +void register_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP[0], + { "byu2Pad_u3TRXId", "octvc1.gsm.logical_channel.deactivate.byu2pad_u3trxid", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu2Pad_u3TRXId",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP[1], + { "byu2Pad_u3TN_u3Dir", "octvc1.gsm.logical_channel.deactivate.byu2pad_u3tn_u3dir", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu2Pad_u3TN_u3Dir",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP[2], + { "bySubchannelNum", "octvc1.gsm.logical_channel.deactivate.bysubchannelnum", + FT_UINT8,BASE_HEX, NULL, 0x0, + "bySubchannelNum",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP[3], + { "byu3Pad_u5SAPI", "octvc1.gsm.logical_channel.deactivate.byu3pad_u5sapi", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu3Pad_u5SAPI",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP[4], + { "usStatus", "octvc1.gsm.logical_channel.deactivate.usstatus", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usStatus",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP[5], + { "aPadding", "octvc1.gsm.logical_channel.deactivate.apadding", + FT_UINT8,BASE_HEX, NULL, 0x0, + "aPadding",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_CMD; + +void register_tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_CMD[0], + { "usu2Pad_u6TRXId_u5Pad_u3TN", "octvc1.gsm.trx.timeslot.status.usu2pad_u6trxid_u5pad_u3tn", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usu2Pad_u6TRXId_u5Pad_u3TN",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_RSP[6]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_RSP; + +void register_tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_RSP[0], + { "usu2Pad_u6TRXId_u5Pad_u3TN", "octvc1.gsm.trx.timeslot.status.usu2pad_u6trxid_u5pad_u3tn", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usu2Pad_u6TRXId_u5Pad_u3TN",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_RSP[1], + { "byChannelType", "octvc1.gsm.trx.timeslot.status.bychanneltype", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byChannelType",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_RSP[2], + { "bySubchannelCount", "octvc1.gsm.trx.timeslot.status.bysubchannelcount", + FT_UINT8,BASE_HEX, NULL, 0x0, + "bySubchannelCount",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_RSP[3], + { "atSubchannnelStatus", "octvc1.gsm.trx.timeslot.status.atsubchannnelstatus", + FT_NONE, BASE_NONE, NULL, 0x0, + "atSubchannnelStatus",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_RSP[4], + { "aPadding", "octvc1.gsm.trx.timeslot.status.apadding", + FT_UINT8,BASE_HEX, NULL, 0x0, + "aPadding",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_CMD[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_CMD; + +void register_tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_CMD[0], + { "byu2Pad_u6TRXId", "octvc1.gsm.trx.timeslot_measurement_report.request.byu2pad_u6trxid", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu2Pad_u6TRXId",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_CMD[1], + { "byu5Pad_u3TN", "octvc1.gsm.trx.timeslot_measurement_report.request.byu5pad_u3tn", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu5Pad_u3TN",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_RSP[5]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_RSP; + +void register_tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_RSP[0], + { "byu2Pad_u6TRXId", "octvc1.gsm.trx.timeslot_measurement_report.request.byu2pad_u6trxid", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu2Pad_u6TRXId",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_RSP[1], + { "byu5Pad_u3TN", "octvc1.gsm.trx.timeslot_measurement_report.request.byu5pad_u3tn", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu5Pad_u3TN",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_RSP[2], + { "tMeasurementInfo", "octvc1.gsm.trx.timeslot_measurement_report.request.tmeasurementinfo", + FT_NONE, BASE_NONE, NULL, 0x0, + "tMeasurementInfo",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_RSP[3], + { "aPadding", "octvc1.gsm.trx.timeslot_measurement_report.request.apadding", + FT_UINT8,BASE_HEX, NULL, 0x0, + "aPadding",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_TRX_RESET_CMD[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_TRX_RESET_CMD; + +void register_tOCTVC1_GSM_MSG_TRX_RESET_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_TRX_RESET_CMD[0], + { "usu2Pad_u6TRXId_u8Pad", "octvc1.gsm.trx.reset.usu2pad_u6trxid_u8pad", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usu2Pad_u6TRXId_u8Pad",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_TRX_RESET_CMD[1], + { "aPadding", "octvc1.gsm.trx.reset.apadding", + FT_UINT8,BASE_HEX, NULL, 0x0, + "aPadding",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_TRX_RESET_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_TRX_RESET_RSP[5]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_TRX_RESET_RSP; + +void register_tOCTVC1_GSM_MSG_TRX_RESET_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_TRX_RESET_RSP[0], + { "byu2Pad_u6TRXId", "octvc1.gsm.trx.reset.byu2pad_u6trxid", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu2Pad_u6TRXId",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_TRX_RESET_RSP[1], + { "byPad", "octvc1.gsm.trx.reset.bypad", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byPad",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_TRX_RESET_RSP[2], + { "usStatus", "octvc1.gsm.trx.reset.usstatus", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usStatus",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_TRX_RESET_RSP[3], + { "aPadding", "octvc1.gsm.trx.reset.apadding", + FT_UINT8,BASE_HEX, NULL, 0x0, + "aPadding",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_TRX_RESET_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_TRX_STATUS_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_TRX_STATUS_CMD; + +void register_tOCTVC1_GSM_MSG_TRX_STATUS_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_TRX_STATUS_CMD[0], + { "usu2Pad_u6TRXId_u8Pad", "octvc1.gsm.trx.status.usu2pad_u6trxid_u8pad", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usu2Pad_u6TRXId_u8Pad",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_TRX_STATUS_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_TRX_STATUS_RSP[5]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_TRX_STATUS_RSP; + +void register_tOCTVC1_GSM_MSG_TRX_STATUS_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_TRX_STATUS_RSP[0], + { "byu2Pad_u6TRXId", "octvc1.gsm.trx.status.byu2pad_u6trxid", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byu2Pad_u6TRXId",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_TRX_STATUS_RSP[1], + { "byPad", "octvc1.gsm.trx.status.bypad", + FT_UINT8,BASE_HEX, NULL, 0x0, + "byPad",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_TRX_STATUS_RSP[2], + { "atStatus", "octvc1.gsm.trx.status.atstatus", + FT_NONE, BASE_NONE, NULL, 0x0, + "atStatus",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_TRX_STATUS_RSP[3], + { "aPadding", "octvc1.gsm.trx.status.apadding", + FT_UINT8,BASE_HEX, NULL, 0x0, + "aPadding",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_TRX_STATUS_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD[9]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD; + +void register_tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD[0], + { "u6TrxId_u4band_u1H_u5TSC", "octvc1.gsm.trx.configure.u6trxid_u4band_u1h_u5tsc", + FT_NONE, BASE_NONE, NULL, 0x0, + "u6TrxId_u4band_u1H_u5TSC",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD[1], + { "ARFCN", "octvc1.gsm.trx.configure.arfcn", + FT_UINT16,BASE_HEX, NULL, 0x0, + "ARFCN",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD[2], + { "BCCH_ARFCN", "octvc1.gsm.trx.configure.bcch_arfcn", + FT_UINT16,BASE_HEX, NULL, 0x0, + "BCCH_ARFCN",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD[3], + { "HSN", "octvc1.gsm.trx.configure.hsn", + FT_UINT8,BASE_HEX, NULL, 0x0, + "HSN",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD[4], + { "MAIO", "octvc1.gsm.trx.configure.maio", + FT_UINT8,BASE_HEX, NULL, 0x0, + "MAIO",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD[5], + { "HoppingListLength", "octvc1.gsm.trx.configure.hoppinglistlength", + FT_UINT16,BASE_HEX, NULL, 0x0, + "HoppingListLength",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD[6], + { "ausHoppingList", "octvc1.gsm.trx.configure.aushoppinglist", + FT_UINT16,BASE_HEX, NULL, 0x0, + "ausHoppingList",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD[7], + { "aPadding", "octvc1.gsm.trx.configure.apadding", + FT_UINT8,BASE_HEX, NULL, 0x0, + "aPadding",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_TRX_CONFIGURE_RSP[4]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_TRX_CONFIGURE_RSP; + +void register_tOCTVC1_GSM_MSG_TRX_CONFIGURE_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_TRX_CONFIGURE_RSP[0], + { "u6TrxId_u4band_u6Pad", "octvc1.gsm.trx.configure.u6trxid_u4band_u6pad", + FT_NONE, BASE_NONE, NULL, 0x0, + "u6TrxId_u4band_u6Pad",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_TRX_CONFIGURE_RSP[1], + { "usStatus", "octvc1.gsm.trx.configure.usstatus", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usStatus",HFILL } + + }, + { + &ahf_tOCTVC1_GSM_MSG_TRX_CONFIGURE_RSP[2], + { "aPadding", "octvc1.gsm.trx.configure.apadding", + FT_UINT8,BASE_HEX, NULL, 0x0, + "aPadding",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_TRX_CONFIGURE_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_TEST_START_ETSI_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_TEST_START_ETSI_CMD; + +void register_tOCTVC1_GSM_MSG_TEST_START_ETSI_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_TEST_START_ETSI_CMD[0], + { "usTodo", "octvc1.gsm.test.etsi.start.ustodo", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usTodo",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_TEST_START_ETSI_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_TEST_START_ETSI_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_TEST_START_ETSI_RSP; + +void register_tOCTVC1_GSM_MSG_TEST_START_ETSI_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_TEST_START_ETSI_RSP[0], + { "usTodo", "octvc1.gsm.test.etsi.start.ustodo", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usTodo",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_TEST_START_ETSI_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_TEST_END_ETSI_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_TEST_END_ETSI_CMD; + +void register_tOCTVC1_GSM_MSG_TEST_END_ETSI_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_TEST_END_ETSI_CMD[0], + { "usTodo", "octvc1.gsm.test.etsi.end.ustodo", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usTodo",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_TEST_END_ETSI_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_TEST_END_ETSI_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_TEST_END_ETSI_RSP; + +void register_tOCTVC1_GSM_MSG_TEST_END_ETSI_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_TEST_END_ETSI_RSP[0], + { "usTodo", "octvc1.gsm.test.etsi.end.ustodo", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usTodo",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_TEST_END_ETSI_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_TEST_START_FCC_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_TEST_START_FCC_CMD; + +void register_tOCTVC1_GSM_MSG_TEST_START_FCC_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_TEST_START_FCC_CMD[0], + { "usTodo", "octvc1.gsm.test.fcc.start.ustodo", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usTodo",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_TEST_START_FCC_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_TEST_START_FCC_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_TEST_START_FCC_RSP; + +void register_tOCTVC1_GSM_MSG_TEST_START_FCC_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_TEST_START_FCC_RSP[0], + { "usTodo", "octvc1.gsm.test.fcc.start.ustodo", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usTodo",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_TEST_START_FCC_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_TEST_END_FCC_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_TEST_END_FCC_CMD; + +void register_tOCTVC1_GSM_MSG_TEST_END_FCC_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_TEST_END_FCC_CMD[0], + { "usTodo", "octvc1.gsm.test.fcc.end.ustodo", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usTodo",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_TEST_END_FCC_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_GSM_MSG_TEST_END_FCC_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_GSM_MSG_TEST_END_FCC_RSP; + +void register_tOCTVC1_GSM_MSG_TEST_END_FCC_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_GSM_MSG_TEST_END_FCC_RSP[0], + { "usTodo", "octvc1.gsm.test.fcc.end.ustodo", + FT_UINT16,BASE_HEX, NULL, 0x0, + "usTodo",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_GSM_MSG_TEST_END_FCC_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +/**************************************************************************** + COMMON dissectors + ****************************************************************************/ + + +unsigned int dissect_tOCTVC1_GSM_tSUBCHANNEL_STATUS(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_GSM_tSUBCHANNEL_STATUS))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_tSUBCHANNEL_STATUS (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_tSUBCHANNEL_STATUS)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_GSM_tSUBCHANNEL_STATUS); + temp_data = tvb_get_ntohs( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_GSM_tSUBCHANNEL_STATUS[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_tSUBCHANNEL_STATUS, usActiveUplinkSAPIMapMSW), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_tSUBCHANNEL_STATUS[0], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_tSUBCHANNEL_STATUS, usActiveUplinkSAPIMapMSW); + + temp_data = tvb_get_ntohs( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_GSM_tSUBCHANNEL_STATUS[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_tSUBCHANNEL_STATUS, usActiveUplinkSAPIMapLSW), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_tSUBCHANNEL_STATUS[1], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_tSUBCHANNEL_STATUS, usActiveUplinkSAPIMapLSW); + + temp_data = tvb_get_ntohs( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_GSM_tSUBCHANNEL_STATUS[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_tSUBCHANNEL_STATUS, usActiveDownlinkSAPIMapMSW), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_tSUBCHANNEL_STATUS[2], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_tSUBCHANNEL_STATUS, usActiveDownlinkSAPIMapMSW); + + temp_data = tvb_get_ntohs( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_GSM_tSUBCHANNEL_STATUS[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_tSUBCHANNEL_STATUS, usActiveDownlinkSAPIMapLSW), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_tSUBCHANNEL_STATUS[3], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_tSUBCHANNEL_STATUS, usActiveDownlinkSAPIMapLSW); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_GSM_tMEASUREMENT_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_GSM_tMEASUREMENT_INFO))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_tMEASUREMENT_INFO (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_tMEASUREMENT_INFO)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_GSM_tMEASUREMENT_INFO); + temp_data = tvb_get_ntohs( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_int_format_value(field_tree, ahf_tOCTVC1_GSM_tMEASUREMENT_INFO[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_tMEASUREMENT_INFO, sRSSI), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_int(field_tree, ahf_tOCTVC1_GSM_tMEASUREMENT_INFO[0], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_tMEASUREMENT_INFO, sRSSI); + + temp_data = tvb_get_ntohs( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_int_format_value(field_tree, ahf_tOCTVC1_GSM_tMEASUREMENT_INFO[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_tMEASUREMENT_INFO, sSNR), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_int(field_tree, ahf_tOCTVC1_GSM_tMEASUREMENT_INFO[1], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_tMEASUREMENT_INFO, sSNR); + + temp_data = tvb_get_ntohs( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_int_format_value(field_tree, ahf_tOCTVC1_GSM_tMEASUREMENT_INFO[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_tMEASUREMENT_INFO, sBurstTiming), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_int(field_tree, ahf_tOCTVC1_GSM_tMEASUREMENT_INFO[2], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_tMEASUREMENT_INFO, sBurstTiming); + + temp_data = tvb_get_ntohs( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_GSM_tMEASUREMENT_INFO[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_tMEASUREMENT_INFO, usBERCount), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_tMEASUREMENT_INFO[3], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_tMEASUREMENT_INFO, usBERCount); + + temp_data = tvb_get_ntohs( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_GSM_tMEASUREMENT_INFO[4], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_tMEASUREMENT_INFO, usBERTOtalBitCOunt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_tMEASUREMENT_INFO[4], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_tMEASUREMENT_INFO, usBERTOtalBitCOunt); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_GSM_TIMESLOT_STATUS(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_GSM_TIMESLOT_STATUS))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_TIMESLOT_STATUS (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_TIMESLOT_STATUS)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_GSM_TIMESLOT_STATUS); + temp_data = tvb_get_guint8( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_GSM_TIMESLOT_STATUS[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_TIMESLOT_STATUS, byChannelType), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_TIMESLOT_STATUS[0], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_TIMESLOT_STATUS, byChannelType); + + temp_data = tvb_get_guint8( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_GSM_TIMESLOT_STATUS[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_TIMESLOT_STATUS, bySubchannelCount), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_TIMESLOT_STATUS[1], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_TIMESLOT_STATUS, bySubchannelCount); + + } + + + return offset; + +}; + +/**************************************************************************** + Event dissectors + ****************************************************************************/ + + +unsigned int dissect_tOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT[0], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT, byu2Pad_u6TRXId); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT[1], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT, byu5Pad_u3TN); + + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT[2], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT, usFrameNumberMSW); + + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT[3], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT, usFrameNumberLSW); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT[0], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT, byu2Pad_u6TRXId); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT[1], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT, byu5SAPI_u3Dir); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT[2], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT, bySubchannelNum); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT[3], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT, byu5Pad_u3TN); + + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT[4], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT, usFrameNumberMSW); + + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT[5], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT, usFrameNumberLSW); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT, tMeasurementInfo), "tMeasurementInfo:tOCTVC1_GSM_tMEASUREMENT_INFO"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_GSM_tMEASUREMENT_INFO( tvb, pinfo, sub_tree2, offset, NULL ); + } + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT[7], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT, usDataFrameLength); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT, ausDataFrameContents), "ausDataFrameContents"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<234; i++ ) + { + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT[8], tvb, offset, + 2, temp_data, "[%d]: 0x%04x", i, temp_data ); + } + offset+=2; + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_MODULE_TRX_RADIO_READY_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_MODULE_TRX_RADIO_READY_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_MODULE_TRX_RADIO_READY_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_MODULE_TRX_RADIO_READY_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_MODULE_TRX_RADIO_READY_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_TRX_RADIO_READY_EVT[0], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_TRX_RADIO_READY_EVT, byu2Pad_u6TRXId); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT[0], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT, byu2Pad_u6TRXId); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT[1], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT, byu3TN_u5SAPI); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT[2], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT, bySubchannelNum); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT[3], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT, byPad); + + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT[4], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT, usFrameNumberMSW); + + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT[5], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT, usFrameNumberLSW); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT[0], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT, byu2Pad_u6TRXId); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT[1], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT, byuu3TN_u5SAPI); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT[2], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT, bySubchannelNum); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT[3], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT, byBurstType); + + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT[4], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT, usFrameNumberMSW); + + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT[5], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT, usFrameNumberLSW); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT, tMeasurementInfo), "tMeasurementInfo:tOCTVC1_GSM_tMEASUREMENT_INFO"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_GSM_tMEASUREMENT_INFO( tvb, pinfo, sub_tree2, offset, NULL ); + } + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT[7], tvb, offset, + 2, temp_data); + if( ( (unsigned int)temp_data < 0) || ( (unsigned int)temp_data > cOCTVC1_GSM_cSDR_RACH_IND_MAX_MESSAGE_LENGTH_WORDS ) ) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (0..cOCTVC1_GSM_cSDR_RACH_IND_MAX_MESSAGE_LENGTH_WORDS)]" ); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT, usMessageLength); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT, ausMessageContents), "ausMessageContents"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<16; i++ ) + { + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT[8], tvb, offset, + 2, temp_data, "[%d]: 0x%04x", i, temp_data ); + } + offset+=2; + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_MODULE_ERROR_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_MODULE_ERROR_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_MODULE_ERROR_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_MODULE_ERROR_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_MODULE_ERROR_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_ERROR_EVT, hProcessUnit), "hProcessUnit: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_ERROR_EVT[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_ERROR_EVT, ulErrorCode); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT, hProcessUnit), "hProcessUnit: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT, ulMessageCode); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT, ulSeverityLevel); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT, hProcessUnit), "hProcessUnit: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT, ulCoreId); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT, ulFrameIndex); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT, ulSlotIndex); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT, ulCheckPointType); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT[5], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT, ulProcessUnitType); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT[6], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT, ulState); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT, aulReserved), "aulReserved"); + { + 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 ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT[7], tvb, offset, + 4, temp_data, "[%d]: 0x%08x", i, temp_data ); + } + offset+=4; + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_MODULE_TRACING_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_MODULE_TRACING_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_MODULE_TRACING_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_MODULE_TRACING_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_MODULE_TRACING_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_TRACING_EVT, hProcessUnit), "hProcessUnit: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_TRACING_EVT[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_TRACING_EVT, ulCoreId); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_TRACING_EVT[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_TRACING_EVT, ulTraceType); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_TRACING_EVT[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_TRACING_EVT, ulLastTracePacket), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_TRACING_EVT, ulLastTracePacket); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_TRACING_EVT[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_TRACING_EVT, ulTraceIndex); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_TRACING_EVT[5], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_TRACING_EVT, ulPayloadSizeBytes); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_TRACING_EVT, abyUnparsedPayload), "abyUnparsedPayload"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<512; i++ ) + { + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_GSM_MSG_MODULE_TRACING_EVT[6], tvb, offset, + 1, temp_data, "[%d]: 0x%02x", i, temp_data ); + } + offset+=1; + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EVT, hProcessUnit), "hProcessUnit: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EVT[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EVT, ulErrorCode); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT, hProcessUnit), "hProcessUnit: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT, ulMessageCode); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT, ulSeverityLevel); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT, hProcessUnit), "hProcessUnit: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT, ulCoreId); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT, ulFrameIndex); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT, ulSlotIndex); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT, ulCheckPointType); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT[5], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT, ulProcessUnitType); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT[6], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT, ulState); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT, aulReserved), "aulReserved"); + { + 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 ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT[7], tvb, offset, + 4, temp_data, "[%d]: 0x%08x", i, temp_data ); + } + offset+=4; + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT, hProcessUnit), "hProcessUnit: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT, ulCoreId); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT, ulTraceType); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT, ulPayloadSizeBytes); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT, abyUnparsedPayload), "abyUnparsedPayload"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<512; i++ ) + { + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT[4], tvb, offset, + 1, temp_data, "[%d]: 0x%02x", i, temp_data ); + } + offset+=1; + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_TEST_ETSI_TEST_REPORT_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_TEST_ETSI_TEST_REPORT_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TEST_ETSI_TEST_REPORT_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_TEST_ETSI_TEST_REPORT_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TEST_ETSI_TEST_REPORT_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_TEST_ETSI_TEST_REPORT_EVT[0], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TEST_ETSI_TEST_REPORT_EVT, usTodo); + + } + + + return 0; + +}; + +/**************************************************************************** + CMD/RSP dissectors + ****************************************************************************/ + + +unsigned int dissect_tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_CMD, aPadding), "aPadding"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<488; i++ ) + { + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_CMD[0], tvb, offset, + 1, temp_data, "[%d]: 0x%02x", i, temp_data ); + } + offset+=1; + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_RSP, szHardwareInfo), "szHardwareInfo"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<253; i++ ) + { + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_RSP[0], tvb, offset, + 1, temp_data, "[%d]: 0x%02x", i, temp_data ); + } + offset+=1; + } + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_RSP, aPadding), "aPadding"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<210; i++ ) + { + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_RSP[1], tvb, offset, + 1, temp_data, "[%d]: 0x%02x", i, temp_data ); + } + offset+=1; + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD[0], tvb, offset, + 4,"ulEventMask: (0x%08x)", temp_data); + if(temp_data) + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i< mWS_COUNTOF(vals_tOCTVC1_GSM_EVT_MASK); i++ ) + { + if( ( vals_tOCTVC1_GSM_EVT_MASK[i].value && + ( vals_tOCTVC1_GSM_EVT_MASK[i].value & temp_data ) == + vals_tOCTVC1_GSM_EVT_MASK[i].value)) + proto_tree_add_text(sub_tree, tvb, offset,4,"%s", + decode_enumerated_bitfield(vals_tOCTVC1_GSM_EVT_MASK[i].value, 0xFFFFFFFF, (4*8), + VALS(vals_tOCTVC1_GSM_EVT_MASK),"%s")); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD, ulEventMask); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD, ulUserEventId); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD, hEventDestObj), "hEventDestObj: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD, ulEventDestObjPort); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD, ulEventDestObjFifoId); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP[0], tvb, offset, + 4,"ulEventMask: (0x%08x)", temp_data); + if(temp_data) + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i< mWS_COUNTOF(vals_tOCTVC1_GSM_EVT_MASK); i++ ) + { + if( ( vals_tOCTVC1_GSM_EVT_MASK[i].value && + ( vals_tOCTVC1_GSM_EVT_MASK[i].value & temp_data ) == + vals_tOCTVC1_GSM_EVT_MASK[i].value)) + proto_tree_add_text(sub_tree, tvb, offset,4,"%s", + decode_enumerated_bitfield(vals_tOCTVC1_GSM_EVT_MASK[i].value, 0xFFFFFFFF, (4*8), + VALS(vals_tOCTVC1_GSM_EVT_MASK),"%s")); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP, ulEventMask); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP, ulUserEventId); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP, hEventDestObj), "hEventDestObj: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP, ulEventDestObjPort); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP, ulEventDestObjFifoId); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_MODULE_INFO_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_MODULE_INFO_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_MODULE_INFO_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_MODULE_INFO_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_MODULE_INFO_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_MODULE_INFO_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_MODULE_INFO_RSP, ulDeviceType); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD, hProcessUnit), "hProcessUnit: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_DO_NOT_MODIFY) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD, ulUserEventId),temp_data, "cOCTVC1_DO_NOT_MODIFY (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD[1], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD, ulUserEventId); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD[2], tvb, offset, + 4,"ulEventMask: (0x%08x)", temp_data); + if(temp_data) + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i< mWS_COUNTOF(vals_tOCTVC1_GSM_EVT_MASK); i++ ) + { + if( ( vals_tOCTVC1_GSM_EVT_MASK[i].value && + ( vals_tOCTVC1_GSM_EVT_MASK[i].value & temp_data ) == + vals_tOCTVC1_GSM_EVT_MASK[i].value)) + proto_tree_add_text(sub_tree, tvb, offset,4,"%s", + decode_enumerated_bitfield(vals_tOCTVC1_GSM_EVT_MASK[i].value, 0xFFFFFFFF, (4*8), + VALS(vals_tOCTVC1_GSM_EVT_MASK),"%s")); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD, ulEventMask); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD[3], tvb, offset, + 4,"ulDebugFwdEventMask: (0x%08x)", temp_data); + if(temp_data) + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i< mWS_COUNTOF(vals_tOCTVC1_GSM_EVT_MASK); i++ ) + { + if( ( vals_tOCTVC1_GSM_EVT_MASK[i].value && + ( vals_tOCTVC1_GSM_EVT_MASK[i].value & temp_data ) == + vals_tOCTVC1_GSM_EVT_MASK[i].value)) + proto_tree_add_text(sub_tree, tvb, offset,4,"%s", + decode_enumerated_bitfield(vals_tOCTVC1_GSM_EVT_MASK[i].value, 0xFFFFFFFF, (4*8), + VALS(vals_tOCTVC1_GSM_EVT_MASK),"%s")); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD, ulDebugFwdEventMask); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_RSP, hProcessUnit), "hProcessUnit: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, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_CMD, hProcessUnit), "hProcessUnit: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, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP[0], tvb, offset, + 4,"ulEventMask: (0x%08x)", temp_data); + if(temp_data) + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i< mWS_COUNTOF(vals_tOCTVC1_GSM_EVT_MASK); i++ ) + { + if( ( vals_tOCTVC1_GSM_EVT_MASK[i].value && + ( vals_tOCTVC1_GSM_EVT_MASK[i].value & temp_data ) == + vals_tOCTVC1_GSM_EVT_MASK[i].value)) + proto_tree_add_text(sub_tree, tvb, offset,4,"%s", + decode_enumerated_bitfield(vals_tOCTVC1_GSM_EVT_MASK[i].value, 0xFFFFFFFF, (4*8), + VALS(vals_tOCTVC1_GSM_EVT_MASK),"%s")); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP, ulEventMask); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP, ulUserEventId); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP, hEventDestObj), "hEventDestObj: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP, ulEventDestObjPort); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP, ulEventDestObjFifoId); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_CMD, ObjectCursor), "ObjectCursor:tOCTVC1_CURSOR_HANDLE_GET"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_GET( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_RSP, ObjectCursor), "ObjectCursor:tOCTVC1_CURSOR_HANDLE_GET"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_GET( tvb, pinfo, sub_tree2, offset, NULL ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_RSP, ObjectList), "ObjectList:tOCTVC1_LIST_HANDLE_GET"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_LIST_HANDLE_GET( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_CMD, ObjectGet), "ObjectGet:tOCTVC1_CURSOR_HANDLE_GET"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_GET( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP, ObjectGet), "ObjectGet:tOCTVC1_CURSOR_HANDLE_GET"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_GET( tvb, pinfo, sub_tree2, offset, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP, ulProcessType); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP, ulInstance); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP, ulMasterCore), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP, ulMasterCore); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP, ulCoreId); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CMD, ObjectGet), "ObjectGet:tOCTVC1_CURSOR_HANDLE_GET"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_GET( tvb, pinfo, sub_tree2, offset, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CMD[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CMD, ulResetStatsFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CMD, ulResetStatsFlag); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_RSP, ObjectGet), "ObjectGet:tOCTVC1_CURSOR_HANDLE_GET"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_GET( tvb, pinfo, sub_tree2, offset, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_RSP, ulLastFrameIndex); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD[0], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD, byu2Pad_u6TRXId); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD[1], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD, byu3TN_u5SAPI); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD[2], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD, bySubchannelNum); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD[3], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD, byPad); + + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD[4], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD, usFrameNumberMsb); + + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD[5], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD, usFrameNumberLsb); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD, aPadding), "aPadding"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<480; i++ ) + { + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD[6], tvb, offset, + 1, temp_data, "[%d]: 0x%02x", i, temp_data ); + } + offset+=1; + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_RSP[0], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_RSP, usTodo); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD[0], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD, byU2Pad_u6TRXId); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD[1], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD, byU3TN_u5SAPI); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD[2], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD, bySubchannelNum); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD[3], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD, byPad); + + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD[4], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD, usFrameNumberMSB); + + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD[5], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD, usFrameNumberLSB); + + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD[6], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD, usDataLength); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD, ausDataContents), "ausDataContents"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<478; i++ ) + { + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD[7], tvb, offset, + 1, temp_data, "[%d]: 0x%02x", i, temp_data ); + } + offset+=1; + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_RSP[0], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_RSP, usTodo); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD[0], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD, byu2Pad_u6TRXId); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD[1], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD, byu2Pad_u3TN_u3Dir); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD[2], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD, bySubchannelNum); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD[3], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD, byuCipherId); + + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD[4], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD, usKC0); + + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD[5], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD, usKC1); + + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD[6], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD, usKC2); + + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD[7], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD, usKC3); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP[0], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP, byu2Pad_u6TRXId); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP[1], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP, byu2Pad_u3TN_u3Dir); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP[2], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP, bySubchannelNum); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP[3], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP, byPad); + + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP[4], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP, usStatus); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP, aPadding), "aPadding"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<458; i++ ) + { + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP[5], tvb, offset, + 1, temp_data, "[%d]: 0x%02x", i, temp_data ); + } + offset+=1; + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD[0], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD, byu2Pad_u6TrxId); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD[1], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD, byu5Pad_u3TimeslotNumber); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD[2], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD, byChannelType); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD[3], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD, byPayloadType); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD, aPadding), "aPadding"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<484; i++ ) + { + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD[4], tvb, offset, + 1, temp_data, "[%d]: 0x%02x", i, temp_data ); + } + offset+=1; + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP[0], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP, byu2Pad_u6TRXId); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP[1], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP, byu5Pad_u3TN); + + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP[2], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP, usStatus); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP, aPadding), "aPadding"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<460; i++ ) + { + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP[3], tvb, offset, + 1, temp_data, "[%d]: 0x%02x", i, temp_data ); + } + offset+=1; + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CMD[0], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CMD, byu2Pad_u6TrxId); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CMD[1], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CMD, byu5Pad_u3TimeslotNumber); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CMD, aPadding), "aPadding"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<476; i++ ) + { + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CMD[2], tvb, offset, + 1, temp_data, "[%d]: 0x%02x", i, temp_data ); + } + offset+=1; + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP[0], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP, byu2Pad_u6TRXId); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP[1], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP, byu5Pad_u3TN); + + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP[2], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP, usStatus); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP, aPadding), "aPadding"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<460; i++ ) + { + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP[3], tvb, offset, + 1, temp_data, "[%d]: 0x%02x", i, temp_data ); + } + offset+=1; + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_CMD, aPadding), "aPadding"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<462; i++ ) + { + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_CMD[0], tvb, offset, + 1, temp_data, "[%d]: 0x%02x", i, temp_data ); + } + offset+=1; + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_RSP[0], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_RSP, usStatus); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_RSP, aPadding), "aPadding"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<476; i++ ) + { + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_RSP[1], tvb, offset, + 1, temp_data, "[%d]: 0x%02x", i, temp_data ); + } + offset+=1; + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD[0], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD, byu2Pad_u6TRXId); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD[1], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD, byu2Pad_u3TN_u3Dir); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD[2], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD, bySubchannelNum); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD[3], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD, byu3Pad_u5SAPI); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD[4], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD, byTimingAdvance); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD[5], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD, byPad); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD[6], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD, byBSIC); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD[7], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD, byu1CMIPhase_u7InitRate); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD[8], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD, byu4Rate1_u4Rate2); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD[9], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD, byu4Rate3_u4Rate4); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD, aPadding), "aPadding"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<476; i++ ) + { + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD[10], tvb, offset, + 1, temp_data, "[%d]: 0x%02x", i, temp_data ); + } + offset+=1; + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP[0], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP, byu2Pad_u3TRXId); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP[1], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP, byu2Pad_u3TN_u3Dir); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP[2], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP, bySubchannelNum); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP[3], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP, byu3Pad_u5SAPI); + + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP[4], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP, usStatus); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP, aPadding), "aPadding"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<458; i++ ) + { + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP[5], tvb, offset, + 1, temp_data, "[%d]: 0x%02x", i, temp_data ); + } + offset+=1; + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CMD[0], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CMD, byu2Pad_u6TRXId); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CMD[1], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CMD, byu2Pad_u3TN_u3Dir); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CMD[2], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CMD, bySubchannelNum); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CMD[3], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CMD, byu3Pad_u5SAPI); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP[0], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP, byu2Pad_u3TRXId); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP[1], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP, byu2Pad_u3TN_u3Dir); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP[2], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP, bySubchannelNum); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP[3], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP, byu3Pad_u5SAPI); + + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP[4], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP, usStatus); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP, aPadding), "aPadding"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<458; i++ ) + { + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP[5], tvb, offset, + 1, temp_data, "[%d]: 0x%02x", i, temp_data ); + } + offset+=1; + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_CMD[0], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_CMD, usu2Pad_u6TRXId_u5Pad_u3TN); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_RSP[0], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_RSP, usu2Pad_u6TRXId_u5Pad_u3TN); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_RSP[1], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_RSP, byChannelType); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_RSP[2], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_RSP, bySubchannelCount); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_RSP, atSubchannnelStatus), "atSubchannnelStatus:tOCTVC1_GSM_tSUBCHANNEL_STATUS"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<16; i++ ) + { + { + proto_tree* sub_tree2; + ti = proto_tree_add_text(sub_tree, tvb, offset, + sizeof(tOCTVC1_GSM_tSUBCHANNEL_STATUS), "[%d]:", i); + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_GSM_tSUBCHANNEL_STATUS( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_RSP, aPadding), "aPadding"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<332; i++ ) + { + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_RSP[4], tvb, offset, + 1, temp_data, "[%d]: 0x%02x", i, temp_data ); + } + offset+=1; + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_CMD[0], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_CMD, byu2Pad_u6TRXId); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_CMD[1], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_CMD, byu5Pad_u3TN); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_RSP[0], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_RSP, byu2Pad_u6TRXId); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_RSP[1], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_RSP, byu5Pad_u3TN); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_RSP, tMeasurementInfo), "tMeasurementInfo:tOCTVC1_GSM_tMEASUREMENT_INFO"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_GSM_tMEASUREMENT_INFO( tvb, pinfo, sub_tree2, offset, NULL ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_RSP, aPadding), "aPadding"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<454; i++ ) + { + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_RSP[3], tvb, offset, + 1, temp_data, "[%d]: 0x%02x", i, temp_data ); + } + offset+=1; + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_TRX_RESET_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_TRX_RESET_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TRX_RESET_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_TRX_RESET_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TRX_RESET_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_TRX_RESET_CMD[0], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TRX_RESET_CMD, usu2Pad_u6TRXId_u8Pad); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TRX_RESET_CMD, aPadding), "aPadding"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<486; i++ ) + { + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_GSM_MSG_TRX_RESET_CMD[1], tvb, offset, + 1, temp_data, "[%d]: 0x%02x", i, temp_data ); + } + offset+=1; + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_TRX_RESET_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_TRX_RESET_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TRX_RESET_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_TRX_RESET_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TRX_RESET_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_TRX_RESET_RSP[0], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TRX_RESET_RSP, byu2Pad_u6TRXId); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_TRX_RESET_RSP[1], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TRX_RESET_RSP, byPad); + + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_TRX_RESET_RSP[2], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TRX_RESET_RSP, usStatus); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TRX_RESET_RSP, aPadding), "aPadding"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<460; i++ ) + { + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_GSM_MSG_TRX_RESET_RSP[3], tvb, offset, + 1, temp_data, "[%d]: 0x%02x", i, temp_data ); + } + offset+=1; + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_TRX_STATUS_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_TRX_STATUS_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TRX_STATUS_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_TRX_STATUS_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TRX_STATUS_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_TRX_STATUS_CMD[0], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TRX_STATUS_CMD, usu2Pad_u6TRXId_u8Pad); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_TRX_STATUS_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_TRX_STATUS_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TRX_STATUS_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_TRX_STATUS_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TRX_STATUS_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_TRX_STATUS_RSP[0], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TRX_STATUS_RSP, byu2Pad_u6TRXId); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_TRX_STATUS_RSP[1], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TRX_STATUS_RSP, byPad); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TRX_STATUS_RSP, atStatus), "atStatus:tOCTVC1_GSM_TIMESLOT_STATUS"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<8; i++ ) + { + { + proto_tree* sub_tree2; + ti = proto_tree_add_text(sub_tree, tvb, offset, + sizeof(tOCTVC1_GSM_TIMESLOT_STATUS), "[%d]:", i); + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_GSM_TIMESLOT_STATUS( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TRX_STATUS_RSP, aPadding), "aPadding"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<446; i++ ) + { + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_GSM_MSG_TRX_STATUS_RSP[3], tvb, offset, + 1, temp_data, "[%d]: 0x%02x", i, temp_data ); + } + offset+=1; + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD[0], tvb, offset, + 2,"u6TrxId_u4band_u1H_u5TSC: (0x%08x)", temp_data); + if(temp_data) + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i< mWS_COUNTOF(vals_tOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK); i++ ) + { + if( ( vals_tOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK[i].value && + ( vals_tOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK[i].value & temp_data ) == + vals_tOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK[i].value)) + proto_tree_add_text(sub_tree, tvb, offset,2,"%s", + decode_enumerated_bitfield(vals_tOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK[i].value, 0xFFFFFFFF, (2*8), + VALS(vals_tOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK),"%s")); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD, u6TrxId_u4band_u1H_u5TSC); + + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD[1], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD, ARFCN); + + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD[2], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD, BCCH_ARFCN); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD[3], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD, HSN); + + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD[4], tvb, offset, + 1, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD, MAIO); + + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD[5], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD, HoppingListLength); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD, ausHoppingList), "ausHoppingList"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<64; i++ ) + { + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD[6], tvb, offset, + 2, temp_data, "[%d]: 0x%04x", i, temp_data ); + } + offset+=2; + } + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD, aPadding), "aPadding"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<350; i++ ) + { + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD[7], tvb, offset, + 1, temp_data, "[%d]: 0x%02x", i, temp_data ); + } + offset+=1; + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_TRX_CONFIGURE_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_TRX_CONFIGURE_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TRX_CONFIGURE_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_TRX_CONFIGURE_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TRX_CONFIGURE_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_GSM_MSG_TRX_CONFIGURE_RSP[0], tvb, offset, + 2,"u6TrxId_u4band_u6Pad: (0x%08x)", temp_data); + if(temp_data) + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i< mWS_COUNTOF(vals_tOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK); i++ ) + { + if( ( vals_tOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK[i].value && + ( vals_tOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK[i].value & temp_data ) == + vals_tOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK[i].value)) + proto_tree_add_text(sub_tree, tvb, offset,2,"%s", + decode_enumerated_bitfield(vals_tOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK[i].value, 0xFFFFFFFF, (2*8), + VALS(vals_tOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK),"%s")); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TRX_CONFIGURE_RSP, u6TrxId_u4band_u6Pad); + + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_TRX_CONFIGURE_RSP[1], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TRX_CONFIGURE_RSP, usStatus); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TRX_CONFIGURE_RSP, aPadding), "aPadding"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<460; i++ ) + { + temp_data = tvb_get_guint8( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_GSM_MSG_TRX_CONFIGURE_RSP[2], tvb, offset, + 1, temp_data, "[%d]: 0x%02x", i, temp_data ); + } + offset+=1; + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_TEST_START_ETSI_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_TEST_START_ETSI_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TEST_START_ETSI_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_TEST_START_ETSI_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TEST_START_ETSI_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_TEST_START_ETSI_CMD[0], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TEST_START_ETSI_CMD, usTodo); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_TEST_START_ETSI_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_TEST_START_ETSI_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TEST_START_ETSI_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_TEST_START_ETSI_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TEST_START_ETSI_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_TEST_START_ETSI_RSP[0], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TEST_START_ETSI_RSP, usTodo); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_TEST_END_ETSI_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_TEST_END_ETSI_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TEST_END_ETSI_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_TEST_END_ETSI_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TEST_END_ETSI_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_TEST_END_ETSI_CMD[0], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TEST_END_ETSI_CMD, usTodo); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_TEST_END_ETSI_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_TEST_END_ETSI_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TEST_END_ETSI_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_TEST_END_ETSI_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TEST_END_ETSI_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_TEST_END_ETSI_RSP[0], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TEST_END_ETSI_RSP, usTodo); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_TEST_START_FCC_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_TEST_START_FCC_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TEST_START_FCC_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_TEST_START_FCC_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TEST_START_FCC_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_TEST_START_FCC_CMD[0], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TEST_START_FCC_CMD, usTodo); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_TEST_START_FCC_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_TEST_START_FCC_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TEST_START_FCC_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_TEST_START_FCC_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TEST_START_FCC_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_TEST_START_FCC_RSP[0], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TEST_START_FCC_RSP, usTodo); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_TEST_END_FCC_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_TEST_END_FCC_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TEST_END_FCC_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_TEST_END_FCC_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TEST_END_FCC_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_TEST_END_FCC_CMD[0], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TEST_END_FCC_CMD, usTodo); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_GSM_MSG_TEST_END_FCC_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_GSM_MSG_TEST_END_FCC_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TEST_END_FCC_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_GSM_MSG_TEST_END_FCC_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_GSM_MSG_TEST_END_FCC_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohs( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_GSM_MSG_TEST_END_FCC_RSP[0], tvb, offset, + 2, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_GSM_MSG_TEST_END_FCC_RSP, usTodo); + + } + + + return 0; + +}; +/**************************************************************************** + MODULE REGISTERED EXPORTED FUNCTION + ****************************************************************************/ + +void ws_register_OCTVC1_GSM(void) +{ + /**************************************************************************** + Register Common struct + ****************************************************************************/ + register_tOCTVC1_GSM_tSUBCHANNEL_STATUS(); + register_tOCTVC1_GSM_tMEASUREMENT_INFO(); + register_tOCTVC1_GSM_TIMESLOT_STATUS(); + + /**************************************************************************** + CMD/RSP Registered + ****************************************************************************/ + register_tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_CMD(); + register_tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_RSP(); + register_tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD(); + register_tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP(); + register_tOCTVC1_GSM_MSG_MODULE_INFO_RSP(); + register_tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD(); + register_tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_RSP(); + register_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_CMD(); + register_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP(); + register_tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_CMD(); + register_tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_RSP(); + register_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_CMD(); + register_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP(); + register_tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CMD(); + register_tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_RSP(); + register_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD(); + register_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_RSP(); + register_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD(); + register_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_RSP(); + register_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD(); + register_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP(); + register_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD(); + register_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP(); + register_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CMD(); + register_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP(); + register_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_CMD(); + register_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_RSP(); + register_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD(); + register_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP(); + register_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CMD(); + register_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP(); + register_tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_CMD(); + register_tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_RSP(); + register_tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_CMD(); + register_tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_RSP(); + register_tOCTVC1_GSM_MSG_TRX_RESET_CMD(); + register_tOCTVC1_GSM_MSG_TRX_RESET_RSP(); + register_tOCTVC1_GSM_MSG_TRX_STATUS_CMD(); + register_tOCTVC1_GSM_MSG_TRX_STATUS_RSP(); + register_tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD(); + register_tOCTVC1_GSM_MSG_TRX_CONFIGURE_RSP(); + register_tOCTVC1_GSM_MSG_TEST_START_ETSI_CMD(); + register_tOCTVC1_GSM_MSG_TEST_START_ETSI_RSP(); + register_tOCTVC1_GSM_MSG_TEST_END_ETSI_CMD(); + register_tOCTVC1_GSM_MSG_TEST_END_ETSI_RSP(); + register_tOCTVC1_GSM_MSG_TEST_START_FCC_CMD(); + register_tOCTVC1_GSM_MSG_TEST_START_FCC_RSP(); + register_tOCTVC1_GSM_MSG_TEST_END_FCC_CMD(); + register_tOCTVC1_GSM_MSG_TEST_END_FCC_RSP(); + + /**************************************************************************** + Event Registered + ****************************************************************************/ + register_tOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT(); + register_tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT(); + register_tOCTVC1_GSM_MSG_MODULE_TRX_RADIO_READY_EVT(); + register_tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT(); + register_tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT(); + register_tOCTVC1_GSM_MSG_MODULE_ERROR_EVT(); + register_tOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT(); + register_tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT(); + register_tOCTVC1_GSM_MSG_MODULE_TRACING_EVT(); + register_tOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EVT(); + register_tOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT(); + register_tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT(); + register_tOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT(); + register_tOCTVC1_GSM_MSG_TEST_ETSI_TEST_REPORT_EVT(); + +} + +/**************************************************************************** + MODULE DISSECTOR FUNCTIONS + ****************************************************************************/ +int ws_dissect_OCTVC1_GSM_CMD( guint32 CID, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ) +{ + if( tree ) + { + switch( CID ) { + case cOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_CID: return dissect_tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CID: return dissect_tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_MODULE_INFO_EVT_CID: return 0; break; + case cOCTVC1_GSM_MSG_MODULE_INFO_CID: return 0; break; + case cOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CID: return dissect_tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_CID: return dissect_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_CID: return dissect_tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_CID: return dissect_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CID: return dissect_tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CID: return dissect_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CID: return dissect_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CID: return dissect_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CID: return dissect_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CID: return dissect_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_CID: return dissect_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CID: return dissect_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CID: return dissect_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_CID: return dissect_tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_CID: return dissect_tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_TRX_RESET_CID: return dissect_tOCTVC1_GSM_MSG_TRX_RESET_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_TRX_STATUS_CID: return dissect_tOCTVC1_GSM_MSG_TRX_STATUS_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_TRX_CONFIGURE_CID: return dissect_tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_TEST_START_ETSI_CID: return dissect_tOCTVC1_GSM_MSG_TEST_START_ETSI_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_TEST_END_ETSI_CID: return dissect_tOCTVC1_GSM_MSG_TEST_END_ETSI_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_TEST_START_FCC_CID: return dissect_tOCTVC1_GSM_MSG_TEST_START_FCC_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_TEST_END_FCC_CID: return dissect_tOCTVC1_GSM_MSG_TEST_END_FCC_CMD( tvb, pinfo, tree, 0 ); break; + default: return 1; + } + } + return 0; + +} +int ws_dissect_OCTVC1_GSM_RSP( guint32 CID, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ) +{ + if( tree ) + { + switch( CID ) { + case cOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_CID: return dissect_tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CID: return 0; break; + case cOCTVC1_GSM_MSG_MODULE_INFO_EVT_CID: return dissect_tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_MODULE_INFO_CID: return dissect_tOCTVC1_GSM_MSG_MODULE_INFO_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CID: return dissect_tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_CID: return dissect_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_CID: return dissect_tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_CID: return dissect_tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CID: return dissect_tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CID: return dissect_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CID: return dissect_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CID: return dissect_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CID: return dissect_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CID: return dissect_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_CID: return dissect_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CID: return dissect_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CID: return dissect_tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_CID: return dissect_tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_CID: return dissect_tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_TRX_RESET_CID: return dissect_tOCTVC1_GSM_MSG_TRX_RESET_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_TRX_STATUS_CID: return dissect_tOCTVC1_GSM_MSG_TRX_STATUS_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_TRX_CONFIGURE_CID: return dissect_tOCTVC1_GSM_MSG_TRX_CONFIGURE_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_TEST_START_ETSI_CID: return dissect_tOCTVC1_GSM_MSG_TEST_START_ETSI_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_TEST_END_ETSI_CID: return dissect_tOCTVC1_GSM_MSG_TEST_END_ETSI_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_TEST_START_FCC_CID: return dissect_tOCTVC1_GSM_MSG_TEST_START_FCC_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_TEST_END_FCC_CID: return dissect_tOCTVC1_GSM_MSG_TEST_END_FCC_RSP( tvb, pinfo, tree, 0 ); break; + default: return 1; + } + } + return 0; + +} +int ws_dissect_OCTVC1_GSM_EVT( guint32 CID, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ) +{ + if( tree ) + { + switch( CID ) { + case cOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EID: return dissect_tOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EID: return dissect_tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_MODULE_TRX_RADIO_READY_EID: return dissect_tOCTVC1_GSM_MSG_MODULE_TRX_RADIO_READY_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EID: return dissect_tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EID: return dissect_tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_MODULE_ERROR_EID: return dissect_tOCTVC1_GSM_MSG_MODULE_ERROR_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_MODULE_MESSAGE_EID: return dissect_tOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EID: return dissect_tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_MODULE_TRACING_EID: return dissect_tOCTVC1_GSM_MSG_MODULE_TRACING_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EID: return dissect_tOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EID: return dissect_tOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EID: return dissect_tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EID: return dissect_tOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_GSM_MSG_TEST_ETSI_TEST_REPORT_EID: return dissect_tOCTVC1_GSM_MSG_TEST_ETSI_TEST_REPORT_EVT( tvb, pinfo, tree, 0 ); break; + default: return 1; + } + } + return 0; + +} + +/**************************************************************************** + MODULE DISSECTOR EXPORTED FUNCTION + ****************************************************************************/ + +int ws_dissect_OCTVC1_GSM( guint8 message_type, guint32 CID, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ) +{ + if (message_type == cOCTVC1_MSG_TYPE_RESPONSE) + return ws_dissect_OCTVC1_GSM_RSP( CID, tvb, pinfo, tree); + if (message_type == cOCTVC1_MSG_TYPE_COMMAND) + return ws_dissect_OCTVC1_GSM_CMD( CID, tvb, pinfo, tree); + if (message_type == cOCTVC1_MSG_TYPE_NOTIFICATION ) + return ws_dissect_OCTVC1_GSM_EVT( CID, tvb, pinfo, tree); + else + return 1; + +} + diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_module_main.c b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_module_main.c new file mode 100644 index 0000000..4cb5e9b --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_module_main.c @@ -0,0 +1,11076 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: octvc1_module_main.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_MAIN_SPI_CLOCK_POLARITY_ENUM[] = + { + { cOCTVC1_MAIN_SPI_CLOCK_POLARITY_ENUM_LOW, "cOCTVC1_MAIN_SPI_CLOCK_POLARITY_ENUM_LOW" }, + { cOCTVC1_MAIN_SPI_CLOCK_POLARITY_ENUM_HIGH, "cOCTVC1_MAIN_SPI_CLOCK_POLARITY_ENUM_HIGH" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_MAIN_SPI_CLOCK_PHASE_ENUM[] = + { + { cOCTVC1_MAIN_SPI_CLOCK_PHASE_ENUM_CHIP_SELECT_EDGE, "cOCTVC1_MAIN_SPI_CLOCK_PHASE_ENUM_CHIP_SELECT_EDGE" }, + { cOCTVC1_MAIN_SPI_CLOCK_PHASE_ENUM_CLOCK_TRANSITION, "cOCTVC1_MAIN_SPI_CLOCK_PHASE_ENUM_CLOCK_TRANSITION" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_MAIN_API_LICENSING_FEATURE_TYPE_ENUM[] = + { + { cOCTVC1_MAIN_API_LICENSING_FEATURE_TYPE_ENUM_FLAG, "cOCTVC1_MAIN_API_LICENSING_FEATURE_TYPE_ENUM_FLAG" }, + { cOCTVC1_MAIN_API_LICENSING_FEATURE_TYPE_ENUM_COUNT, "cOCTVC1_MAIN_API_LICENSING_FEATURE_TYPE_ENUM_COUNT" }, + { cOCTVC1_MAIN_API_LICENSING_FEATURE_TYPE_ENUM_MIN, "cOCTVC1_MAIN_API_LICENSING_FEATURE_TYPE_ENUM_MIN" }, + { cOCTVC1_MAIN_API_LICENSING_FEATURE_TYPE_ENUM_MAX, "cOCTVC1_MAIN_API_LICENSING_FEATURE_TYPE_ENUM_MAX" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_MAIN_BOOT_PROGRESS_ENUM[] = + { + { cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_DONE, "cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_DONE" }, + { cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_STARTING_CONTROL, "cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_STARTING_CONTROL" }, + { cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_REMAPPING_CONTROL, "cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_REMAPPING_CONTROL" }, + { cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_ALLOCATING_LOCAL_MEMORY, "cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_ALLOCATING_LOCAL_MEMORY" }, + { cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_VALIDATING_LICENSE, "cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_VALIDATING_LICENSE" }, + { cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_PARSING_CONFIG_FILE, "cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_PARSING_CONFIG_FILE" }, + { cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_INITIALIZING_CONTROL_FIFO, "cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_INITIALIZING_CONTROL_FIFO" }, + { cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_INITIALIZING_GPIO, "cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_INITIALIZING_GPIO" }, + { cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_INITIALIZING_MAIN_API, "cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_INITIALIZING_MAIN_API" }, + { cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_INITIALIZING_CPP_API, "cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_INITIALIZING_CPP_API" }, + { cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_INITIALIZING_NET_API, "cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_INITIALIZING_NET_API" }, + { cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_INITIALIZING_VSPMP_VOC_MANAGEMENT, "cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_INITIALIZING_VSPMP_VOC_MANAGEMENT" }, + { cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_INITIALIZING_VSPMP_VID_MANAGEMENT, "cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_INITIALIZING_VSPMP_VID_MANAGEMENT" }, + { cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_INITIALIZING_TDM_DRIVER_MEMORY, "cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_INITIALIZING_TDM_DRIVER_MEMORY" }, + { cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_INITIALIZING_AF_SERVER_MEMORY, "cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_INITIALIZING_AF_SERVER_MEMORY" }, + { cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_ALLOCATING_VSPMGR_MEMORY, "cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_ALLOCATING_VSPMGR_MEMORY" }, + { cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_STARTING_ROUTER, "cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_STARTING_ROUTER" }, + { cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_STARTING_SCHEDULER, "cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_STARTING_SCHEDULER" }, + { cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_STARTING_VSPMGR, "cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_STARTING_VSPMGR" }, + { cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_INITIALIZING_VSPMP_VOC_MEMORY, "cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_INITIALIZING_VSPMP_VOC_MEMORY" }, + { cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_INITIALIZING_VSPMP_VID_MEMORY, "cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_INITIALIZING_VSPMP_VID_MEMORY" }, + { cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_VALIDATING_SYSTEM_CLOCK, "cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_VALIDATING_SYSTEM_CLOCK" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_MAIN_SYSLOG_MSG_ENUM[] = + { + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_SYSLOG_MSG_BASE, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_SYSLOG_MSG_BASE" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_BOOT_IMAGE_BASE, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_BOOT_IMAGE_BASE" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_BOOT_IMAGE_ERROR, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_BOOT_IMAGE_ERROR" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_BOOT_IMAGE_FIRMWARE_UPDATE_SUCCESSFUL, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_BOOT_IMAGE_FIRMWARE_UPDATE_SUCCESSFUL" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_BOOT_IMAGE_VALIDATION_ERROR_LOOPBACK, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_BOOT_IMAGE_VALIDATION_ERROR_LOOPBACK" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CFG_BASE, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CFG_BASE" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CFG_FILE_NOT_FOUND, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CFG_FILE_NOT_FOUND" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CFG_INVALID_XML_VERSION, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CFG_INVALID_XML_VERSION" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CFG_MALFORMED_XML, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CFG_MALFORMED_XML" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CFG_NO_ETHERNET_PORTS, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CFG_NO_ETHERNET_PORTS" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CFG_NO_UNRESTRICTED_ETHERNET_PORTS, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CFG_NO_UNRESTRICTED_ETHERNET_PORTS" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CFG_INVALID_ETHERNET_PORT_INTERFACE, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CFG_INVALID_ETHERNET_PORT_INTERFACE" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_ETH_PORTS_DEFAULT, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_ETH_PORTS_DEFAULT" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_FATAL_VSP_COMMAND_TIMEOUT, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_FATAL_VSP_COMMAND_TIMEOUT" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_FATAL_VSP_COMMAND_SEQUENCE, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_FATAL_VSP_COMMAND_SEQUENCE" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_VSP_CORE_ALLOC, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_VSP_CORE_ALLOC" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_RESET, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_RESET" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_INIT_DONE, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_INIT_DONE" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_EXT_MEM_ALLOC, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_EXT_MEM_ALLOC" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_PROCESS_CREATE, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_PROCESS_CREATE" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_THREAD_CREATE, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_THREAD_CREATE" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_TOO_MANY_VSP_CHANNELS, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_TOO_MANY_VSP_CHANNELS" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_ETH_QUEUE_ALLOC, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_ETH_QUEUE_ALLOC" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_VSPMGR_ALLOC, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_VSPMGR_ALLOC" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_MAIN_ALLOC, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_MAIN_ALLOC" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_NET_ALLOC, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_NET_ALLOC" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_AF_ALLOC, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_AF_ALLOC" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_TDM_ALLOC, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_TDM_ALLOC" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_FIFO_ALLOC, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_FIFO_ALLOC" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_CORE_MONITORING, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_CORE_MONITORING" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_IO_MONITORING, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_IO_MONITORING" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_ETH_PORT_MONITORING, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_ETH_PORT_MONITORING" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_ROUTER_MONITORING, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_ROUTER_MONITORING" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_CORE_REMAP, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_CORE_REMAP" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_ROUTER_RESOURCES, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_ROUTER_RESOURCES" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_SCHED_CREATE, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_SCHED_CREATE" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_TDM_RESET, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_TDM_RESET" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_DIRECTORY_TREE, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_DIRECTORY_TREE" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_FAILURE_RECOVERED, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_FAILURE_RECOVERED" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_FAILURE_CORE_DISABLED, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_FAILURE_CORE_DISABLED" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_CAMERA_DRIVER_CREATE, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_CAMERA_DRIVER_CREATE" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_CORE_HALTED_AND_DUMPED, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_CORE_HALTED_AND_DUMPED" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_FAILOVER_STARTED, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_FAILOVER_STARTED" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_FAILOVER_SUCCESS, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_FAILOVER_SUCCESS" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_FAILOVER_ERROR, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_FAILOVER_ERROR" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_FS_BASE, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_FS_BASE" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_FS_BOOT_IMAGE_UPDATE_DONE, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_FS_BOOT_IMAGE_UPDATE_DONE" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_FS_OCT1010ID_UPDATE_DONE, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_FS_OCT1010ID_UPDATE_DONE" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_FS_MALFORMED_TARBALL, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_FS_MALFORMED_TARBALL" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_LOG_BASE, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_LOG_BASE" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_LOG_RESET, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_LOG_RESET" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_NET_BASE, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_NET_BASE" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_NET_ARP_MODULE, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_NET_ARP_MODULE" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_NET_ND_MODULE, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_NET_ND_MODULE" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_NET_RTCP_TIMER, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_NET_RTCP_TIMER" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_TDM_BASE, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_TDM_BASE" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_TDM_MAX_TSST, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_TDM_MAX_TSST" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_TDM_NO_CLOCK, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_TDM_NO_CLOCK" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_TDM_UNSUPPORTED_CLOCK_SPEED_AUTO_DETECT, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_TDM_UNSUPPORTED_CLOCK_SPEED_AUTO_DETECT" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_TDM_INVALID_MODULE_TYPE, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_TDM_INVALID_MODULE_TYPE" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_TDM_TRI_STATE_NOT_SUPPORTED, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_TDM_TRI_STATE_NOT_SUPPORTED" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_LICENSING_BASE, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_LICENSING_BASE" }, + { cOCTVC1_MAIN_SYSLOG_MSG_ENUM_LICENSING_FORMAT_ERROR, "cOCTVC1_MAIN_SYSLOG_MSG_ENUM_LICENSING_FORMAT_ERROR" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_MAIN_EVT_MASK[] = + { + { cOCTVC1_MAIN_EVT_MASK_NONE, "cOCTVC1_MAIN_EVT_MASK_NONE" }, + { cOCTVC1_MAIN_EVT_MASK_GPIO_CHANGE, "cOCTVC1_MAIN_EVT_MASK_GPIO_CHANGE" }, + { cOCTVC1_MAIN_EVT_MASK_PHY_STATUS, "cOCTVC1_MAIN_EVT_MASK_PHY_STATUS" }, + { cOCTVC1_MAIN_EVT_MASK_CORE_STATUS, "cOCTVC1_MAIN_EVT_MASK_CORE_STATUS" }, + { cOCTVC1_MAIN_EVT_MASK_PROCESS_CPU_USAGE, "cOCTVC1_MAIN_EVT_MASK_PROCESS_CPU_USAGE" }, + { cOCTVC1_MAIN_EVT_MASK_TRACING_BUFFER_FULL, "cOCTVC1_MAIN_EVT_MASK_TRACING_BUFFER_FULL" }, + { cOCTVC1_MAIN_EVT_MASK_TRACING_STOP, "cOCTVC1_MAIN_EVT_MASK_TRACING_STOP" }, + { cOCTVC1_MAIN_EVT_MASK_REDUNDANCY_SERVER_MGW_FAILOVER_DONE, "cOCTVC1_MAIN_EVT_MASK_REDUNDANCY_SERVER_MGW_FAILOVER_DONE" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_MAIN_PROCESS_TYPE_ENUM[] = + { + { cOCTVC1_MAIN_PROCESS_TYPE_ENUM_INVALID, "cOCTVC1_MAIN_PROCESS_TYPE_ENUM_INVALID" }, + { cOCTVC1_MAIN_PROCESS_TYPE_ENUM_CONTROL, "cOCTVC1_MAIN_PROCESS_TYPE_ENUM_CONTROL" }, + { cOCTVC1_MAIN_PROCESS_TYPE_ENUM_TDM_DRIVER, "cOCTVC1_MAIN_PROCESS_TYPE_ENUM_TDM_DRIVER" }, + { cOCTVC1_MAIN_PROCESS_TYPE_ENUM_ROUTER, "cOCTVC1_MAIN_PROCESS_TYPE_ENUM_ROUTER" }, + { cOCTVC1_MAIN_PROCESS_TYPE_ENUM_SCHEDULER, "cOCTVC1_MAIN_PROCESS_TYPE_ENUM_SCHEDULER" }, + { cOCTVC1_MAIN_PROCESS_TYPE_ENUM_VSPMGR, "cOCTVC1_MAIN_PROCESS_TYPE_ENUM_VSPMGR" }, + { cOCTVC1_MAIN_PROCESS_TYPE_ENUM_AF_SRV, "cOCTVC1_MAIN_PROCESS_TYPE_ENUM_AF_SRV" }, + { cOCTVC1_MAIN_PROCESS_TYPE_ENUM_CAMERA_DRIVER, "cOCTVC1_MAIN_PROCESS_TYPE_ENUM_CAMERA_DRIVER" }, + { cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_SCHEDULER, "cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_SCHEDULER" }, + { cOCTVC1_MAIN_PROCESS_TYPE_ENUM_L1C_APAPTATION_LAYER, "cOCTVC1_MAIN_PROCESS_TYPE_ENUM_L1C_APAPTATION_LAYER" }, + { cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_ULIM_RACH, "cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_ULIM_RACH" }, + { cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_ULIM_MASTER, "cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_ULIM_MASTER" }, + { cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_ULIM_RFI, "cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_ULIM_RFI" }, + { cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_ULIM_SLAVE, "cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_ULIM_SLAVE" }, + { cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_ULOM_MASTER, "cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_ULOM_MASTER" }, + { cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_ULOM_SLAVE, "cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_ULOM_SLAVE" }, + { cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_DLIM_MASTER, "cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_DLIM_MASTER" }, + { cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_DLIM_SLAVE, "cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_DLIM_SLAVE" }, + { cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_DLOM_MASTER, "cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_DLOM_MASTER" }, + { cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_DLOM_SLAVE, "cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_DLOM_SLAVE" }, + { cOCTVC1_MAIN_PROCESS_TYPE_ENUM_RFI, "cOCTVC1_MAIN_PROCESS_TYPE_ENUM_RFI" }, + { cOCTVC1_MAIN_PROCESS_TYPE_ENUM_ETH, "cOCTVC1_MAIN_PROCESS_TYPE_ENUM_ETH" }, + { cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_HSDLOM, "cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_HSDLOM" }, + { cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_HSDLIM, "cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_HSDLIM" }, + { cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_ULIM_SSE, "cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_ULIM_SSE" }, + { cOCTVC1_MAIN_PROCESS_TYPE_ENUM_CTRL, "cOCTVC1_MAIN_PROCESS_TYPE_ENUM_CTRL" }, + { cOCTVC1_MAIN_PROCESS_TYPE_ENUM_2G_SCHEDULER, "cOCTVC1_MAIN_PROCESS_TYPE_ENUM_2G_SCHEDULER" }, + { cOCTVC1_MAIN_PROCESS_TYPE_ENUM_2G_DL, "cOCTVC1_MAIN_PROCESS_TYPE_ENUM_2G_DL" }, + { cOCTVC1_MAIN_PROCESS_TYPE_ENUM_2G_ULIM, "cOCTVC1_MAIN_PROCESS_TYPE_ENUM_2G_ULIM" }, + { cOCTVC1_MAIN_PROCESS_TYPE_ENUM_2G_ULOM, "cOCTVC1_MAIN_PROCESS_TYPE_ENUM_2G_ULOM" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_MAIN_OPUS_CORE_STATUS_ENUM[] = + { + { cOCTVC1_MAIN_OPUS_CORE_STATUS_ENUM_RESET, "cOCTVC1_MAIN_OPUS_CORE_STATUS_ENUM_RESET" }, + { cOCTVC1_MAIN_OPUS_CORE_STATUS_ENUM_RUNNING, "cOCTVC1_MAIN_OPUS_CORE_STATUS_ENUM_RUNNING" }, + { cOCTVC1_MAIN_OPUS_CORE_STATUS_ENUM_HALT, "cOCTVC1_MAIN_OPUS_CORE_STATUS_ENUM_HALT" }, + { cOCTVC1_MAIN_OPUS_CORE_STATUS_ENUM_TRAP, "cOCTVC1_MAIN_OPUS_CORE_STATUS_ENUM_TRAP" }, + { cOCTVC1_MAIN_OPUS_CORE_STATUS_ENUM_ACCESS_VIOLATION, "cOCTVC1_MAIN_OPUS_CORE_STATUS_ENUM_ACCESS_VIOLATION" }, + { cOCTVC1_MAIN_OPUS_CORE_STATUS_ENUM_NOT_PRESENT, "cOCTVC1_MAIN_OPUS_CORE_STATUS_ENUM_NOT_PRESENT" }, + { cOCTVC1_MAIN_OPUS_CORE_STATUS_ENUM_FAILURE_DETECTED, "cOCTVC1_MAIN_OPUS_CORE_STATUS_ENUM_FAILURE_DETECTED" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_MAIN_OCT1010_CORE_STATUS_ENUM[] = + { + { cOCTVC1_MAIN_OCT1010_CORE_STATUS_ENUM_RESET, "cOCTVC1_MAIN_OCT1010_CORE_STATUS_ENUM_RESET" }, + { cOCTVC1_MAIN_OCT1010_CORE_STATUS_ENUM_RUNNING, "cOCTVC1_MAIN_OCT1010_CORE_STATUS_ENUM_RUNNING" }, + { cOCTVC1_MAIN_OCT1010_CORE_STATUS_ENUM_HALT, "cOCTVC1_MAIN_OCT1010_CORE_STATUS_ENUM_HALT" }, + { cOCTVC1_MAIN_OCT1010_CORE_STATUS_ENUM_TRAP, "cOCTVC1_MAIN_OCT1010_CORE_STATUS_ENUM_TRAP" }, + { cOCTVC1_MAIN_OCT1010_CORE_STATUS_ENUM_ACCESS_VIOLATION, "cOCTVC1_MAIN_OCT1010_CORE_STATUS_ENUM_ACCESS_VIOLATION" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_MAIN_FAILURE_MASK[] = + { + { cOCTVC1_MAIN_FAILURE_MASK_NONE, "cOCTVC1_MAIN_FAILURE_MASK_NONE" }, + { cOCTVC1_MAIN_FAILURE_MASK_MEMORY, "cOCTVC1_MAIN_FAILURE_MASK_MEMORY" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_MAIN_TDM_STREAM_FREQ_ENUM[] = + { + { cOCTVC1_MAIN_TDM_STREAM_FREQ_ENUM_2MHZ, "cOCTVC1_MAIN_TDM_STREAM_FREQ_ENUM_2MHZ" }, + { cOCTVC1_MAIN_TDM_STREAM_FREQ_ENUM_4MHZ, "cOCTVC1_MAIN_TDM_STREAM_FREQ_ENUM_4MHZ" }, + { cOCTVC1_MAIN_TDM_STREAM_FREQ_ENUM_8MHZ, "cOCTVC1_MAIN_TDM_STREAM_FREQ_ENUM_8MHZ" }, + { cOCTVC1_MAIN_TDM_STREAM_FREQ_ENUM_16MHZ, "cOCTVC1_MAIN_TDM_STREAM_FREQ_ENUM_16MHZ" }, + { cOCTVC1_MAIN_TDM_STREAM_FREQ_ENUM_RESERVED, "cOCTVC1_MAIN_TDM_STREAM_FREQ_ENUM_RESERVED" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_MAIN_ETH_PORT_INTERFACE_TYPE_ENUM[] = + { + { cOCTVC1_MAIN_ETH_PORT_INTERFACE_TYPE_ENUM_INVALID, "cOCTVC1_MAIN_ETH_PORT_INTERFACE_TYPE_ENUM_INVALID" }, + { cOCTVC1_MAIN_ETH_PORT_INTERFACE_TYPE_ENUM_SERDES0, "cOCTVC1_MAIN_ETH_PORT_INTERFACE_TYPE_ENUM_SERDES0" }, + { cOCTVC1_MAIN_ETH_PORT_INTERFACE_TYPE_ENUM_SERDES1, "cOCTVC1_MAIN_ETH_PORT_INTERFACE_TYPE_ENUM_SERDES1" }, + { cOCTVC1_MAIN_ETH_PORT_INTERFACE_TYPE_ENUM_SERDES2, "cOCTVC1_MAIN_ETH_PORT_INTERFACE_TYPE_ENUM_SERDES2" }, + { cOCTVC1_MAIN_ETH_PORT_INTERFACE_TYPE_ENUM_SERDES3, "cOCTVC1_MAIN_ETH_PORT_INTERFACE_TYPE_ENUM_SERDES3" }, + { cOCTVC1_MAIN_ETH_PORT_INTERFACE_TYPE_ENUM_ETH0, "cOCTVC1_MAIN_ETH_PORT_INTERFACE_TYPE_ENUM_ETH0" }, + { cOCTVC1_MAIN_ETH_PORT_INTERFACE_TYPE_ENUM_ETH1, "cOCTVC1_MAIN_ETH_PORT_INTERFACE_TYPE_ENUM_ETH1" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_MAIN_ETH_PORT_MODE_ENUM[] = + { + { cOCTVC1_MAIN_ETH_PORT_MODE_ENUM_INVALID, "cOCTVC1_MAIN_ETH_PORT_MODE_ENUM_INVALID" }, + { cOCTVC1_MAIN_ETH_PORT_MODE_ENUM_MII_10, "cOCTVC1_MAIN_ETH_PORT_MODE_ENUM_MII_10" }, + { cOCTVC1_MAIN_ETH_PORT_MODE_ENUM_MII_100, "cOCTVC1_MAIN_ETH_PORT_MODE_ENUM_MII_100" }, + { cOCTVC1_MAIN_ETH_PORT_MODE_ENUM_RMII_100, "cOCTVC1_MAIN_ETH_PORT_MODE_ENUM_RMII_100" }, + { cOCTVC1_MAIN_ETH_PORT_MODE_ENUM_GMII_1000, "cOCTVC1_MAIN_ETH_PORT_MODE_ENUM_GMII_1000" }, + { cOCTVC1_MAIN_ETH_PORT_MODE_ENUM_RGMII_1000, "cOCTVC1_MAIN_ETH_PORT_MODE_ENUM_RGMII_1000" }, + { cOCTVC1_MAIN_ETH_PORT_MODE_ENUM_SGMII_1000, "cOCTVC1_MAIN_ETH_PORT_MODE_ENUM_SGMII_1000" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_MAIN_ETH_MODE_ENUM[] = + { + { cOCTVC1_MAIN_ETH_MODE_ENUM_INVALID, "cOCTVC1_MAIN_ETH_MODE_ENUM_INVALID" }, + { cOCTVC1_MAIN_ETH_MODE_ENUM_MII, "cOCTVC1_MAIN_ETH_MODE_ENUM_MII" }, + { cOCTVC1_MAIN_ETH_MODE_ENUM_RMII, "cOCTVC1_MAIN_ETH_MODE_ENUM_RMII" }, + { cOCTVC1_MAIN_ETH_MODE_ENUM_GMII, "cOCTVC1_MAIN_ETH_MODE_ENUM_GMII" }, + { cOCTVC1_MAIN_ETH_MODE_ENUM_RGMII, "cOCTVC1_MAIN_ETH_MODE_ENUM_RGMII" }, + { cOCTVC1_MAIN_ETH_MODE_ENUM_SGMII, "cOCTVC1_MAIN_ETH_MODE_ENUM_SGMII" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_MAIN_FILE_OPEN_MODE_MASK[] = + { + { cOCTVC1_MAIN_FILE_OPEN_MODE_MASK_READ, "cOCTVC1_MAIN_FILE_OPEN_MODE_MASK_READ" }, + { cOCTVC1_MAIN_FILE_OPEN_MODE_MASK_WRITE, "cOCTVC1_MAIN_FILE_OPEN_MODE_MASK_WRITE" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_MAIN_OPUS_CORE_MASK[] = + { + { cOCTVC1_MAIN_OPUS_CORE_MASK_1, "cOCTVC1_MAIN_OPUS_CORE_MASK_1" }, + { cOCTVC1_MAIN_OPUS_CORE_MASK_2, "cOCTVC1_MAIN_OPUS_CORE_MASK_2" }, + { cOCTVC1_MAIN_OPUS_CORE_MASK_3, "cOCTVC1_MAIN_OPUS_CORE_MASK_3" }, + { cOCTVC1_MAIN_OPUS_CORE_MASK_4, "cOCTVC1_MAIN_OPUS_CORE_MASK_4" }, + { cOCTVC1_MAIN_OPUS_CORE_MASK_5, "cOCTVC1_MAIN_OPUS_CORE_MASK_5" }, + { cOCTVC1_MAIN_OPUS_CORE_MASK_6, "cOCTVC1_MAIN_OPUS_CORE_MASK_6" }, + { cOCTVC1_MAIN_OPUS_CORE_MASK_7, "cOCTVC1_MAIN_OPUS_CORE_MASK_7" }, + { cOCTVC1_MAIN_OPUS_CORE_MASK_8, "cOCTVC1_MAIN_OPUS_CORE_MASK_8" }, + { cOCTVC1_MAIN_OPUS_CORE_MASK_9, "cOCTVC1_MAIN_OPUS_CORE_MASK_9" }, + { cOCTVC1_MAIN_OPUS_CORE_MASK_10, "cOCTVC1_MAIN_OPUS_CORE_MASK_10" }, + { cOCTVC1_MAIN_OPUS_CORE_MASK_11, "cOCTVC1_MAIN_OPUS_CORE_MASK_11" }, + { cOCTVC1_MAIN_OPUS_CORE_MASK_12, "cOCTVC1_MAIN_OPUS_CORE_MASK_12" }, + { cOCTVC1_MAIN_OPUS_CORE_MASK_13, "cOCTVC1_MAIN_OPUS_CORE_MASK_13" }, + { cOCTVC1_MAIN_OPUS_CORE_MASK_14, "cOCTVC1_MAIN_OPUS_CORE_MASK_14" }, + { cOCTVC1_MAIN_OPUS_CORE_MASK_15, "cOCTVC1_MAIN_OPUS_CORE_MASK_15" }, + { cOCTVC1_MAIN_OPUS_CORE_MASK_16, "cOCTVC1_MAIN_OPUS_CORE_MASK_16" }, + { cOCTVC1_MAIN_OPUS_CORE_MASK_17, "cOCTVC1_MAIN_OPUS_CORE_MASK_17" }, + { cOCTVC1_MAIN_OPUS_CORE_MASK_18, "cOCTVC1_MAIN_OPUS_CORE_MASK_18" }, + { cOCTVC1_MAIN_OPUS_CORE_MASK_19, "cOCTVC1_MAIN_OPUS_CORE_MASK_19" }, + { cOCTVC1_MAIN_OPUS_CORE_MASK_20, "cOCTVC1_MAIN_OPUS_CORE_MASK_20" }, + { cOCTVC1_MAIN_OPUS_CORE_MASK_21, "cOCTVC1_MAIN_OPUS_CORE_MASK_21" }, + { cOCTVC1_MAIN_OPUS_CORE_MASK_22, "cOCTVC1_MAIN_OPUS_CORE_MASK_22" }, + { cOCTVC1_MAIN_OPUS_CORE_MASK_23, "cOCTVC1_MAIN_OPUS_CORE_MASK_23" }, + { cOCTVC1_MAIN_OPUS_CORE_MASK_24, "cOCTVC1_MAIN_OPUS_CORE_MASK_24" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_MAIN_OCT1010_CORE_MASK[] = + { + { cOCTVC1_MAIN_OCT1010_CORE_MASK_1, "cOCTVC1_MAIN_OCT1010_CORE_MASK_1" }, + { cOCTVC1_MAIN_OCT1010_CORE_MASK_2, "cOCTVC1_MAIN_OCT1010_CORE_MASK_2" }, + { cOCTVC1_MAIN_OCT1010_CORE_MASK_3, "cOCTVC1_MAIN_OCT1010_CORE_MASK_3" }, + { cOCTVC1_MAIN_OCT1010_CORE_MASK_4, "cOCTVC1_MAIN_OCT1010_CORE_MASK_4" }, + { cOCTVC1_MAIN_OCT1010_CORE_MASK_5, "cOCTVC1_MAIN_OCT1010_CORE_MASK_5" }, + { cOCTVC1_MAIN_OCT1010_CORE_MASK_6, "cOCTVC1_MAIN_OCT1010_CORE_MASK_6" }, + { cOCTVC1_MAIN_OCT1010_CORE_MASK_7, "cOCTVC1_MAIN_OCT1010_CORE_MASK_7" }, + { cOCTVC1_MAIN_OCT1010_CORE_MASK_8, "cOCTVC1_MAIN_OCT1010_CORE_MASK_8" }, + { cOCTVC1_MAIN_OCT1010_CORE_MASK_9, "cOCTVC1_MAIN_OCT1010_CORE_MASK_9" }, + { cOCTVC1_MAIN_OCT1010_CORE_MASK_10, "cOCTVC1_MAIN_OCT1010_CORE_MASK_10" }, + { cOCTVC1_MAIN_OCT1010_CORE_MASK_11, "cOCTVC1_MAIN_OCT1010_CORE_MASK_11" }, + { cOCTVC1_MAIN_OCT1010_CORE_MASK_12, "cOCTVC1_MAIN_OCT1010_CORE_MASK_12" }, + { cOCTVC1_MAIN_OCT1010_CORE_MASK_13, "cOCTVC1_MAIN_OCT1010_CORE_MASK_13" }, + { cOCTVC1_MAIN_OCT1010_CORE_MASK_14, "cOCTVC1_MAIN_OCT1010_CORE_MASK_14" }, + { cOCTVC1_MAIN_OCT1010_CORE_MASK_15, "cOCTVC1_MAIN_OCT1010_CORE_MASK_15" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_MAIN_TRACING_MODE_ENUM[] = + { + { cOCTVC1_MAIN_TRACING_MODE_ENUM_NORMAL, "cOCTVC1_MAIN_TRACING_MODE_ENUM_NORMAL" }, + { cOCTVC1_MAIN_TRACING_MODE_ENUM_WRAP, "cOCTVC1_MAIN_TRACING_MODE_ENUM_WRAP" }, + { cOCTVC1_MAIN_TRACING_MODE_ENUM_AUTO_WRAP, "cOCTVC1_MAIN_TRACING_MODE_ENUM_AUTO_WRAP" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_MAIN_TRACING_TYPE_ENUM[] = + { + { cOCTVC1_MAIN_TRACING_TYPE_ENUM_CONTROL_ONLY, "cOCTVC1_MAIN_TRACING_TYPE_ENUM_CONTROL_ONLY" }, + { cOCTVC1_MAIN_TRACING_TYPE_ENUM_HEADER, "cOCTVC1_MAIN_TRACING_TYPE_ENUM_HEADER" }, + { cOCTVC1_MAIN_TRACING_TYPE_ENUM_ALL, "cOCTVC1_MAIN_TRACING_TYPE_ENUM_ALL" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_MAIN_REDUNDANCY_SERVER_STATE_ENUM[] = + { + { cOCTVC1_MAIN_REDUNDANCY_SERVER_STATE_ENUM_STOPPED, "cOCTVC1_MAIN_REDUNDANCY_SERVER_STATE_ENUM_STOPPED" }, + { cOCTVC1_MAIN_REDUNDANCY_SERVER_STATE_ENUM_STARTED, "cOCTVC1_MAIN_REDUNDANCY_SERVER_STATE_ENUM_STARTED" }, + { cOCTVC1_MAIN_REDUNDANCY_SERVER_STATE_ENUM_FAILOVER_EXECUTED, "cOCTVC1_MAIN_REDUNDANCY_SERVER_STATE_ENUM_FAILOVER_EXECUTED" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_MAIN_REDUNDANCY_SERVER_FAILOVER_MGW_STATUS_ENUM[] = + { + { cOCTVC1_MAIN_REDUNDANCY_SERVER_FAILOVER_MGW_STATUS_ENUM_NONE, "cOCTVC1_MAIN_REDUNDANCY_SERVER_FAILOVER_MGW_STATUS_ENUM_NONE" }, + { cOCTVC1_MAIN_REDUNDANCY_SERVER_FAILOVER_MGW_STATUS_ENUM_SUCCESS, "cOCTVC1_MAIN_REDUNDANCY_SERVER_FAILOVER_MGW_STATUS_ENUM_SUCCESS" }, + { cOCTVC1_MAIN_REDUNDANCY_SERVER_FAILOVER_MGW_STATUS_ENUM_ERROR, "cOCTVC1_MAIN_REDUNDANCY_SERVER_FAILOVER_MGW_STATUS_ENUM_ERROR" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_MAIN_LOG_TRACE_STATE_ENUM[] = + { + { cOCTVC1_MAIN_LOG_TRACE_STATE_ENUM_STOP, "cOCTVC1_MAIN_LOG_TRACE_STATE_ENUM_STOP" }, + { cOCTVC1_MAIN_LOG_TRACE_STATE_ENUM_START, "cOCTVC1_MAIN_LOG_TRACE_STATE_ENUM_START" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_MAIN_FILE_SEEK_ENUM[] = + { + { cOCTVC1_MAIN_FILE_SEEK_ENUM_SET, "cOCTVC1_MAIN_FILE_SEEK_ENUM_SET" }, + { cOCTVC1_MAIN_FILE_SEEK_ENUM_CUR, "cOCTVC1_MAIN_FILE_SEEK_ENUM_CUR" }, + { cOCTVC1_MAIN_FILE_SEEK_ENUM_END, "cOCTVC1_MAIN_FILE_SEEK_ENUM_END" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_MAIN_TDM_FRAME_ACTIVE_ENUM[] = + { + { cOCTVC1_MAIN_TDM_FRAME_ACTIVE_ENUM_LOW, "cOCTVC1_MAIN_TDM_FRAME_ACTIVE_ENUM_LOW" }, + { cOCTVC1_MAIN_TDM_FRAME_ACTIVE_ENUM_HIGH, "cOCTVC1_MAIN_TDM_FRAME_ACTIVE_ENUM_HIGH" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_MAIN_TDM_SAMPLE_ENUM[] = + { + { cOCTVC1_MAIN_TDM_SAMPLE_ENUM_AT_FALLING_EDGE, "cOCTVC1_MAIN_TDM_SAMPLE_ENUM_AT_FALLING_EDGE" }, + { cOCTVC1_MAIN_TDM_SAMPLE_ENUM_AT_RISING_EDGE, "cOCTVC1_MAIN_TDM_SAMPLE_ENUM_AT_RISING_EDGE" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_MAIN_TDM_DISABLED_FRAME_SOURCE_ENUM[] = + { + { cOCTVC1_MAIN_TDM_DISABLED_FRAME_SOURCE_ENUM_INTERNAL, "cOCTVC1_MAIN_TDM_DISABLED_FRAME_SOURCE_ENUM_INTERNAL" }, + { cOCTVC1_MAIN_TDM_DISABLED_FRAME_SOURCE_ENUM_EXTERNAL, "cOCTVC1_MAIN_TDM_DISABLED_FRAME_SOURCE_ENUM_EXTERNAL" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_MAIN_TDM_DATA_RESOLUTION_ENUM[] = + { + { cOCTVC1_MAIN_TDM_DATA_RESOLUTION_ENUM_8_BITS_PER_SAMPLE, "cOCTVC1_MAIN_TDM_DATA_RESOLUTION_ENUM_8_BITS_PER_SAMPLE" }, + { cOCTVC1_MAIN_TDM_DATA_RESOLUTION_ENUM_16_BITS_PER_SAMPLE, "cOCTVC1_MAIN_TDM_DATA_RESOLUTION_ENUM_16_BITS_PER_SAMPLE" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_MAIN_EVT_PHY_MASK[] = + { + { cOCTVC1_MAIN_EVT_PHY_MASK_UP, "cOCTVC1_MAIN_EVT_PHY_MASK_UP" }, + { cOCTVC1_MAIN_EVT_PHY_MASK_DOWN, "cOCTVC1_MAIN_EVT_PHY_MASK_DOWN" }, + { 0, NULL } + }; + +/**************************************************************************** + COMMON Registered + ****************************************************************************/ + +int ahf_tOCTVC1_MAIN_LICENSING_CURSOR[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_LICENSING_CURSOR; + +void register_tOCTVC1_MAIN_LICENSING_CURSOR(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_LICENSING_CURSOR[0], + { "szFeatureName", "octvc1.main.licensing_cursor.szfeaturename", + FT_STRING, BASE_NONE, NULL, 0x0, + "szFeatureName",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_LICENSING_CURSOR[1], + { "ulGetMode", "octvc1.main.licensing_cursor.ulgetmode", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_OBJECT_CURSOR_ENUM), 0x0, + "ulGetMode",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_LICENSING_CURSOR.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_THREAD_CPU_USAGE[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_THREAD_CPU_USAGE; + +void register_tOCTVC1_MAIN_THREAD_CPU_USAGE(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_THREAD_CPU_USAGE[0], + { "hThread", "octvc1.main.thread_cpu_usage.hthread", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hThread",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_THREAD_CPU_USAGE[1], + { "ulCpuUsagePercent", "octvc1.main.thread_cpu_usage.ulcpuusagepercent", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulCpuUsagePercent",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_THREAD_CPU_USAGE.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_OPUS_CORE_STATUS[4]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_OPUS_CORE_STATUS; + +void register_tOCTVC1_MAIN_OPUS_CORE_STATUS(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_OPUS_CORE_STATUS[0], + { "ulCoreStatus", "octvc1.main.opus_core_status.ulcorestatus", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_MAIN_OPUS_CORE_STATUS_ENUM), 0x0, + "ulCoreStatus",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_OPUS_CORE_STATUS[1], + { "ulProgramCounter", "octvc1.main.opus_core_status.ulprogramcounter", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulProgramCounter",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_OPUS_CORE_STATUS[2], + { "ulFailureMask", "octvc1.main.opus_core_status.ulfailuremask", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulFailureMask",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_OPUS_CORE_STATUS[3], + { "ulAccessViolationAddress", "octvc1.main.opus_core_status.ulaccessviolationaddress", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulAccessViolationAddress",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_OPUS_CORE_STATUS.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_OCT1010_CORE_STATUS[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_OCT1010_CORE_STATUS; + +void register_tOCTVC1_MAIN_OCT1010_CORE_STATUS(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_OCT1010_CORE_STATUS[0], + { "ulCoreStatus", "octvc1.main.oct1010_core_status.ulcorestatus", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_MAIN_OCT1010_CORE_STATUS_ENUM), 0x0, + "ulCoreStatus",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_OCT1010_CORE_STATUS[1], + { "ulProgramCounter", "octvc1.main.oct1010_core_status.ulprogramcounter", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulProgramCounter",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_OCT1010_CORE_STATUS[2], + { "ulAccessViolationAddress", "octvc1.main.oct1010_core_status.ulaccessviolationaddress", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulAccessViolationAddress",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_OCT1010_CORE_STATUS.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_OPUS_CORE_INFO[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_OPUS_CORE_INFO; + +void register_tOCTVC1_MAIN_OPUS_CORE_INFO(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_OPUS_CORE_INFO[0], + { "hProcess", "octvc1.main.opus_core_info.hprocess", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hProcess",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_OPUS_CORE_INFO[1], + { "ulPhysicalCoreId", "octvc1.main.opus_core_info.ulphysicalcoreid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulPhysicalCoreId",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_OPUS_CORE_INFO[2], + { "ulProcessImageType", "octvc1.main.opus_core_info.ulprocessimagetype", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_MAIN_PROCESS_TYPE_ENUM), 0x0, + "ulProcessImageType",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_OPUS_CORE_INFO.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_OCT1010_CORE_INFO[4]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_OCT1010_CORE_INFO; + +void register_tOCTVC1_MAIN_OCT1010_CORE_INFO(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_OCT1010_CORE_INFO[0], + { "hProcess", "octvc1.main.oct1010_core_info.hprocess", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hProcess",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_OCT1010_CORE_INFO[1], + { "hThread", "octvc1.main.oct1010_core_info.hthread", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hThread",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_OCT1010_CORE_INFO[2], + { "ulProcessImageType", "octvc1.main.oct1010_core_info.ulprocessimagetype", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_MAIN_PROCESS_TYPE_ENUM), 0x0, + "ulProcessImageType",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_OCT1010_CORE_INFO[3], + { "szProcessImageName", "octvc1.main.oct1010_core_info.szprocessimagename", + FT_STRING, BASE_NONE, NULL, 0x0, + "szProcessImageName",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_OCT1010_CORE_INFO.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[12]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC; + +void register_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[0], + { "ulEthPortEnableFlag", "octvc1.main.eth_port_config_dynamic.ulethportenableflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulEthPortEnableFlag",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[1], + { "MacAddress", "octvc1.main.eth_port_config_dynamic.macaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "MacAddress",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[2], + { "ulAcceptAllMacFlag", "octvc1.main.eth_port_config_dynamic.ulacceptallmacflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulAcceptAllMacFlag",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[3], + { "ulAcceptUnicastFlag", "octvc1.main.eth_port_config_dynamic.ulacceptunicastflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulAcceptUnicastFlag",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[4], + { "ulAcceptMulticastFlag", "octvc1.main.eth_port_config_dynamic.ulacceptmulticastflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulAcceptMulticastFlag",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[5], + { "ulAcceptBadCrcPktFlag", "octvc1.main.eth_port_config_dynamic.ulacceptbadcrcpktflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulAcceptBadCrcPktFlag",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[6], + { "ulAcceptLongPktFormatFlag", "octvc1.main.eth_port_config_dynamic.ulacceptlongpktformatflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulAcceptLongPktFormatFlag",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[7], + { "ulBroadcastForwardPort", "octvc1.main.eth_port_config_dynamic.ulbroadcastforwardport", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_ETH_PORT_ID_ENUM), 0x0, + "ulBroadcastForwardPort",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[8], + { "ulMulticastForwardPort", "octvc1.main.eth_port_config_dynamic.ulmulticastforwardport", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_ETH_PORT_ID_ENUM), 0x0, + "ulMulticastForwardPort",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[9], + { "ulUnicastForwardPort", "octvc1.main.eth_port_config_dynamic.ulunicastforwardport", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_ETH_PORT_ID_ENUM), 0x0, + "ulUnicastForwardPort",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[10], + { "ulRxMirrorForwardPort", "octvc1.main.eth_port_config_dynamic.ulrxmirrorforwardport", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_ETH_PORT_ID_ENUM), 0x0, + "ulRxMirrorForwardPort",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[11], + { "ulRestrictedApiFlag", "octvc1.main.eth_port_config_dynamic.ulrestrictedapiflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulRestrictedApiFlag",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC[6]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC; + +void register_tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC[0], + { "ulInterfaceType", "octvc1.main.eth_port_config_static.ulinterfacetype", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_MAIN_ETH_PORT_INTERFACE_TYPE_ENUM), 0x0, + "ulInterfaceType",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC[1], + { "ulMode", "octvc1.main.eth_port_config_static.ulmode", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_MAIN_ETH_MODE_ENUM), 0x0, + "ulMode",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC[2], + { "ulSpeed", "octvc1.main.eth_port_config_static.ulspeed", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulSpeed",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC[3], + { "ulFullDuplexFlag", "octvc1.main.eth_port_config_static.ulfullduplexflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulFullDuplexFlag",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC[4], + { "ulPhyAddress", "octvc1.main.eth_port_config_static.ulphyaddress", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulPhyAddress",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC[5], + { "ulPktQueuesByteSize", "octvc1.main.eth_port_config_static.ulpktqueuesbytesize", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulPktQueuesByteSize",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_ETH_PORT_STATS[25]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_ETH_PORT_STATS; + +void register_tOCTVC1_MAIN_ETH_PORT_STATS(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_ETH_PORT_STATS[0], + { "ulRxPktErrorCnt", "octvc1.main.eth_port_stats.ulrxpkterrorcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulRxPktErrorCnt",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_STATS[1], + { "ulRxOddNibbleCnt", "octvc1.main.eth_port_stats.ulrxoddnibblecnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulRxOddNibbleCnt",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_STATS[2], + { "ulRxCrcErrorCnt", "octvc1.main.eth_port_stats.ulrxcrcerrorcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulRxCrcErrorCnt",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_STATS[3], + { "ulRxSfdAbsentCnt", "octvc1.main.eth_port_stats.ulrxsfdabsentcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulRxSfdAbsentCnt",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_STATS[4], + { "ulRxShortFrameCnt", "octvc1.main.eth_port_stats.ulrxshortframecnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulRxShortFrameCnt",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_STATS[5], + { "ulRxLongFrameCnt", "octvc1.main.eth_port_stats.ulrxlongframecnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulRxLongFrameCnt",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_STATS[6], + { "ulRxFalseCarrierCnt", "octvc1.main.eth_port_stats.ulrxfalsecarriercnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulRxFalseCarrierCnt",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_STATS[7], + { "ulTxFalseCarrierCnt", "octvc1.main.eth_port_stats.ultxfalsecarriercnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulTxFalseCarrierCnt",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_STATS[8], + { "ulRxMemOverflowCnt", "octvc1.main.eth_port_stats.ulrxmemoverflowcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulRxMemOverflowCnt",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_STATS[9], + { "ulRxBufferOverflowCnt", "octvc1.main.eth_port_stats.ulrxbufferoverflowcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulRxBufferOverflowCnt",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_STATS[10], + { "ulRxPauseFrameCnt", "octvc1.main.eth_port_stats.ulrxpauseframecnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulRxPauseFrameCnt",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_STATS[11], + { "ulTxPauseFrameCnt", "octvc1.main.eth_port_stats.ultxpauseframecnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulTxPauseFrameCnt",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_STATS[12], + { "ulTxMemChecksum", "octvc1.main.eth_port_stats.ultxmemchecksum", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulTxMemChecksum",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_STATS[13], + { "ulTxBufferUnderflowCnt", "octvc1.main.eth_port_stats.ultxbufferunderflowcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulTxBufferUnderflowCnt",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_STATS[14], + { "ulDefaultMacAddressUsedFlag", "octvc1.main.eth_port_stats.uldefaultmacaddressusedflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulDefaultMacAddressUsedFlag",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_STATS[15], + { "ulTxLateCollisionCnt", "octvc1.main.eth_port_stats.ultxlatecollisioncnt", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulTxLateCollisionCnt",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_STATS[16], + { "ulTxExcessCollisionCnt", "octvc1.main.eth_port_stats.ultxexcesscollisioncnt", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulTxExcessCollisionCnt",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_STATS[17], + { "ulTxExcessDeferralCnt", "octvc1.main.eth_port_stats.ultxexcessdeferralcnt", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulTxExcessDeferralCnt",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_STATS[18], + { "ulRxAlignmentErrorCnt", "octvc1.main.eth_port_stats.ulrxalignmenterrorcnt", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRxAlignmentErrorCnt",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_STATS[19], + { "ulRxJabberErrorCnt", "octvc1.main.eth_port_stats.ulrxjabbererrorcnt", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRxJabberErrorCnt",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_STATS[20], + { "ulRxLengthErrorCnt", "octvc1.main.eth_port_stats.ulrxlengtherrorcnt", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRxLengthErrorCnt",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_STATS[21], + { "ulRxOutOfRangeTypeCnt", "octvc1.main.eth_port_stats.ulrxoutofrangetypecnt", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRxOutOfRangeTypeCnt",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_STATS[22], + { "ulRxWatchdogErrorCnt", "octvc1.main.eth_port_stats.ulrxwatchdogerrorcnt", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRxWatchdogErrorCnt",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_STATS[23], + { "ulRxIPv4HeaderErrorCnt", "octvc1.main.eth_port_stats.ulrxipv4headererrorcnt", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRxIPv4HeaderErrorCnt",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_ETH_PORT_STATS[24], + { "ulRxIPv6HeaderErrorCnt", "octvc1.main.eth_port_stats.ulrxipv6headererrorcnt", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRxIPv6HeaderErrorCnt",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_ETH_PORT_STATS.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR; + +void register_tOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR[0], + { "szFileName", "octvc1.main.file_system_file_cursor.szfilename", + FT_STRING, BASE_NONE, NULL, 0x0, + "szFileName",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR[1], + { "ulGetMode", "octvc1.main.file_system_file_cursor.ulgetmode", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_OBJECT_CURSOR_ENUM), 0x0, + "ulGetMode",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_LOG_ENTRY[5]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_LOG_ENTRY; + +void register_tOCTVC1_MAIN_LOG_ENTRY(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_LOG_ENTRY[0], + { "ulLogSeqNumber", "octvc1.main.log_entry.ullogseqnumber", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLogSeqNumber",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_LOG_ENTRY[1], + { "ulLogTimestamp", "octvc1.main.log_entry.ullogtimestamp", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLogTimestamp",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_LOG_ENTRY[2], + { "ulLogReserved0", "octvc1.main.log_entry.ullogreserved0", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLogReserved0",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_LOG_ENTRY[3], + { "ulLogReserved1", "octvc1.main.log_entry.ullogreserved1", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLogReserved1",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_LOG_ENTRY[4], + { "achLogMsg", "octvc1.main.log_entry.achlogmsg", + FT_STRING, BASE_NONE, NULL, 0x0, + "achLogMsg",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_LOG_ENTRY.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_FILE_CURSOR[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_FILE_CURSOR; + +void register_tOCTVC1_MAIN_FILE_CURSOR(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_FILE_CURSOR[0], + { "szFileName", "octvc1.main.file_cursor.szfilename", + FT_STRING, BASE_NONE, NULL, 0x0, + "szFileName",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_FILE_CURSOR[1], + { "ulGetMode", "octvc1.main.file_cursor.ulgetmode", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_OBJECT_CURSOR_ENUM), 0x0, + "ulGetMode",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_FILE_CURSOR.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +/**************************************************************************** + Event Registered + ****************************************************************************/ + +int ahf_tOCTVC1_MAIN_MSG_MODULE_TRACING_BUFFER_FULL_EVT[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_MODULE_TRACING_BUFFER_FULL_EVT; + +void register_tOCTVC1_MAIN_MSG_MODULE_TRACING_BUFFER_FULL_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_MODULE_TRACING_BUFFER_FULL_EVT[0], + { "BufferId", "octvc1.main.module.tracing.buffer_full.bufferid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "BufferId",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_MODULE_TRACING_BUFFER_FULL_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EVT[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EVT; + +void register_tOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EVT[0], + { "ulCoreUseMask", "octvc1.main.device.opus_core.exec_report.ulcoreusemask", + FT_NONE, BASE_NONE, NULL, 0x0, + "ulCoreUseMask",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EVT[1], + { "ulCoreHaltMask", "octvc1.main.device.opus_core.exec_report.ulcorehaltmask", + FT_NONE, BASE_NONE, NULL, 0x0, + "ulCoreHaltMask",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EVT[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EVT; + +void register_tOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EVT[0], + { "ulBank", "octvc1.main.gpio.bank.change.ulbank", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulBank",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EVT[1], + { "ulPortValue", "octvc1.main.gpio.bank.change.ulportvalue", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulPortValue",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EVT[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EVT; + +void register_tOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EVT[0], + { "ulPhyAddress", "octvc1.main.mdio.phy.change.ulphyaddress", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulPhyAddress",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EVT[1], + { "ulEvents", "octvc1.main.mdio.phy.change.ulevents", + FT_NONE, BASE_NONE, NULL, 0x0, + "ulEvents",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT[5]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT; + +void register_tOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT[0], + { "hProcess", "octvc1.main.process.cpu_usage.report.hprocess", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hProcess",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT[1], + { "ulProcessImageType", "octvc1.main.process.cpu_usage.report.ulprocessimagetype", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_MAIN_PROCESS_TYPE_ENUM), 0x0, + "ulProcessImageType",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT[2], + { "ulProcessCpuUsagePercent", "octvc1.main.process.cpu_usage.report.ulprocesscpuusagepercent", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulProcessCpuUsagePercent",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT[3], + { "ulNumThread", "octvc1.main.process.cpu_usage.report.ulnumthread", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulNumThread",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT[5]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT; + +void register_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT[0], + { "hMgw", "octvc1.main.redundancy_server.mgw.failover_done.hmgw", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hMgw",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT[1], + { "ulDurationMs", "octvc1.main.redundancy_server.mgw.failover_done.uldurationms", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulDurationMs",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT[2], + { "FailoverStatus", "octvc1.main.redundancy_server.mgw.failover_done.failoverstatus", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_MAIN_REDUNDANCY_SERVER_FAILOVER_MGW_STATUS_ENUM), 0x0, + "FailoverStatus",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT[3], + { "ulFailoverReturnCode", "octvc1.main.redundancy_server.mgw.failover_done.ulfailoverreturncode", + FT_STRING, BASE_NONE, NULL, 0x0, + "ulFailoverReturnCode",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +/**************************************************************************** + CMD/RSP Registered + ****************************************************************************/ + +int ahf_tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD[6]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD; + +void register_tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD[0], + { "ulEventMask", "octvc1.main.module.evt.modify.uleventmask", + FT_NONE, BASE_NONE, NULL, 0x0, + "ulEventMask",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD[1], + { "ulUserEventId", "octvc1.main.module.evt.modify.ulusereventid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulUserEventId",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD[2], + { "hEventDestObj", "octvc1.main.module.evt.modify.heventdestobj", + FT_NONE, BASE_NONE, NULL, 0x0, + "hEventDestObj",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD[3], + { "ulEventDestObjPort", "octvc1.main.module.evt.modify.uleventdestobjport", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulEventDestObjPort",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD[4], + { "ulEventDestObjFifoId", "octvc1.main.module.evt.modify.uleventdestobjfifoid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulEventDestObjFifoId",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP[6]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP; + +void register_tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP[0], + { "ulEventMask", "octvc1.main.module.evt.info.uleventmask", + FT_NONE, BASE_NONE, NULL, 0x0, + "ulEventMask",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP[1], + { "ulUserEventId", "octvc1.main.module.evt.info.ulusereventid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulUserEventId",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP[2], + { "hEventDestObj", "octvc1.main.module.evt.info.heventdestobj", + FT_NONE, BASE_NONE, NULL, 0x0, + "hEventDestObj",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP[3], + { "ulEventDestObjPort", "octvc1.main.module.evt.info.uleventdestobjport", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulEventDestObjPort",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP[4], + { "ulEventDestObjFifoId", "octvc1.main.module.evt.info.uleventdestobjfifoid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulEventDestObjFifoId",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD[5]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD; + +void register_tOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD[0], + { "ulTracingMode", "octvc1.main.module.tracing.start.ultracingmode", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_MAIN_TRACING_MODE_ENUM), 0x0, + "ulTracingMode",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD[1], + { "ulTracingType", "octvc1.main.module.tracing.start.ultracingtype", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_MAIN_TRACING_TYPE_ENUM), 0x0, + "ulTracingType",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD[2], + { "ulNumBuffer", "octvc1.main.module.tracing.start.ulnumbuffer", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulNumBuffer",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD[3], + { "aBufferId", "octvc1.main.module.tracing.start.abufferid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "aBufferId",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD[4]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD; + +void register_tOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD[0], + { "ulFormat", "octvc1.main.buffer.open.ulformat", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_BUFFER_FORMAT_ENUM), 0x0, + "ulFormat",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD[1], + { "ulByteLength", "octvc1.main.buffer.open.ulbytelength", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulByteLength",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD[2], + { "szBufferName", "octvc1.main.buffer.open.szbuffername", + FT_STRING, BASE_NONE, NULL, 0x0, + "szBufferName",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_BUFFER_OPEN_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_BUFFER_OPEN_RSP; + +void register_tOCTVC1_MAIN_MSG_BUFFER_OPEN_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_OPEN_RSP[0], + { "hBuffer", "octvc1.main.buffer.open.hbuffer", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hBuffer",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_OPEN_RSP[1], + { "ulAllocatedByteLength", "octvc1.main.buffer.open.ulallocatedbytelength", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulAllocatedByteLength",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_BUFFER_OPEN_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_BUFFER_CLOSE_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_BUFFER_CLOSE_CMD; + +void register_tOCTVC1_MAIN_MSG_BUFFER_CLOSE_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_CLOSE_CMD[0], + { "hBuffer", "octvc1.main.buffer.close.hbuffer", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hBuffer",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_BUFFER_CLOSE_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_BUFFER_CLOSE_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_BUFFER_CLOSE_RSP; + +void register_tOCTVC1_MAIN_MSG_BUFFER_CLOSE_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_CLOSE_RSP[0], + { "hBuffer", "octvc1.main.buffer.close.hbuffer", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hBuffer",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_BUFFER_CLOSE_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_BUFFER_INFO_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_BUFFER_INFO_CMD; + +void register_tOCTVC1_MAIN_MSG_BUFFER_INFO_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_INFO_CMD[0], + { "hBuffer", "octvc1.main.buffer.info.hbuffer", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hBuffer",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_BUFFER_INFO_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP[7]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_BUFFER_INFO_RSP; + +void register_tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP[0], + { "hBuffer", "octvc1.main.buffer.info.hbuffer", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hBuffer",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP[1], + { "ulFormat", "octvc1.main.buffer.info.ulformat", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_BUFFER_FORMAT_ENUM), 0x0, + "ulFormat",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP[2], + { "szBufferName", "octvc1.main.buffer.info.szbuffername", + FT_STRING, BASE_NONE, NULL, 0x0, + "szBufferName",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP[3], + { "ulUsedByteLength", "octvc1.main.buffer.info.ulusedbytelength", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulUsedByteLength",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP[4], + { "ulAllocatedByteLength", "octvc1.main.buffer.info.ulallocatedbytelength", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulAllocatedByteLength",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP[5], + { "ulDependencyCount", "octvc1.main.buffer.info.uldependencycount", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulDependencyCount",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_BUFFER_INFO_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_BUFFER_LIST_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_BUFFER_LIST_CMD; + +void register_tOCTVC1_MAIN_MSG_BUFFER_LIST_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_LIST_CMD[0], + { "ObjectCursor", "octvc1.main.buffer.list.objectcursor", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectCursor",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_BUFFER_LIST_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_BUFFER_LIST_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_BUFFER_LIST_RSP; + +void register_tOCTVC1_MAIN_MSG_BUFFER_LIST_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_LIST_RSP[0], + { "ObjectCursor", "octvc1.main.buffer.list.objectcursor", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectCursor",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_LIST_RSP[1], + { "ObjectList", "octvc1.main.buffer.list.objectlist", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectList",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_BUFFER_LIST_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD[4]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD; + +void register_tOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD[0], + { "hBuffer", "octvc1.main.buffer.modify.hbuffer", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hBuffer",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD[1], + { "ulFormat", "octvc1.main.buffer.modify.ulformat", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_BUFFER_FORMAT_ENUM), 0x0, + "ulFormat",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD[2], + { "ulUsedByteSize", "octvc1.main.buffer.modify.ulusedbytesize", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulUsedByteSize",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_BUFFER_MODIFY_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_BUFFER_MODIFY_RSP; + +void register_tOCTVC1_MAIN_MSG_BUFFER_MODIFY_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_MODIFY_RSP[0], + { "hBuffer", "octvc1.main.buffer.modify.hbuffer", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hBuffer",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_BUFFER_MODIFY_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD[5]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD; + +void register_tOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD[0], + { "hBuffer", "octvc1.main.buffer.write.hbuffer", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hBuffer",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD[1], + { "ulWriteByteLength", "octvc1.main.buffer.write.ulwritebytelength", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulWriteByteLength",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD[2], + { "ulWriteByteOffset", "octvc1.main.buffer.write.ulwritebyteoffset", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulWriteByteOffset",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD[3], + { "abyWriteData", "octvc1.main.buffer.write.abywritedata", + FT_BYTES, BASE_NONE, NULL, 0x0, + "abyWriteData",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_BUFFER_WRITE_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_BUFFER_WRITE_RSP; + +void register_tOCTVC1_MAIN_MSG_BUFFER_WRITE_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_WRITE_RSP[0], + { "hBuffer", "octvc1.main.buffer.write.hbuffer", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hBuffer",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_WRITE_RSP[1], + { "ulNumByteWritten", "octvc1.main.buffer.write.ulnumbytewritten", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulNumByteWritten",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_BUFFER_WRITE_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_BUFFER_READ_CMD[4]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_BUFFER_READ_CMD; + +void register_tOCTVC1_MAIN_MSG_BUFFER_READ_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_READ_CMD[0], + { "hBuffer", "octvc1.main.buffer.read.hbuffer", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hBuffer",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_READ_CMD[1], + { "ulMaxReadByteLength", "octvc1.main.buffer.read.ulmaxreadbytelength", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMaxReadByteLength",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_READ_CMD[2], + { "ulReadByteOffset", "octvc1.main.buffer.read.ulreadbyteoffset", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulReadByteOffset",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_BUFFER_READ_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_BUFFER_READ_RSP[5]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_BUFFER_READ_RSP; + +void register_tOCTVC1_MAIN_MSG_BUFFER_READ_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_READ_RSP[0], + { "hBuffer", "octvc1.main.buffer.read.hbuffer", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hBuffer",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_READ_RSP[1], + { "ulDoneFlag", "octvc1.main.buffer.read.uldoneflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulDoneFlag",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_READ_RSP[2], + { "ulNumByteRead", "octvc1.main.buffer.read.ulnumbyteread", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulNumByteRead",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_READ_RSP[3], + { "abyData", "octvc1.main.buffer.read.abydata", + FT_BYTES, BASE_NONE, NULL, 0x0, + "abyData",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_BUFFER_READ_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_CMD; + +void register_tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_CMD[0], + { "szBufferName", "octvc1.main.buffer.info_by_name.szbuffername", + FT_STRING, BASE_NONE, NULL, 0x0, + "szBufferName",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP[7]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP; + +void register_tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP[0], + { "hBuffer", "octvc1.main.buffer.info_by_name.hbuffer", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hBuffer",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP[1], + { "ulFormat", "octvc1.main.buffer.info_by_name.ulformat", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_BUFFER_FORMAT_ENUM), 0x0, + "ulFormat",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP[2], + { "szBufferName", "octvc1.main.buffer.info_by_name.szbuffername", + FT_STRING, BASE_NONE, NULL, 0x0, + "szBufferName",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP[3], + { "ulUsedByteLength", "octvc1.main.buffer.info_by_name.ulusedbytelength", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulUsedByteLength",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP[4], + { "ulAllocatedByteLength", "octvc1.main.buffer.info_by_name.ulallocatedbytelength", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulAllocatedByteLength",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP[5], + { "ulDependencyCount", "octvc1.main.buffer.info_by_name.uldependencycount", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulDependencyCount",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_DEVICE_INFO_RSP[4]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_DEVICE_INFO_RSP; + +void register_tOCTVC1_MAIN_MSG_DEVICE_INFO_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_DEVICE_INFO_RSP[0], + { "ulDeviceType", "octvc1.main.device.info.uldevicetype", + FT_UINT32,BASE_HEX, VALS(vals_tOCTDEV_DEVICES_TYPE_ENUM), 0x0, + "ulDeviceType",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_DEVICE_INFO_RSP[1], + { "abyDeviceInfo", "octvc1.main.device.info.abydeviceinfo", + FT_BYTES, BASE_NONE, NULL, 0x0, + "abyDeviceInfo",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_DEVICE_INFO_RSP[2], + { "abyUserInfo", "octvc1.main.device.info.abyuserinfo", + FT_BYTES, BASE_NONE, NULL, 0x0, + "abyUserInfo",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_DEVICE_INFO_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_RSP; + +void register_tOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_RSP[0], + { "aCoreStatus", "octvc1.main.device.opus_core.status.acorestatus", + FT_NONE, BASE_NONE, NULL, 0x0, + "aCoreStatus",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_RSP; + +void register_tOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_RSP[0], + { "aCoreInfo", "octvc1.main.device.opus_core.info.acoreinfo", + FT_NONE, BASE_NONE, NULL, 0x0, + "aCoreInfo",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP[12]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_OCT1010_INFO_RSP; + +void register_tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP[0], + { "ulOCT1010VersionId", "octvc1.main.oct1010.info.uloct1010versionid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulOCT1010VersionId",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP[1], + { "szOCT1010Version", "octvc1.main.oct1010.info.szoct1010version", + FT_STRING, BASE_NONE, NULL, 0x0, + "szOCT1010Version",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP[2], + { "ulSerialNumber", "octvc1.main.oct1010.info.ulserialnumber", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulSerialNumber",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP[3], + { "ulProjectNumber", "octvc1.main.oct1010.info.ulprojectnumber", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulProjectNumber",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP[4], + { "aOCT1010MacAddress", "octvc1.main.oct1010.info.aoct1010macaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "aOCT1010MacAddress",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP[5], + { "ulOCT1010IDVersionId", "octvc1.main.oct1010.info.uloct1010idversionid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulOCT1010IDVersionId",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP[6], + { "szOCT1010IDVersion", "octvc1.main.oct1010.info.szoct1010idversion", + FT_STRING, BASE_NONE, NULL, 0x0, + "szOCT1010IDVersion",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP[7], + { "ulTdmNumStream", "octvc1.main.oct1010.info.ultdmnumstream", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulTdmNumStream",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP[8], + { "ulTdmStreamFrequency", "octvc1.main.oct1010.info.ultdmstreamfrequency", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_MAIN_TDM_STREAM_FREQ_ENUM), 0x0, + "ulTdmStreamFrequency",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP[9], + { "aMacAddress", "octvc1.main.oct1010.info.amacaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "aMacAddress",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP[10], + { "aulUserInfo", "octvc1.main.oct1010.info.auluserinfo", + FT_BYTES, BASE_NONE, NULL, 0x0, + "aulUserInfo",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_OCT1010_INFO_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_OCT1010_STATS_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_OCT1010_STATS_CMD; + +void register_tOCTVC1_MAIN_MSG_OCT1010_STATS_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_OCT1010_STATS_CMD[0], + { "ulResetStatsFlag", "octvc1.main.oct1010.stats.ulresetstatsflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulResetStatsFlag",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_OCT1010_STATS_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_OCT1010_STATS_RSP[5]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_OCT1010_STATS_RSP; + +void register_tOCTVC1_MAIN_MSG_OCT1010_STATS_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_OCT1010_STATS_RSP[0], + { "ulOCT1010MonitorNumber", "octvc1.main.oct1010.stats.uloct1010monitornumber", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulOCT1010MonitorNumber",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_OCT1010_STATS_RSP[1], + { "ulTdmCpyOutOfBandwidthCnt", "octvc1.main.oct1010.stats.ultdmcpyoutofbandwidthcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulTdmCpyOutOfBandwidthCnt",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_OCT1010_STATS_RSP[2], + { "ulTdmTxTimeslotPtrOutOfSyncCnt", "octvc1.main.oct1010.stats.ultdmtxtimeslotptroutofsynccnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulTdmTxTimeslotPtrOutOfSyncCnt",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_OCT1010_STATS_RSP[3], + { "ulTdmTimestampIncrementErrorCnt", "octvc1.main.oct1010.stats.ultdmtimestampincrementerrorcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulTdmTimestampIncrementErrorCnt",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_OCT1010_STATS_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_RSP; + +void register_tOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_RSP[0], + { "aCoreStatus", "octvc1.main.oct1010.core.status.acorestatus", + FT_NONE, BASE_NONE, NULL, 0x0, + "aCoreStatus",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_RSP; + +void register_tOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_RSP[0], + { "aCoreInfo", "octvc1.main.oct1010.core.info.acoreinfo", + FT_NONE, BASE_NONE, NULL, 0x0, + "aCoreInfo",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP[5]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP; + +void register_tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP[0], + { "ulOct1010IdType", "octvc1.main.oct1010.oct1010id.info.uloct1010idtype", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulOct1010IdType",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP[1], + { "szOct1010IdType", "octvc1.main.oct1010.oct1010id.info.szoct1010idtype", + FT_STRING, BASE_NONE, NULL, 0x0, + "szOct1010IdType",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP[2], + { "ulTdmOutputEnableSupportFlag", "octvc1.main.oct1010.oct1010id.info.ultdmoutputenablesupportflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulTdmOutputEnableSupportFlag",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP[3], + { "ulTdmOutputEnableDeviceFlag", "octvc1.main.oct1010.oct1010id.info.ultdmoutputenabledeviceflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulTdmOutputEnableDeviceFlag",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_ETH_STATS_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_ETH_STATS_CMD; + +void register_tOCTVC1_MAIN_MSG_ETH_STATS_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_ETH_STATS_CMD[0], + { "ulResetStatsFlag", "octvc1.main.eth.stats.ulresetstatsflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulResetStatsFlag",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_ETH_STATS_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_ETH_STATS_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_ETH_STATS_RSP; + +void register_tOCTVC1_MAIN_MSG_ETH_STATS_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_ETH_STATS_RSP[0], + { "aStats", "octvc1.main.eth.stats.astats", + FT_NONE, BASE_NONE, NULL, 0x0, + "aStats",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_ETH_STATS_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CMD; + +void register_tOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CMD[0], + { "aDynamic", "octvc1.main.eth.port_config.modify.adynamic", + FT_NONE, BASE_NONE, NULL, 0x0, + "aDynamic",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP; + +void register_tOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP[0], + { "aDynamic", "octvc1.main.eth.port_config.info.adynamic", + FT_NONE, BASE_NONE, NULL, 0x0, + "aDynamic",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP[1], + { "aStatic", "octvc1.main.eth.port_config.info.astatic", + FT_NONE, BASE_NONE, NULL, 0x0, + "aStatic",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_REGISTER_READ_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_REGISTER_READ_RSP; + +void register_tOCTVC1_MAIN_MSG_REGISTER_READ_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_REGISTER_READ_RSP[0], + { "ulTdmTimestampReg", "octvc1.main.register.read.ultdmtimestampreg", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulTdmTimestampReg",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_REGISTER_READ_RSP[1], + { "ulNanoSecondCounterReg", "octvc1.main.register.read.ulnanosecondcounterreg", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulNanoSecondCounterReg",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_REGISTER_READ_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_FILE_OPEN_CMD[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_FILE_OPEN_CMD; + +void register_tOCTVC1_MAIN_MSG_FILE_OPEN_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_FILE_OPEN_CMD[0], + { "szFileName", "octvc1.main.file.open.szfilename", + FT_STRING, BASE_NONE, NULL, 0x0, + "szFileName",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_FILE_OPEN_CMD[1], + { "ulAccessMode", "octvc1.main.file.open.ulaccessmode", + FT_NONE, BASE_NONE, NULL, 0x0, + "ulAccessMode",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_FILE_OPEN_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_FILE_OPEN_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_FILE_OPEN_RSP; + +void register_tOCTVC1_MAIN_MSG_FILE_OPEN_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_FILE_OPEN_RSP[0], + { "hFile", "octvc1.main.file.open.hfile", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hFile",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_FILE_OPEN_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_FILE_CLOSE_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_FILE_CLOSE_CMD; + +void register_tOCTVC1_MAIN_MSG_FILE_CLOSE_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_FILE_CLOSE_CMD[0], + { "hFile", "octvc1.main.file.close.hfile", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hFile",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_FILE_CLOSE_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_FILE_WRITE_CMD[4]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_FILE_WRITE_CMD; + +void register_tOCTVC1_MAIN_MSG_FILE_WRITE_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_FILE_WRITE_CMD[0], + { "hFile", "octvc1.main.file.write.hfile", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hFile",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_FILE_WRITE_CMD[1], + { "ulNumByteToWrite", "octvc1.main.file.write.ulnumbytetowrite", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulNumByteToWrite",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_FILE_WRITE_CMD[2], + { "abyData", "octvc1.main.file.write.abydata", + FT_BYTES, BASE_NONE, NULL, 0x0, + "abyData",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_FILE_WRITE_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_FILE_WRITE_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_FILE_WRITE_RSP; + +void register_tOCTVC1_MAIN_MSG_FILE_WRITE_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_FILE_WRITE_RSP[0], + { "ulNumByteWritten", "octvc1.main.file.write.ulnumbytewritten", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulNumByteWritten",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_FILE_WRITE_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_FILE_READ_CMD[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_FILE_READ_CMD; + +void register_tOCTVC1_MAIN_MSG_FILE_READ_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_FILE_READ_CMD[0], + { "hFile", "octvc1.main.file.read.hfile", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hFile",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_FILE_READ_CMD[1], + { "ulMaxNumByteToRead", "octvc1.main.file.read.ulmaxnumbytetoread", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulMaxNumByteToRead",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_FILE_READ_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_FILE_READ_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_FILE_READ_RSP; + +void register_tOCTVC1_MAIN_MSG_FILE_READ_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_FILE_READ_RSP[0], + { "ulNumByteRead", "octvc1.main.file.read.ulnumbyteread", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulNumByteRead",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_FILE_READ_RSP[1], + { "abyData", "octvc1.main.file.read.abydata", + FT_BYTES, BASE_NONE, NULL, 0x0, + "abyData",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_FILE_READ_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_FILE_INFO_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_FILE_INFO_CMD; + +void register_tOCTVC1_MAIN_MSG_FILE_INFO_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_FILE_INFO_CMD[0], + { "hFile", "octvc1.main.file.info.hfile", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hFile",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_FILE_INFO_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_FILE_INFO_RSP[4]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_FILE_INFO_RSP; + +void register_tOCTVC1_MAIN_MSG_FILE_INFO_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_FILE_INFO_RSP[0], + { "hFile", "octvc1.main.file.info.hfile", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hFile",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_FILE_INFO_RSP[1], + { "szFileName", "octvc1.main.file.info.szfilename", + FT_STRING, BASE_NONE, NULL, 0x0, + "szFileName",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_FILE_INFO_RSP[2], + { "ulAccessMode", "octvc1.main.file.info.ulaccessmode", + FT_NONE, BASE_NONE, NULL, 0x0, + "ulAccessMode",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_FILE_INFO_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_FILE_LIST_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_FILE_LIST_CMD; + +void register_tOCTVC1_MAIN_MSG_FILE_LIST_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_FILE_LIST_CMD[0], + { "ObjectCursor", "octvc1.main.file.list.objectcursor", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectCursor",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_FILE_LIST_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_FILE_LIST_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_FILE_LIST_RSP; + +void register_tOCTVC1_MAIN_MSG_FILE_LIST_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_FILE_LIST_RSP[0], + { "ObjectCursor", "octvc1.main.file.list.objectcursor", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectCursor",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_FILE_LIST_RSP[1], + { "ObjectList", "octvc1.main.file.list.objectlist", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectList",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_FILE_LIST_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_RSP; + +void register_tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_RSP[0], + { "ulMaxFileEntry", "octvc1.main.file_system.info.ulmaxfileentry", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulMaxFileEntry",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_CMD; + +void register_tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_CMD[0], + { "ObjectGet", "octvc1.main.file_system.file.info.objectget", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectGet",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_RSP; + +void register_tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_RSP[0], + { "ObjectGet", "octvc1.main.file_system.file.info.objectget", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectGet",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_RSP[1], + { "ulAccessMode", "octvc1.main.file_system.file.info.ulaccessmode", + FT_NONE, BASE_NONE, NULL, 0x0, + "ulAccessMode",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_CMD; + +void register_tOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_CMD[0], + { "szFileName", "octvc1.main.file_system.file.delete.szfilename", + FT_STRING, BASE_NONE, NULL, 0x0, + "szFileName",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_RSP; + +void register_tOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_RSP[0], + { "szFileName", "octvc1.main.file_system.file.delete.szfilename", + FT_STRING, BASE_NONE, NULL, 0x0, + "szFileName",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_LOG_READ_ENTRY_CMD; + +void register_tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_CMD[0], + { "ulGetNewestFlag", "octvc1.main.log.entry.read.ulgetnewestflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulGetNewestFlag",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_LOG_READ_ENTRY_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP; + +void register_tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP[0], + { "ulNumLogEntry", "octvc1.main.log.entry.read.ulnumlogentry", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulNumLogEntry",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP[1], + { "aLogEntry", "octvc1.main.log.entry.read.alogentry", + FT_NONE, BASE_NONE, NULL, 0x0, + "aLogEntry",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_LICENSING_INFO_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_LICENSING_INFO_CMD; + +void register_tOCTVC1_MAIN_MSG_LICENSING_INFO_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_LICENSING_INFO_CMD[0], + { "ObjectGet", "octvc1.main.licensing.info.objectget", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectGet",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_LICENSING_INFO_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP[6]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_LICENSING_INFO_RSP; + +void register_tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP[0], + { "ObjectGet", "octvc1.main.licensing.info.objectget", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectGet",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP[1], + { "ulFeatureType", "octvc1.main.licensing.info.ulfeaturetype", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_MAIN_API_LICENSING_FEATURE_TYPE_ENUM), 0x0, + "ulFeatureType",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP[2], + { "ulManagedFlag", "octvc1.main.licensing.info.ulmanagedflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulManagedFlag",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP[3], + { "ulLicenseValue", "octvc1.main.licensing.info.ullicensevalue", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulLicenseValue",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP[4], + { "ulCurrentCount", "octvc1.main.licensing.info.ulcurrentcount", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulCurrentCount",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_LICENSING_INFO_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_GPIO_READ_BANK_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_GPIO_READ_BANK_CMD; + +void register_tOCTVC1_MAIN_MSG_GPIO_READ_BANK_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_GPIO_READ_BANK_CMD[0], + { "ulBank", "octvc1.main.gpio.bank.read.ulbank", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulBank",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_GPIO_READ_BANK_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_GPIO_READ_BANK_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_GPIO_READ_BANK_RSP; + +void register_tOCTVC1_MAIN_MSG_GPIO_READ_BANK_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_GPIO_READ_BANK_RSP[0], + { "ulBank", "octvc1.main.gpio.bank.read.ulbank", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulBank",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_GPIO_READ_BANK_RSP[1], + { "ulValue", "octvc1.main.gpio.bank.read.ulvalue", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulValue",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_GPIO_READ_BANK_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CMD[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CMD; + +void register_tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CMD[0], + { "ulBank", "octvc1.main.gpio.bank.write.ulbank", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulBank",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CMD[1], + { "ulValue", "octvc1.main.gpio.bank.write.ulvalue", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulValue",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_RSP; + +void register_tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_RSP[0], + { "ulBank", "octvc1.main.gpio.bank.write.ulbank", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulBank",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CMD[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CMD; + +void register_tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CMD[0], + { "ulBank", "octvc1.main.gpio.bank.monitor.ulbank", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulBank",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CMD[1], + { "ulMonitor", "octvc1.main.gpio.bank.monitor.ulmonitor", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMonitor",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_RSP; + +void register_tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_RSP[0], + { "ulBank", "octvc1.main.gpio.bank.monitor.ulbank", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulBank",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD[4]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD; + +void register_tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD[0], + { "ulBank", "octvc1.main.gpio.bank.config.modify.ulbank", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulBank",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD[1], + { "ulDirection", "octvc1.main.gpio.bank.config.modify.uldirection", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulDirection",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD[2], + { "ulTriStateHigh", "octvc1.main.gpio.bank.config.modify.ultristatehigh", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulTriStateHigh",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_RSP; + +void register_tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_RSP[0], + { "ulBank", "octvc1.main.gpio.bank.config.modify.ulbank", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulBank",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD[13]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_SPI_ACCESS_CMD; + +void register_tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD[0], + { "ulChipSelectPin", "octvc1.main.spi.access.ulchipselectpin", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulChipSelectPin",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD[1], + { "ulClockPin", "octvc1.main.spi.access.ulclockpin", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulClockPin",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD[2], + { "ulDataOutPin", "octvc1.main.spi.access.uldataoutpin", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulDataOutPin",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD[3], + { "ulDataInPin", "octvc1.main.spi.access.uldatainpin", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulDataInPin",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD[4], + { "ulDivider", "octvc1.main.spi.access.uldivider", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulDivider",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD[5], + { "ulSlaveSelectId", "octvc1.main.spi.access.ulslaveselectid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulSlaveSelectId",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD[6], + { "ulClockFrequency", "octvc1.main.spi.access.ulclockfrequency", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulClockFrequency",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD[7], + { "ulClockPolarity", "octvc1.main.spi.access.ulclockpolarity", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_MAIN_SPI_CLOCK_POLARITY_ENUM), 0x0, + "ulClockPolarity",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD[8], + { "ulClockPhase", "octvc1.main.spi.access.ulclockphase", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_MAIN_SPI_CLOCK_PHASE_ENUM), 0x0, + "ulClockPhase",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD[9], + { "ulReadByteCnt", "octvc1.main.spi.access.ulreadbytecnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulReadByteCnt",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD[10], + { "ulWriteByteCnt", "octvc1.main.spi.access.ulwritebytecnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulWriteByteCnt",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD[11], + { "aulWriteData", "octvc1.main.spi.access.aulwritedata", + FT_UINT32,BASE_HEX, NULL, 0x0, + "aulWriteData",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_SPI_ACCESS_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_SPI_ACCESS_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_SPI_ACCESS_RSP; + +void register_tOCTVC1_MAIN_MSG_SPI_ACCESS_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_SPI_ACCESS_RSP[0], + { "aulReadData", "octvc1.main.spi.access.aulreaddata", + FT_UINT32,BASE_HEX, NULL, 0x0, + "aulReadData",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_SPI_ACCESS_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_MDIO_READ_PHY_CMD[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_MDIO_READ_PHY_CMD; + +void register_tOCTVC1_MAIN_MSG_MDIO_READ_PHY_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_MDIO_READ_PHY_CMD[0], + { "ulPhyAddress", "octvc1.main.mdio.phy.read.ulphyaddress", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulPhyAddress",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_MDIO_READ_PHY_CMD[1], + { "ulRegisterAddress", "octvc1.main.mdio.phy.read.ulregisteraddress", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRegisterAddress",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_MDIO_READ_PHY_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_MDIO_READ_PHY_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_MDIO_READ_PHY_RSP; + +void register_tOCTVC1_MAIN_MSG_MDIO_READ_PHY_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_MDIO_READ_PHY_RSP[0], + { "ulPhyAddress", "octvc1.main.mdio.phy.read.ulphyaddress", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulPhyAddress",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_MDIO_READ_PHY_RSP[1], + { "ulReadData", "octvc1.main.mdio.phy.read.ulreaddata", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulReadData",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_MDIO_READ_PHY_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD[4]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD; + +void register_tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD[0], + { "ulPhyAddress", "octvc1.main.mdio.phy.write.ulphyaddress", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulPhyAddress",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD[1], + { "ulRegisterAddress", "octvc1.main.mdio.phy.write.ulregisteraddress", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRegisterAddress",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD[2], + { "ulWriteData", "octvc1.main.mdio.phy.write.ulwritedata", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulWriteData",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_RSP; + +void register_tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_RSP[0], + { "ulPhyAddress", "octvc1.main.mdio.phy.write.ulphyaddress", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulPhyAddress",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD; + +void register_tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD[0], + { "aulPhyAddress", "octvc1.main.mdio.phy.monitor.aulphyaddress", + FT_UINT32,BASE_HEX, NULL, 0x0, + "aulPhyAddress",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_RSP; + +void register_tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_RSP[0], + { "aulPhyAddress", "octvc1.main.mdio.phy.monitor.aulphyaddress", + FT_UINT32,BASE_HEX, NULL, 0x0, + "aulPhyAddress",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_PROCESS_INFO_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_PROCESS_INFO_CMD; + +void register_tOCTVC1_MAIN_MSG_PROCESS_INFO_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_PROCESS_INFO_CMD[0], + { "hProcess", "octvc1.main.process.info.hprocess", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hProcess",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_PROCESS_INFO_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_PROCESS_INFO_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_PROCESS_INFO_RSP; + +void register_tOCTVC1_MAIN_MSG_PROCESS_INFO_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_PROCESS_INFO_RSP[0], + { "hProcess", "octvc1.main.process.info.hprocess", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hProcess",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_PROCESS_INFO_RSP[1], + { "szProcessImageName", "octvc1.main.process.info.szprocessimagename", + FT_STRING, BASE_NONE, NULL, 0x0, + "szProcessImageName",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_PROCESS_INFO_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_PROCESS_LIST_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_PROCESS_LIST_CMD; + +void register_tOCTVC1_MAIN_MSG_PROCESS_LIST_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_PROCESS_LIST_CMD[0], + { "ObjectCursor", "octvc1.main.process.list.objectcursor", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectCursor",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_PROCESS_LIST_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_PROCESS_LIST_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_PROCESS_LIST_RSP; + +void register_tOCTVC1_MAIN_MSG_PROCESS_LIST_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_PROCESS_LIST_RSP[0], + { "ObjectCursor", "octvc1.main.process.list.objectcursor", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectCursor",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_PROCESS_LIST_RSP[1], + { "ObjectList", "octvc1.main.process.list.objectlist", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectList",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_PROCESS_LIST_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD[4]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD; + +void register_tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD[0], + { "hProcess", "octvc1.main.process.cpu_usage.monitor.hprocess", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hProcess",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD[1], + { "ulAlarmThresholdHighPercent", "octvc1.main.process.cpu_usage.monitor.ulalarmthresholdhighpercent", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulAlarmThresholdHighPercent",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD[2], + { "ulAlarmThresholdLowPercent", "octvc1.main.process.cpu_usage.monitor.ulalarmthresholdlowpercent", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulAlarmThresholdLowPercent",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_RSP; + +void register_tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_RSP[0], + { "hProcess", "octvc1.main.process.cpu_usage.monitor.hprocess", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hProcess",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_RSP[1], + { "ulProcessImageType", "octvc1.main.process.cpu_usage.monitor.ulprocessimagetype", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_MAIN_PROCESS_TYPE_ENUM), 0x0, + "ulProcessImageType",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CMD; + +void register_tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CMD[0], + { "hProcess", "octvc1.main.process.cpu_usage.info.hprocess", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hProcess",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP[9]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP; + +void register_tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP[0], + { "hProcess", "octvc1.main.process.cpu_usage.info.hprocess", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hProcess",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP[1], + { "ulProcessImageType", "octvc1.main.process.cpu_usage.info.ulprocessimagetype", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_MAIN_PROCESS_TYPE_ENUM), 0x0, + "ulProcessImageType",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP[2], + { "ulAlarmThresholdHighPercent", "octvc1.main.process.cpu_usage.info.ulalarmthresholdhighpercent", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulAlarmThresholdHighPercent",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP[3], + { "ulAlarmThresholdLowPercent", "octvc1.main.process.cpu_usage.info.ulalarmthresholdlowpercent", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulAlarmThresholdLowPercent",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP[4], + { "ulProcessCpuUsagePercent", "octvc1.main.process.cpu_usage.info.ulprocesscpuusagepercent", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulProcessCpuUsagePercent",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP[5], + { "ulProcessCpuUsageMinPercent", "octvc1.main.process.cpu_usage.info.ulprocesscpuusageminpercent", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulProcessCpuUsageMinPercent",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP[6], + { "ulProcessCpuUsageMaxPercent", "octvc1.main.process.cpu_usage.info.ulprocesscpuusagemaxpercent", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulProcessCpuUsageMaxPercent",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP[7], + { "ulNumThread", "octvc1.main.process.cpu_usage.info.ulnumthread", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulNumThread",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD[6]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD; + +void register_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD[0], + { "hDestObj", "octvc1.main.debug_forward.open.hdestobj", + FT_NONE, BASE_NONE, NULL, 0x0, + "hDestObj",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD[1], + { "ulDestObjPort", "octvc1.main.debug_forward.open.uldestobjport", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulDestObjPort",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD[2], + { "ulDestObjFifoId", "octvc1.main.debug_forward.open.uldestobjfifoid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulDestObjFifoId",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD[3], + { "DestMacAddress", "octvc1.main.debug_forward.open.destmacaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "DestMacAddress",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD[4], + { "SrcMacAddress", "octvc1.main.debug_forward.open.srcmacaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "SrcMacAddress",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_RSP; + +void register_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_RSP[0], + { "hForward", "octvc1.main.debug_forward.open.hforward", + FT_NONE, BASE_NONE, NULL, 0x0, + "hForward",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_RSP[1], + { "ulFifoId", "octvc1.main.debug_forward.open.ulfifoid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulFifoId",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_CMD; + +void register_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_CMD[0], + { "hForward", "octvc1.main.debug_forward.close.hforward", + FT_NONE, BASE_NONE, NULL, 0x0, + "hForward",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_RSP; + +void register_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_RSP[0], + { "hForward", "octvc1.main.debug_forward.close.hforward", + FT_NONE, BASE_NONE, NULL, 0x0, + "hForward",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_CMD; + +void register_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_CMD[0], + { "ObjectGet", "octvc1.main.debug_forward.info.objectget", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectGet",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_RSP; + +void register_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_RSP[0], + { "ObjectGet", "octvc1.main.debug_forward.info.objectget", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectGet",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD; + +void register_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD[0], + { "ulMaxNumServerMgw", "octvc1.main.redundancy_server.start.ulmaxnumservermgw", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulMaxNumServerMgw",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD[1], + { "ulForceApiResourceCleanUpFlag", "octvc1.main.redundancy_server.start.ulforceapiresourcecleanupflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulForceApiResourceCleanUpFlag",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP[8]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP; + +void register_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP[0], + { "ulMaxNumSystemMgw", "octvc1.main.redundancy_server.info.ulmaxnumsystemmgw", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulMaxNumSystemMgw",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP[1], + { "ulMaxNumServerMgw", "octvc1.main.redundancy_server.info.ulmaxnumservermgw", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulMaxNumServerMgw",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP[2], + { "ulMgwCnt", "octvc1.main.redundancy_server.info.ulmgwcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulMgwCnt",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP[3], + { "State", "octvc1.main.redundancy_server.info.state", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_MAIN_REDUNDANCY_SERVER_STATE_ENUM), 0x0, + "State",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP[4], + { "hFailoverMgw", "octvc1.main.redundancy_server.info.hfailovermgw", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hFailoverMgw",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP[5], + { "FailoverStatus", "octvc1.main.redundancy_server.info.failoverstatus", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_MAIN_REDUNDANCY_SERVER_FAILOVER_MGW_STATUS_ENUM), 0x0, + "FailoverStatus",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP[6], + { "ulFailoverReturnCode", "octvc1.main.redundancy_server.info.ulfailoverreturncode", + FT_STRING, BASE_NONE, NULL, 0x0, + "ulFailoverReturnCode",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CMD; + +void register_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CMD[0], + { "hMgw", "octvc1.main.redundancy_server.mgw.add.hmgw", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hMgw",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_RSP; + +void register_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_RSP[0], + { "hMgw", "octvc1.main.redundancy_server.mgw.add.hmgw", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hMgw",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CMD; + +void register_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CMD[0], + { "hMgw", "octvc1.main.redundancy_server.mgw.remove.hmgw", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hMgw",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_RSP; + +void register_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_RSP[0], + { "hMgw", "octvc1.main.redundancy_server.mgw.remove.hmgw", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hMgw",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_CMD; + +void register_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_CMD[0], + { "ObjectCursor", "octvc1.main.redundancy_server.mgw.list.objectcursor", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectCursor",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_RSP; + +void register_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_RSP[0], + { "ObjectCursor", "octvc1.main.redundancy_server.mgw.list.objectcursor", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectCursor",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_RSP[1], + { "ObjectList", "octvc1.main.redundancy_server.mgw.list.objectlist", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectList",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_CMD; + +void register_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_CMD[0], + { "hMgw", "octvc1.main.redundancy_server.mgw.info.hmgw", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hMgw",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP[4]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP; + +void register_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP[0], + { "hMgw", "octvc1.main.redundancy_server.mgw.info.hmgw", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hMgw",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP[1], + { "FailoverStatus", "octvc1.main.redundancy_server.mgw.info.failoverstatus", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_MAIN_REDUNDANCY_SERVER_FAILOVER_MGW_STATUS_ENUM), 0x0, + "FailoverStatus",HFILL } + + }, + { + &ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP[2], + { "ulFailoverReturnCode", "octvc1.main.redundancy_server.mgw.info.ulfailoverreturncode", + FT_STRING, BASE_NONE, NULL, 0x0, + "ulFailoverReturnCode",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CMD; + +void register_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CMD[0], + { "hMgw", "octvc1.main.redundancy_server.mgw.failover.execute.hmgw", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hMgw",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_RSP; + +void register_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_RSP[0], + { "hMgw", "octvc1.main.redundancy_server.mgw.failover.execute.hmgw", + FT_UINT32,BASE_HEX, NULL, 0x0, + "hMgw",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + + +int ahf_tOCTVC1_MAIN_MSG_OCT2200_STATS_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_OCT2200_STATS_CMD; + +void register_tOCTVC1_MAIN_MSG_OCT2200_STATS_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_OCT2200_STATS_CMD[0], + { "ulResetStatsFlag", "octvc1.main.oct2200.stats.ulresetstatsflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulResetStatsFlag",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_OCT2200_STATS_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_MAIN_MSG_OCT2200_STATS_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_MAIN_MSG_OCT2200_STATS_RSP; + +void register_tOCTVC1_MAIN_MSG_OCT2200_STATS_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_MAIN_MSG_OCT2200_STATS_RSP[0], + { "ulOCT2200MonitorNumber", "octvc1.main.oct2200.stats.uloct2200monitornumber", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulOCT2200MonitorNumber",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_MAIN_MSG_OCT2200_STATS_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +/**************************************************************************** + COMMON dissectors + ****************************************************************************/ + + +unsigned int dissect_tOCTVC1_MAIN_LICENSING_CURSOR(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_MAIN_LICENSING_CURSOR))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_LICENSING_CURSOR (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_LICENSING_CURSOR)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_MAIN_LICENSING_CURSOR); + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_MAIN_LICENSING_CURSOR[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_LICENSING_CURSOR, szFeatureName), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_LICENSING_CURSOR, szFeatureName); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_LICENSING_CURSOR[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_LICENSING_CURSOR, ulGetMode), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_LICENSING_CURSOR[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_LICENSING_CURSOR, ulGetMode); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_THREAD_CPU_USAGE(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_MAIN_THREAD_CPU_USAGE))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_THREAD_CPU_USAGE (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_THREAD_CPU_USAGE)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_MAIN_THREAD_CPU_USAGE); + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_THREAD_CPU_USAGE[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_THREAD_CPU_USAGE, hThread), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_THREAD_CPU_USAGE[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_THREAD_CPU_USAGE, hThread); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_THREAD_CPU_USAGE[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_THREAD_CPU_USAGE, ulCpuUsagePercent), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_THREAD_CPU_USAGE[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_THREAD_CPU_USAGE, ulCpuUsagePercent); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_OPUS_CORE_STATUS(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_MAIN_OPUS_CORE_STATUS))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_OPUS_CORE_STATUS (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_OPUS_CORE_STATUS)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_MAIN_OPUS_CORE_STATUS); + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_OPUS_CORE_STATUS[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_OPUS_CORE_STATUS, ulCoreStatus), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_OPUS_CORE_STATUS[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_OPUS_CORE_STATUS, ulCoreStatus); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_OPUS_CORE_STATUS[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_OPUS_CORE_STATUS, ulProgramCounter), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_OPUS_CORE_STATUS[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_OPUS_CORE_STATUS, ulProgramCounter); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_OPUS_CORE_STATUS[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_OPUS_CORE_STATUS, ulFailureMask), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_OPUS_CORE_STATUS[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_OPUS_CORE_STATUS, ulFailureMask); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_OPUS_CORE_STATUS[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_OPUS_CORE_STATUS, ulAccessViolationAddress), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_OPUS_CORE_STATUS[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_OPUS_CORE_STATUS, ulAccessViolationAddress); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_OCT1010_CORE_STATUS(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_MAIN_OCT1010_CORE_STATUS))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_OCT1010_CORE_STATUS (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_OCT1010_CORE_STATUS)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_MAIN_OCT1010_CORE_STATUS); + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_OCT1010_CORE_STATUS[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_OCT1010_CORE_STATUS, ulCoreStatus), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_OCT1010_CORE_STATUS[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_OCT1010_CORE_STATUS, ulCoreStatus); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_OCT1010_CORE_STATUS[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_OCT1010_CORE_STATUS, ulProgramCounter), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_OCT1010_CORE_STATUS[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_OCT1010_CORE_STATUS, ulProgramCounter); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_OCT1010_CORE_STATUS[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_OCT1010_CORE_STATUS, ulAccessViolationAddress), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_OCT1010_CORE_STATUS[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_OCT1010_CORE_STATUS, ulAccessViolationAddress); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_OPUS_CORE_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_MAIN_OPUS_CORE_INFO))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_OPUS_CORE_INFO (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_OPUS_CORE_INFO)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_MAIN_OPUS_CORE_INFO); + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_HANDLE_INVALID) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_OPUS_CORE_INFO[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_OPUS_CORE_INFO, hProcess),temp_data, "cOCTVC1_HANDLE_INVALID (0x%08x)",temp_data); + }else { + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_OPUS_CORE_INFO[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_OPUS_CORE_INFO, hProcess), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_OPUS_CORE_INFO[0], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_OPUS_CORE_INFO, 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_MAIN_OPUS_CORE_INFO[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_OPUS_CORE_INFO, ulPhysicalCoreId), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_OPUS_CORE_INFO[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_OPUS_CORE_INFO, ulPhysicalCoreId); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_OPUS_CORE_INFO[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_OPUS_CORE_INFO, ulProcessImageType), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_OPUS_CORE_INFO[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_OPUS_CORE_INFO, ulProcessImageType); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_OCT1010_CORE_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_MAIN_OCT1010_CORE_INFO))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_OCT1010_CORE_INFO (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_OCT1010_CORE_INFO)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_MAIN_OCT1010_CORE_INFO); + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_HANDLE_INVALID) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_OCT1010_CORE_INFO[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_OCT1010_CORE_INFO, hProcess),temp_data, "cOCTVC1_HANDLE_INVALID (0x%08x)",temp_data); + }else { + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_OCT1010_CORE_INFO[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_OCT1010_CORE_INFO, hProcess), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_OCT1010_CORE_INFO[0], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_OCT1010_CORE_INFO, hProcess); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_HANDLE_INVALID) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_OCT1010_CORE_INFO[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_OCT1010_CORE_INFO, hThread),temp_data, "cOCTVC1_HANDLE_INVALID (0x%08x)",temp_data); + }else { + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_OCT1010_CORE_INFO[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_OCT1010_CORE_INFO, hThread), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_OCT1010_CORE_INFO[1], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_OCT1010_CORE_INFO, hThread); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_OCT1010_CORE_INFO[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_OCT1010_CORE_INFO, ulProcessImageType), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_OCT1010_CORE_INFO[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_OCT1010_CORE_INFO, ulProcessImageType); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_MAIN_OCT1010_CORE_INFO[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_OCT1010_CORE_INFO, szProcessImageName), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_OCT1010_CORE_INFO, szProcessImageName); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC(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_MAIN_ETH_PORT_CONFIG_DYNAMIC))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC); + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_DO_NOT_MODIFY) + { ti = proto_tree_add_boolean_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulEthPortEnableFlag),temp_data, "cOCTVC1_DO_NOT_MODIFY (0x%08x)",temp_data); + }else { + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_boolean_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulEthPortEnableFlag), temp_data, "%s (0x%x)", pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulEthPortEnableFlag), temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulEthPortEnableFlag); + + { + int ulMac0, ulMac1; + unsigned int offs = offset; + ulMac0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulMac1 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[1], tvb, offset, + sizeof(tOCTVC1_MAC_ADDRESS), "","MacAddress: %02x:%02x:%02x:%02x:%02x:%02x", + (( ulMac0 & 0x0000FF00 ) >> 8 ), + ( ulMac0 & 0x000000FF ), + (( ulMac1 & 0xFF000000 ) >> 24 ), + (( ulMac1 & 0x00FF0000 ) >> 16 ), + (( ulMac1 & 0x0000FF00 ) >> 8 ), + ( ulMac1 & 0x000000FF ) ); + } + offset += sizeof(tOCTVC1_MAC_ADDRESS); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_DO_NOT_MODIFY) + { ti = proto_tree_add_boolean_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulAcceptAllMacFlag),temp_data, "cOCTVC1_DO_NOT_MODIFY (0x%08x)",temp_data); + }else { + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_boolean_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulAcceptAllMacFlag), temp_data, "%s (0x%x)", pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulAcceptAllMacFlag), temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulAcceptAllMacFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_DO_NOT_MODIFY) + { ti = proto_tree_add_boolean_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulAcceptUnicastFlag),temp_data, "cOCTVC1_DO_NOT_MODIFY (0x%08x)",temp_data); + }else { + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_boolean_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulAcceptUnicastFlag), temp_data, "%s (0x%x)", pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulAcceptUnicastFlag), temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulAcceptUnicastFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_DO_NOT_MODIFY) + { ti = proto_tree_add_boolean_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[4], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulAcceptMulticastFlag),temp_data, "cOCTVC1_DO_NOT_MODIFY (0x%08x)",temp_data); + }else { + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_boolean_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[4], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulAcceptMulticastFlag), temp_data, "%s (0x%x)", pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[4], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulAcceptMulticastFlag), temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulAcceptMulticastFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_DO_NOT_MODIFY) + { ti = proto_tree_add_boolean_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[5], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulAcceptBadCrcPktFlag),temp_data, "cOCTVC1_DO_NOT_MODIFY (0x%08x)",temp_data); + }else { + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_boolean_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[5], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulAcceptBadCrcPktFlag), temp_data, "%s (0x%x)", pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[5], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulAcceptBadCrcPktFlag), temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulAcceptBadCrcPktFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_DO_NOT_MODIFY) + { ti = proto_tree_add_boolean_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[6], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulAcceptLongPktFormatFlag),temp_data, "cOCTVC1_DO_NOT_MODIFY (0x%08x)",temp_data); + }else { + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_boolean_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[6], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulAcceptLongPktFormatFlag), temp_data, "%s (0x%x)", pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[6], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulAcceptLongPktFormatFlag), temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulAcceptLongPktFormatFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_DO_NOT_MODIFY) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[7], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulBroadcastForwardPort),temp_data, "cOCTVC1_DO_NOT_MODIFY (0x%08x)",temp_data); + }else { + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[7], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulBroadcastForwardPort), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[7], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulBroadcastForwardPort); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_DO_NOT_MODIFY) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[8], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulMulticastForwardPort),temp_data, "cOCTVC1_DO_NOT_MODIFY (0x%08x)",temp_data); + }else { + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[8], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulMulticastForwardPort), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[8], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulMulticastForwardPort); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_DO_NOT_MODIFY) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[9], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulUnicastForwardPort),temp_data, "cOCTVC1_DO_NOT_MODIFY (0x%08x)",temp_data); + }else { + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[9], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulUnicastForwardPort), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[9], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulUnicastForwardPort); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_DO_NOT_MODIFY) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[10], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulRxMirrorForwardPort),temp_data, "cOCTVC1_DO_NOT_MODIFY (0x%08x)",temp_data); + }else { + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[10], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulRxMirrorForwardPort), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[10], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulRxMirrorForwardPort); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_DO_NOT_MODIFY) + { ti = proto_tree_add_boolean_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[11], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulRestrictedApiFlag),temp_data, "cOCTVC1_DO_NOT_MODIFY (0x%08x)",temp_data); + }else { + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_boolean_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[11], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulRestrictedApiFlag), temp_data, "%s (0x%x)", pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC[11], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulRestrictedApiFlag), temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC, ulRestrictedApiFlag); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC(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_MAIN_ETH_PORT_CONFIG_STATIC))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC); + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC, ulInterfaceType), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC, ulInterfaceType); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC, ulMode), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC, ulMode); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC, ulSpeed), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC, ulSpeed); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_boolean_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC, ulFullDuplexFlag), temp_data, "%s (0x%x)", pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC, ulFullDuplexFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC, ulFullDuplexFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC[4], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC, ulPhyAddress), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC, ulPhyAddress); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC[5], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC, ulPktQueuesByteSize), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC[5], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC, ulPktQueuesByteSize); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_ETH_PORT_STATS(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_MAIN_ETH_PORT_STATS))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_ETH_PORT_STATS (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_ETH_PORT_STATS)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_MAIN_ETH_PORT_STATS); + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulRxPktErrorCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulRxPktErrorCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulRxOddNibbleCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulRxOddNibbleCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulRxCrcErrorCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulRxCrcErrorCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulRxSfdAbsentCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulRxSfdAbsentCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[4], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulRxShortFrameCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulRxShortFrameCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[5], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulRxLongFrameCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[5], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulRxLongFrameCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[6], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulRxFalseCarrierCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[6], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulRxFalseCarrierCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[7], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulTxFalseCarrierCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[7], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulTxFalseCarrierCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[8], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulRxMemOverflowCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[8], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulRxMemOverflowCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[9], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulRxBufferOverflowCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[9], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulRxBufferOverflowCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[10], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulRxPauseFrameCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[10], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulRxPauseFrameCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[11], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulTxPauseFrameCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[11], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulTxPauseFrameCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[12], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulTxMemChecksum), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[12], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulTxMemChecksum); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[13], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulTxBufferUnderflowCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[13], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulTxBufferUnderflowCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_boolean_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[14], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulDefaultMacAddressUsedFlag), temp_data, "%s (0x%x)", pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[14], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulDefaultMacAddressUsedFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulDefaultMacAddressUsedFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[15], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulTxLateCollisionCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[15], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulTxLateCollisionCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[16], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulTxExcessCollisionCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[16], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulTxExcessCollisionCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[17], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulTxExcessDeferralCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[17], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulTxExcessDeferralCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[18], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulRxAlignmentErrorCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[18], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulRxAlignmentErrorCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[19], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulRxJabberErrorCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[19], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulRxJabberErrorCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[20], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulRxLengthErrorCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[20], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulRxLengthErrorCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[21], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulRxOutOfRangeTypeCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[21], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulRxOutOfRangeTypeCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[22], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulRxWatchdogErrorCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[22], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulRxWatchdogErrorCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[23], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulRxIPv4HeaderErrorCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[23], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulRxIPv4HeaderErrorCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[24], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulRxIPv6HeaderErrorCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_ETH_PORT_STATS[24], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_ETH_PORT_STATS, ulRxIPv6HeaderErrorCnt); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR(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_MAIN_FILE_SYSTEM_FILE_CURSOR))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR); + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR, szFileName), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR, szFileName); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR, ulGetMode), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR, ulGetMode); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_LOG_ENTRY(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_MAIN_LOG_ENTRY))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_LOG_ENTRY (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_LOG_ENTRY)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_MAIN_LOG_ENTRY); + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_LOG_ENTRY[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_LOG_ENTRY, ulLogSeqNumber), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_LOG_ENTRY[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_LOG_ENTRY, ulLogSeqNumber); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_LOG_ENTRY[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_LOG_ENTRY, ulLogTimestamp), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_LOG_ENTRY[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_LOG_ENTRY, ulLogTimestamp); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_LOG_ENTRY[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_LOG_ENTRY, ulLogReserved0), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_LOG_ENTRY[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_LOG_ENTRY, ulLogReserved0); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_LOG_ENTRY[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_LOG_ENTRY, ulLogReserved1), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_LOG_ENTRY[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_LOG_ENTRY, ulLogReserved1); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_MAIN_LOG_ENTRY[4], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_LOG_ENTRY, achLogMsg), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_LOG_ENTRY, achLogMsg); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_FILE_CURSOR(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_MAIN_FILE_CURSOR))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_FILE_CURSOR (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_FILE_CURSOR)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_MAIN_FILE_CURSOR); + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_MAIN_FILE_CURSOR[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_FILE_CURSOR, szFileName), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_FILE_CURSOR, szFileName); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_FILE_CURSOR[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_FILE_CURSOR, ulGetMode), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_FILE_CURSOR[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_FILE_CURSOR, ulGetMode); + + } + + + return offset; + +}; + +/**************************************************************************** + Event dissectors + ****************************************************************************/ + + +unsigned int dissect_tOCTVC1_MAIN_MSG_MODULE_TRACING_BUFFER_FULL_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_MODULE_TRACING_BUFFER_FULL_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_MODULE_TRACING_BUFFER_FULL_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_MODULE_TRACING_BUFFER_FULL_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_MODULE_TRACING_BUFFER_FULL_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_MODULE_TRACING_BUFFER_FULL_EVT[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_MODULE_TRACING_BUFFER_FULL_EVT, BufferId); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EVT[0], tvb, offset, + 4,"ulCoreUseMask: (0x%08x)", temp_data); + if(temp_data) + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i< mWS_COUNTOF(vals_tOCTVC1_MAIN_OPUS_CORE_MASK); i++ ) + { + if( ( vals_tOCTVC1_MAIN_OPUS_CORE_MASK[i].value && + ( vals_tOCTVC1_MAIN_OPUS_CORE_MASK[i].value & temp_data ) == + vals_tOCTVC1_MAIN_OPUS_CORE_MASK[i].value)) + proto_tree_add_text(sub_tree, tvb, offset,4,"%s", + decode_enumerated_bitfield(vals_tOCTVC1_MAIN_OPUS_CORE_MASK[i].value, 0xFFFFFFFF, (4*8), + VALS(vals_tOCTVC1_MAIN_OPUS_CORE_MASK),"%s")); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EVT, ulCoreUseMask); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EVT[1], tvb, offset, + 4,"ulCoreHaltMask: (0x%08x)", temp_data); + if(temp_data) + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i< mWS_COUNTOF(vals_tOCTVC1_MAIN_OPUS_CORE_MASK); i++ ) + { + if( ( vals_tOCTVC1_MAIN_OPUS_CORE_MASK[i].value && + ( vals_tOCTVC1_MAIN_OPUS_CORE_MASK[i].value & temp_data ) == + vals_tOCTVC1_MAIN_OPUS_CORE_MASK[i].value)) + proto_tree_add_text(sub_tree, tvb, offset,4,"%s", + decode_enumerated_bitfield(vals_tOCTVC1_MAIN_OPUS_CORE_MASK[i].value, 0xFFFFFFFF, (4*8), + VALS(vals_tOCTVC1_MAIN_OPUS_CORE_MASK),"%s")); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EVT, ulCoreHaltMask); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EVT[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EVT, ulBank); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EVT[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EVT, ulPortValue); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EVT[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EVT, ulPhyAddress); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EVT[1], tvb, offset, + 4,"ulEvents: (0x%08x)", temp_data); + if(temp_data) + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i< mWS_COUNTOF(vals_tOCTVC1_MAIN_EVT_PHY_MASK); i++ ) + { + if( ( vals_tOCTVC1_MAIN_EVT_PHY_MASK[i].value && + ( vals_tOCTVC1_MAIN_EVT_PHY_MASK[i].value & temp_data ) == + vals_tOCTVC1_MAIN_EVT_PHY_MASK[i].value)) + proto_tree_add_text(sub_tree, tvb, offset,4,"%s", + decode_enumerated_bitfield(vals_tOCTVC1_MAIN_EVT_PHY_MASK[i].value, 0xFFFFFFFF, (4*8), + VALS(vals_tOCTVC1_MAIN_EVT_PHY_MASK),"%s")); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EVT, ulEvents); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT, hProcess); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT, ulProcessImageType); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT, ulProcessCpuUsagePercent); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT, ulNumThread); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT, hMgw); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT, ulDurationMs); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT, FailoverStatus); + + { + int ulRc = tvb_get_ntohl( tvb, offset ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT[3], tvb, offset, + 4, "","ulFailoverReturnCode: %s (0x%08X)", + dissect_OCTVC1_Return_Code(ulRc), ulRc ); + } + offset += 4; + } + + + return 0; + +}; + + +/**************************************************************************** + CMD/RSP dissectors + ****************************************************************************/ + + +unsigned int dissect_tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD[0], tvb, offset, + 4,"ulEventMask: (0x%08x)", temp_data); + if(temp_data) + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i< mWS_COUNTOF(vals_tOCTVC1_MAIN_EVT_MASK); i++ ) + { + if( ( vals_tOCTVC1_MAIN_EVT_MASK[i].value && + ( vals_tOCTVC1_MAIN_EVT_MASK[i].value & temp_data ) == + vals_tOCTVC1_MAIN_EVT_MASK[i].value)) + proto_tree_add_text(sub_tree, tvb, offset,4,"%s", + decode_enumerated_bitfield(vals_tOCTVC1_MAIN_EVT_MASK[i].value, 0xFFFFFFFF, (4*8), + VALS(vals_tOCTVC1_MAIN_EVT_MASK),"%s")); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD, ulEventMask); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD, ulUserEventId); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD, hEventDestObj), "hEventDestObj: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD, ulEventDestObjPort); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD, ulEventDestObjFifoId); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP[0], tvb, offset, + 4,"ulEventMask: (0x%08x)", temp_data); + if(temp_data) + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i< mWS_COUNTOF(vals_tOCTVC1_MAIN_EVT_MASK); i++ ) + { + if( ( vals_tOCTVC1_MAIN_EVT_MASK[i].value && + ( vals_tOCTVC1_MAIN_EVT_MASK[i].value & temp_data ) == + vals_tOCTVC1_MAIN_EVT_MASK[i].value)) + proto_tree_add_text(sub_tree, tvb, offset,4,"%s", + decode_enumerated_bitfield(vals_tOCTVC1_MAIN_EVT_MASK[i].value, 0xFFFFFFFF, (4*8), + VALS(vals_tOCTVC1_MAIN_EVT_MASK),"%s")); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP, ulEventMask); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP, ulUserEventId); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP, hEventDestObj), "hEventDestObj: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP, ulEventDestObjPort); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP, ulEventDestObjFifoId); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD, ulTracingMode); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD, ulTracingType); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD, ulNumBuffer); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD, aBufferId), "aBufferId"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<4; i++ ) + { + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD[3], tvb, offset, + 4, temp_data, "[%d]: 0x%08x", i, temp_data ); + } + offset+=4; + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD, ulFormat); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD, ulByteLength); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD, szBufferName), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD, szBufferName); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_BUFFER_OPEN_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_BUFFER_OPEN_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_BUFFER_OPEN_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_BUFFER_OPEN_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_BUFFER_OPEN_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_OPEN_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_OPEN_RSP, hBuffer); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_OPEN_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_OPEN_RSP, ulAllocatedByteLength); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_BUFFER_CLOSE_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_BUFFER_CLOSE_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_BUFFER_CLOSE_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_BUFFER_CLOSE_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_BUFFER_CLOSE_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_HANDLE_INVALID) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_CLOSE_CMD[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_CLOSE_CMD, hBuffer),temp_data, "cOCTVC1_HANDLE_INVALID (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_CLOSE_CMD[0], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_CLOSE_CMD, hBuffer); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_BUFFER_CLOSE_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_BUFFER_CLOSE_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_BUFFER_CLOSE_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_BUFFER_CLOSE_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_BUFFER_CLOSE_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_CLOSE_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_CLOSE_RSP, hBuffer); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_BUFFER_INFO_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_BUFFER_INFO_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_BUFFER_INFO_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_BUFFER_INFO_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_BUFFER_INFO_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_HANDLE_INVALID) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_INFO_CMD[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_INFO_CMD, hBuffer),temp_data, "cOCTVC1_HANDLE_INVALID (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_INFO_CMD[0], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_INFO_CMD, hBuffer); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP, hBuffer); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP, ulFormat); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP, szBufferName), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP, szBufferName); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP, ulUsedByteLength); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP, ulAllocatedByteLength); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP[5], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP, ulDependencyCount); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_BUFFER_LIST_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_BUFFER_LIST_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_BUFFER_LIST_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_BUFFER_LIST_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_BUFFER_LIST_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_LIST_CMD, ObjectCursor), "ObjectCursor:tOCTVC1_CURSOR_HANDLE_OBJECT_GET"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_OBJECT_GET( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_BUFFER_LIST_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_BUFFER_LIST_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_BUFFER_LIST_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_BUFFER_LIST_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_BUFFER_LIST_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_LIST_RSP, ObjectCursor), "ObjectCursor:tOCTVC1_CURSOR_HANDLE_OBJECT_GET"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_OBJECT_GET( tvb, pinfo, sub_tree2, offset, NULL ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_LIST_RSP, ObjectList), "ObjectList:tOCTVC1_LIST_HANDLE_OBJECT_GET"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_LIST_HANDLE_OBJECT_GET( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_HANDLE_INVALID) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD, hBuffer),temp_data, "cOCTVC1_HANDLE_INVALID (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD[0], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD, hBuffer); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_DO_NOT_MODIFY) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD, ulFormat),temp_data, "cOCTVC1_DO_NOT_MODIFY (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD[1], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD, ulFormat); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_DO_NOT_MODIFY) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD, ulUsedByteSize),temp_data, "cOCTVC1_DO_NOT_MODIFY (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD[2], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD, ulUsedByteSize); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_BUFFER_MODIFY_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_BUFFER_MODIFY_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_BUFFER_MODIFY_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_BUFFER_MODIFY_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_BUFFER_MODIFY_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_MODIFY_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_MODIFY_RSP, hBuffer); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_HANDLE_INVALID) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD, hBuffer),temp_data, "cOCTVC1_HANDLE_INVALID (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD[0], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD, hBuffer); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD, ulWriteByteLength); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD, ulWriteByteOffset); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD, abyWriteData), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD, abyWriteData); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_BUFFER_WRITE_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_BUFFER_WRITE_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_BUFFER_WRITE_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_BUFFER_WRITE_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_BUFFER_WRITE_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_WRITE_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_WRITE_RSP, hBuffer); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_WRITE_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_WRITE_RSP, ulNumByteWritten); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_BUFFER_READ_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_BUFFER_READ_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_BUFFER_READ_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_BUFFER_READ_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_BUFFER_READ_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_HANDLE_INVALID) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_READ_CMD[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_READ_CMD, hBuffer),temp_data, "cOCTVC1_HANDLE_INVALID (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_READ_CMD[0], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_READ_CMD, hBuffer); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_MAIN_BUFFER_MAX_DATA_BYTE_SIZE) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_READ_CMD[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_READ_CMD, ulMaxReadByteLength),temp_data, "cOCTVC1_MAIN_BUFFER_MAX_DATA_BYTE_SIZE (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_READ_CMD[1], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_READ_CMD, ulMaxReadByteLength); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_READ_CMD[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_READ_CMD, ulReadByteOffset); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_BUFFER_READ_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_BUFFER_READ_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_BUFFER_READ_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_BUFFER_READ_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_BUFFER_READ_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_READ_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_READ_RSP, hBuffer); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_READ_RSP[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_READ_RSP, ulDoneFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_READ_RSP, ulDoneFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_READ_RSP[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_READ_RSP, ulNumByteRead); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_READ_RSP[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_READ_RSP, abyData), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_READ_RSP, abyData); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_CMD[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_CMD, szBufferName), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_CMD, szBufferName); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP, hBuffer); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP, ulFormat); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP, szBufferName), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP, szBufferName); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP, ulUsedByteLength); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP, ulAllocatedByteLength); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP[5], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP, ulDependencyCount); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_DEVICE_INFO_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_DEVICE_INFO_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_DEVICE_INFO_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_DEVICE_INFO_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_DEVICE_INFO_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_DEVICE_INFO_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_DEVICE_INFO_RSP, ulDeviceType); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_MAIN_MSG_DEVICE_INFO_RSP[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_DEVICE_INFO_RSP, abyDeviceInfo), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_DEVICE_INFO_RSP, abyDeviceInfo); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_MAIN_MSG_DEVICE_INFO_RSP[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_DEVICE_INFO_RSP, abyUserInfo), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_DEVICE_INFO_RSP, abyUserInfo); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_RSP, aCoreStatus), "aCoreStatus:tOCTVC1_MAIN_OPUS_CORE_STATUS"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<24; i++ ) + { + { + proto_tree* sub_tree2; + ti = proto_tree_add_text(sub_tree, tvb, offset, + sizeof(tOCTVC1_MAIN_OPUS_CORE_STATUS), "[%d]:", i); + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_MAIN_OPUS_CORE_STATUS( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_RSP, aCoreInfo), "aCoreInfo:tOCTVC1_MAIN_OPUS_CORE_INFO"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<24; i++ ) + { + { + proto_tree* sub_tree2; + ti = proto_tree_add_text(sub_tree, tvb, offset, + sizeof(tOCTVC1_MAIN_OPUS_CORE_INFO), "[%d]:", i); + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_MAIN_OPUS_CORE_INFO( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP, ulOCT1010VersionId); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP, szOCT1010Version), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP, szOCT1010Version); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP, ulSerialNumber); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP, ulProjectNumber); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP, aOCT1010MacAddress), "aOCT1010MacAddress:tOCTVC1_MAC_ADDRESS"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<8; i++ ) + { + { + int ulMac0, ulMac1; + unsigned int offs = offset; + ulMac0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulMac1 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(sub_tree, ahf_tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP[4], tvb, offset, + sizeof(tOCTVC1_MAC_ADDRESS), "","[%d]: %02x:%02x:%02x:%02x:%02x:%02x", i, + (( ulMac0 & 0x0000FF00 ) >> 8 ), + ( ulMac0 & 0x000000FF ), + (( ulMac1 & 0xFF000000 ) >> 24 ), + (( ulMac1 & 0x00FF0000 ) >> 16 ), + (( ulMac1 & 0x0000FF00 ) >> 8 ), + ( ulMac1 & 0x000000FF ) ); + } + offset += sizeof(tOCTVC1_MAC_ADDRESS); + + } + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP[5], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP, ulOCT1010IDVersionId); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP[6], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP, szOCT1010IDVersion), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP, szOCT1010IDVersion); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP[7], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP, ulTdmNumStream); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP[8], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP, ulTdmStreamFrequency); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP, aMacAddress), "aMacAddress:tOCTVC1_MAC_ADDRESS"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<2; i++ ) + { + { + int ulMac0, ulMac1; + unsigned int offs = offset; + ulMac0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulMac1 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(sub_tree, ahf_tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP[9], tvb, offset, + sizeof(tOCTVC1_MAC_ADDRESS), "","[%d]: %02x:%02x:%02x:%02x:%02x:%02x", i, + (( ulMac0 & 0x0000FF00 ) >> 8 ), + ( ulMac0 & 0x000000FF ), + (( ulMac1 & 0xFF000000 ) >> 24 ), + (( ulMac1 & 0x00FF0000 ) >> 16 ), + (( ulMac1 & 0x0000FF00 ) >> 8 ), + ( ulMac1 & 0x000000FF ) ); + } + offset += sizeof(tOCTVC1_MAC_ADDRESS); + + } + } + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP[10], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP, aulUserInfo), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP, aulUserInfo); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_OCT1010_STATS_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_OCT1010_STATS_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_OCT1010_STATS_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_OCT1010_STATS_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_OCT1010_STATS_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_MAIN_MSG_OCT1010_STATS_CMD[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_OCT1010_STATS_CMD, ulResetStatsFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_OCT1010_STATS_CMD, ulResetStatsFlag); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_OCT1010_STATS_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_OCT1010_STATS_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_OCT1010_STATS_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_OCT1010_STATS_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_OCT1010_STATS_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_OCT1010_STATS_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_OCT1010_STATS_RSP, ulOCT1010MonitorNumber); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_OCT1010_STATS_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_OCT1010_STATS_RSP, ulTdmCpyOutOfBandwidthCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_OCT1010_STATS_RSP[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_OCT1010_STATS_RSP, ulTdmTxTimeslotPtrOutOfSyncCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_OCT1010_STATS_RSP[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_OCT1010_STATS_RSP, ulTdmTimestampIncrementErrorCnt); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_RSP, aCoreStatus), "aCoreStatus:tOCTVC1_MAIN_OCT1010_CORE_STATUS"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<15; i++ ) + { + { + proto_tree* sub_tree2; + ti = proto_tree_add_text(sub_tree, tvb, offset, + sizeof(tOCTVC1_MAIN_OCT1010_CORE_STATUS), "[%d]:", i); + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_MAIN_OCT1010_CORE_STATUS( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_RSP, aCoreInfo), "aCoreInfo:tOCTVC1_MAIN_OCT1010_CORE_INFO"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<15; i++ ) + { + { + proto_tree* sub_tree2; + ti = proto_tree_add_text(sub_tree, tvb, offset, + sizeof(tOCTVC1_MAIN_OCT1010_CORE_INFO), "[%d]:", i); + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_MAIN_OCT1010_CORE_INFO( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP, ulOct1010IdType); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP, szOct1010IdType), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP, szOct1010IdType); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP, ulTdmOutputEnableSupportFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP, ulTdmOutputEnableSupportFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP, ulTdmOutputEnableDeviceFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP, ulTdmOutputEnableDeviceFlag); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_ETH_STATS_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_ETH_STATS_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_ETH_STATS_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_ETH_STATS_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_ETH_STATS_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_MAIN_MSG_ETH_STATS_CMD[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_ETH_STATS_CMD, ulResetStatsFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_ETH_STATS_CMD, ulResetStatsFlag); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_ETH_STATS_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_ETH_STATS_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_ETH_STATS_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_ETH_STATS_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_ETH_STATS_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_ETH_STATS_RSP, aStats), "aStats:tOCTVC1_MAIN_ETH_PORT_STATS"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<2; i++ ) + { + { + proto_tree* sub_tree2; + tWS_EXTRA_VALUE ExtraVal; + ExtraVal.lValue = 0; + ExtraVal.pszValue = "0"; + ti = proto_tree_add_text(sub_tree, tvb, offset, + sizeof(tOCTVC1_MAIN_ETH_PORT_STATS), "[%d]:", i); + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_MAIN_ETH_PORT_STATS( tvb, pinfo, sub_tree2, offset, &ExtraVal ); + } + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CMD, aDynamic), "aDynamic:tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<2; i++ ) + { + { + proto_tree* sub_tree2; + ti = proto_tree_add_text(sub_tree, tvb, offset, + sizeof(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC), "[%d]:", i); + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP, aDynamic), "aDynamic:tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<2; i++ ) + { + { + proto_tree* sub_tree2; + tWS_EXTRA_VALUE ExtraVal; + ExtraVal.lValue = 0; + ExtraVal.pszValue = "0"; + ti = proto_tree_add_text(sub_tree, tvb, offset, + sizeof(tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC), "[%d]:", i); + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC( tvb, pinfo, sub_tree2, offset, &ExtraVal ); + } + } + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP, aStatic), "aStatic:tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<2; i++ ) + { + { + proto_tree* sub_tree2; + ti = proto_tree_add_text(sub_tree, tvb, offset, + sizeof(tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC), "[%d]:", i); + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_REGISTER_READ_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_REGISTER_READ_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_REGISTER_READ_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_REGISTER_READ_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_REGISTER_READ_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_REGISTER_READ_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_REGISTER_READ_RSP, ulTdmTimestampReg); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_REGISTER_READ_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_REGISTER_READ_RSP, ulNanoSecondCounterReg); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_FILE_OPEN_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_FILE_OPEN_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_FILE_OPEN_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_FILE_OPEN_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_FILE_OPEN_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_MAIN_MSG_FILE_OPEN_CMD[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_OPEN_CMD, szFileName), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_OPEN_CMD, szFileName); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_MAIN_MSG_FILE_OPEN_CMD[1], tvb, offset, + 4,"ulAccessMode: (0x%08x)", temp_data); + if(temp_data) + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i< mWS_COUNTOF(vals_tOCTVC1_MAIN_FILE_OPEN_MODE_MASK); i++ ) + { + if( ( vals_tOCTVC1_MAIN_FILE_OPEN_MODE_MASK[i].value && + ( vals_tOCTVC1_MAIN_FILE_OPEN_MODE_MASK[i].value & temp_data ) == + vals_tOCTVC1_MAIN_FILE_OPEN_MODE_MASK[i].value)) + proto_tree_add_text(sub_tree, tvb, offset,4,"%s", + decode_enumerated_bitfield(vals_tOCTVC1_MAIN_FILE_OPEN_MODE_MASK[i].value, 0xFFFFFFFF, (4*8), + VALS(vals_tOCTVC1_MAIN_FILE_OPEN_MODE_MASK),"%s")); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_OPEN_CMD, ulAccessMode); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_FILE_OPEN_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_FILE_OPEN_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_FILE_OPEN_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_FILE_OPEN_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_FILE_OPEN_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_FILE_OPEN_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_OPEN_RSP, hFile); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_FILE_CLOSE_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_FILE_CLOSE_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_FILE_CLOSE_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_FILE_CLOSE_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_FILE_CLOSE_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_HANDLE_INVALID) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_MSG_FILE_CLOSE_CMD[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_CLOSE_CMD, hFile),temp_data, "cOCTVC1_HANDLE_INVALID (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_FILE_CLOSE_CMD[0], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_CLOSE_CMD, hFile); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_FILE_WRITE_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_FILE_WRITE_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_FILE_WRITE_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_FILE_WRITE_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_FILE_WRITE_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_HANDLE_INVALID) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_MSG_FILE_WRITE_CMD[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_WRITE_CMD, hFile),temp_data, "cOCTVC1_HANDLE_INVALID (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_FILE_WRITE_CMD[0], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_WRITE_CMD, hFile); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_FILE_WRITE_CMD[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_WRITE_CMD, ulNumByteToWrite); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_MAIN_MSG_FILE_WRITE_CMD[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_WRITE_CMD, abyData), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_WRITE_CMD, abyData); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_FILE_WRITE_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_FILE_WRITE_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_FILE_WRITE_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_FILE_WRITE_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_FILE_WRITE_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_FILE_WRITE_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_WRITE_RSP, ulNumByteWritten); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_FILE_READ_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_FILE_READ_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_FILE_READ_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_FILE_READ_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_FILE_READ_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_HANDLE_INVALID) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_MSG_FILE_READ_CMD[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_READ_CMD, hFile),temp_data, "cOCTVC1_HANDLE_INVALID (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_FILE_READ_CMD[0], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_READ_CMD, hFile); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_MAIN_FILE_MAX_DATA_BYTE_SIZE) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_MSG_FILE_READ_CMD[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_READ_CMD, ulMaxNumByteToRead),temp_data, "cOCTVC1_MAIN_FILE_MAX_DATA_BYTE_SIZE (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_FILE_READ_CMD[1], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_READ_CMD, ulMaxNumByteToRead); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_FILE_READ_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_FILE_READ_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_FILE_READ_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_FILE_READ_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_FILE_READ_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_FILE_READ_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_READ_RSP, ulNumByteRead); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_MAIN_MSG_FILE_READ_RSP[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_READ_RSP, abyData), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_READ_RSP, abyData); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_FILE_INFO_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_FILE_INFO_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_FILE_INFO_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_FILE_INFO_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_FILE_INFO_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_HANDLE_INVALID) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_MSG_FILE_INFO_CMD[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_INFO_CMD, hFile),temp_data, "cOCTVC1_HANDLE_INVALID (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_FILE_INFO_CMD[0], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_INFO_CMD, hFile); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_FILE_INFO_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_FILE_INFO_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_FILE_INFO_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_FILE_INFO_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_FILE_INFO_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_FILE_INFO_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_INFO_RSP, hFile); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_MAIN_MSG_FILE_INFO_RSP[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_INFO_RSP, szFileName), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_INFO_RSP, szFileName); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_MAIN_MSG_FILE_INFO_RSP[2], tvb, offset, + 4,"ulAccessMode: (0x%08x)", temp_data); + if(temp_data) + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i< mWS_COUNTOF(vals_tOCTVC1_MAIN_FILE_OPEN_MODE_MASK); i++ ) + { + if( ( vals_tOCTVC1_MAIN_FILE_OPEN_MODE_MASK[i].value && + ( vals_tOCTVC1_MAIN_FILE_OPEN_MODE_MASK[i].value & temp_data ) == + vals_tOCTVC1_MAIN_FILE_OPEN_MODE_MASK[i].value)) + proto_tree_add_text(sub_tree, tvb, offset,4,"%s", + decode_enumerated_bitfield(vals_tOCTVC1_MAIN_FILE_OPEN_MODE_MASK[i].value, 0xFFFFFFFF, (4*8), + VALS(vals_tOCTVC1_MAIN_FILE_OPEN_MODE_MASK),"%s")); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_INFO_RSP, ulAccessMode); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_FILE_LIST_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_FILE_LIST_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_FILE_LIST_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_FILE_LIST_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_FILE_LIST_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_LIST_CMD, ObjectCursor), "ObjectCursor:tOCTVC1_CURSOR_HANDLE_OBJECT_GET"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_OBJECT_GET( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_FILE_LIST_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_FILE_LIST_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_FILE_LIST_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_FILE_LIST_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_FILE_LIST_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_LIST_RSP, ObjectCursor), "ObjectCursor:tOCTVC1_CURSOR_HANDLE_OBJECT_GET"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_OBJECT_GET( tvb, pinfo, sub_tree2, offset, NULL ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_LIST_RSP, ObjectList), "ObjectList:tOCTVC1_LIST_HANDLE_OBJECT_GET"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_LIST_HANDLE_OBJECT_GET( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_RSP, ulMaxFileEntry); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_CMD, ObjectGet), "ObjectGet:tOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_RSP, ObjectGet), "ObjectGet:tOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR( tvb, pinfo, sub_tree2, offset, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_RSP[1], tvb, offset, + 4,"ulAccessMode: (0x%08x)", temp_data); + if(temp_data) + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i< mWS_COUNTOF(vals_tOCTVC1_MAIN_FILE_OPEN_MODE_MASK); i++ ) + { + if( ( vals_tOCTVC1_MAIN_FILE_OPEN_MODE_MASK[i].value && + ( vals_tOCTVC1_MAIN_FILE_OPEN_MODE_MASK[i].value & temp_data ) == + vals_tOCTVC1_MAIN_FILE_OPEN_MODE_MASK[i].value)) + proto_tree_add_text(sub_tree, tvb, offset,4,"%s", + decode_enumerated_bitfield(vals_tOCTVC1_MAIN_FILE_OPEN_MODE_MASK[i].value, 0xFFFFFFFF, (4*8), + VALS(vals_tOCTVC1_MAIN_FILE_OPEN_MODE_MASK),"%s")); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_RSP, ulAccessMode); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_CMD[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_CMD, szFileName), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_CMD, szFileName); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_RSP[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_RSP, szFileName), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_RSP, szFileName); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_CMD[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_CMD, ulGetNewestFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_CMD, ulGetNewestFlag); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP, ulNumLogEntry); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP, aLogEntry), "aLogEntry:tOCTVC1_MAIN_LOG_ENTRY"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<5; i++ ) + { + { + proto_tree* sub_tree2; + ti = proto_tree_add_text(sub_tree, tvb, offset, + sizeof(tOCTVC1_MAIN_LOG_ENTRY), "[%d]:", i); + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_MAIN_LOG_ENTRY( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_LICENSING_INFO_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_LICENSING_INFO_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_LICENSING_INFO_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_LICENSING_INFO_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_LICENSING_INFO_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_LICENSING_INFO_CMD, ObjectGet), "ObjectGet:tOCTVC1_MAIN_LICENSING_CURSOR"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_MAIN_LICENSING_CURSOR( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP, ObjectGet), "ObjectGet:tOCTVC1_MAIN_LICENSING_CURSOR"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_MAIN_LICENSING_CURSOR( tvb, pinfo, sub_tree2, offset, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP, ulFeatureType); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP, ulManagedFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP, ulManagedFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP, ulLicenseValue); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP, ulCurrentCount); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_GPIO_READ_BANK_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_GPIO_READ_BANK_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_GPIO_READ_BANK_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_GPIO_READ_BANK_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_GPIO_READ_BANK_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_GPIO_READ_BANK_CMD[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_GPIO_READ_BANK_CMD, ulBank); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_GPIO_READ_BANK_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_GPIO_READ_BANK_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_GPIO_READ_BANK_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_GPIO_READ_BANK_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_GPIO_READ_BANK_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_GPIO_READ_BANK_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_GPIO_READ_BANK_RSP, ulBank); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_GPIO_READ_BANK_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_GPIO_READ_BANK_RSP, ulValue); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CMD[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CMD, ulBank); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CMD[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CMD, ulValue); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_RSP, ulBank); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CMD[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CMD, ulBank); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CMD[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CMD, ulMonitor); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_RSP, ulBank); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD, ulBank); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD, ulDirection); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD, ulTriStateHigh); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_RSP, ulBank); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD, ulChipSelectPin); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD, ulClockPin); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD, ulDataOutPin); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD, ulDataInPin); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD, ulDivider); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD[5], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD, ulSlaveSelectId); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD[6], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD, ulClockFrequency); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD[7], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD, ulClockPolarity); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD[8], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD, ulClockPhase); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD[9], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD, ulReadByteCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD[10], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD, ulWriteByteCnt); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD, aulWriteData), "aulWriteData"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<16; i++ ) + { + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD[11], tvb, offset, + 4, temp_data, "[%d]: 0x%08x", i, temp_data ); + } + offset+=4; + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_SPI_ACCESS_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_SPI_ACCESS_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_SPI_ACCESS_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_SPI_ACCESS_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_SPI_ACCESS_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_SPI_ACCESS_RSP, aulReadData), "aulReadData"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<16; i++ ) + { + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_MAIN_MSG_SPI_ACCESS_RSP[0], tvb, offset, + 4, temp_data, "[%d]: 0x%08x", i, temp_data ); + } + offset+=4; + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_MDIO_READ_PHY_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_MDIO_READ_PHY_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_MDIO_READ_PHY_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_MDIO_READ_PHY_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_MDIO_READ_PHY_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_MDIO_READ_PHY_CMD[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_MDIO_READ_PHY_CMD, ulPhyAddress); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_MDIO_READ_PHY_CMD[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_MDIO_READ_PHY_CMD, ulRegisterAddress); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_MDIO_READ_PHY_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_MDIO_READ_PHY_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_MDIO_READ_PHY_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_MDIO_READ_PHY_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_MDIO_READ_PHY_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_MDIO_READ_PHY_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_MDIO_READ_PHY_RSP, ulPhyAddress); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_MDIO_READ_PHY_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_MDIO_READ_PHY_RSP, ulReadData); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD, ulPhyAddress); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD, ulRegisterAddress); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD, ulWriteData); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_RSP, ulPhyAddress); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD, aulPhyAddress), "aulPhyAddress"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<2; i++ ) + { + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_INDEX_INVALID) + { ti = proto_tree_add_uint_format_value(sub_tree, ahf_tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD, aulPhyAddress),temp_data, "cOCTVC1_INDEX_INVALID (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD[0], tvb, offset, + 4, temp_data, "[%d]: 0x%08x", i, temp_data ); + } + } + offset+=4; + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_RSP, aulPhyAddress), "aulPhyAddress"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<2; i++ ) + { + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_RSP[0], tvb, offset, + 4, temp_data, "[%d]: 0x%08x", i, temp_data ); + } + offset+=4; + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_PROCESS_INFO_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_PROCESS_INFO_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_PROCESS_INFO_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_PROCESS_INFO_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_PROCESS_INFO_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_HANDLE_INVALID) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_MSG_PROCESS_INFO_CMD[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_PROCESS_INFO_CMD, hProcess),temp_data, "cOCTVC1_HANDLE_INVALID (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_PROCESS_INFO_CMD[0], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_PROCESS_INFO_CMD, hProcess); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_PROCESS_INFO_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_PROCESS_INFO_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_PROCESS_INFO_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_PROCESS_INFO_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_PROCESS_INFO_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_PROCESS_INFO_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_PROCESS_INFO_RSP, hProcess); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_MAIN_MSG_PROCESS_INFO_RSP[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_PROCESS_INFO_RSP, szProcessImageName), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_PROCESS_INFO_RSP, szProcessImageName); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_PROCESS_LIST_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_PROCESS_LIST_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_PROCESS_LIST_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_PROCESS_LIST_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_PROCESS_LIST_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_PROCESS_LIST_CMD, ObjectCursor), "ObjectCursor:tOCTVC1_CURSOR_HANDLE_OBJECT_GET"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_OBJECT_GET( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_PROCESS_LIST_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_PROCESS_LIST_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_PROCESS_LIST_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_PROCESS_LIST_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_PROCESS_LIST_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_PROCESS_LIST_RSP, ObjectCursor), "ObjectCursor:tOCTVC1_CURSOR_HANDLE_OBJECT_GET"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_OBJECT_GET( tvb, pinfo, sub_tree2, offset, NULL ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_PROCESS_LIST_RSP, ObjectList), "ObjectList:tOCTVC1_LIST_HANDLE_OBJECT_GET"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_LIST_HANDLE_OBJECT_GET( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD, hProcess); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD, ulAlarmThresholdHighPercent); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD, ulAlarmThresholdLowPercent); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_RSP, hProcess); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_RSP, ulProcessImageType); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CMD[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CMD, hProcess); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP, hProcess); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP, ulProcessImageType); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP, ulAlarmThresholdHighPercent); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP, ulAlarmThresholdLowPercent); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP, ulProcessCpuUsagePercent); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP[5], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP, ulProcessCpuUsageMinPercent); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP[6], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP, ulProcessCpuUsageMaxPercent); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP[7], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP, ulNumThread); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD, hDestObj), "hDestObj: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD, ulDestObjPort); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_FIFO_ID_INVALID) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD, ulDestObjFifoId),temp_data, "cOCTVC1_FIFO_ID_INVALID (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD[2], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD, ulDestObjFifoId); + + { + int ulMac0, ulMac1; + unsigned int offs = offset; + ulMac0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulMac1 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD[3], tvb, offset, + sizeof(tOCTVC1_MAC_ADDRESS), "","DestMacAddress: %02x:%02x:%02x:%02x:%02x:%02x", + (( ulMac0 & 0x0000FF00 ) >> 8 ), + ( ulMac0 & 0x000000FF ), + (( ulMac1 & 0xFF000000 ) >> 24 ), + (( ulMac1 & 0x00FF0000 ) >> 16 ), + (( ulMac1 & 0x0000FF00 ) >> 8 ), + ( ulMac1 & 0x000000FF ) ); + } + offset += sizeof(tOCTVC1_MAC_ADDRESS); + + { + int ulMac0, ulMac1; + unsigned int offs = offset; + ulMac0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulMac1 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD[4], tvb, offset, + sizeof(tOCTVC1_MAC_ADDRESS), "","SrcMacAddress: %02x:%02x:%02x:%02x:%02x:%02x", + (( ulMac0 & 0x0000FF00 ) >> 8 ), + ( ulMac0 & 0x000000FF ), + (( ulMac1 & 0xFF000000 ) >> 24 ), + (( ulMac1 & 0x00FF0000 ) >> 16 ), + (( ulMac1 & 0x0000FF00 ) >> 8 ), + ( ulMac1 & 0x000000FF ) ); + } + offset += sizeof(tOCTVC1_MAC_ADDRESS); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_RSP, hForward), "hForward: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_RSP, ulFifoId); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_CMD, hForward), "hForward: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, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_RSP, hForward), "hForward: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, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_CMD, ObjectGet), "ObjectGet:tOCTVC1_CURSOR_HANDLE_GET"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_GET( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_RSP, ObjectGet), "ObjectGet:tOCTVC1_CURSOR_HANDLE_GET"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_GET( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD[0], tvb, offset, + 4, temp_data); + if( (unsigned int)temp_data < 1) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (1..)]" ); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD, ulMaxNumServerMgw); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD, ulForceApiResourceCleanUpFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD, ulForceApiResourceCleanUpFlag); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP, ulMaxNumSystemMgw); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP, ulMaxNumServerMgw); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP, ulMgwCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP, State); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP, hFailoverMgw); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP[5], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP, FailoverStatus); + + { + int ulRc = tvb_get_ntohl( tvb, offset ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP[6], tvb, offset, + 4, "","ulFailoverReturnCode: %s (0x%08X)", + dissect_OCTVC1_Return_Code(ulRc), ulRc ); + } + offset += 4; + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_HANDLE_INVALID) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CMD[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CMD, hMgw),temp_data, "cOCTVC1_HANDLE_INVALID (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CMD[0], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CMD, hMgw); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_RSP, hMgw); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_HANDLE_INVALID) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CMD[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CMD, hMgw),temp_data, "cOCTVC1_HANDLE_INVALID (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CMD[0], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CMD, hMgw); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_RSP, hMgw); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_CMD, ObjectCursor), "ObjectCursor:tOCTVC1_CURSOR_HANDLE_OBJECT_GET"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_OBJECT_GET( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_RSP, ObjectCursor), "ObjectCursor:tOCTVC1_CURSOR_HANDLE_OBJECT_GET"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_OBJECT_GET( tvb, pinfo, sub_tree2, offset, NULL ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_RSP, ObjectList), "ObjectList:tOCTVC1_LIST_HANDLE_OBJECT_GET"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_LIST_HANDLE_OBJECT_GET( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_CMD[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_CMD, hMgw); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP, hMgw); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP, FailoverStatus); + + { + int ulRc = tvb_get_ntohl( tvb, offset ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP[2], tvb, offset, + 4, "","ulFailoverReturnCode: %s (0x%08X)", + dissect_OCTVC1_Return_Code(ulRc), ulRc ); + } + offset += 4; + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_HANDLE_INVALID) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CMD[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CMD, hMgw),temp_data, "cOCTVC1_HANDLE_INVALID (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CMD[0], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CMD, hMgw); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_HANDLE_INVALID) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_RSP[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_RSP, hMgw),temp_data, "cOCTVC1_HANDLE_INVALID (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_RSP[0], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_RSP, hMgw); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_OCT2200_STATS_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_OCT2200_STATS_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_OCT2200_STATS_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_OCT2200_STATS_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_OCT2200_STATS_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_MAIN_MSG_OCT2200_STATS_CMD[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_OCT2200_STATS_CMD, ulResetStatsFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_OCT2200_STATS_CMD, ulResetStatsFlag); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_MAIN_MSG_OCT2200_STATS_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_MAIN_MSG_OCT2200_STATS_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_OCT2200_STATS_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_MAIN_MSG_OCT2200_STATS_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_MAIN_MSG_OCT2200_STATS_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_MAIN_MSG_OCT2200_STATS_RSP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_MAIN_MSG_OCT2200_STATS_RSP, ulOCT2200MonitorNumber); + + } + + + return 0; + +}; + +/**************************************************************************** + MODULE REGISTERED EXPORTED FUNCTION + ****************************************************************************/ + +void ws_register_OCTVC1_MAIN(void) +{ + /**************************************************************************** + Register Common struct + ****************************************************************************/ + register_tOCTVC1_MAIN_LICENSING_CURSOR(); + register_tOCTVC1_MAIN_THREAD_CPU_USAGE(); + register_tOCTVC1_MAIN_OPUS_CORE_STATUS(); + register_tOCTVC1_MAIN_OCT1010_CORE_STATUS(); + register_tOCTVC1_MAIN_OPUS_CORE_INFO(); + register_tOCTVC1_MAIN_OCT1010_CORE_INFO(); + register_tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC(); + register_tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC(); + register_tOCTVC1_MAIN_ETH_PORT_STATS(); + register_tOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR(); + register_tOCTVC1_MAIN_LOG_ENTRY(); + register_tOCTVC1_MAIN_FILE_CURSOR(); + + /**************************************************************************** + CMD/RSP Registered + ****************************************************************************/ + register_tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD(); + register_tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP(); + register_tOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD(); + register_tOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD(); + register_tOCTVC1_MAIN_MSG_BUFFER_OPEN_RSP(); + register_tOCTVC1_MAIN_MSG_BUFFER_CLOSE_CMD(); + register_tOCTVC1_MAIN_MSG_BUFFER_CLOSE_RSP(); + register_tOCTVC1_MAIN_MSG_BUFFER_INFO_CMD(); + register_tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP(); + register_tOCTVC1_MAIN_MSG_BUFFER_LIST_CMD(); + register_tOCTVC1_MAIN_MSG_BUFFER_LIST_RSP(); + register_tOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD(); + register_tOCTVC1_MAIN_MSG_BUFFER_MODIFY_RSP(); + register_tOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD(); + register_tOCTVC1_MAIN_MSG_BUFFER_WRITE_RSP(); + register_tOCTVC1_MAIN_MSG_BUFFER_READ_CMD(); + register_tOCTVC1_MAIN_MSG_BUFFER_READ_RSP(); + register_tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_CMD(); + register_tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP(); + register_tOCTVC1_MAIN_MSG_DEVICE_INFO_RSP(); + register_tOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_RSP(); + register_tOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_RSP(); + register_tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP(); + register_tOCTVC1_MAIN_MSG_OCT1010_STATS_CMD(); + register_tOCTVC1_MAIN_MSG_OCT1010_STATS_RSP(); + register_tOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_RSP(); + register_tOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_RSP(); + register_tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP(); + register_tOCTVC1_MAIN_MSG_ETH_STATS_CMD(); + register_tOCTVC1_MAIN_MSG_ETH_STATS_RSP(); + register_tOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CMD(); + register_tOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP(); + register_tOCTVC1_MAIN_MSG_REGISTER_READ_RSP(); + register_tOCTVC1_MAIN_MSG_FILE_OPEN_CMD(); + register_tOCTVC1_MAIN_MSG_FILE_OPEN_RSP(); + register_tOCTVC1_MAIN_MSG_FILE_CLOSE_CMD(); + register_tOCTVC1_MAIN_MSG_FILE_WRITE_CMD(); + register_tOCTVC1_MAIN_MSG_FILE_WRITE_RSP(); + register_tOCTVC1_MAIN_MSG_FILE_READ_CMD(); + register_tOCTVC1_MAIN_MSG_FILE_READ_RSP(); + register_tOCTVC1_MAIN_MSG_FILE_INFO_CMD(); + register_tOCTVC1_MAIN_MSG_FILE_INFO_RSP(); + register_tOCTVC1_MAIN_MSG_FILE_LIST_CMD(); + register_tOCTVC1_MAIN_MSG_FILE_LIST_RSP(); + register_tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_RSP(); + register_tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_CMD(); + register_tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_RSP(); + register_tOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_CMD(); + register_tOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_RSP(); + register_tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_CMD(); + register_tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP(); + register_tOCTVC1_MAIN_MSG_LICENSING_INFO_CMD(); + register_tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP(); + register_tOCTVC1_MAIN_MSG_GPIO_READ_BANK_CMD(); + register_tOCTVC1_MAIN_MSG_GPIO_READ_BANK_RSP(); + register_tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CMD(); + register_tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_RSP(); + register_tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CMD(); + register_tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_RSP(); + register_tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD(); + register_tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_RSP(); + register_tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD(); + register_tOCTVC1_MAIN_MSG_SPI_ACCESS_RSP(); + register_tOCTVC1_MAIN_MSG_MDIO_READ_PHY_CMD(); + register_tOCTVC1_MAIN_MSG_MDIO_READ_PHY_RSP(); + register_tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD(); + register_tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_RSP(); + register_tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD(); + register_tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_RSP(); + register_tOCTVC1_MAIN_MSG_PROCESS_INFO_CMD(); + register_tOCTVC1_MAIN_MSG_PROCESS_INFO_RSP(); + register_tOCTVC1_MAIN_MSG_PROCESS_LIST_CMD(); + register_tOCTVC1_MAIN_MSG_PROCESS_LIST_RSP(); + register_tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD(); + register_tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_RSP(); + register_tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CMD(); + register_tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP(); + register_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD(); + register_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_RSP(); + register_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_CMD(); + register_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_RSP(); + register_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_CMD(); + register_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_RSP(); + register_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD(); + register_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP(); + register_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CMD(); + register_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_RSP(); + register_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CMD(); + register_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_RSP(); + register_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_CMD(); + register_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_RSP(); + register_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_CMD(); + register_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP(); + register_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CMD(); + register_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_RSP(); + register_tOCTVC1_MAIN_MSG_OCT2200_STATS_CMD(); + register_tOCTVC1_MAIN_MSG_OCT2200_STATS_RSP(); + + /**************************************************************************** + Event Registered + ****************************************************************************/ + register_tOCTVC1_MAIN_MSG_MODULE_TRACING_BUFFER_FULL_EVT(); + register_tOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EVT(); + register_tOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EVT(); + register_tOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EVT(); + register_tOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT(); + register_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT(); + +} + +/**************************************************************************** + MODULE DISSECTOR FUNCTIONS + ****************************************************************************/ +int ws_dissect_OCTVC1_MAIN_CMD( guint32 CID, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ) +{ + if( tree ) + { + switch( CID ) { + case cOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CID: return dissect_tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_MODULE_INFO_EVT_CID: return 0; break; + case cOCTVC1_MAIN_MSG_MODULE_START_TRACING_CID: return dissect_tOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_MODULE_STOP_TRACING_CID: return 0; break; + case cOCTVC1_MAIN_MSG_BUFFER_OPEN_CID: return dissect_tOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_BUFFER_CLOSE_CID: return dissect_tOCTVC1_MAIN_MSG_BUFFER_CLOSE_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_BUFFER_INFO_CID: return dissect_tOCTVC1_MAIN_MSG_BUFFER_INFO_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_BUFFER_LIST_CID: return dissect_tOCTVC1_MAIN_MSG_BUFFER_LIST_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_BUFFER_MODIFY_CID: return dissect_tOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_BUFFER_WRITE_CID: return dissect_tOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_BUFFER_READ_CID: return dissect_tOCTVC1_MAIN_MSG_BUFFER_READ_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_CID: return dissect_tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_DEVICE_INFO_CID: return 0; break; + case cOCTVC1_MAIN_MSG_DEVICE_RESET_CID: return 0; break; + case cOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_CID: return 0; break; + case cOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_CID: return 0; break; + case cOCTVC1_MAIN_MSG_OCT1010_INFO_CID: return 0; break; + case cOCTVC1_MAIN_MSG_OCT1010_RESET_CID: return 0; break; + case cOCTVC1_MAIN_MSG_OCT1010_STATS_CID: return dissect_tOCTVC1_MAIN_MSG_OCT1010_STATS_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_CID: return 0; break; + case cOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_CID: return 0; break; + case cOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_CID: return 0; break; + case cOCTVC1_MAIN_MSG_ETH_STATS_CID: return dissect_tOCTVC1_MAIN_MSG_ETH_STATS_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CID: return dissect_tOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_CID: return 0; break; + case cOCTVC1_MAIN_MSG_REGISTER_READ_CID: return 0; break; + case cOCTVC1_MAIN_MSG_FILE_OPEN_CID: return dissect_tOCTVC1_MAIN_MSG_FILE_OPEN_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_FILE_CLOSE_CID: return dissect_tOCTVC1_MAIN_MSG_FILE_CLOSE_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_FILE_WRITE_CID: return dissect_tOCTVC1_MAIN_MSG_FILE_WRITE_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_FILE_READ_CID: return dissect_tOCTVC1_MAIN_MSG_FILE_READ_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_FILE_INFO_CID: return dissect_tOCTVC1_MAIN_MSG_FILE_INFO_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_FILE_LIST_CID: return dissect_tOCTVC1_MAIN_MSG_FILE_LIST_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_CID: return 0; break; + case cOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_CID: return dissect_tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_CID: return dissect_tOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_LOG_ERASE_CID: return 0; break; + case cOCTVC1_MAIN_MSG_LOG_READ_ENTRY_CID: return dissect_tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_LICENSING_INFO_CID: return dissect_tOCTVC1_MAIN_MSG_LICENSING_INFO_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_GPIO_READ_BANK_CID: return dissect_tOCTVC1_MAIN_MSG_GPIO_READ_BANK_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CID: return dissect_tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CID: return dissect_tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CID: return dissect_tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_SPI_ACCESS_CID: return dissect_tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_MDIO_READ_PHY_CID: return dissect_tOCTVC1_MAIN_MSG_MDIO_READ_PHY_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CID: return dissect_tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CID: return dissect_tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_PROCESS_INFO_CID: return dissect_tOCTVC1_MAIN_MSG_PROCESS_INFO_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_PROCESS_LIST_CID: return dissect_tOCTVC1_MAIN_MSG_PROCESS_LIST_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CID: return dissect_tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CID: return dissect_tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CID: return dissect_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_CID: return dissect_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_CID: return dissect_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CID: return dissect_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_STOP_CID: return 0; break; + case cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_CID: return 0; break; + case cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CID: return dissect_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CID: return dissect_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_CID: return dissect_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_CID: return dissect_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CID: return dissect_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_OCT2200_STATS_CID: return dissect_tOCTVC1_MAIN_MSG_OCT2200_STATS_CMD( tvb, pinfo, tree, 0 ); break; + default: return 1; + } + } + return 0; + +} +int ws_dissect_OCTVC1_MAIN_RSP( guint32 CID, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ) +{ + if( tree ) + { + switch( CID ) { + case cOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CID: return 0; break; + case cOCTVC1_MAIN_MSG_MODULE_INFO_EVT_CID: return dissect_tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_MODULE_START_TRACING_CID: return 0; break; + case cOCTVC1_MAIN_MSG_MODULE_STOP_TRACING_CID: return 0; break; + case cOCTVC1_MAIN_MSG_BUFFER_OPEN_CID: return dissect_tOCTVC1_MAIN_MSG_BUFFER_OPEN_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_BUFFER_CLOSE_CID: return dissect_tOCTVC1_MAIN_MSG_BUFFER_CLOSE_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_BUFFER_INFO_CID: return dissect_tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_BUFFER_LIST_CID: return dissect_tOCTVC1_MAIN_MSG_BUFFER_LIST_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_BUFFER_MODIFY_CID: return dissect_tOCTVC1_MAIN_MSG_BUFFER_MODIFY_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_BUFFER_WRITE_CID: return dissect_tOCTVC1_MAIN_MSG_BUFFER_WRITE_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_BUFFER_READ_CID: return dissect_tOCTVC1_MAIN_MSG_BUFFER_READ_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_CID: return dissect_tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_DEVICE_INFO_CID: return dissect_tOCTVC1_MAIN_MSG_DEVICE_INFO_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_DEVICE_RESET_CID: return 0; break; + case cOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_CID: return dissect_tOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_CID: return dissect_tOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_OCT1010_INFO_CID: return dissect_tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_OCT1010_RESET_CID: return 0; break; + case cOCTVC1_MAIN_MSG_OCT1010_STATS_CID: return dissect_tOCTVC1_MAIN_MSG_OCT1010_STATS_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_CID: return dissect_tOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_CID: return dissect_tOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_CID: return dissect_tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_ETH_STATS_CID: return dissect_tOCTVC1_MAIN_MSG_ETH_STATS_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CID: return 0; break; + case cOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_CID: return dissect_tOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_REGISTER_READ_CID: return dissect_tOCTVC1_MAIN_MSG_REGISTER_READ_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_FILE_OPEN_CID: return dissect_tOCTVC1_MAIN_MSG_FILE_OPEN_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_FILE_CLOSE_CID: return 0; break; + case cOCTVC1_MAIN_MSG_FILE_WRITE_CID: return dissect_tOCTVC1_MAIN_MSG_FILE_WRITE_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_FILE_READ_CID: return dissect_tOCTVC1_MAIN_MSG_FILE_READ_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_FILE_INFO_CID: return dissect_tOCTVC1_MAIN_MSG_FILE_INFO_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_FILE_LIST_CID: return dissect_tOCTVC1_MAIN_MSG_FILE_LIST_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_CID: return dissect_tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_CID: return dissect_tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_CID: return dissect_tOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_LOG_ERASE_CID: return 0; break; + case cOCTVC1_MAIN_MSG_LOG_READ_ENTRY_CID: return dissect_tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_LICENSING_INFO_CID: return dissect_tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_GPIO_READ_BANK_CID: return dissect_tOCTVC1_MAIN_MSG_GPIO_READ_BANK_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CID: return dissect_tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CID: return dissect_tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CID: return dissect_tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_SPI_ACCESS_CID: return dissect_tOCTVC1_MAIN_MSG_SPI_ACCESS_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_MDIO_READ_PHY_CID: return dissect_tOCTVC1_MAIN_MSG_MDIO_READ_PHY_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CID: return dissect_tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CID: return dissect_tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_PROCESS_INFO_CID: return dissect_tOCTVC1_MAIN_MSG_PROCESS_INFO_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_PROCESS_LIST_CID: return dissect_tOCTVC1_MAIN_MSG_PROCESS_LIST_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CID: return dissect_tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CID: return dissect_tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CID: return dissect_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_CID: return dissect_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_CID: return dissect_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CID: return 0; break; + case cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_STOP_CID: return 0; break; + case cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_CID: return dissect_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CID: return dissect_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CID: return dissect_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_CID: return dissect_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_CID: return dissect_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CID: return dissect_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_OCT2200_STATS_CID: return dissect_tOCTVC1_MAIN_MSG_OCT2200_STATS_RSP( tvb, pinfo, tree, 0 ); break; + default: return 1; + } + } + return 0; + +} +int ws_dissect_OCTVC1_MAIN_EVT( guint32 CID, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ) +{ + if( tree ) + { + switch( CID ) { + case cOCTVC1_MAIN_MSG_MODULE_TRACING_BUFFER_FULL_EID: return dissect_tOCTVC1_MAIN_MSG_MODULE_TRACING_BUFFER_FULL_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_MODULE_TRACING_STOP_EID: return 0; break; + case cOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EID: return dissect_tOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EID: return dissect_tOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EID: return dissect_tOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EID: return dissect_tOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EID: return dissect_tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT( tvb, pinfo, tree, 0 ); break; + default: return 1; + } + } + return 0; + +} + +/**************************************************************************** + MODULE DISSECTOR EXPORTED FUNCTION + ****************************************************************************/ + +int ws_dissect_OCTVC1_MAIN( guint8 message_type, guint32 CID, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ) +{ + if (message_type == cOCTVC1_MSG_TYPE_RESPONSE) + return ws_dissect_OCTVC1_MAIN_RSP( CID, tvb, pinfo, tree); + if (message_type == cOCTVC1_MSG_TYPE_COMMAND) + return ws_dissect_OCTVC1_MAIN_CMD( CID, tvb, pinfo, tree); + if (message_type == cOCTVC1_MSG_TYPE_NOTIFICATION ) + return ws_dissect_OCTVC1_MAIN_EVT( CID, tvb, pinfo, tree); + else + return 1; + +} + diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_module_net.c b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_module_net.c new file mode 100644 index 0000000..5c49057 --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_module_net.c @@ -0,0 +1,16794 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: octvc1_module_net.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_NET_RTP_PROFILE_MODIFY_ENUM[] = + { + { cOCTVC1_NET_RTP_PROFILE_MODIFY_ENUM_RTP_PAYLOAD_TYPE, "cOCTVC1_NET_RTP_PROFILE_MODIFY_ENUM_RTP_PAYLOAD_TYPE" }, + { cOCTVC1_NET_RTP_PROFILE_MODIFY_ENUM_PKT_ENCODING_TYPE, "cOCTVC1_NET_RTP_PROFILE_MODIFY_ENUM_PKT_ENCODING_TYPE" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_ENUM[] = + { + { cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_ENUM_NONE, "cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_ENUM_NONE" }, + { cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_ENUM_TENTATIVE, "cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_ENUM_TENTATIVE" }, + { cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_ENUM_VALID, "cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_ENUM_VALID" }, + { cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_ENUM_INVALID, "cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_ENUM_INVALID" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM[] = + { + { cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_IPV4_DAD_PASSED, "cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_IPV4_DAD_PASSED" }, + { cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_IPV4_DAD_FAILED, "cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_IPV4_DAD_FAILED" }, + { cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_IPV6_DAD_PASSED, "cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_IPV6_DAD_PASSED" }, + { cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_IPV6_DAD_FAILED, "cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_IPV6_DAD_FAILED" }, + { cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_IPV6_AUTO_CONFIG_PREFIX_FOUND, "cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_IPV6_AUTO_CONFIG_PREFIX_FOUND" }, + { cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_IPV6_PREFIX_PREFER_EXPIRED, "cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_IPV6_PREFIX_PREFER_EXPIRED" }, + { cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_IPV6_PREFIX_VALID_EXPIRED, "cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_IPV6_PREFIX_VALID_EXPIRED" }, + { cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_IPV6_ROUTER_ADVERTISEMENT, "cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_IPV6_ROUTER_ADVERTISEMENT" }, + { cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_IPV6_PREFIX_USER_REMOVED, "cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_IPV6_PREFIX_USER_REMOVED" }, + { cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_IPV6_PREFIX_USER_ADDED, "cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_IPV6_PREFIX_USER_ADDED" }, + { cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_DHCPV4_LEASE_EXPIRED, "cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_DHCPV4_LEASE_EXPIRED" }, + { cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_DHCPV4_RENEW_REQUEST_SENT, "cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_DHCPV4_RENEW_REQUEST_SENT" }, + { cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_DHCPV4_REBIND_REQUEST_SENT, "cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_DHCPV4_REBIND_REQUEST_SENT" }, + { cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_DHCPV4_OFFER_REQUEST_SENT, "cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_DHCPV4_OFFER_REQUEST_SENT" }, + { cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_DHCPV4_ADDR_LEASED, "cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_DHCPV4_ADDR_LEASED" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_LOCAL_HOST_ADDR_DUPLICATE_SOURCE_ENUM[] = + { + { cOCTVC1_NET_LOCAL_HOST_ADDR_DUPLICATE_SOURCE_ENUM_ARP_PROBE, "cOCTVC1_NET_LOCAL_HOST_ADDR_DUPLICATE_SOURCE_ENUM_ARP_PROBE" }, + { cOCTVC1_NET_LOCAL_HOST_ADDR_DUPLICATE_SOURCE_ENUM_ARP_REQUEST, "cOCTVC1_NET_LOCAL_HOST_ADDR_DUPLICATE_SOURCE_ENUM_ARP_REQUEST" }, + { cOCTVC1_NET_LOCAL_HOST_ADDR_DUPLICATE_SOURCE_ENUM_ARP_REPLY, "cOCTVC1_NET_LOCAL_HOST_ADDR_DUPLICATE_SOURCE_ENUM_ARP_REPLY" }, + { cOCTVC1_NET_LOCAL_HOST_ADDR_DUPLICATE_SOURCE_ENUM_GARP_REQUEST, "cOCTVC1_NET_LOCAL_HOST_ADDR_DUPLICATE_SOURCE_ENUM_GARP_REQUEST" }, + { cOCTVC1_NET_LOCAL_HOST_ADDR_DUPLICATE_SOURCE_ENUM_GARP_REPLY, "cOCTVC1_NET_LOCAL_HOST_ADDR_DUPLICATE_SOURCE_ENUM_GARP_REPLY" }, + { cOCTVC1_NET_LOCAL_HOST_ADDR_DUPLICATE_SOURCE_ENUM_NEIGHBOR_ADVERTISEMENT, "cOCTVC1_NET_LOCAL_HOST_ADDR_DUPLICATE_SOURCE_ENUM_NEIGHBOR_ADVERTISEMENT" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_ICMP_ENUM[] = + { + { cOCTVC1_NET_ICMP_ENUM_OK, "cOCTVC1_NET_ICMP_ENUM_OK" }, + { cOCTVC1_NET_ICMP_ENUM_NO_REPLY, "cOCTVC1_NET_ICMP_ENUM_NO_REPLY" }, + { cOCTVC1_NET_ICMP_ENUM_DEST_UNREACHABLE, "cOCTVC1_NET_ICMP_ENUM_DEST_UNREACHABLE" }, + { cOCTVC1_NET_ICMP_ENUM_TIME_EXCEEDED, "cOCTVC1_NET_ICMP_ENUM_TIME_EXCEEDED" }, + { cOCTVC1_NET_ICMP_ENUM_UNKNOWN_ERROR, "cOCTVC1_NET_ICMP_ENUM_UNKNOWN_ERROR" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_LOCAL_HOST_EVT_MASK[] = + { + { cOCTVC1_NET_LOCAL_HOST_EVT_MASK_NONE, "cOCTVC1_NET_LOCAL_HOST_EVT_MASK_NONE" }, + { cOCTVC1_NET_LOCAL_HOST_EVT_MASK_ICMP_DEST_UNREACHABLE, "cOCTVC1_NET_LOCAL_HOST_EVT_MASK_ICMP_DEST_UNREACHABLE" }, + { cOCTVC1_NET_LOCAL_HOST_EVT_MASK_ICMP_TIME_EXCEEDED, "cOCTVC1_NET_LOCAL_HOST_EVT_MASK_ICMP_TIME_EXCEEDED" }, + { cOCTVC1_NET_LOCAL_HOST_EVT_MASK_ICMP_UNKNOWN_ERROR, "cOCTVC1_NET_LOCAL_HOST_EVT_MASK_ICMP_UNKNOWN_ERROR" }, + { cOCTVC1_NET_LOCAL_HOST_EVT_MASK_ICMP_REDIRECT, "cOCTVC1_NET_LOCAL_HOST_EVT_MASK_ICMP_REDIRECT" }, + { cOCTVC1_NET_LOCAL_HOST_EVT_MASK_ADDR_STATUS_CHANGE, "cOCTVC1_NET_LOCAL_HOST_EVT_MASK_ADDR_STATUS_CHANGE" }, + { cOCTVC1_NET_LOCAL_HOST_EVT_MASK_ADDR_DUPLICATE_FOUND, "cOCTVC1_NET_LOCAL_HOST_EVT_MASK_ADDR_DUPLICATE_FOUND" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_LINK_EVT_MASK[] = + { + { cOCTVC1_NET_LINK_EVT_MASK_NONE, "cOCTVC1_NET_LINK_EVT_MASK_NONE" }, + { cOCTVC1_NET_LINK_EVT_MASK_GATEWAY_STATUS_CHANGE, "cOCTVC1_NET_LINK_EVT_MASK_GATEWAY_STATUS_CHANGE" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_LINK_GATEWAY_STATUS_ENUM[] = + { + { cOCTVC1_NET_LINK_GATEWAY_STATUS_ENUM_TENTATIVE, "cOCTVC1_NET_LINK_GATEWAY_STATUS_ENUM_TENTATIVE" }, + { cOCTVC1_NET_LINK_GATEWAY_STATUS_ENUM_REACHABLE, "cOCTVC1_NET_LINK_GATEWAY_STATUS_ENUM_REACHABLE" }, + { cOCTVC1_NET_LINK_GATEWAY_STATUS_ENUM_UNREACHABLE, "cOCTVC1_NET_LINK_GATEWAY_STATUS_ENUM_UNREACHABLE" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_RTP_EVT_MASK[] = + { + { cOCTVC1_NET_RTP_EVT_MASK_NONE, "cOCTVC1_NET_RTP_EVT_MASK_NONE" }, + { cOCTVC1_NET_RTP_EVT_MASK_RX_ALARM, "cOCTVC1_NET_RTP_EVT_MASK_RX_ALARM" }, + { cOCTVC1_NET_RTP_EVT_MASK_TX_STATE_CHANGE, "cOCTVC1_NET_RTP_EVT_MASK_TX_STATE_CHANGE" }, + { cOCTVC1_NET_RTP_EVT_MASK_REMOTE_AUTO_DETECT, "cOCTVC1_NET_RTP_EVT_MASK_REMOTE_AUTO_DETECT" }, + { cOCTVC1_NET_RTP_EVT_MASK_ALL, "cOCTVC1_NET_RTP_EVT_MASK_ALL" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_RX_PKT_FILTER_ENUM[] = + { + { cOCTVC1_NET_RX_PKT_FILTER_ENUM_NONE, "cOCTVC1_NET_RX_PKT_FILTER_ENUM_NONE" }, + { cOCTVC1_NET_RX_PKT_FILTER_ENUM_SRCIPUDP, "cOCTVC1_NET_RX_PKT_FILTER_ENUM_SRCIPUDP" }, + { cOCTVC1_NET_RX_PKT_FILTER_ENUM_SSRC, "cOCTVC1_NET_RX_PKT_FILTER_ENUM_SSRC" }, + { cOCTVC1_NET_RX_PKT_FILTER_ENUM_SRCIPUDP_SSRC, "cOCTVC1_NET_RX_PKT_FILTER_ENUM_SRCIPUDP_SSRC" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_RTCP_EVT_MASK[] = + { + { cOCTVC1_NET_RTCP_EVT_MASK_NONE, "cOCTVC1_NET_RTCP_EVT_MASK_NONE" }, + { cOCTVC1_NET_RTCP_EVT_MASK_PKT_ERROR, "cOCTVC1_NET_RTCP_EVT_MASK_PKT_ERROR" }, + { cOCTVC1_NET_RTCP_EVT_MASK_PKT_COMPOUND, "cOCTVC1_NET_RTCP_EVT_MASK_PKT_COMPOUND" }, + { cOCTVC1_NET_RTCP_EVT_MASK_PKT_TYPE_SR, "cOCTVC1_NET_RTCP_EVT_MASK_PKT_TYPE_SR" }, + { cOCTVC1_NET_RTCP_EVT_MASK_PKT_TYPE_RR, "cOCTVC1_NET_RTCP_EVT_MASK_PKT_TYPE_RR" }, + { cOCTVC1_NET_RTCP_EVT_MASK_PKT_TYPE_SDES, "cOCTVC1_NET_RTCP_EVT_MASK_PKT_TYPE_SDES" }, + { cOCTVC1_NET_RTCP_EVT_MASK_PKT_TYPE_BYE, "cOCTVC1_NET_RTCP_EVT_MASK_PKT_TYPE_BYE" }, + { cOCTVC1_NET_RTCP_EVT_MASK_PKT_TYPE_APP, "cOCTVC1_NET_RTCP_EVT_MASK_PKT_TYPE_APP" }, + { cOCTVC1_NET_RTCP_EVT_MASK_PKT_TYPE_FEEDBACK_MSG, "cOCTVC1_NET_RTCP_EVT_MASK_PKT_TYPE_FEEDBACK_MSG" }, + { cOCTVC1_NET_RTCP_EVT_MASK_PKT_TYPE_UNKNOWN, "cOCTVC1_NET_RTCP_EVT_MASK_PKT_TYPE_UNKNOWN" }, + { cOCTVC1_NET_RTCP_EVT_MASK_SSRC_CHANGE_LOCAL, "cOCTVC1_NET_RTCP_EVT_MASK_SSRC_CHANGE_LOCAL" }, + { cOCTVC1_NET_RTCP_EVT_MASK_SSRC_CHANGE_REMOTE, "cOCTVC1_NET_RTCP_EVT_MASK_SSRC_CHANGE_REMOTE" }, + { cOCTVC1_NET_RTCP_EVT_MASK_REMOTE_MEMBER_DETECTED, "cOCTVC1_NET_RTCP_EVT_MASK_REMOTE_MEMBER_DETECTED" }, + { cOCTVC1_NET_RTCP_EVT_MASK_ALL, "cOCTVC1_NET_RTCP_EVT_MASK_ALL" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_SRTP_EVT_MASK[] = + { + { cOCTVC1_NET_SRTP_EVT_MASK_NONE, "cOCTVC1_NET_SRTP_EVT_MASK_NONE" }, + { cOCTVC1_NET_SRTP_EVT_MASK_MASTER_RE_KEY_THRESHOLD_REACHED, "cOCTVC1_NET_SRTP_EVT_MASK_MASTER_RE_KEY_THRESHOLD_REACHED" }, + { cOCTVC1_NET_SRTP_EVT_MASK_MASTER_KEY_EXPIRED, "cOCTVC1_NET_SRTP_EVT_MASK_MASTER_KEY_EXPIRED" }, + { cOCTVC1_NET_SRTP_EVT_MASK_MASTER_KEY_CHANGE_DETECTED, "cOCTVC1_NET_SRTP_EVT_MASK_MASTER_KEY_CHANGE_DETECTED" }, + { cOCTVC1_NET_SRTP_EVT_MASK_REPLAY_ATTACK_DETECTED, "cOCTVC1_NET_SRTP_EVT_MASK_REPLAY_ATTACK_DETECTED" }, + { cOCTVC1_NET_SRTP_EVT_MASK_UNAUTH_PKT_DETECTED, "cOCTVC1_NET_SRTP_EVT_MASK_UNAUTH_PKT_DETECTED" }, + { cOCTVC1_NET_SRTP_EVT_MASK_UNKNOWN_MKI_RECEIVED, "cOCTVC1_NET_SRTP_EVT_MASK_UNKNOWN_MKI_RECEIVED" }, + { cOCTVC1_NET_SRTP_EVT_MASK_SESSION_SSRC_VIOLATION, "cOCTVC1_NET_SRTP_EVT_MASK_SESSION_SSRC_VIOLATION" }, + { cOCTVC1_NET_SRTP_EVT_MASK_ALL, "cOCTVC1_NET_SRTP_EVT_MASK_ALL" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_RTP_FORCED_PARAMETER_MASK[] = + { + { cOCTVC1_NET_RTP_FORCED_PARAMETER_MASK_NONE, "cOCTVC1_NET_RTP_FORCED_PARAMETER_MASK_NONE" }, + { cOCTVC1_NET_RTP_FORCED_PARAMETER_MASK_SSRC, "cOCTVC1_NET_RTP_FORCED_PARAMETER_MASK_SSRC" }, + { cOCTVC1_NET_RTP_FORCED_PARAMETER_MASK_INITIAL_SEQ_NUMBER, "cOCTVC1_NET_RTP_FORCED_PARAMETER_MASK_INITIAL_SEQ_NUMBER" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_RTCP_PKT_TYPE_ENUM[] = + { + { cOCTVC1_NET_RTCP_PKT_TYPE_ENUM_COMPOUND, "cOCTVC1_NET_RTCP_PKT_TYPE_ENUM_COMPOUND" }, + { cOCTVC1_NET_RTCP_PKT_TYPE_ENUM_COMPOUND_WITH_ERROR, "cOCTVC1_NET_RTCP_PKT_TYPE_ENUM_COMPOUND_WITH_ERROR" }, + { cOCTVC1_NET_RTCP_PKT_TYPE_ENUM_RR, "cOCTVC1_NET_RTCP_PKT_TYPE_ENUM_RR" }, + { cOCTVC1_NET_RTCP_PKT_TYPE_ENUM_SR, "cOCTVC1_NET_RTCP_PKT_TYPE_ENUM_SR" }, + { cOCTVC1_NET_RTCP_PKT_TYPE_ENUM_SDES, "cOCTVC1_NET_RTCP_PKT_TYPE_ENUM_SDES" }, + { cOCTVC1_NET_RTCP_PKT_TYPE_ENUM_BYE, "cOCTVC1_NET_RTCP_PKT_TYPE_ENUM_BYE" }, + { cOCTVC1_NET_RTCP_PKT_TYPE_ENUM_APP, "cOCTVC1_NET_RTCP_PKT_TYPE_ENUM_APP" }, + { cOCTVC1_NET_RTCP_PKT_TYPE_ENUM_FEEDBACK_MSG, "cOCTVC1_NET_RTCP_PKT_TYPE_ENUM_FEEDBACK_MSG" }, + { cOCTVC1_NET_RTCP_PKT_TYPE_ENUM_UNKNOWN, "cOCTVC1_NET_RTCP_PKT_TYPE_ENUM_UNKNOWN" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_RTP_SENDER_STATE_ENUM[] = + { + { cOCTVC1_NET_RTP_SENDER_STATE_ENUM_PENDING, "cOCTVC1_NET_RTP_SENDER_STATE_ENUM_PENDING" }, + { cOCTVC1_NET_RTP_SENDER_STATE_ENUM_INACTIVE, "cOCTVC1_NET_RTP_SENDER_STATE_ENUM_INACTIVE" }, + { cOCTVC1_NET_RTP_SENDER_STATE_ENUM_ACTIVE, "cOCTVC1_NET_RTP_SENDER_STATE_ENUM_ACTIVE" }, + { cOCTVC1_NET_RTP_SENDER_STATE_ENUM_UNRESOLVED, "cOCTVC1_NET_RTP_SENDER_STATE_ENUM_UNRESOLVED" }, + { cOCTVC1_NET_RTP_SENDER_STATE_ENUM_PAUSED, "cOCTVC1_NET_RTP_SENDER_STATE_ENUM_PAUSED" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_OPERATION_MODE_ENUM[] = + { + { cOCTVC1_NET_OPERATION_MODE_ENUM_ENDPOINT, "cOCTVC1_NET_OPERATION_MODE_ENUM_ENDPOINT" }, + { cOCTVC1_NET_OPERATION_MODE_ENUM_RTP_ONLY, "cOCTVC1_NET_OPERATION_MODE_ENUM_RTP_ONLY" }, + { cOCTVC1_NET_OPERATION_MODE_ENUM_FULL_TRANSLATOR, "cOCTVC1_NET_OPERATION_MODE_ENUM_FULL_TRANSLATOR" }, + { cOCTVC1_NET_OPERATION_MODE_ENUM_HALF_TRANSLATOR, "cOCTVC1_NET_OPERATION_MODE_ENUM_HALF_TRANSLATOR" }, + { cOCTVC1_NET_OPERATION_MODE_ENUM_RECOVER_NTP_FROM_RTP_TS, "cOCTVC1_NET_OPERATION_MODE_ENUM_RECOVER_NTP_FROM_RTP_TS" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_RTP_MEMBER_CONN_STATE_ENUM[] = + { + { cOCTVC1_NET_RTP_MEMBER_CONN_STATE_ENUM_DISCONNECTED, "cOCTVC1_NET_RTP_MEMBER_CONN_STATE_ENUM_DISCONNECTED" }, + { cOCTVC1_NET_RTP_MEMBER_CONN_STATE_ENUM_CONNECTED, "cOCTVC1_NET_RTP_MEMBER_CONN_STATE_ENUM_CONNECTED" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_RX_ALARM_MASK[] = + { + { cOCTVC1_NET_RX_ALARM_MASK_NONE, "cOCTVC1_NET_RX_ALARM_MASK_NONE" }, + { cOCTVC1_NET_RX_ALARM_MASK_THRESH_FRACTION_LOST, "cOCTVC1_NET_RX_ALARM_MASK_THRESH_FRACTION_LOST" }, + { cOCTVC1_NET_RX_ALARM_MASK_THRESH_JITTER, "cOCTVC1_NET_RX_ALARM_MASK_THRESH_JITTER" }, + { cOCTVC1_NET_RX_ALARM_MASK_THRESH_RTT, "cOCTVC1_NET_RX_ALARM_MASK_THRESH_RTT" }, + { cOCTVC1_NET_RX_ALARM_MASK_THRESH_CUMUL_PKT_LOST, "cOCTVC1_NET_RX_ALARM_MASK_THRESH_CUMUL_PKT_LOST" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_SRTP_STREAM_TYPE_ENUM[] = + { + { cOCTVC1_NET_SRTP_STREAM_TYPE_ENUM_SENDER, "cOCTVC1_NET_SRTP_STREAM_TYPE_ENUM_SENDER" }, + { cOCTVC1_NET_SRTP_STREAM_TYPE_ENUM_RECEIVER, "cOCTVC1_NET_SRTP_STREAM_TYPE_ENUM_RECEIVER" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_SRTP_STREAM_KEY_CHANGE_REASON_ENUM[] = + { + { cOCTVC1_NET_SRTP_STREAM_KEY_CHANGE_REASON_ENUM_MKI, "cOCTVC1_NET_SRTP_STREAM_KEY_CHANGE_REASON_ENUM_MKI" }, + { cOCTVC1_NET_SRTP_STREAM_KEY_CHANGE_REASON_ENUM_FROM_TO, "cOCTVC1_NET_SRTP_STREAM_KEY_CHANGE_REASON_ENUM_FROM_TO" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_SRTP_CRYPTO_TRANSFORM_ENUM[] = + { + { cOCTVC1_NET_SRTP_CRYPTO_TRANSFORM_ENUM_NULL, "cOCTVC1_NET_SRTP_CRYPTO_TRANSFORM_ENUM_NULL" }, + { cOCTVC1_NET_SRTP_CRYPTO_TRANSFORM_ENUM_AES_CM, "cOCTVC1_NET_SRTP_CRYPTO_TRANSFORM_ENUM_AES_CM" }, + { cOCTVC1_NET_SRTP_CRYPTO_TRANSFORM_ENUM_AES_F8, "cOCTVC1_NET_SRTP_CRYPTO_TRANSFORM_ENUM_AES_F8" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_SRTP_AUTH_TRANSFORM_ENUM[] = + { + { cOCTVC1_NET_SRTP_AUTH_TRANSFORM_ENUM_NULL, "cOCTVC1_NET_SRTP_AUTH_TRANSFORM_ENUM_NULL" }, + { cOCTVC1_NET_SRTP_AUTH_TRANSFORM_ENUM_HMAC_SHA1, "cOCTVC1_NET_SRTP_AUTH_TRANSFORM_ENUM_HMAC_SHA1" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_SRTP_STREAM_STATE_ENUM[] = + { + { cOCTVC1_NET_SRTP_STREAM_STATE_ENUM_INVALID, "cOCTVC1_NET_SRTP_STREAM_STATE_ENUM_INVALID" }, + { cOCTVC1_NET_SRTP_STREAM_STATE_ENUM_INACTIVE, "cOCTVC1_NET_SRTP_STREAM_STATE_ENUM_INACTIVE" }, + { cOCTVC1_NET_SRTP_STREAM_STATE_ENUM_ACTIVE, "cOCTVC1_NET_SRTP_STREAM_STATE_ENUM_ACTIVE" }, + { cOCTVC1_NET_SRTP_STREAM_STATE_ENUM_ERROR, "cOCTVC1_NET_SRTP_STREAM_STATE_ENUM_ERROR" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_SRTP_KEY_STATE_ENUM[] = + { + { cOCTVC1_NET_SRTP_KEY_STATE_ENUM_INVALID, "cOCTVC1_NET_SRTP_KEY_STATE_ENUM_INVALID" }, + { cOCTVC1_NET_SRTP_KEY_STATE_ENUM_INACTIVE, "cOCTVC1_NET_SRTP_KEY_STATE_ENUM_INACTIVE" }, + { cOCTVC1_NET_SRTP_KEY_STATE_ENUM_ACTIVE, "cOCTVC1_NET_SRTP_KEY_STATE_ENUM_ACTIVE" }, + { cOCTVC1_NET_SRTP_KEY_STATE_ENUM_ACTIVE_THRESHOLD_REACH, "cOCTVC1_NET_SRTP_KEY_STATE_ENUM_ACTIVE_THRESHOLD_REACH" }, + { cOCTVC1_NET_SRTP_KEY_STATE_ENUM_EXPIRE, "cOCTVC1_NET_SRTP_KEY_STATE_ENUM_EXPIRE" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_SRTP_KEY_BIT_SIZE_ENUM[] = + { + { cOCTVC1_NET_SRTP_KEY_BIT_SIZE_ENUM_128, "cOCTVC1_NET_SRTP_KEY_BIT_SIZE_ENUM_128" }, + { cOCTVC1_NET_SRTP_KEY_BIT_SIZE_ENUM_192, "cOCTVC1_NET_SRTP_KEY_BIT_SIZE_ENUM_192" }, + { cOCTVC1_NET_SRTP_KEY_BIT_SIZE_ENUM_256, "cOCTVC1_NET_SRTP_KEY_BIT_SIZE_ENUM_256" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_SRTP_SALT_KEY_BIT_SIZE_ENUM[] = + { + { cOCTVC1_NET_SRTP_SALT_KEY_BIT_SIZE_ENUM_0, "cOCTVC1_NET_SRTP_SALT_KEY_BIT_SIZE_ENUM_0" }, + { cOCTVC1_NET_SRTP_SALT_KEY_BIT_SIZE_ENUM_112, "cOCTVC1_NET_SRTP_SALT_KEY_BIT_SIZE_ENUM_112" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_SRTP_SERVICE_MASK[] = + { + { cOCTVC1_NET_SRTP_SERVICE_MASK_NONE, "cOCTVC1_NET_SRTP_SERVICE_MASK_NONE" }, + { cOCTVC1_NET_SRTP_SERVICE_MASK_CONFIDENTIALITY, "cOCTVC1_NET_SRTP_SERVICE_MASK_CONFIDENTIALITY" }, + { cOCTVC1_NET_SRTP_SERVICE_MASK_AUTHENTICATION, "cOCTVC1_NET_SRTP_SERVICE_MASK_AUTHENTICATION" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK[] = + { + { cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_NONE, "cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_NONE" }, + { cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_REMOTE_RTP, "cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_REMOTE_RTP" }, + { cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_REMOTE_RTCP, "cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_REMOTE_RTCP" }, + { cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_REMOTE_T38, "cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_REMOTE_T38" }, + { cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_REMOTE_CNAME, "cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_REMOTE_CNAME" }, + { cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_SRTP_STREAM_CONFIG_SENDER, "cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_SRTP_STREAM_CONFIG_SENDER" }, + { cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_SRTP_KEY_ENTRY_SENDER, "cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_SRTP_KEY_ENTRY_SENDER" }, + { cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_SRTP_STREAM_CONFIG_RECEIVER, "cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_SRTP_STREAM_CONFIG_RECEIVER" }, + { cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_SRTP_KEY_ENTRY_RECEIVER, "cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_SRTP_KEY_ENTRY_RECEIVER" }, + { cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_LOCAL_RTP, "cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_LOCAL_RTP" }, + { cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_LOCAL_RTCP, "cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_LOCAL_RTCP" }, + { cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_LOCAL_T38, "cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_LOCAL_T38" }, + { cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_ALL, "cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_ALL" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_VIDEO_RTCP_FB_MSG_MASK[] = + { + { cOCTVC1_NET_VIDEO_RTCP_FB_MSG_MASK_NONE, "cOCTVC1_NET_VIDEO_RTCP_FB_MSG_MASK_NONE" }, + { cOCTVC1_NET_VIDEO_RTCP_FB_MSG_MASK_PLI, "cOCTVC1_NET_VIDEO_RTCP_FB_MSG_MASK_PLI" }, + { cOCTVC1_NET_VIDEO_RTCP_FB_MSG_MASK_FIR, "cOCTVC1_NET_VIDEO_RTCP_FB_MSG_MASK_FIR" }, + { cOCTVC1_NET_VIDEO_RTCP_FB_MSG_MASK_ALL, "cOCTVC1_NET_VIDEO_RTCP_FB_MSG_MASK_ALL" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_ETHERTYPE_ENCODING_ENUM[] = + { + { cOCTVC1_NET_ETHERTYPE_ENCODING_ENUM_ETH_II, "cOCTVC1_NET_ETHERTYPE_ENCODING_ENUM_ETH_II" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_RTP_MEMBER_STREAM_IDX_ENUM[] = + { + { cOCTVC1_NET_RTP_MEMBER_STREAM_IDX_ENUM_RTP, "cOCTVC1_NET_RTP_MEMBER_STREAM_IDX_ENUM_RTP" }, + { cOCTVC1_NET_RTP_MEMBER_STREAM_IDX_ENUM_RTCP, "cOCTVC1_NET_RTP_MEMBER_STREAM_IDX_ENUM_RTCP" }, + { cOCTVC1_NET_RTP_MEMBER_STREAM_IDX_ENUM_T38_UDPTL, "cOCTVC1_NET_RTP_MEMBER_STREAM_IDX_ENUM_T38_UDPTL" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK[] = + { + { cOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK_NONE, "cOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK_NONE" }, + { cOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK_STREAM_RTP, "cOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK_STREAM_RTP" }, + { cOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK_STREAM_RTCP, "cOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK_STREAM_RTCP" }, + { cOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK_STREAM_T38_UDPTL, "cOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK_STREAM_T38_UDPTL" }, + { cOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK_CNAME_LOCAL, "cOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK_CNAME_LOCAL" }, + { cOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK_CNAME_REMOTE, "cOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK_CNAME_REMOTE" }, + { cOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK_ALL, "cOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK_ALL" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_CUSTOM_MEMBER_STREAM_MODIFY_MASK[] = + { + { cOCTVC1_NET_CUSTOM_MEMBER_STREAM_MODIFY_MASK_NONE, "cOCTVC1_NET_CUSTOM_MEMBER_STREAM_MODIFY_MASK_NONE" }, + { cOCTVC1_NET_CUSTOM_MEMBER_STREAM_MODIFY_MASK_TX_PKT_ENABLE_FLAG, "cOCTVC1_NET_CUSTOM_MEMBER_STREAM_MODIFY_MASK_TX_PKT_ENABLE_FLAG" }, + { cOCTVC1_NET_CUSTOM_MEMBER_STREAM_MODIFY_MASK_RX_PKT_FILTER, "cOCTVC1_NET_CUSTOM_MEMBER_STREAM_MODIFY_MASK_RX_PKT_FILTER" }, + { cOCTVC1_NET_CUSTOM_MEMBER_STREAM_MODIFY_MASK_PKT_HEADER, "cOCTVC1_NET_CUSTOM_MEMBER_STREAM_MODIFY_MASK_PKT_HEADER" }, + { cOCTVC1_NET_CUSTOM_MEMBER_STREAM_MODIFY_MASK_ALL, "cOCTVC1_NET_CUSTOM_MEMBER_STREAM_MODIFY_MASK_ALL" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_IPV4_ADDR_AUTOCONFIG_MODE_ENUM[] = + { + { cOCTVC1_NET_IPV4_ADDR_AUTOCONFIG_MODE_ENUM_DHCP, "cOCTVC1_NET_IPV4_ADDR_AUTOCONFIG_MODE_ENUM_DHCP" }, + { cOCTVC1_NET_IPV4_ADDR_AUTOCONFIG_MODE_ENUM_DISABLED, "cOCTVC1_NET_IPV4_ADDR_AUTOCONFIG_MODE_ENUM_DISABLED" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_IPV6_ADDR_AUTOCONFIG_MODE_ENUM[] = + { + { cOCTVC1_NET_IPV6_ADDR_AUTOCONFIG_MODE_ENUM_STATELESS, "cOCTVC1_NET_IPV6_ADDR_AUTOCONFIG_MODE_ENUM_STATELESS" }, + { cOCTVC1_NET_IPV6_ADDR_AUTOCONFIG_MODE_ENUM_STATEFUL, "cOCTVC1_NET_IPV6_ADDR_AUTOCONFIG_MODE_ENUM_STATEFUL" }, + { cOCTVC1_NET_IPV6_ADDR_AUTOCONFIG_MODE_ENUM_DISABLED, "cOCTVC1_NET_IPV6_ADDR_AUTOCONFIG_MODE_ENUM_DISABLED" }, + { 0, NULL } + }; + +const value_string vals_tOCTVC1_NET_REMOTE_ADDRESS_ENUM[] = + { + { cOCTVC1_NET_REMOTE_ADDRESS_ENUM_RTP, "cOCTVC1_NET_REMOTE_ADDRESS_ENUM_RTP" }, + { cOCTVC1_NET_REMOTE_ADDRESS_ENUM_RTCP, "cOCTVC1_NET_REMOTE_ADDRESS_ENUM_RTCP" }, + { cOCTVC1_NET_REMOTE_ADDRESS_ENUM_T38_UDPTL, "cOCTVC1_NET_REMOTE_ADDRESS_ENUM_T38_UDPTL" }, + { 0, NULL } + }; + +/**************************************************************************** + COMMON Registered + ****************************************************************************/ + +int ahf_tOCTVC1_NET_IP_CURSOR[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_IP_CURSOR; + +void register_tOCTVC1_NET_IP_CURSOR(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_IP_CURSOR[0], + { "hLink", "octvc1.net.ip_cursor.hlink", + FT_NONE, BASE_NONE, NULL, 0x0, + "hLink",HFILL } + + }, + { + &ahf_tOCTVC1_NET_IP_CURSOR[1], + { "IpAddress", "octvc1.net.ip_cursor.ipaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "IpAddress",HFILL } + + }, + { + &ahf_tOCTVC1_NET_IP_CURSOR[2], + { "ulGetMode", "octvc1.net.ip_cursor.ulgetmode", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_OBJECT_CURSOR_ENUM), 0x0, + "ulGetMode",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_IP_CURSOR.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_RTP_PROFILE_ENTRY[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_RTP_PROFILE_ENTRY; + +void register_tOCTVC1_NET_RTP_PROFILE_ENTRY(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_RTP_PROFILE_ENTRY[0], + { "ulRtpPayloadType", "octvc1.net.rtp_profile_entry.ulrtppayloadtype", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRtpPayloadType",HFILL } + + }, + { + &ahf_tOCTVC1_NET_RTP_PROFILE_ENTRY[1], + { "ulPktEncodingType", "octvc1.net.rtp_profile_entry.ulpktencodingtype", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVOCNET_PKT_D_TYPE_ENUM), 0x0, + "ulPktEncodingType",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_RTP_PROFILE_ENTRY.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_RTP_PROFILE_MODIFY_ENTRY[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_RTP_PROFILE_MODIFY_ENTRY; + +void register_tOCTVC1_NET_RTP_PROFILE_MODIFY_ENTRY(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_RTP_PROFILE_MODIFY_ENTRY[0], + { "ulModifyType", "octvc1.net.rtp_profile_modify_entry.ulmodifytype", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_RTP_PROFILE_MODIFY_ENUM), 0x0, + "ulModifyType",HFILL } + + }, + { + &ahf_tOCTVC1_NET_RTP_PROFILE_MODIFY_ENTRY[1], + { "Entry", "octvc1.net.rtp_profile_modify_entry.entry", + FT_NONE, BASE_NONE, NULL, 0x0, + "Entry",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_RTP_PROFILE_MODIFY_ENTRY.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[14]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_SRTP_KEY_ENTRY; + +void register_tOCTVC1_NET_SRTP_KEY_ENTRY(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[0], + { "ulMasterKeyBitSize", "octvc1.net.srtp_key_entry.ulmasterkeybitsize", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_SRTP_KEY_BIT_SIZE_ENUM), 0x0, + "ulMasterKeyBitSize",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[1], + { "abyMasterKey", "octvc1.net.srtp_key_entry.abymasterkey", + FT_BYTES, BASE_NONE, NULL, 0x0, + "abyMasterKey",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[2], + { "ulMasterSaltBitSize", "octvc1.net.srtp_key_entry.ulmastersaltbitsize", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_SRTP_SALT_KEY_BIT_SIZE_ENUM), 0x0, + "ulMasterSaltBitSize",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[3], + { "abyMasterSalt", "octvc1.net.srtp_key_entry.abymastersalt", + FT_BYTES, BASE_NONE, NULL, 0x0, + "abyMasterSalt",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[4], + { "ulKeyDerivationRateLog2", "octvc1.net.srtp_key_entry.ulkeyderivationratelog2", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulKeyDerivationRateLog2",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[5], + { "aulRtpMasterKeyMaxLifeTime", "octvc1.net.srtp_key_entry.aulrtpmasterkeymaxlifetime", + FT_UINT32,BASE_HEX, NULL, 0x0, + "aulRtpMasterKeyMaxLifeTime",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[6], + { "aulRtpMasterKeyFromLifeTime", "octvc1.net.srtp_key_entry.aulrtpmasterkeyfromlifetime", + FT_UINT32,BASE_HEX, NULL, 0x0, + "aulRtpMasterKeyFromLifeTime",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[7], + { "aulRtpMasterKeyToLifeTime", "octvc1.net.srtp_key_entry.aulrtpmasterkeytolifetime", + FT_UINT32,BASE_HEX, NULL, 0x0, + "aulRtpMasterKeyToLifeTime",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[8], + { "aulRtpReKeyEventThreshold", "octvc1.net.srtp_key_entry.aulrtprekeyeventthreshold", + FT_UINT32,BASE_HEX, NULL, 0x0, + "aulRtpReKeyEventThreshold",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[9], + { "ulRtcpMasterKeyMaxLifeTime", "octvc1.net.srtp_key_entry.ulrtcpmasterkeymaxlifetime", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRtcpMasterKeyMaxLifeTime",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[10], + { "ulRtcpMasterKeyFromLifeTime", "octvc1.net.srtp_key_entry.ulrtcpmasterkeyfromlifetime", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRtcpMasterKeyFromLifeTime",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[11], + { "ulRtcpMasterKeyToLifeTime", "octvc1.net.srtp_key_entry.ulrtcpmasterkeytolifetime", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRtcpMasterKeyToLifeTime",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[12], + { "ulRtcpReKeyEventThreshold", "octvc1.net.srtp_key_entry.ulrtcprekeyeventthreshold", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRtcpReKeyEventThreshold",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[13], + { "abyMkiValue", "octvc1.net.srtp_key_entry.abymkivalue", + FT_BYTES, BASE_NONE, NULL, 0x0, + "abyMkiValue",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_SRTP_KEY_ENTRY.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_SRTP_STREAM_CONFIG[10]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_SRTP_STREAM_CONFIG; + +void register_tOCTVC1_NET_SRTP_STREAM_CONFIG(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_SRTP_STREAM_CONFIG[0], + { "ulCryptoTransform", "octvc1.net.srtp_stream_config.ulcryptotransform", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_SRTP_CRYPTO_TRANSFORM_ENUM), 0x0, + "ulCryptoTransform",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_STREAM_CONFIG[1], + { "ulAuthTransform", "octvc1.net.srtp_stream_config.ulauthtransform", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_SRTP_AUTH_TRANSFORM_ENUM), 0x0, + "ulAuthTransform",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_STREAM_CONFIG[2], + { "ulAuthTagBitSize", "octvc1.net.srtp_stream_config.ulauthtagbitsize", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulAuthTagBitSize",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_STREAM_CONFIG[3], + { "ulMkiByteSize", "octvc1.net.srtp_stream_config.ulmkibytesize", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMkiByteSize",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_STREAM_CONFIG[4], + { "ulSessionCryptoKeyBitSize", "octvc1.net.srtp_stream_config.ulsessioncryptokeybitsize", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_SRTP_KEY_BIT_SIZE_ENUM), 0x0, + "ulSessionCryptoKeyBitSize",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_STREAM_CONFIG[5], + { "ulSessionSaltKeyBitSize", "octvc1.net.srtp_stream_config.ulsessionsaltkeybitsize", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulSessionSaltKeyBitSize",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_STREAM_CONFIG[6], + { "ulSessionAuthKeyBitSize", "octvc1.net.srtp_stream_config.ulsessionauthkeybitsize", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulSessionAuthKeyBitSize",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_STREAM_CONFIG[7], + { "ulInitialRoc", "octvc1.net.srtp_stream_config.ulinitialroc", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulInitialRoc",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_STREAM_CONFIG[8], + { "ulSrtpServiceMask", "octvc1.net.srtp_stream_config.ulsrtpservicemask", + FT_NONE, BASE_NONE, NULL, 0x0, + "ulSrtpServiceMask",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_STREAM_CONFIG[9], + { "ulSrtcpServiceMask", "octvc1.net.srtp_stream_config.ulsrtcpservicemask", + FT_NONE, BASE_NONE, NULL, 0x0, + "ulSrtcpServiceMask",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_SRTP_STREAM_CONFIG.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_SRTP_KEY_STATS[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_SRTP_KEY_STATS; + +void register_tOCTVC1_NET_SRTP_KEY_STATS(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_SRTP_KEY_STATS[0], + { "ulKeyState", "octvc1.net.srtp_key_stats.ulkeystate", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_SRTP_KEY_STATE_ENUM), 0x0, + "ulKeyState",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_KEY_STATS[1], + { "aulSrtpPacketCnt", "octvc1.net.srtp_key_stats.aulsrtppacketcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "aulSrtpPacketCnt",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_KEY_STATS[2], + { "ulSrtcpPacketCnt", "octvc1.net.srtp_key_stats.ulsrtcppacketcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulSrtcpPacketCnt",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_SRTP_KEY_STATS.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_SRTP_STREAM_STATS[13]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_SRTP_STREAM_STATS; + +void register_tOCTVC1_NET_SRTP_STREAM_STATS(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_SRTP_STREAM_STATS[0], + { "ulSrtpState", "octvc1.net.srtp_stream_stats.ulsrtpstate", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_SRTP_STREAM_STATE_ENUM), 0x0, + "ulSrtpState",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_STREAM_STATS[1], + { "ulSsrc", "octvc1.net.srtp_stream_stats.ulssrc", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulSsrc",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_STREAM_STATS[2], + { "ulLastRoc", "octvc1.net.srtp_stream_stats.ullastroc", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLastRoc",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_STREAM_STATS[3], + { "ulLastSeq", "octvc1.net.srtp_stream_stats.ullastseq", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLastSeq",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_STREAM_STATS[4], + { "ulLastSrtcpIndex", "octvc1.net.srtp_stream_stats.ullastsrtcpindex", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLastSrtcpIndex",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_STREAM_STATS[5], + { "aulTotalSrtpPktCnt", "octvc1.net.srtp_stream_stats.aultotalsrtppktcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "aulTotalSrtpPktCnt",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_STREAM_STATS[6], + { "aulTotalSrtcpPktCnt", "octvc1.net.srtp_stream_stats.aultotalsrtcppktcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "aulTotalSrtcpPktCnt",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_STREAM_STATS[7], + { "ulUnAuthPktCnt", "octvc1.net.srtp_stream_stats.ulunauthpktcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulUnAuthPktCnt",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_STREAM_STATS[8], + { "ulReplayPktCnt", "octvc1.net.srtp_stream_stats.ulreplaypktcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulReplayPktCnt",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_STREAM_STATS[9], + { "ulReKeyCnt", "octvc1.net.srtp_stream_stats.ulrekeycnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulReKeyCnt",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_STREAM_STATS[10], + { "ulActiveKeyIdx", "octvc1.net.srtp_stream_stats.ulactivekeyidx", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulActiveKeyIdx",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_STREAM_STATS[11], + { "ulSrtpKeyNum", "octvc1.net.srtp_stream_stats.ulsrtpkeynum", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulSrtpKeyNum",HFILL } + + }, + { + &ahf_tOCTVC1_NET_SRTP_STREAM_STATS[12], + { "aSrtpKeyStats", "octvc1.net.srtp_stream_stats.asrtpkeystats", + FT_NONE, BASE_NONE, NULL, 0x0, + "aSrtpKeyStats",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_SRTP_STREAM_STATS.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_CONFIG_STATIC[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_CONFIG_STATIC; + +void register_tOCTVC1_NET_CONFIG_STATIC(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_CONFIG_STATIC[0], + { "ulMaxRtpMember", "octvc1.net.config_static.ulmaxrtpmember", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMaxRtpMember",HFILL } + + }, + { + &ahf_tOCTVC1_NET_CONFIG_STATIC[1], + { "ulMaxRtpSession", "octvc1.net.config_static.ulmaxrtpsession", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMaxRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_CONFIG_STATIC[2], + { "ulMaxLocalIpHost", "octvc1.net.config_static.ulmaxlocaliphost", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMaxLocalIpHost",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_CONFIG_STATIC.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_RTP_MEMBER_CONN_INFO[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_RTP_MEMBER_CONN_INFO; + +void register_tOCTVC1_NET_RTP_MEMBER_CONN_INFO(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_RTP_MEMBER_CONN_INFO[0], + { "ulConnectionState", "octvc1.net.rtp_member_conn_info.ulconnectionstate", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_RTP_MEMBER_CONN_STATE_ENUM), 0x0, + "ulConnectionState",HFILL } + + }, + { + &ahf_tOCTVC1_NET_RTP_MEMBER_CONN_INFO[1], + { "hConnectedRtpSession", "octvc1.net.rtp_member_conn_info.hconnectedrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hConnectedRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_RTP_MEMBER_CONN_INFO[2], + { "ulConnectedMemberId", "octvc1.net.rtp_member_conn_info.ulconnectedmemberid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulConnectedMemberId",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_RTP_MEMBER_CONN_INFO.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_RTCP_SENDER_STATS[10]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_RTCP_SENDER_STATS; + +void register_tOCTVC1_NET_RTCP_SENDER_STATS(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_RTCP_SENDER_STATS[0], + { "aulSentPktCnt", "octvc1.net.rtcp_sender_stats.aulsentpktcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "aulSentPktCnt",HFILL } + + }, + { + &ahf_tOCTVC1_NET_RTCP_SENDER_STATS[1], + { "aulSentByteCnt", "octvc1.net.rtcp_sender_stats.aulsentbytecnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "aulSentByteCnt",HFILL } + + }, + { + &ahf_tOCTVC1_NET_RTCP_SENDER_STATS[2], + { "aulNtpTimestamp", "octvc1.net.rtcp_sender_stats.aulntptimestamp", + FT_UINT32,BASE_HEX, NULL, 0x0, + "aulNtpTimestamp",HFILL } + + }, + { + &ahf_tOCTVC1_NET_RTCP_SENDER_STATS[3], + { "ulRtpTimestamp", "octvc1.net.rtcp_sender_stats.ulrtptimestamp", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRtpTimestamp",HFILL } + + }, + { + &ahf_tOCTVC1_NET_RTCP_SENDER_STATS[4], + { "ulSenderSsrc", "octvc1.net.rtcp_sender_stats.ulsenderssrc", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulSenderSsrc",HFILL } + + }, + { + &ahf_tOCTVC1_NET_RTCP_SENDER_STATS[5], + { "ulSenderStartTime", "octvc1.net.rtcp_sender_stats.ulsenderstarttime", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulSenderStartTime",HFILL } + + }, + { + &ahf_tOCTVC1_NET_RTCP_SENDER_STATS[6], + { "ulSenderReportCnt", "octvc1.net.rtcp_sender_stats.ulsenderreportcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulSenderReportCnt",HFILL } + + }, + { + &ahf_tOCTVC1_NET_RTCP_SENDER_STATS[7], + { "ulSenderState", "octvc1.net.rtcp_sender_stats.ulsenderstate", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_RTP_SENDER_STATE_ENUM), 0x0, + "ulSenderState",HFILL } + + }, + { + &ahf_tOCTVC1_NET_RTCP_SENDER_STATS[8], + { "ulLastSenderReportTime", "octvc1.net.rtcp_sender_stats.ullastsenderreporttime", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLastSenderReportTime",HFILL } + + }, + { + &ahf_tOCTVC1_NET_RTCP_SENDER_STATS[9], + { "ulSsrcChangeCnt", "octvc1.net.rtcp_sender_stats.ulssrcchangecnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulSsrcChangeCnt",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_RTCP_SENDER_STATS.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[14]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_RTCP_RECEIVER_STATS; + +void register_tOCTVC1_NET_RTCP_RECEIVER_STATS(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[0], + { "ulHighestSeqNumber", "octvc1.net.rtcp_receiver_stats.ulhighestseqnumber", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulHighestSeqNumber",HFILL } + + }, + { + &ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[1], + { "ulCumulativeLostCnt", "octvc1.net.rtcp_receiver_stats.ulcumulativelostcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulCumulativeLostCnt",HFILL } + + }, + { + &ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[2], + { "ulFractionLost", "octvc1.net.rtcp_receiver_stats.ulfractionlost", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulFractionLost",HFILL } + + }, + { + &ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[3], + { "ulInterArrivalJitter", "octvc1.net.rtcp_receiver_stats.ulinterarrivaljitter", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulInterArrivalJitter",HFILL } + + }, + { + &ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[4], + { "ulMaxFractionLost", "octvc1.net.rtcp_receiver_stats.ulmaxfractionlost", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMaxFractionLost",HFILL } + + }, + { + &ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[5], + { "ulMaxInterArrivalJitter", "octvc1.net.rtcp_receiver_stats.ulmaxinterarrivaljitter", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMaxInterArrivalJitter",HFILL } + + }, + { + &ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[6], + { "ulAverageFractionLost", "octvc1.net.rtcp_receiver_stats.ulaveragefractionlost", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulAverageFractionLost",HFILL } + + }, + { + &ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[7], + { "ulAverageInterArrivalJitter", "octvc1.net.rtcp_receiver_stats.ulaverageinterarrivaljitter", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulAverageInterArrivalJitter",HFILL } + + }, + { + &ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[8], + { "ulReceiverStartTime", "octvc1.net.rtcp_receiver_stats.ulreceiverstarttime", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulReceiverStartTime",HFILL } + + }, + { + &ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[9], + { "ulReceiverReportCnt", "octvc1.net.rtcp_receiver_stats.ulreceiverreportcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulReceiverReportCnt",HFILL } + + }, + { + &ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[10], + { "ulLastReceiverReportTime", "octvc1.net.rtcp_receiver_stats.ullastreceiverreporttime", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLastReceiverReportTime",HFILL } + + }, + { + &ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[11], + { "ulRemoteSenderSsrc", "octvc1.net.rtcp_receiver_stats.ulremotesenderssrc", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRemoteSenderSsrc",HFILL } + + }, + { + &ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[12], + { "ulAlarmRxThreshold", "octvc1.net.rtcp_receiver_stats.ulalarmrxthreshold", + FT_NONE, BASE_NONE, NULL, 0x0, + "ulAlarmRxThreshold",HFILL } + + }, + { + &ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[13], + { "ulAlarmRxThresholdCnt", "octvc1.net.rtcp_receiver_stats.ulalarmrxthresholdcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulAlarmRxThresholdCnt",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_RTCP_RECEIVER_STATS.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_VLAN_TAG[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_VLAN_TAG; + +void register_tOCTVC1_NET_VLAN_TAG(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_VLAN_TAG[0], + { "ulPriority", "octvc1.net.vlan_tag.ulpriority", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulPriority",HFILL } + + }, + { + &ahf_tOCTVC1_NET_VLAN_TAG[1], + { "ulVlanId", "octvc1.net.vlan_tag.ulvlanid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulVlanId",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_VLAN_TAG.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_HEADER_INFO_ETHERNET[4]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_HEADER_INFO_ETHERNET; + +void register_tOCTVC1_NET_HEADER_INFO_ETHERNET(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_HEADER_INFO_ETHERNET[0], + { "ulEthertypeEncoding", "octvc1.net.header_info_ethernet.ulethertypeencoding", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_ETHERTYPE_ENCODING_ENUM), 0x0, + "ulEthertypeEncoding",HFILL } + + }, + { + &ahf_tOCTVC1_NET_HEADER_INFO_ETHERNET[1], + { "ulEthertype", "octvc1.net.header_info_ethernet.ulethertype", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulEthertype",HFILL } + + }, + { + &ahf_tOCTVC1_NET_HEADER_INFO_ETHERNET[2], + { "LocalMacAddress", "octvc1.net.header_info_ethernet.localmacaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "LocalMacAddress",HFILL } + + }, + { + &ahf_tOCTVC1_NET_HEADER_INFO_ETHERNET[3], + { "RemoteMacAddress", "octvc1.net.header_info_ethernet.remotemacaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "RemoteMacAddress",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_HEADER_INFO_ETHERNET.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_HEADER_INFO_VLAN[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_HEADER_INFO_VLAN; + +void register_tOCTVC1_NET_HEADER_INFO_VLAN(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_HEADER_INFO_VLAN[0], + { "ulNumVlanTag", "octvc1.net.header_info_vlan.ulnumvlantag", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulNumVlanTag",HFILL } + + }, + { + &ahf_tOCTVC1_NET_HEADER_INFO_VLAN[1], + { "aVlanTag", "octvc1.net.header_info_vlan.avlantag", + FT_NONE, BASE_NONE, NULL, 0x0, + "aVlanTag",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_HEADER_INFO_VLAN.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_HEADER_INFO_IP[6]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_HEADER_INFO_IP; + +void register_tOCTVC1_NET_HEADER_INFO_IP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_HEADER_INFO_IP[0], + { "ulIpVersion", "octvc1.net.header_info_ip.ulipversion", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_IP_VERSION_ENUM), 0x0, + "ulIpVersion",HFILL } + + }, + { + &ahf_tOCTVC1_NET_HEADER_INFO_IP[1], + { "ulTypeOfService", "octvc1.net.header_info_ip.ultypeofservice", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulTypeOfService",HFILL } + + }, + { + &ahf_tOCTVC1_NET_HEADER_INFO_IP[2], + { "ulTimeToLive", "octvc1.net.header_info_ip.ultimetolive", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulTimeToLive",HFILL } + + }, + { + &ahf_tOCTVC1_NET_HEADER_INFO_IP[3], + { "ulIpv6FlowLabel", "octvc1.net.header_info_ip.ulipv6flowlabel", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulIpv6FlowLabel",HFILL } + + }, + { + &ahf_tOCTVC1_NET_HEADER_INFO_IP[4], + { "LocalIpAddress", "octvc1.net.header_info_ip.localipaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "LocalIpAddress",HFILL } + + }, + { + &ahf_tOCTVC1_NET_HEADER_INFO_IP[5], + { "RemoteIpAddress", "octvc1.net.header_info_ip.remoteipaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "RemoteIpAddress",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_HEADER_INFO_IP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_HEADER_INFO_UDP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_HEADER_INFO_UDP; + +void register_tOCTVC1_NET_HEADER_INFO_UDP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_HEADER_INFO_UDP[0], + { "ulLocalUdpPort", "octvc1.net.header_info_udp.ullocaludpport", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLocalUdpPort",HFILL } + + }, + { + &ahf_tOCTVC1_NET_HEADER_INFO_UDP[1], + { "ulRemoteUdpPort", "octvc1.net.header_info_udp.ulremoteudpport", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRemoteUdpPort",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_HEADER_INFO_UDP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_HEADER_IPUDP[4]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_HEADER_IPUDP; + +void register_tOCTVC1_NET_HEADER_IPUDP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_HEADER_IPUDP[0], + { "Ethernet", "octvc1.net.header_ipudp.ethernet", + FT_NONE, BASE_NONE, NULL, 0x0, + "Ethernet",HFILL } + + }, + { + &ahf_tOCTVC1_NET_HEADER_IPUDP[1], + { "Vlan", "octvc1.net.header_ipudp.vlan", + FT_NONE, BASE_NONE, NULL, 0x0, + "Vlan",HFILL } + + }, + { + &ahf_tOCTVC1_NET_HEADER_IPUDP[2], + { "Ip", "octvc1.net.header_ipudp.ip", + FT_NONE, BASE_NONE, NULL, 0x0, + "Ip",HFILL } + + }, + { + &ahf_tOCTVC1_NET_HEADER_IPUDP[3], + { "Udp", "octvc1.net.header_ipudp.udp", + FT_NONE, BASE_NONE, NULL, 0x0, + "Udp",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_HEADER_IPUDP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_CACHE_ENTRY_CURSOR[4]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_CACHE_ENTRY_CURSOR; + +void register_tOCTVC1_NET_CACHE_ENTRY_CURSOR(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_CACHE_ENTRY_CURSOR[0], + { "hLink", "octvc1.net.cache_entry_cursor.hlink", + FT_NONE, BASE_NONE, NULL, 0x0, + "hLink",HFILL } + + }, + { + &ahf_tOCTVC1_NET_CACHE_ENTRY_CURSOR[1], + { "Vlan", "octvc1.net.cache_entry_cursor.vlan", + FT_NONE, BASE_NONE, NULL, 0x0, + "Vlan",HFILL } + + }, + { + &ahf_tOCTVC1_NET_CACHE_ENTRY_CURSOR[2], + { "IpAddress", "octvc1.net.cache_entry_cursor.ipaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "IpAddress",HFILL } + + }, + { + &ahf_tOCTVC1_NET_CACHE_ENTRY_CURSOR[3], + { "ulGetMode", "octvc1.net.cache_entry_cursor.ulgetmode", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_OBJECT_CURSOR_ENUM), 0x0, + "ulGetMode",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_CACHE_ENTRY_CURSOR.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_ETH_LINK_CACHE_ENTRY[6]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_ETH_LINK_CACHE_ENTRY; + +void register_tOCTVC1_NET_ETH_LINK_CACHE_ENTRY(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_ETH_LINK_CACHE_ENTRY[0], + { "hLink", "octvc1.net.eth_link_cache_entry.hlink", + FT_NONE, BASE_NONE, NULL, 0x0, + "hLink",HFILL } + + }, + { + &ahf_tOCTVC1_NET_ETH_LINK_CACHE_ENTRY[1], + { "Vlan", "octvc1.net.eth_link_cache_entry.vlan", + FT_NONE, BASE_NONE, NULL, 0x0, + "Vlan",HFILL } + + }, + { + &ahf_tOCTVC1_NET_ETH_LINK_CACHE_ENTRY[2], + { "IpAddress", "octvc1.net.eth_link_cache_entry.ipaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "IpAddress",HFILL } + + }, + { + &ahf_tOCTVC1_NET_ETH_LINK_CACHE_ENTRY[3], + { "MacAddress", "octvc1.net.eth_link_cache_entry.macaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "MacAddress",HFILL } + + }, + { + &ahf_tOCTVC1_NET_ETH_LINK_CACHE_ENTRY[4], + { "ulStaticFlag", "octvc1.net.eth_link_cache_entry.ulstaticflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulStaticFlag",HFILL } + + }, + { + &ahf_tOCTVC1_NET_ETH_LINK_CACHE_ENTRY[5], + { "ulReachableFlag", "octvc1.net.eth_link_cache_entry.ulreachableflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulReachableFlag",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_ETH_LINK_CACHE_ENTRY.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_LINK_GATEWAY_INFO[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_LINK_GATEWAY_INFO; + +void register_tOCTVC1_NET_LINK_GATEWAY_INFO(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_LINK_GATEWAY_INFO[0], + { "IpAddress", "octvc1.net.link_gateway_info.ipaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "IpAddress",HFILL } + + }, + { + &ahf_tOCTVC1_NET_LINK_GATEWAY_INFO[1], + { "ulLifetimeSec", "octvc1.net.link_gateway_info.ullifetimesec", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLifetimeSec",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_LINK_GATEWAY_INFO.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_LINK_IPV6_PREFIX[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_LINK_IPV6_PREFIX; + +void register_tOCTVC1_NET_LINK_IPV6_PREFIX(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_LINK_IPV6_PREFIX[0], + { "IpAddress", "octvc1.net.link_ipv6_prefix.ipaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "IpAddress",HFILL } + + }, + { + &ahf_tOCTVC1_NET_LINK_IPV6_PREFIX[1], + { "ulBitLength", "octvc1.net.link_ipv6_prefix.ulbitlength", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulBitLength",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_LINK_IPV6_PREFIX.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_LINK_IPV6_PREFIX_INFO[5]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_LINK_IPV6_PREFIX_INFO; + +void register_tOCTVC1_NET_LINK_IPV6_PREFIX_INFO(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_LINK_IPV6_PREFIX_INFO[0], + { "IPv6Prefix", "octvc1.net.link_ipv6_prefix_info.ipv6prefix", + FT_NONE, BASE_NONE, NULL, 0x0, + "IPv6Prefix",HFILL } + + }, + { + &ahf_tOCTVC1_NET_LINK_IPV6_PREFIX_INFO[1], + { "ulOnLinkFlag", "octvc1.net.link_ipv6_prefix_info.ulonlinkflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulOnLinkFlag",HFILL } + + }, + { + &ahf_tOCTVC1_NET_LINK_IPV6_PREFIX_INFO[2], + { "ulAddrAutoConfigFlag", "octvc1.net.link_ipv6_prefix_info.uladdrautoconfigflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulAddrAutoConfigFlag",HFILL } + + }, + { + &ahf_tOCTVC1_NET_LINK_IPV6_PREFIX_INFO[3], + { "ulValidLifetimeSec", "octvc1.net.link_ipv6_prefix_info.ulvalidlifetimesec", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulValidLifetimeSec",HFILL } + + }, + { + &ahf_tOCTVC1_NET_LINK_IPV6_PREFIX_INFO[4], + { "ulPreferredLifetimeSec", "octvc1.net.link_ipv6_prefix_info.ulpreferredlifetimesec", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulPreferredLifetimeSec",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_LINK_IPV6_PREFIX_INFO.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_IPV6_PREFIX_CURSOR[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_IPV6_PREFIX_CURSOR; + +void register_tOCTVC1_NET_IPV6_PREFIX_CURSOR(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_IPV6_PREFIX_CURSOR[0], + { "hLink", "octvc1.net.ipv6_prefix_cursor.hlink", + FT_NONE, BASE_NONE, NULL, 0x0, + "hLink",HFILL } + + }, + { + &ahf_tOCTVC1_NET_IPV6_PREFIX_CURSOR[1], + { "IPv6Prefix", "octvc1.net.ipv6_prefix_cursor.ipv6prefix", + FT_NONE, BASE_NONE, NULL, 0x0, + "IPv6Prefix",HFILL } + + }, + { + &ahf_tOCTVC1_NET_IPV6_PREFIX_CURSOR[2], + { "ulGetMode", "octvc1.net.ipv6_prefix_cursor.ulgetmode", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_OBJECT_CURSOR_ENUM), 0x0, + "ulGetMode",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_IPV6_PREFIX_CURSOR.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4[11]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_ETH_LINK_CONFIG_IPV4; + +void register_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4[0], + { "ulEnableFlag", "octvc1.net.eth_link_config_ipv4.ulenableflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulEnableFlag",HFILL } + + }, + { + &ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4[1], + { "ulAddrAutoconfigMode", "octvc1.net.eth_link_config_ipv4.uladdrautoconfigmode", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_IPV4_ADDR_AUTOCONFIG_MODE_ENUM), 0x0, + "ulAddrAutoconfigMode",HFILL } + + }, + { + &ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4[2], + { "ulNDPBaseReachableTimeMs", "octvc1.net.eth_link_config_ipv4.ulndpbasereachabletimems", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulNDPBaseReachableTimeMs",HFILL } + + }, + { + &ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4[3], + { "ulARPRefreshTimeMs", "octvc1.net.eth_link_config_ipv4.ularprefreshtimems", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulARPRefreshTimeMs",HFILL } + + }, + { + &ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4[4], + { "ulARPReplyTimeMs", "octvc1.net.eth_link_config_ipv4.ularpreplytimems", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulARPReplyTimeMs",HFILL } + + }, + { + &ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4[5], + { "ulARPUnusedTimeMs", "octvc1.net.eth_link_config_ipv4.ularpunusedtimems", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulARPUnusedTimeMs",HFILL } + + }, + { + &ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4[6], + { "ulARPReqCreateCnt", "octvc1.net.eth_link_config_ipv4.ularpreqcreatecnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulARPReqCreateCnt",HFILL } + + }, + { + &ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4[7], + { "ulARPReqRefreshCnt", "octvc1.net.eth_link_config_ipv4.ularpreqrefreshcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulARPReqRefreshCnt",HFILL } + + }, + { + &ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4[8], + { "ulARPReqRefreshBroadcastCnt", "octvc1.net.eth_link_config_ipv4.ularpreqrefreshbroadcastcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulARPReqRefreshBroadcastCnt",HFILL } + + }, + { + &ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4[9], + { "ulARPReqDupAddrCnt", "octvc1.net.eth_link_config_ipv4.ularpreqdupaddrcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulARPReqDupAddrCnt",HFILL } + + }, + { + &ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4[10], + { "ulGARPRequestCnt", "octvc1.net.eth_link_config_ipv4.ulgarprequestcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulGARPRequestCnt",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_ETH_LINK_CONFIG_IPV4.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6[11]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_ETH_LINK_CONFIG_IPV6; + +void register_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6[0], + { "ulEnableFlag", "octvc1.net.eth_link_config_ipv6.ulenableflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulEnableFlag",HFILL } + + }, + { + &ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6[1], + { "ulCreateLoopbackEntryFlag", "octvc1.net.eth_link_config_ipv6.ulcreateloopbackentryflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulCreateLoopbackEntryFlag",HFILL } + + }, + { + &ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6[2], + { "ulAddrAutoconfigMode", "octvc1.net.eth_link_config_ipv6.uladdrautoconfigmode", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_IPV6_ADDR_AUTOCONFIG_MODE_ENUM), 0x0, + "ulAddrAutoconfigMode",HFILL } + + }, + { + &ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6[3], + { "ulNDPBaseReachableTimeMs", "octvc1.net.eth_link_config_ipv6.ulndpbasereachabletimems", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulNDPBaseReachableTimeMs",HFILL } + + }, + { + &ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6[4], + { "ulNDPRetransTimeMs", "octvc1.net.eth_link_config_ipv6.ulndpretranstimems", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulNDPRetransTimeMs",HFILL } + + }, + { + &ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6[5], + { "ulNDPUnusedTimeMs", "octvc1.net.eth_link_config_ipv6.ulndpunusedtimems", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulNDPUnusedTimeMs",HFILL } + + }, + { + &ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6[6], + { "ulNDPSolicitCreateCnt", "octvc1.net.eth_link_config_ipv6.ulndpsolicitcreatecnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulNDPSolicitCreateCnt",HFILL } + + }, + { + &ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6[7], + { "ulNDPSolicitDupAddrCnt", "octvc1.net.eth_link_config_ipv6.ulndpsolicitdupaddrcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulNDPSolicitDupAddrCnt",HFILL } + + }, + { + &ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6[8], + { "ulNDPSolicitProbeCnt", "octvc1.net.eth_link_config_ipv6.ulndpsolicitprobecnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulNDPSolicitProbeCnt",HFILL } + + }, + { + &ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6[9], + { "ulNDPSolicitProbeMulticastCnt", "octvc1.net.eth_link_config_ipv6.ulndpsolicitprobemulticastcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulNDPSolicitProbeMulticastCnt",HFILL } + + }, + { + &ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6[10], + { "ulNDPSolicitRouterCnt", "octvc1.net.eth_link_config_ipv6.ulndpsolicitroutercnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulNDPSolicitRouterCnt",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_ETH_LINK_CONFIG_IPV6.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ; + +void register_tOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ[0], + { "ulEnableFlag", "octvc1.net.eth_link_config_eth_802_1pq.ulenableflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulEnableFlag",HFILL } + + }, + { + &ahf_tOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ[1], + { "ulDefaultUserPriority", "octvc1.net.eth_link_config_eth_802_1pq.uldefaultuserpriority", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulDefaultUserPriority",HFILL } + + }, + { + &ahf_tOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ[2], + { "ulVlanId", "octvc1.net.eth_link_config_eth_802_1pq.ulvlanid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulVlanId",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_EUI64_INTERFACE_ID[1]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_EUI64_INTERFACE_ID; + +void register_tOCTVC1_NET_EUI64_INTERFACE_ID(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_EUI64_INTERFACE_ID[0], + { "ausInterfaceId", "octvc1.net.eui64_interface_id.ausinterfaceid", + FT_UINT16,BASE_HEX, NULL, 0x0, + "ausInterfaceId",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_EUI64_INTERFACE_ID.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM[4]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM; + +void register_tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM[0], + { "ulEnableFlag", "octvc1.net.custom_member_ipudp_stream.ulenableflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulEnableFlag",HFILL } + + }, + { + &ahf_tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM[1], + { "ulTxPktEnableFlag", "octvc1.net.custom_member_ipudp_stream.ultxpktenableflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulTxPktEnableFlag",HFILL } + + }, + { + &ahf_tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM[2], + { "ulRxPktFilter", "octvc1.net.custom_member_ipudp_stream.ulrxpktfilter", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_RX_PKT_FILTER_ENUM), 0x0, + "ulRxPktFilter",HFILL } + + }, + { + &ahf_tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM[3], + { "Header", "octvc1.net.custom_member_ipudp_stream.header", + FT_NONE, BASE_NONE, NULL, 0x0, + "Header",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_MODIFY[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_MODIFY; + +void register_tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_MODIFY(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_MODIFY[0], + { "ulModifyMask", "octvc1.net.custom_member_ipudp_stream_modify.ulmodifymask", + FT_NONE, BASE_NONE, NULL, 0x0, + "ulModifyMask",HFILL } + + }, + { + &ahf_tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_MODIFY[1], + { "Modify", "octvc1.net.custom_member_ipudp_stream_modify.modify", + FT_NONE, BASE_NONE, NULL, 0x0, + "Modify",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_MODIFY.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +/**************************************************************************** + Event Registered + ****************************************************************************/ + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT[6]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT[0], + { "hRtpSession", "octvc1.net.rtp_session.member.rtcp_pkt.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT[1], + { "ulMemberId", "octvc1.net.rtp_session.member.rtcp_pkt.ulmemberid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMemberId",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT[2], + { "ulPktType", "octvc1.net.rtp_session.member.rtcp_pkt.ulpkttype", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_RTCP_PKT_TYPE_ENUM), 0x0, + "ulPktType",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT[3], + { "ulPktByteLength", "octvc1.net.rtp_session.member.rtcp_pkt.ulpktbytelength", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulPktByteLength",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT[4], + { "abyRtcpPkt", "octvc1.net.rtp_session.member.rtcp_pkt.abyrtcppkt", + FT_BYTES, BASE_NONE, NULL, 0x0, + "abyRtcpPkt",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT[5]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT[0], + { "hRtpSession", "octvc1.net.rtp_session.member.rtcp_remote_detected.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT[1], + { "ulMemberId", "octvc1.net.rtp_session.member.rtcp_remote_detected.ulmemberid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMemberId",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT[2], + { "ulCnameLength", "octvc1.net.rtp_session.member.rtcp_remote_detected.ulcnamelength", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulCnameLength",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT[3], + { "achCname", "octvc1.net.rtp_session.member.rtcp_remote_detected.achcname", + FT_STRING, BASE_NONE, NULL, 0x0, + "achCname",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT[6]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT[0], + { "hRtpSession", "octvc1.net.rtp_session.member.rtcp_ssrc_change.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT[1], + { "ulMemberId", "octvc1.net.rtp_session.member.rtcp_ssrc_change.ulmemberid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMemberId",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT[2], + { "ulLocalFlag", "octvc1.net.rtp_session.member.rtcp_ssrc_change.ullocalflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulLocalFlag",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT[3], + { "ulPreviousSsrc", "octvc1.net.rtp_session.member.rtcp_ssrc_change.ulpreviousssrc", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulPreviousSsrc",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT[4], + { "ulNewSsrc", "octvc1.net.rtp_session.member.rtcp_ssrc_change.ulnewssrc", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulNewSsrc",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT[8]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT[0], + { "hRtpSession", "octvc1.net.rtp_session.member.rtcp_receiver_alarm.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT[1], + { "ulMemberId", "octvc1.net.rtp_session.member.rtcp_receiver_alarm.ulmemberid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMemberId",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT[2], + { "ulLocalFlag", "octvc1.net.rtp_session.member.rtcp_receiver_alarm.ullocalflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulLocalFlag",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT[3], + { "ulRoundTripTime", "octvc1.net.rtp_session.member.rtcp_receiver_alarm.ulroundtriptime", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRoundTripTime",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT[4], + { "ulMaxRoundTripTime", "octvc1.net.rtp_session.member.rtcp_receiver_alarm.ulmaxroundtriptime", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMaxRoundTripTime",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT[5], + { "ulAverageRoundTripTime", "octvc1.net.rtp_session.member.rtcp_receiver_alarm.ulaverageroundtriptime", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulAverageRoundTripTime",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT[6], + { "StatsReceiver", "octvc1.net.rtp_session.member.rtcp_receiver_alarm.statsreceiver", + FT_NONE, BASE_NONE, NULL, 0x0, + "StatsReceiver",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT[6]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT[0], + { "hRtpSession", "octvc1.net.rtp_session.member.rtcp_sender_state_change.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT[1], + { "ulMemberId", "octvc1.net.rtp_session.member.rtcp_sender_state_change.ulmemberid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMemberId",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT[2], + { "ulLocalFlag", "octvc1.net.rtp_session.member.rtcp_sender_state_change.ullocalflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulLocalFlag",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT[3], + { "ulPreviousSenderState", "octvc1.net.rtp_session.member.rtcp_sender_state_change.ulprevioussenderstate", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_RTP_SENDER_STATE_ENUM), 0x0, + "ulPreviousSenderState",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT[4], + { "ulNewSenderState", "octvc1.net.rtp_session.member.rtcp_sender_state_change.ulnewsenderstate", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_RTP_SENDER_STATE_ENUM), 0x0, + "ulNewSenderState",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT[5]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT[0], + { "hRtpSession", "octvc1.net.rtp_session.member.remote_auto_detect.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT[1], + { "ulMemberId", "octvc1.net.rtp_session.member.remote_auto_detect.ulmemberid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMemberId",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT[2], + { "ulRemoteAddress", "octvc1.net.rtp_session.member.remote_auto_detect.ulremoteaddress", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_REMOTE_ADDRESS_ENUM), 0x0, + "ulRemoteAddress",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT[3], + { "RemoteUdpAddress", "octvc1.net.rtp_session.member.remote_auto_detect.remoteudpaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "RemoteUdpAddress",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT[7]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT[0], + { "hRtpSession", "octvc1.net.rtp_session.member.srtp.master_re_key_threshold_reached.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT[1], + { "ulMemberId", "octvc1.net.rtp_session.member.srtp.master_re_key_threshold_reached.ulmemberid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMemberId",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT[2], + { "ulSrtpStreamType", "octvc1.net.rtp_session.member.srtp.master_re_key_threshold_reached.ulsrtpstreamtype", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_SRTP_STREAM_TYPE_ENUM), 0x0, + "ulSrtpStreamType",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT[3], + { "ActiveSrtpKey", "octvc1.net.rtp_session.member.srtp.master_re_key_threshold_reached.activesrtpkey", + FT_NONE, BASE_NONE, NULL, 0x0, + "ActiveSrtpKey",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT[4], + { "aulSrtpPacketCnt", "octvc1.net.rtp_session.member.srtp.master_re_key_threshold_reached.aulsrtppacketcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "aulSrtpPacketCnt",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT[5], + { "ulSrtcpPacketCnt", "octvc1.net.rtp_session.member.srtp.master_re_key_threshold_reached.ulsrtcppacketcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulSrtcpPacketCnt",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT[7]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT[0], + { "hRtpSession", "octvc1.net.rtp_session.member.srtp.master_key_expired.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT[1], + { "ulMemberId", "octvc1.net.rtp_session.member.srtp.master_key_expired.ulmemberid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMemberId",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT[2], + { "ulSrtpStreamType", "octvc1.net.rtp_session.member.srtp.master_key_expired.ulsrtpstreamtype", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_SRTP_STREAM_TYPE_ENUM), 0x0, + "ulSrtpStreamType",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT[3], + { "ActiveSrtpKey", "octvc1.net.rtp_session.member.srtp.master_key_expired.activesrtpkey", + FT_NONE, BASE_NONE, NULL, 0x0, + "ActiveSrtpKey",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT[4], + { "aulSrtpPacketCnt", "octvc1.net.rtp_session.member.srtp.master_key_expired.aulsrtppacketcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "aulSrtpPacketCnt",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT[5], + { "ulSrtcpPacketCnt", "octvc1.net.rtp_session.member.srtp.master_key_expired.ulsrtcppacketcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulSrtcpPacketCnt",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT[7]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT[0], + { "hRtpSession", "octvc1.net.rtp_session.member.srtp.master_key_change_detected.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT[1], + { "ulMemberId", "octvc1.net.rtp_session.member.srtp.master_key_change_detected.ulmemberid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMemberId",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT[2], + { "ulSrtpStreamType", "octvc1.net.rtp_session.member.srtp.master_key_change_detected.ulsrtpstreamtype", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_SRTP_STREAM_TYPE_ENUM), 0x0, + "ulSrtpStreamType",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT[3], + { "ulKeyChangeReason", "octvc1.net.rtp_session.member.srtp.master_key_change_detected.ulkeychangereason", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_SRTP_STREAM_KEY_CHANGE_REASON_ENUM), 0x0, + "ulKeyChangeReason",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT[4], + { "ActiveSrtpKey", "octvc1.net.rtp_session.member.srtp.master_key_change_detected.activesrtpkey", + FT_NONE, BASE_NONE, NULL, 0x0, + "ActiveSrtpKey",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT[5], + { "PreviousSrtpKey", "octvc1.net.rtp_session.member.srtp.master_key_change_detected.previoussrtpkey", + FT_NONE, BASE_NONE, NULL, 0x0, + "PreviousSrtpKey",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT[4]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT[0], + { "hRtpSession", "octvc1.net.rtp_session.member.srtp.replay_attack_detected.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT[1], + { "ulMemberId", "octvc1.net.rtp_session.member.srtp.replay_attack_detected.ulmemberid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMemberId",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT[2], + { "ulSrtpStreamType", "octvc1.net.rtp_session.member.srtp.replay_attack_detected.ulsrtpstreamtype", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_SRTP_STREAM_TYPE_ENUM), 0x0, + "ulSrtpStreamType",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT[4]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT[0], + { "hRtpSession", "octvc1.net.rtp_session.member.srtp.unauth_pkt_detected.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT[1], + { "ulMemberId", "octvc1.net.rtp_session.member.srtp.unauth_pkt_detected.ulmemberid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMemberId",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT[2], + { "ulSrtpStreamType", "octvc1.net.rtp_session.member.srtp.unauth_pkt_detected.ulsrtpstreamtype", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_SRTP_STREAM_TYPE_ENUM), 0x0, + "ulSrtpStreamType",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT[6]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT[0], + { "hRtpSession", "octvc1.net.rtp_session.member.srtp.unknown_mki_received.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT[1], + { "ulMemberId", "octvc1.net.rtp_session.member.srtp.unknown_mki_received.ulmemberid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMemberId",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT[2], + { "ulSrtpStreamType", "octvc1.net.rtp_session.member.srtp.unknown_mki_received.ulsrtpstreamtype", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_SRTP_STREAM_TYPE_ENUM), 0x0, + "ulSrtpStreamType",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT[3], + { "ulUnknownMkiByteSize", "octvc1.net.rtp_session.member.srtp.unknown_mki_received.ulunknownmkibytesize", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulUnknownMkiByteSize",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT[4], + { "abyUnknownMkiValue", "octvc1.net.rtp_session.member.srtp.unknown_mki_received.abyunknownmkivalue", + FT_BYTES, BASE_NONE, NULL, 0x0, + "abyUnknownMkiValue",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT[5]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT[0], + { "hRtpSession", "octvc1.net.rtp_session.member.srtp.ssrc_violation_detected.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT[1], + { "ulMemberId", "octvc1.net.rtp_session.member.srtp.ssrc_violation_detected.ulmemberid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMemberId",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT[2], + { "ulSrtpStreamType", "octvc1.net.rtp_session.member.srtp.ssrc_violation_detected.ulsrtpstreamtype", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_SRTP_STREAM_TYPE_ENUM), 0x0, + "ulSrtpStreamType",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT[3], + { "ulSsrc", "octvc1.net.rtp_session.member.srtp.ssrc_violation_detected.ulssrc", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulSsrc",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT[7]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT; + +void register_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT[0], + { "hLocalHost", "octvc1.net.local_host.icmp.alarm.hlocalhost", + FT_NONE, BASE_NONE, NULL, 0x0, + "hLocalHost",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT[1], + { "RemoteIpAddr", "octvc1.net.local_host.icmp.alarm.remoteipaddr", + FT_STRING, BASE_NONE, NULL, 0x0, + "RemoteIpAddr",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT[2], + { "ulAlarmType", "octvc1.net.local_host.icmp.alarm.ulalarmtype", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulAlarmType",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT[3], + { "ulAlarmCode", "octvc1.net.local_host.icmp.alarm.ulalarmcode", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulAlarmCode",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT[4], + { "ulPktHeaderByteLength", "octvc1.net.local_host.icmp.alarm.ulpktheaderbytelength", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulPktHeaderByteLength",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT[5], + { "abyPktHeader", "octvc1.net.local_host.icmp.alarm.abypktheader", + FT_BYTES, BASE_NONE, NULL, 0x0, + "abyPktHeader",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT[6]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT; + +void register_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT[0], + { "hLocalHost", "octvc1.net.local_host.icmp.redirect.hlocalhost", + FT_NONE, BASE_NONE, NULL, 0x0, + "hLocalHost",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT[1], + { "ulRedirectCode", "octvc1.net.local_host.icmp.redirect.ulredirectcode", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRedirectCode",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT[2], + { "NewGatewayIpAddress", "octvc1.net.local_host.icmp.redirect.newgatewayipaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "NewGatewayIpAddress",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT[3], + { "PrevGatewayIpAddress", "octvc1.net.local_host.icmp.redirect.prevgatewayipaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "PrevGatewayIpAddress",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT[4], + { "DestinationIpAddress", "octvc1.net.local_host.icmp.redirect.destinationipaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "DestinationIpAddress",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT[8]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT; + +void register_tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT[0], + { "hLink", "octvc1.net.local_host.addr.status_change.hlink", + FT_NONE, BASE_NONE, NULL, 0x0, + "hLink",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT[1], + { "hLocalHost", "octvc1.net.local_host.addr.status_change.hlocalhost", + FT_NONE, BASE_NONE, NULL, 0x0, + "hLocalHost",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT[2], + { "IpAddress", "octvc1.net.local_host.addr.status_change.ipaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "IpAddress",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT[3], + { "ulAddrAutoConfigFlag", "octvc1.net.local_host.addr.status_change.uladdrautoconfigflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulAddrAutoConfigFlag",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT[4], + { "ulPreviousAddrStatus", "octvc1.net.local_host.addr.status_change.ulpreviousaddrstatus", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_ENUM), 0x0, + "ulPreviousAddrStatus",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT[5], + { "ulNewAddrStatus", "octvc1.net.local_host.addr.status_change.ulnewaddrstatus", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_ENUM), 0x0, + "ulNewAddrStatus",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT[6], + { "ulStatusChangeCause", "octvc1.net.local_host.addr.status_change.ulstatuschangecause", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM), 0x0, + "ulStatusChangeCause",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT[4]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT; + +void register_tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT[0], + { "hLocalHost", "octvc1.net.local_host.addr.duplicate_found.hlocalhost", + FT_NONE, BASE_NONE, NULL, 0x0, + "hLocalHost",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT[1], + { "IpAddress", "octvc1.net.local_host.addr.duplicate_found.ipaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "IpAddress",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT[2], + { "ulDuplicateSource", "octvc1.net.local_host.addr.duplicate_found.ulduplicatesource", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_LOCAL_HOST_ADDR_DUPLICATE_SOURCE_ENUM), 0x0, + "ulDuplicateSource",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT[5]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT; + +void register_tOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT[0], + { "hEthLink", "octvc1.net.link.gateway.status_change.hethlink", + FT_NONE, BASE_NONE, NULL, 0x0, + "hEthLink",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT[1], + { "IpAddress", "octvc1.net.link.gateway.status_change.ipaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "IpAddress",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT[2], + { "ulPreviousStatus", "octvc1.net.link.gateway.status_change.ulpreviousstatus", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_LINK_GATEWAY_STATUS_ENUM), 0x0, + "ulPreviousStatus",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT[3], + { "ulNewStatus", "octvc1.net.link.gateway.status_change.ulnewstatus", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_LINK_GATEWAY_STATUS_ENUM), 0x0, + "ulNewStatus",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +/**************************************************************************** + CMD/RSP Registered + ****************************************************************************/ + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[22]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[0], + { "hLocalHost", "octvc1.net.rtp_session.open.hlocalhost", + FT_NONE, BASE_NONE, NULL, 0x0, + "hLocalHost",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[1], + { "ulRtpEventMask", "octvc1.net.rtp_session.open.ulrtpeventmask", + FT_NONE, BASE_NONE, NULL, 0x0, + "ulRtpEventMask",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[2], + { "ulRtcpEventMask", "octvc1.net.rtp_session.open.ulrtcpeventmask", + FT_NONE, BASE_NONE, NULL, 0x0, + "ulRtcpEventMask",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[3], + { "ulSrtpEventMask", "octvc1.net.rtp_session.open.ulsrtpeventmask", + FT_NONE, BASE_NONE, NULL, 0x0, + "ulSrtpEventMask",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[4], + { "ulUserEventId", "octvc1.net.rtp_session.open.ulusereventid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulUserEventId",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[5], + { "ulInitialOperationMode", "octvc1.net.rtp_session.open.ulinitialoperationmode", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_OPERATION_MODE_ENUM), 0x0, + "ulInitialOperationMode",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[6], + { "ulSenderMaxPendingTimeSec", "octvc1.net.rtp_session.open.ulsendermaxpendingtimesec", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulSenderMaxPendingTimeSec",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[7], + { "ulSenderMaxInactiveTimeSec", "octvc1.net.rtp_session.open.ulsendermaxinactivetimesec", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulSenderMaxInactiveTimeSec",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[8], + { "ulRtcpEnableFlag", "octvc1.net.rtp_session.open.ulrtcpenableflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulRtcpEnableFlag",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[9], + { "ulRtcpVideoFeedbackEnableFlagMask", "octvc1.net.rtp_session.open.ulrtcpvideofeedbackenableflagmask", + FT_NONE, BASE_NONE, NULL, 0x0, + "ulRtcpVideoFeedbackEnableFlagMask",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[10], + { "ulRtpSessionBandwidth", "octvc1.net.rtp_session.open.ulrtpsessionbandwidth", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRtpSessionBandwidth",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[11], + { "ulHighFractionLost", "octvc1.net.rtp_session.open.ulhighfractionlost", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulHighFractionLost",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[12], + { "ulHighCumulativePacketLost", "octvc1.net.rtp_session.open.ulhighcumulativepacketlost", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulHighCumulativePacketLost",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[13], + { "ulHighJitter", "octvc1.net.rtp_session.open.ulhighjitter", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulHighJitter",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[14], + { "ulHighRoundTripTime", "octvc1.net.rtp_session.open.ulhighroundtriptime", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulHighRoundTripTime",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[15], + { "ulLowFractionLost", "octvc1.net.rtp_session.open.ullowfractionlost", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLowFractionLost",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[16], + { "ulLowJitter", "octvc1.net.rtp_session.open.ullowjitter", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLowJitter",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[17], + { "ulLowRoundTripTime", "octvc1.net.rtp_session.open.ullowroundtriptime", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLowRoundTripTime",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[18], + { "hEventDestObj", "octvc1.net.rtp_session.open.heventdestobj", + FT_NONE, BASE_NONE, NULL, 0x0, + "hEventDestObj",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[19], + { "ulEventDestObjPort", "octvc1.net.rtp_session.open.uleventdestobjport", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulEventDestObjPort",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[20], + { "ulEventDestObjFifoId", "octvc1.net.rtp_session.open.uleventdestobjfifoid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulEventDestObjFifoId",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_OPEN_RSP; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_RSP[0], + { "hRtpSession", "octvc1.net.rtp_session.open.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_RSP[1], + { "ulFifoId", "octvc1.net.rtp_session.open.ulfifoid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulFifoId",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_OPEN_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_CLOSE_CMD; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_CMD[0], + { "hRtpSession", "octvc1.net.rtp_session.close.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_CLOSE_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_CLOSE_RSP; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_RSP[0], + { "hRtpSession", "octvc1.net.rtp_session.close.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_CLOSE_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD[9]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD[0], + { "hRtpSession", "octvc1.net.rtp_session.modify.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD[1], + { "ulHighFractionLost", "octvc1.net.rtp_session.modify.ulhighfractionlost", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulHighFractionLost",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD[2], + { "ulHighCumulativePacketLost", "octvc1.net.rtp_session.modify.ulhighcumulativepacketlost", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulHighCumulativePacketLost",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD[3], + { "ulHighJitter", "octvc1.net.rtp_session.modify.ulhighjitter", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulHighJitter",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD[4], + { "ulHighRoundTripTime", "octvc1.net.rtp_session.modify.ulhighroundtriptime", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulHighRoundTripTime",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD[5], + { "ulLowFractionLost", "octvc1.net.rtp_session.modify.ullowfractionlost", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLowFractionLost",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD[6], + { "ulLowJitter", "octvc1.net.rtp_session.modify.ullowjitter", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLowJitter",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD[7], + { "ulLowRoundTripTime", "octvc1.net.rtp_session.modify.ullowroundtriptime", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLowRoundTripTime",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_MODIFY_RSP; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_RSP[0], + { "hRtpSession", "octvc1.net.rtp_session.modify.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_MODIFY_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_INFO_CMD; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_INFO_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_CMD[0], + { "ObjectGet", "octvc1.net.rtp_session.info.objectget", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectGet",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_INFO_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[23]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[0], + { "ObjectGet", "octvc1.net.rtp_session.info.objectget", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectGet",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[1], + { "hLocalHost", "octvc1.net.rtp_session.info.hlocalhost", + FT_NONE, BASE_NONE, NULL, 0x0, + "hLocalHost",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[2], + { "ulFifoId", "octvc1.net.rtp_session.info.ulfifoid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulFifoId",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[3], + { "ulRtpEventMask", "octvc1.net.rtp_session.info.ulrtpeventmask", + FT_NONE, BASE_NONE, NULL, 0x0, + "ulRtpEventMask",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[4], + { "ulRtcpEventMask", "octvc1.net.rtp_session.info.ulrtcpeventmask", + FT_NONE, BASE_NONE, NULL, 0x0, + "ulRtcpEventMask",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[5], + { "ulSrtpEventMask", "octvc1.net.rtp_session.info.ulsrtpeventmask", + FT_NONE, BASE_NONE, NULL, 0x0, + "ulSrtpEventMask",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[6], + { "ulUserEventId", "octvc1.net.rtp_session.info.ulusereventid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulUserEventId",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[7], + { "ulInitialOperationMode", "octvc1.net.rtp_session.info.ulinitialoperationmode", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_OPERATION_MODE_ENUM), 0x0, + "ulInitialOperationMode",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[8], + { "ulSenderMaxPendingTimeSec", "octvc1.net.rtp_session.info.ulsendermaxpendingtimesec", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulSenderMaxPendingTimeSec",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[9], + { "ulSenderMaxInactiveTimeSec", "octvc1.net.rtp_session.info.ulsendermaxinactivetimesec", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulSenderMaxInactiveTimeSec",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[10], + { "ulRtcpEnableFlag", "octvc1.net.rtp_session.info.ulrtcpenableflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulRtcpEnableFlag",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[11], + { "ulRtpSessionBandwidth", "octvc1.net.rtp_session.info.ulrtpsessionbandwidth", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRtpSessionBandwidth",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[12], + { "ulHighFractionLost", "octvc1.net.rtp_session.info.ulhighfractionlost", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulHighFractionLost",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[13], + { "ulHighCumulativePacketLost", "octvc1.net.rtp_session.info.ulhighcumulativepacketlost", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulHighCumulativePacketLost",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[14], + { "ulHighJitter", "octvc1.net.rtp_session.info.ulhighjitter", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulHighJitter",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[15], + { "ulHighRoundTripTime", "octvc1.net.rtp_session.info.ulhighroundtriptime", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulHighRoundTripTime",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[16], + { "ulLowFractionLost", "octvc1.net.rtp_session.info.ullowfractionlost", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLowFractionLost",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[17], + { "ulLowJitter", "octvc1.net.rtp_session.info.ullowjitter", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLowJitter",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[18], + { "ulLowRoundTripTime", "octvc1.net.rtp_session.info.ullowroundtriptime", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLowRoundTripTime",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[19], + { "hEventDestObj", "octvc1.net.rtp_session.info.heventdestobj", + FT_NONE, BASE_NONE, NULL, 0x0, + "hEventDestObj",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[20], + { "ulEventDestObjPort", "octvc1.net.rtp_session.info.uleventdestobjport", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulEventDestObjPort",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[21], + { "ulEventDestObjFifoId", "octvc1.net.rtp_session.info.uleventdestobjfifoid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulEventDestObjFifoId",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_STATS_CMD; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_STATS_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_CMD[0], + { "ObjectGet", "octvc1.net.rtp_session.stats.objectget", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectGet",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_STATS_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP[11]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP[0], + { "ObjectGet", "octvc1.net.rtp_session.stats.objectget", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectGet",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP[1], + { "ulNumMember", "octvc1.net.rtp_session.stats.ulnummember", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulNumMember",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP[2], + { "ulNumSender", "octvc1.net.rtp_session.stats.ulnumsender", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulNumSender",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP[3], + { "ulSessionStartTime", "octvc1.net.rtp_session.stats.ulsessionstarttime", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulSessionStartTime",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP[4], + { "ulRxByePktCnt", "octvc1.net.rtp_session.stats.ulrxbyepktcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulRxByePktCnt",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP[5], + { "ulRxSenderJoinCnt", "octvc1.net.rtp_session.stats.ulrxsenderjoincnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulRxSenderJoinCnt",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP[6], + { "ulRxMemberJoinCnt", "octvc1.net.rtp_session.stats.ulrxmemberjoincnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulRxMemberJoinCnt",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP[7], + { "ulErrCollisionCnt", "octvc1.net.rtp_session.stats.ulerrcollisioncnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulErrCollisionCnt",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP[8], + { "ulErrLoopCnt", "octvc1.net.rtp_session.stats.ulerrloopcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulErrLoopCnt",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP[9], + { "ulErrRtcpPktInvalidCnt", "octvc1.net.rtp_session.stats.ulerrrtcppktinvalidcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulErrRtcpPktInvalidCnt",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CMD[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CMD; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CMD[0], + { "hRtpSession", "octvc1.net.rtp_session.rtcp.pause.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CMD[1], + { "ulTxRtcpPauseFlag", "octvc1.net.rtp_session.rtcp.pause.ultxrtcppauseflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulTxRtcpPauseFlag",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_RSP; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_RSP[0], + { "hRtpSession", "octvc1.net.rtp_session.rtcp.pause.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[32]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[0], + { "hRtpSession", "octvc1.net.rtp_session.member.activate.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[1], + { "hTerm", "octvc1.net.rtp_session.member.activate.hterm", + FT_NONE, BASE_NONE, NULL, 0x0, + "hTerm",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[2], + { "ulRxPktFilter", "octvc1.net.rtp_session.member.activate.ulrxpktfilter", + FT_UINT32,BASE_DEC, VALS(vals_tOCTVC1_NET_RX_PKT_FILTER_ENUM), 0x0, + "ulRxPktFilter",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[3], + { "ulLocalUdpPortRtp", "octvc1.net.rtp_session.member.activate.ullocaludpportrtp", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulLocalUdpPortRtp",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[4], + { "ulLocalUdpPortRtcp", "octvc1.net.rtp_session.member.activate.ullocaludpportrtcp", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulLocalUdpPortRtcp",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[5], + { "ulLocalUdpPortT38", "octvc1.net.rtp_session.member.activate.ullocaludpportt38", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulLocalUdpPortT38",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[6], + { "ulLocalCnameLength", "octvc1.net.rtp_session.member.activate.ullocalcnamelength", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLocalCnameLength",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[7], + { "achLocalCname", "octvc1.net.rtp_session.member.activate.achlocalcname", + FT_STRING, BASE_NONE, NULL, 0x0, + "achLocalCname",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[8], + { "ulLocalForcedRtpParmMask", "octvc1.net.rtp_session.member.activate.ullocalforcedrtpparmmask", + FT_NONE, BASE_NONE, NULL, 0x0, + "ulLocalForcedRtpParmMask",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[9], + { "ulLocalForcedSsrc", "octvc1.net.rtp_session.member.activate.ullocalforcedssrc", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLocalForcedSsrc",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[10], + { "ulLocalForcedInitialSeqNumber", "octvc1.net.rtp_session.member.activate.ullocalforcedinitialseqnumber", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLocalForcedInitialSeqNumber",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[11], + { "ulRemoteAutoDetectFlag", "octvc1.net.rtp_session.member.activate.ulremoteautodetectflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulRemoteAutoDetectFlag",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[12], + { "RemoteUdpAddressRtp", "octvc1.net.rtp_session.member.activate.remoteudpaddressrtp", + FT_STRING, BASE_NONE, NULL, 0x0, + "RemoteUdpAddressRtp",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[13], + { "RemoteUdpAddressRtcp", "octvc1.net.rtp_session.member.activate.remoteudpaddressrtcp", + FT_STRING, BASE_NONE, NULL, 0x0, + "RemoteUdpAddressRtcp",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[14], + { "RemoteUdpAddressT38", "octvc1.net.rtp_session.member.activate.remoteudpaddresst38", + FT_STRING, BASE_NONE, NULL, 0x0, + "RemoteUdpAddressT38",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[15], + { "ulRemoteCnameLength", "octvc1.net.rtp_session.member.activate.ulremotecnamelength", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRemoteCnameLength",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[16], + { "achRemoteCname", "octvc1.net.rtp_session.member.activate.achremotecname", + FT_STRING, BASE_NONE, NULL, 0x0, + "achRemoteCname",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[17], + { "ulRemoteForcedRtpParmMask", "octvc1.net.rtp_session.member.activate.ulremoteforcedrtpparmmask", + FT_NONE, BASE_NONE, NULL, 0x0, + "ulRemoteForcedRtpParmMask",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[18], + { "ulRemoteForcedSsrc", "octvc1.net.rtp_session.member.activate.ulremoteforcedssrc", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRemoteForcedSsrc",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[19], + { "ulRemoteForcedInitialSeqNumber", "octvc1.net.rtp_session.member.activate.ulremoteforcedinitialseqnumber", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRemoteForcedInitialSeqNumber",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[20], + { "ulIpv4TimeToLive", "octvc1.net.rtp_session.member.activate.ulipv4timetolive", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulIpv4TimeToLive",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[21], + { "ulIpv4TypeOfService", "octvc1.net.rtp_session.member.activate.ulipv4typeofservice", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulIpv4TypeOfService",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[22], + { "ulIpv6HopLimit", "octvc1.net.rtp_session.member.activate.ulipv6hoplimit", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulIpv6HopLimit",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[23], + { "ulIpv6FlowLabel", "octvc1.net.rtp_session.member.activate.ulipv6flowlabel", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulIpv6FlowLabel",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[24], + { "ulIpv6TrafficClass", "octvc1.net.rtp_session.member.activate.ulipv6trafficclass", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulIpv6TrafficClass",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[25], + { "ulNumProfEntry", "octvc1.net.rtp_session.member.activate.ulnumprofentry", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulNumProfEntry",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[26], + { "aRtpProfEntry", "octvc1.net.rtp_session.member.activate.artpprofentry", + FT_NONE, BASE_NONE, NULL, 0x0, + "aRtpProfEntry",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[27], + { "SenderSrtp", "octvc1.net.rtp_session.member.activate.sendersrtp", + FT_NONE, BASE_NONE, NULL, 0x0, + "SenderSrtp",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[28], + { "SenderSrtpKey", "octvc1.net.rtp_session.member.activate.sendersrtpkey", + FT_NONE, BASE_NONE, NULL, 0x0, + "SenderSrtpKey",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[29], + { "ReceiverSrtp", "octvc1.net.rtp_session.member.activate.receiversrtp", + FT_NONE, BASE_NONE, NULL, 0x0, + "ReceiverSrtp",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[30], + { "ReceiverSrtpKey", "octvc1.net.rtp_session.member.activate.receiversrtpkey", + FT_NONE, BASE_NONE, NULL, 0x0, + "ReceiverSrtpKey",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP[5]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP[0], + { "hRtpSession", "octvc1.net.rtp_session.member.activate.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP[1], + { "ulLocalMemberId", "octvc1.net.rtp_session.member.activate.ullocalmemberid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLocalMemberId",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP[2], + { "ulLocalSsrc", "octvc1.net.rtp_session.member.activate.ullocalssrc", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLocalSsrc",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP[3], + { "ulLocalInitialSeqNumber", "octvc1.net.rtp_session.member.activate.ullocalinitialseqnumber", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLocalInitialSeqNumber",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_CMD[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_CMD; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_CMD[0], + { "hRtpSession", "octvc1.net.rtp_session.member.deactivate.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_CMD[1], + { "ulLocalMemberId", "octvc1.net.rtp_session.member.deactivate.ullocalmemberid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLocalMemberId",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_RSP; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_RSP[0], + { "hRtpSession", "octvc1.net.rtp_session.member.deactivate.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_RSP[1], + { "ulLocalMemberId", "octvc1.net.rtp_session.member.deactivate.ullocalmemberid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLocalMemberId",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD[4]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD[0], + { "hRtpSession", "octvc1.net.rtp_session.member.pause.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD[1], + { "ulLocalMemberId", "octvc1.net.rtp_session.member.pause.ullocalmemberid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLocalMemberId",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD[2], + { "ulTxRtpPauseFlag", "octvc1.net.rtp_session.member.pause.ultxrtppauseflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulTxRtpPauseFlag",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_RSP; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_RSP[0], + { "hRtpSession", "octvc1.net.rtp_session.member.pause.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_RSP[1], + { "ulLocalMemberId", "octvc1.net.rtp_session.member.pause.ullocalmemberid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLocalMemberId",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[20]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[0], + { "hRtpSession", "octvc1.net.rtp_session.member.modify.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[1], + { "ulLocalMemberId", "octvc1.net.rtp_session.member.modify.ullocalmemberid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLocalMemberId",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[2], + { "ulModifyMask", "octvc1.net.rtp_session.member.modify.ulmodifymask", + FT_NONE, BASE_NONE, NULL, 0x0, + "ulModifyMask",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[3], + { "ulRemoteAutoDetectFlag", "octvc1.net.rtp_session.member.modify.ulremoteautodetectflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulRemoteAutoDetectFlag",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[4], + { "ulLocalUdpPortRtp", "octvc1.net.rtp_session.member.modify.ullocaludpportrtp", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulLocalUdpPortRtp",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[5], + { "ulLocalUdpPortRtcp", "octvc1.net.rtp_session.member.modify.ullocaludpportrtcp", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulLocalUdpPortRtcp",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[6], + { "ulLocalUdpPortT38", "octvc1.net.rtp_session.member.modify.ullocaludpportt38", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulLocalUdpPortT38",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[7], + { "RemoteUdpAddressRtp", "octvc1.net.rtp_session.member.modify.remoteudpaddressrtp", + FT_STRING, BASE_NONE, NULL, 0x0, + "RemoteUdpAddressRtp",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[8], + { "RemoteUdpAddressRtcp", "octvc1.net.rtp_session.member.modify.remoteudpaddressrtcp", + FT_STRING, BASE_NONE, NULL, 0x0, + "RemoteUdpAddressRtcp",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[9], + { "RemoteUdpAddressT38", "octvc1.net.rtp_session.member.modify.remoteudpaddresst38", + FT_STRING, BASE_NONE, NULL, 0x0, + "RemoteUdpAddressT38",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[10], + { "ulRemoteCnameLength", "octvc1.net.rtp_session.member.modify.ulremotecnamelength", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRemoteCnameLength",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[11], + { "achRemoteCname", "octvc1.net.rtp_session.member.modify.achremotecname", + FT_STRING, BASE_NONE, NULL, 0x0, + "achRemoteCname",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[12], + { "ulRemoteForcedRtpParmMask", "octvc1.net.rtp_session.member.modify.ulremoteforcedrtpparmmask", + FT_NONE, BASE_NONE, NULL, 0x0, + "ulRemoteForcedRtpParmMask",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[13], + { "ulRemoteForcedSsrc", "octvc1.net.rtp_session.member.modify.ulremoteforcedssrc", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRemoteForcedSsrc",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[14], + { "ulRemoteForcedInitialSeqNumber", "octvc1.net.rtp_session.member.modify.ulremoteforcedinitialseqnumber", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRemoteForcedInitialSeqNumber",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[15], + { "SenderSrtp", "octvc1.net.rtp_session.member.modify.sendersrtp", + FT_NONE, BASE_NONE, NULL, 0x0, + "SenderSrtp",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[16], + { "SenderSrtpKey", "octvc1.net.rtp_session.member.modify.sendersrtpkey", + FT_NONE, BASE_NONE, NULL, 0x0, + "SenderSrtpKey",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[17], + { "ReceiverSrtp", "octvc1.net.rtp_session.member.modify.receiversrtp", + FT_NONE, BASE_NONE, NULL, 0x0, + "ReceiverSrtp",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[18], + { "ReceiverSrtpKey", "octvc1.net.rtp_session.member.modify.receiversrtpkey", + FT_NONE, BASE_NONE, NULL, 0x0, + "ReceiverSrtpKey",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RSP; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RSP[0], + { "hRtpSession", "octvc1.net.rtp_session.member.modify.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RSP[1], + { "ulLocalMemberId", "octvc1.net.rtp_session.member.modify.ullocalmemberid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLocalMemberId",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD[7]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD[0], + { "ulForceFlag", "octvc1.net.rtp_session.member.connect.ulforceflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulForceFlag",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD[1], + { "ulRecoverNtpFromRtpTsFlag", "octvc1.net.rtp_session.member.connect.ulrecoverntpfromrtptsflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulRecoverNtpFromRtpTsFlag",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD[2], + { "hRtpSession", "octvc1.net.rtp_session.member.connect.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD[3], + { "ulLocalMemberId", "octvc1.net.rtp_session.member.connect.ullocalmemberid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLocalMemberId",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD[4], + { "hRtpSessionAssociated", "octvc1.net.rtp_session.member.connect.hrtpsessionassociated", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSessionAssociated",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD[5], + { "ulLocalMemberIdAssociated", "octvc1.net.rtp_session.member.connect.ullocalmemberidassociated", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLocalMemberIdAssociated",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP[7]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP[0], + { "hRtpSession", "octvc1.net.rtp_session.member.connect.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP[1], + { "ulLocalMemberId", "octvc1.net.rtp_session.member.connect.ullocalmemberid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLocalMemberId",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP[2], + { "RtpMemberPrevConnInfo", "octvc1.net.rtp_session.member.connect.rtpmemberprevconninfo", + FT_NONE, BASE_NONE, NULL, 0x0, + "RtpMemberPrevConnInfo",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP[3], + { "hRtpSessionAssociated", "octvc1.net.rtp_session.member.connect.hrtpsessionassociated", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSessionAssociated",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP[4], + { "ulLocalMemberIdAssociated", "octvc1.net.rtp_session.member.connect.ullocalmemberidassociated", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLocalMemberIdAssociated",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP[5], + { "RtpMemberPrevConnInfoAssociated", "octvc1.net.rtp_session.member.connect.rtpmemberprevconninfoassociated", + FT_NONE, BASE_NONE, NULL, 0x0, + "RtpMemberPrevConnInfoAssociated",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_CMD[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_CMD; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_CMD[0], + { "hRtpSession", "octvc1.net.rtp_session.member.disconnect.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_CMD[1], + { "ulLocalMemberId", "octvc1.net.rtp_session.member.disconnect.ullocalmemberid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLocalMemberId",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP[4]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP[0], + { "hRtpSession", "octvc1.net.rtp_session.member.disconnect.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP[1], + { "ulLocalMemberId", "octvc1.net.rtp_session.member.disconnect.ullocalmemberid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLocalMemberId",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP[2], + { "RtpMemberPrevConnInfo", "octvc1.net.rtp_session.member.disconnect.rtpmemberprevconninfo", + FT_NONE, BASE_NONE, NULL, 0x0, + "RtpMemberPrevConnInfo",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_CMD; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_CMD[0], + { "SubObjectIdGet", "octvc1.net.rtp_session.member.info.subobjectidget", + FT_NONE, BASE_NONE, NULL, 0x0, + "SubObjectIdGet",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[30]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[0], + { "SubObjectIdGet", "octvc1.net.rtp_session.member.info.subobjectidget", + FT_NONE, BASE_NONE, NULL, 0x0, + "SubObjectIdGet",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[1], + { "ulOperationMode", "octvc1.net.rtp_session.member.info.uloperationmode", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_OPERATION_MODE_ENUM), 0x0, + "ulOperationMode",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[2], + { "ulTxRtpPauseFlag", "octvc1.net.rtp_session.member.info.ultxrtppauseflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulTxRtpPauseFlag",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[3], + { "ulTxRtcpPauseFlag", "octvc1.net.rtp_session.member.info.ultxrtcppauseflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulTxRtcpPauseFlag",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[4], + { "hTerm", "octvc1.net.rtp_session.member.info.hterm", + FT_NONE, BASE_NONE, NULL, 0x0, + "hTerm",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[5], + { "hDestObj", "octvc1.net.rtp_session.member.info.hdestobj", + FT_NONE, BASE_NONE, NULL, 0x0, + "hDestObj",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[6], + { "ulDestObjPort", "octvc1.net.rtp_session.member.info.uldestobjport", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulDestObjPort",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[7], + { "ulRxPktFilter", "octvc1.net.rtp_session.member.info.ulrxpktfilter", + FT_UINT32,BASE_DEC, VALS(vals_tOCTVC1_NET_RX_PKT_FILTER_ENUM), 0x0, + "ulRxPktFilter",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[8], + { "ulDestObjFifoId", "octvc1.net.rtp_session.member.info.uldestobjfifoid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulDestObjFifoId",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[9], + { "ulLocalUdpPortRtp", "octvc1.net.rtp_session.member.info.ullocaludpportrtp", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulLocalUdpPortRtp",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[10], + { "ulLocalUdpPortRtcp", "octvc1.net.rtp_session.member.info.ullocaludpportrtcp", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulLocalUdpPortRtcp",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[11], + { "ulLocalUdpPortT38", "octvc1.net.rtp_session.member.info.ullocaludpportt38", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulLocalUdpPortT38",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[12], + { "ulLocalCnameLength", "octvc1.net.rtp_session.member.info.ullocalcnamelength", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLocalCnameLength",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[13], + { "achLocalCname", "octvc1.net.rtp_session.member.info.achlocalcname", + FT_STRING, BASE_NONE, NULL, 0x0, + "achLocalCname",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[14], + { "ulRemoteAutoDetectFlag", "octvc1.net.rtp_session.member.info.ulremoteautodetectflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulRemoteAutoDetectFlag",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[15], + { "ulValidRemoteFlag", "octvc1.net.rtp_session.member.info.ulvalidremoteflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulValidRemoteFlag",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[16], + { "RemoteUdpAddressRtp", "octvc1.net.rtp_session.member.info.remoteudpaddressrtp", + FT_STRING, BASE_NONE, NULL, 0x0, + "RemoteUdpAddressRtp",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[17], + { "RemoteUdpAddressRtcp", "octvc1.net.rtp_session.member.info.remoteudpaddressrtcp", + FT_STRING, BASE_NONE, NULL, 0x0, + "RemoteUdpAddressRtcp",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[18], + { "RemoteUdpAddressT38", "octvc1.net.rtp_session.member.info.remoteudpaddresst38", + FT_STRING, BASE_NONE, NULL, 0x0, + "RemoteUdpAddressT38",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[19], + { "ulRemoteCnameLength", "octvc1.net.rtp_session.member.info.ulremotecnamelength", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRemoteCnameLength",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[20], + { "achRemoteCname", "octvc1.net.rtp_session.member.info.achremotecname", + FT_STRING, BASE_NONE, NULL, 0x0, + "achRemoteCname",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[21], + { "ulIpv4TimeToLive", "octvc1.net.rtp_session.member.info.ulipv4timetolive", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulIpv4TimeToLive",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[22], + { "ulIpv4TypeOfService", "octvc1.net.rtp_session.member.info.ulipv4typeofservice", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulIpv4TypeOfService",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[23], + { "ulIpv6HopLimit", "octvc1.net.rtp_session.member.info.ulipv6hoplimit", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulIpv6HopLimit",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[24], + { "ulIpv6FlowLabel", "octvc1.net.rtp_session.member.info.ulipv6flowlabel", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulIpv6FlowLabel",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[25], + { "ulIpv6TrafficClass", "octvc1.net.rtp_session.member.info.ulipv6trafficclass", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulIpv6TrafficClass",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[26], + { "ulNumProfEntry", "octvc1.net.rtp_session.member.info.ulnumprofentry", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulNumProfEntry",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[27], + { "aRtpProfEntry", "octvc1.net.rtp_session.member.info.artpprofentry", + FT_NONE, BASE_NONE, NULL, 0x0, + "aRtpProfEntry",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[28], + { "RtpMemberConnInfo", "octvc1.net.rtp_session.member.info.rtpmemberconninfo", + FT_NONE, BASE_NONE, NULL, 0x0, + "RtpMemberConnInfo",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_CMD; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_CMD[0], + { "SubObjectIdGet", "octvc1.net.rtp_session.member.local.stats.subobjectidget", + FT_NONE, BASE_NONE, NULL, 0x0, + "SubObjectIdGet",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP[7]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP[0], + { "SubObjectIdGet", "octvc1.net.rtp_session.member.local.stats.subobjectidget", + FT_NONE, BASE_NONE, NULL, 0x0, + "SubObjectIdGet",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP[1], + { "ulRemoteMemberId", "octvc1.net.rtp_session.member.local.stats.ulremotememberid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRemoteMemberId",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP[2], + { "aulReceivedPktCnt", "octvc1.net.rtp_session.member.local.stats.aulreceivedpktcnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "aulReceivedPktCnt",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP[3], + { "aulReceivedByteCnt", "octvc1.net.rtp_session.member.local.stats.aulreceivedbytecnt", + FT_UINT32,BASE_DEC, NULL, 0x0, + "aulReceivedByteCnt",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP[4], + { "SenderStats", "octvc1.net.rtp_session.member.local.stats.senderstats", + FT_NONE, BASE_NONE, NULL, 0x0, + "SenderStats",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP[5], + { "ReceiverStats", "octvc1.net.rtp_session.member.local.stats.receiverstats", + FT_NONE, BASE_NONE, NULL, 0x0, + "ReceiverStats",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_CMD; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_CMD[0], + { "SubObjectIdGet", "octvc1.net.rtp_session.member.remote.stats.subobjectidget", + FT_NONE, BASE_NONE, NULL, 0x0, + "SubObjectIdGet",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP[7]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP[0], + { "SubObjectIdGet", "octvc1.net.rtp_session.member.remote.stats.subobjectidget", + FT_NONE, BASE_NONE, NULL, 0x0, + "SubObjectIdGet",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP[1], + { "ulRoundTripTime", "octvc1.net.rtp_session.member.remote.stats.ulroundtriptime", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulRoundTripTime",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP[2], + { "ulMaxRoundTripTime", "octvc1.net.rtp_session.member.remote.stats.ulmaxroundtriptime", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulMaxRoundTripTime",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP[3], + { "ulAverageRoundTripTime", "octvc1.net.rtp_session.member.remote.stats.ulaverageroundtriptime", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulAverageRoundTripTime",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP[4], + { "SenderStats", "octvc1.net.rtp_session.member.remote.stats.senderstats", + FT_NONE, BASE_NONE, NULL, 0x0, + "SenderStats",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP[5], + { "ReceiverStats", "octvc1.net.rtp_session.member.remote.stats.receiverstats", + FT_NONE, BASE_NONE, NULL, 0x0, + "ReceiverStats",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_CMD; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_CMD[0], + { "SubObjectIdGet", "octvc1.net.rtp_session.member.srtp.info.subobjectidget", + FT_NONE, BASE_NONE, NULL, 0x0, + "SubObjectIdGet",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP[10]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP[0], + { "SubObjectIdGet", "octvc1.net.rtp_session.member.srtp.info.subobjectidget", + FT_NONE, BASE_NONE, NULL, 0x0, + "SubObjectIdGet",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP[1], + { "SenderSrtp", "octvc1.net.rtp_session.member.srtp.info.sendersrtp", + FT_NONE, BASE_NONE, NULL, 0x0, + "SenderSrtp",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP[2], + { "ulSenderSrtpKeyActiveIdx", "octvc1.net.rtp_session.member.srtp.info.ulsendersrtpkeyactiveidx", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulSenderSrtpKeyActiveIdx",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP[3], + { "ulSenderSrtpKeyNum", "octvc1.net.rtp_session.member.srtp.info.ulsendersrtpkeynum", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulSenderSrtpKeyNum",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP[4], + { "aSenderSrtpKeyList", "octvc1.net.rtp_session.member.srtp.info.asendersrtpkeylist", + FT_NONE, BASE_NONE, NULL, 0x0, + "aSenderSrtpKeyList",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP[5], + { "ReceiverSrtp", "octvc1.net.rtp_session.member.srtp.info.receiversrtp", + FT_NONE, BASE_NONE, NULL, 0x0, + "ReceiverSrtp",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP[6], + { "ulReceiverSrtpKeyActiveIdx", "octvc1.net.rtp_session.member.srtp.info.ulreceiversrtpkeyactiveidx", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulReceiverSrtpKeyActiveIdx",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP[7], + { "ulReceiverSrtpKeyNum", "octvc1.net.rtp_session.member.srtp.info.ulreceiversrtpkeynum", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulReceiverSrtpKeyNum",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP[8], + { "aReceiverSrtpKeyList", "octvc1.net.rtp_session.member.srtp.info.areceiversrtpkeylist", + FT_NONE, BASE_NONE, NULL, 0x0, + "aReceiverSrtpKeyList",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_CMD; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_CMD[0], + { "SubObjectIdGet", "octvc1.net.rtp_session.member.srtp.stats.subobjectidget", + FT_NONE, BASE_NONE, NULL, 0x0, + "SubObjectIdGet",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_RSP[4]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_RSP; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_RSP[0], + { "SubObjectIdGet", "octvc1.net.rtp_session.member.srtp.stats.subobjectidget", + FT_NONE, BASE_NONE, NULL, 0x0, + "SubObjectIdGet",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_RSP[1], + { "SenderSrtpStats", "octvc1.net.rtp_session.member.srtp.stats.sendersrtpstats", + FT_NONE, BASE_NONE, NULL, 0x0, + "SenderSrtpStats",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_RSP[2], + { "ReceiverSrtpStats", "octvc1.net.rtp_session.member.srtp.stats.receiversrtpstats", + FT_NONE, BASE_NONE, NULL, 0x0, + "ReceiverSrtpStats",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD[9]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD[0], + { "hRtpSession", "octvc1.net.rtp_session.member.srtp_key_list.modify.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD[1], + { "ulLocalMemberId", "octvc1.net.rtp_session.member.srtp_key_list.modify.ullocalmemberid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLocalMemberId",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD[2], + { "ulSenderSrtpKeyActiveIdx", "octvc1.net.rtp_session.member.srtp_key_list.modify.ulsendersrtpkeyactiveidx", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulSenderSrtpKeyActiveIdx",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD[3], + { "ulSenderSrtpKeyNum", "octvc1.net.rtp_session.member.srtp_key_list.modify.ulsendersrtpkeynum", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulSenderSrtpKeyNum",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD[4], + { "aSenderSrtpKeyList", "octvc1.net.rtp_session.member.srtp_key_list.modify.asendersrtpkeylist", + FT_NONE, BASE_NONE, NULL, 0x0, + "aSenderSrtpKeyList",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD[5], + { "ulReceiverSrtpKeyActiveIdx", "octvc1.net.rtp_session.member.srtp_key_list.modify.ulreceiversrtpkeyactiveidx", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulReceiverSrtpKeyActiveIdx",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD[6], + { "ulReceiverSrtpKeyNum", "octvc1.net.rtp_session.member.srtp_key_list.modify.ulreceiversrtpkeynum", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulReceiverSrtpKeyNum",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD[7], + { "aReceiverSrtpKeyList", "octvc1.net.rtp_session.member.srtp_key_list.modify.areceiversrtpkeylist", + FT_NONE, BASE_NONE, NULL, 0x0, + "aReceiverSrtpKeyList",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_RSP; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_RSP[0], + { "hRtpSession", "octvc1.net.rtp_session.member.srtp_key_list.modify.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_RSP[1], + { "ulLocalMemberId", "octvc1.net.rtp_session.member.srtp_key_list.modify.ullocalmemberid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLocalMemberId",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD[5]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD[0], + { "hRtpSession", "octvc1.net.rtp_session.member.rtp_profile_entry.modify.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD[1], + { "ulLocalMemberId", "octvc1.net.rtp_session.member.rtp_profile_entry.modify.ullocalmemberid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLocalMemberId",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD[2], + { "ulNumEntry", "octvc1.net.rtp_session.member.rtp_profile_entry.modify.ulnumentry", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulNumEntry",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD[3], + { "aEntry", "octvc1.net.rtp_session.member.rtp_profile_entry.modify.aentry", + FT_NONE, BASE_NONE, NULL, 0x0, + "aEntry",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_RSP; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_RSP[0], + { "hRtpSession", "octvc1.net.rtp_session.member.rtp_profile_entry.modify.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_RSP[1], + { "ulLocalMemberId", "octvc1.net.rtp_session.member.rtp_profile_entry.modify.ullocalmemberid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLocalMemberId",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD[13]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD[0], + { "hRtpSession", "octvc1.net.rtp_session.custom_member_ipudp.activate.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD[1], + { "hTerm", "octvc1.net.rtp_session.custom_member_ipudp.activate.hterm", + FT_NONE, BASE_NONE, NULL, 0x0, + "hTerm",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD[2], + { "aStream", "octvc1.net.rtp_session.custom_member_ipudp.activate.astream", + FT_NONE, BASE_NONE, NULL, 0x0, + "aStream",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD[3], + { "ulLocalForcedRtpParmMask", "octvc1.net.rtp_session.custom_member_ipudp.activate.ullocalforcedrtpparmmask", + FT_NONE, BASE_NONE, NULL, 0x0, + "ulLocalForcedRtpParmMask",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD[4], + { "ulLocalForcedSsrc", "octvc1.net.rtp_session.custom_member_ipudp.activate.ullocalforcedssrc", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLocalForcedSsrc",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD[5], + { "ulLocalForcedInitialSeqNumber", "octvc1.net.rtp_session.custom_member_ipudp.activate.ullocalforcedinitialseqnumber", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLocalForcedInitialSeqNumber",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD[6], + { "ulNumRtpProfEntry", "octvc1.net.rtp_session.custom_member_ipudp.activate.ulnumrtpprofentry", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulNumRtpProfEntry",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD[7], + { "aRtpProfEntry", "octvc1.net.rtp_session.custom_member_ipudp.activate.artpprofentry", + FT_NONE, BASE_NONE, NULL, 0x0, + "aRtpProfEntry",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD[8], + { "ulLocalCnameByteLength", "octvc1.net.rtp_session.custom_member_ipudp.activate.ullocalcnamebytelength", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulLocalCnameByteLength",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD[9], + { "achLocalCname", "octvc1.net.rtp_session.custom_member_ipudp.activate.achlocalcname", + FT_STRING, BASE_NONE, NULL, 0x0, + "achLocalCname",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD[10], + { "ulRemoteCnameByteLength", "octvc1.net.rtp_session.custom_member_ipudp.activate.ulremotecnamebytelength", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulRemoteCnameByteLength",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD[11], + { "achRemoteCname", "octvc1.net.rtp_session.custom_member_ipudp.activate.achremotecname", + FT_STRING, BASE_NONE, NULL, 0x0, + "achRemoteCname",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_RSP; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_RSP[0], + { "hRtpSession", "octvc1.net.rtp_session.custom_member_ipudp.activate.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_RSP[1], + { "ulLocalMemberId", "octvc1.net.rtp_session.custom_member_ipudp.activate.ullocalmemberid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLocalMemberId",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD[9]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD[0], + { "hRtpSession", "octvc1.net.rtp_session.custom_member_ipudp.modify.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD[1], + { "ulLocalMemberId", "octvc1.net.rtp_session.custom_member_ipudp.modify.ullocalmemberid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLocalMemberId",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD[2], + { "ulModifyMask", "octvc1.net.rtp_session.custom_member_ipudp.modify.ulmodifymask", + FT_NONE, BASE_NONE, NULL, 0x0, + "ulModifyMask",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD[3], + { "aStream", "octvc1.net.rtp_session.custom_member_ipudp.modify.astream", + FT_NONE, BASE_NONE, NULL, 0x0, + "aStream",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD[4], + { "ulLocalCnameByteLength", "octvc1.net.rtp_session.custom_member_ipudp.modify.ullocalcnamebytelength", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulLocalCnameByteLength",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD[5], + { "achLocalCname", "octvc1.net.rtp_session.custom_member_ipudp.modify.achlocalcname", + FT_STRING, BASE_NONE, NULL, 0x0, + "achLocalCname",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD[6], + { "ulRemoteCnameByteLength", "octvc1.net.rtp_session.custom_member_ipudp.modify.ulremotecnamebytelength", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulRemoteCnameByteLength",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD[7], + { "achRemoteCname", "octvc1.net.rtp_session.custom_member_ipudp.modify.achremotecname", + FT_STRING, BASE_NONE, NULL, 0x0, + "achRemoteCname",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_RSP; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_RSP[0], + { "hRtpSession", "octvc1.net.rtp_session.custom_member_ipudp.modify.hrtpsession", + FT_NONE, BASE_NONE, NULL, 0x0, + "hRtpSession",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_RSP[1], + { "ulLocalMemberId", "octvc1.net.rtp_session.custom_member_ipudp.modify.ullocalmemberid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulLocalMemberId",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_CMD; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_CMD[0], + { "SubObjectIdGet", "octvc1.net.rtp_session.custom_member_ipudp.info.subobjectidget", + FT_NONE, BASE_NONE, NULL, 0x0, + "SubObjectIdGet",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP[11]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP; + +void register_tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP[0], + { "SubObjectIdGet", "octvc1.net.rtp_session.custom_member_ipudp.info.subobjectidget", + FT_NONE, BASE_NONE, NULL, 0x0, + "SubObjectIdGet",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP[1], + { "ulOperationMode", "octvc1.net.rtp_session.custom_member_ipudp.info.uloperationmode", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_OPERATION_MODE_ENUM), 0x0, + "ulOperationMode",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP[2], + { "hTerm", "octvc1.net.rtp_session.custom_member_ipudp.info.hterm", + FT_NONE, BASE_NONE, NULL, 0x0, + "hTerm",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP[3], + { "aStream", "octvc1.net.rtp_session.custom_member_ipudp.info.astream", + FT_NONE, BASE_NONE, NULL, 0x0, + "aStream",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP[4], + { "ulNumRtpProfEntry", "octvc1.net.rtp_session.custom_member_ipudp.info.ulnumrtpprofentry", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulNumRtpProfEntry",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP[5], + { "aRtpProfEntry", "octvc1.net.rtp_session.custom_member_ipudp.info.artpprofentry", + FT_NONE, BASE_NONE, NULL, 0x0, + "aRtpProfEntry",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP[6], + { "ulLocalCnameByteLength", "octvc1.net.rtp_session.custom_member_ipudp.info.ullocalcnamebytelength", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulLocalCnameByteLength",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP[7], + { "achLocalCname", "octvc1.net.rtp_session.custom_member_ipudp.info.achlocalcname", + FT_STRING, BASE_NONE, NULL, 0x0, + "achLocalCname",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP[8], + { "ulRemoteCnameByteLength", "octvc1.net.rtp_session.custom_member_ipudp.info.ulremotecnamebytelength", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulRemoteCnameByteLength",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP[9], + { "achRemoteCname", "octvc1.net.rtp_session.custom_member_ipudp.info.achremotecname", + FT_STRING, BASE_NONE, NULL, 0x0, + "achRemoteCname",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD[12]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD; + +void register_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD[0], + { "IpAddress", "octvc1.net.local_host.open.ipaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "IpAddress",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD[1], + { "NetworkMask", "octvc1.net.local_host.open.networkmask", + FT_STRING, BASE_NONE, NULL, 0x0, + "NetworkMask",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD[2], + { "ulAddrAutoConfigFlag", "octvc1.net.local_host.open.uladdrautoconfigflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulAddrAutoConfigFlag",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD[3], + { "ulMuteOnAddrExpireFlag", "octvc1.net.local_host.open.ulmuteonaddrexpireflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulMuteOnAddrExpireFlag",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD[4], + { "hLink", "octvc1.net.local_host.open.hlink", + FT_NONE, BASE_NONE, NULL, 0x0, + "hLink",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD[5], + { "ulUserEventId", "octvc1.net.local_host.open.ulusereventid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulUserEventId",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD[6], + { "ulEventMask", "octvc1.net.local_host.open.uleventmask", + FT_NONE, BASE_NONE, NULL, 0x0, + "ulEventMask",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD[7], + { "ulEventThrottle", "octvc1.net.local_host.open.uleventthrottle", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulEventThrottle",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD[8], + { "hEventDestObj", "octvc1.net.local_host.open.heventdestobj", + FT_NONE, BASE_NONE, NULL, 0x0, + "hEventDestObj",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD[9], + { "ulEventDestObjPort", "octvc1.net.local_host.open.uleventdestobjport", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulEventDestObjPort",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD[10], + { "ulEventDestObjFifoId", "octvc1.net.local_host.open.uleventdestobjfifoid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulEventDestObjFifoId",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_LOCAL_HOST_OPEN_RSP; + +void register_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_RSP[0], + { "hLocalHost", "octvc1.net.local_host.open.hlocalhost", + FT_NONE, BASE_NONE, NULL, 0x0, + "hLocalHost",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_RSP[1], + { "ulAddrStatus", "octvc1.net.local_host.open.uladdrstatus", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_ENUM), 0x0, + "ulAddrStatus",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_LOCAL_HOST_OPEN_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_CMD; + +void register_tOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_CMD[0], + { "hLocalHost", "octvc1.net.local_host.close.hlocalhost", + FT_NONE, BASE_NONE, NULL, 0x0, + "hLocalHost",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_RSP; + +void register_tOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_RSP[0], + { "hLocalHost", "octvc1.net.local_host.close.hlocalhost", + FT_NONE, BASE_NONE, NULL, 0x0, + "hLocalHost",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_LOCAL_HOST_INFO_CMD; + +void register_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_CMD[0], + { "ObjectGet", "octvc1.net.local_host.info.objectget", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectGet",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_LOCAL_HOST_INFO_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP[13]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP; + +void register_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP[0], + { "ObjectGet", "octvc1.net.local_host.info.objectget", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectGet",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP[1], + { "ulAddrAutoConfigFlag", "octvc1.net.local_host.info.uladdrautoconfigflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulAddrAutoConfigFlag",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP[2], + { "IpAddress", "octvc1.net.local_host.info.ipaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "IpAddress",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP[3], + { "NetworkMask", "octvc1.net.local_host.info.networkmask", + FT_STRING, BASE_NONE, NULL, 0x0, + "NetworkMask",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP[4], + { "hLink", "octvc1.net.local_host.info.hlink", + FT_NONE, BASE_NONE, NULL, 0x0, + "hLink",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP[5], + { "ulAddrStatus", "octvc1.net.local_host.info.uladdrstatus", + FT_UINT32,BASE_HEX, VALS(vals_tOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_ENUM), 0x0, + "ulAddrStatus",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP[6], + { "ulUserEventId", "octvc1.net.local_host.info.ulusereventid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulUserEventId",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP[7], + { "ulEventThrottle", "octvc1.net.local_host.info.uleventthrottle", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulEventThrottle",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP[8], + { "ulEventMask", "octvc1.net.local_host.info.uleventmask", + FT_NONE, BASE_NONE, NULL, 0x0, + "ulEventMask",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP[9], + { "hEventDestObj", "octvc1.net.local_host.info.heventdestobj", + FT_NONE, BASE_NONE, NULL, 0x0, + "hEventDestObj",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP[10], + { "ulEventDestObjPort", "octvc1.net.local_host.info.uleventdestobjport", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulEventDestObjPort",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP[11], + { "ulEventDestObjFifoId", "octvc1.net.local_host.info.uleventdestobjfifoid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulEventDestObjFifoId",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_LOCAL_HOST_STATS_CMD[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_LOCAL_HOST_STATS_CMD; + +void register_tOCTVC1_NET_MSG_LOCAL_HOST_STATS_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_STATS_CMD[0], + { "ObjectGet", "octvc1.net.local_host.stats.objectget", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectGet",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_STATS_CMD[1], + { "ulResetStatsFlag", "octvc1.net.local_host.stats.ulresetstatsflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulResetStatsFlag",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_LOCAL_HOST_STATS_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_LOCAL_HOST_STATS_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_LOCAL_HOST_STATS_RSP; + +void register_tOCTVC1_NET_MSG_LOCAL_HOST_STATS_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_STATS_RSP[0], + { "ObjectGet", "octvc1.net.local_host.stats.objectget", + FT_NONE, BASE_NONE, NULL, 0x0, + "ObjectGet",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_STATS_RSP[1], + { "ulApiEventCnt", "octvc1.net.local_host.stats.ulapieventcnt", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulApiEventCnt",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_LOCAL_HOST_STATS_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD[8]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD; + +void register_tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD[0], + { "hLocalHost", "octvc1.net.local_host.icmp_ping.send.hlocalhost", + FT_NONE, BASE_NONE, NULL, 0x0, + "hLocalHost",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD[1], + { "RemoteIpAddress", "octvc1.net.local_host.icmp_ping.send.remoteipaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "RemoteIpAddress",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD[2], + { "ulTimeout", "octvc1.net.local_host.icmp_ping.send.ultimeout", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulTimeout",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD[3], + { "ulTimeToLive", "octvc1.net.local_host.icmp_ping.send.ultimetolive", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulTimeToLive",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD[4], + { "ulUserEventId", "octvc1.net.local_host.icmp_ping.send.ulusereventid", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulUserEventId",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD[5], + { "ulPayloadLength", "octvc1.net.local_host.icmp_ping.send.ulpayloadlength", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulPayloadLength",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD[6], + { "abyPayload", "octvc1.net.local_host.icmp_ping.send.abypayload", + FT_BYTES, BASE_NONE, NULL, 0x0, + "abyPayload",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_RSP; + +void register_tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_RSP[0], + { "hLocalHost", "octvc1.net.local_host.icmp_ping.send.hlocalhost", + FT_NONE, BASE_NONE, NULL, 0x0, + "hLocalHost",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD[4]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD; + +void register_tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD[0], + { "hLocalHost", "octvc1.net.local_host.addr_validate.start.hlocalhost", + FT_NONE, BASE_NONE, NULL, 0x0, + "hLocalHost",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD[1], + { "ulProbeIntervalMs", "octvc1.net.local_host.addr_validate.start.ulprobeintervalms", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulProbeIntervalMs",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD[2], + { "ulNumProbe", "octvc1.net.local_host.addr_validate.start.ulnumprobe", + FT_UINT32,BASE_DEC, NULL, 0x0, + "ulNumProbe",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_RSP; + +void register_tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_RSP[0], + { "hLocalHost", "octvc1.net.local_host.addr_validate.start.hlocalhost", + FT_NONE, BASE_NONE, NULL, 0x0, + "hLocalHost",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_CMD[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_LINK_ADD_GATEWAY_CMD; + +void register_tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_CMD[0], + { "hLink", "octvc1.net.link.gateway.add.hlink", + FT_NONE, BASE_NONE, NULL, 0x0, + "hLink",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_CMD[1], + { "IpAddress", "octvc1.net.link.gateway.add.ipaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "IpAddress",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_LINK_ADD_GATEWAY_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_LINK_ADD_GATEWAY_RSP; + +void register_tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_RSP[0], + { "hLink", "octvc1.net.link.gateway.add.hlink", + FT_NONE, BASE_NONE, NULL, 0x0, + "hLink",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_RSP[1], + { "IpAddress", "octvc1.net.link.gateway.add.ipaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "IpAddress",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_LINK_ADD_GATEWAY_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_CMD[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_CMD; + +void register_tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_CMD[0], + { "hLink", "octvc1.net.link.gateway.remove.hlink", + FT_NONE, BASE_NONE, NULL, 0x0, + "hLink",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_CMD[1], + { "IpAddress", "octvc1.net.link.gateway.remove.ipaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "IpAddress",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_RSP; + +void register_tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_RSP[0], + { "hLink", "octvc1.net.link.gateway.remove.hlink", + FT_NONE, BASE_NONE, NULL, 0x0, + "hLink",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_RSP[1], + { "IpAddress", "octvc1.net.link.gateway.remove.ipaddress", + FT_STRING, BASE_NONE, NULL, 0x0, + "IpAddress",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_LINK_INFO_GATEWAY_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_LINK_INFO_GATEWAY_CMD; + +void register_tOCTVC1_NET_MSG_LINK_INFO_GATEWAY_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_LINK_INFO_GATEWAY_CMD[0], + { "GatewayGet", "octvc1.net.link.gateway.info.gatewayget", + FT_NONE, BASE_NONE, NULL, 0x0, + "GatewayGet",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_LINK_INFO_GATEWAY_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_LINK_INFO_GATEWAY_RSP[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_LINK_INFO_GATEWAY_RSP; + +void register_tOCTVC1_NET_MSG_LINK_INFO_GATEWAY_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_LINK_INFO_GATEWAY_RSP[0], + { "GatewayGet", "octvc1.net.link.gateway.info.gatewayget", + FT_NONE, BASE_NONE, NULL, 0x0, + "GatewayGet",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_LINK_INFO_GATEWAY_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD[7]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD; + +void register_tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD[0], + { "hLink", "octvc1.net.link.ipv6_prefix.add.hlink", + FT_NONE, BASE_NONE, NULL, 0x0, + "hLink",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD[1], + { "IPv6Prefix", "octvc1.net.link.ipv6_prefix.add.ipv6prefix", + FT_NONE, BASE_NONE, NULL, 0x0, + "IPv6Prefix",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD[2], + { "ulOnLinkFlag", "octvc1.net.link.ipv6_prefix.add.ulonlinkflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulOnLinkFlag",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD[3], + { "ulAddrAutoConfigFlag", "octvc1.net.link.ipv6_prefix.add.uladdrautoconfigflag", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "ulAddrAutoConfigFlag",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD[4], + { "ulValidLifetimeSec", "octvc1.net.link.ipv6_prefix.add.ulvalidlifetimesec", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulValidLifetimeSec",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD[5], + { "ulPreferredLifetimeSec", "octvc1.net.link.ipv6_prefix.add.ulpreferredlifetimesec", + FT_UINT32,BASE_HEX, NULL, 0x0, + "ulPreferredLifetimeSec",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_RSP; + +void register_tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_RSP[0], + { "hLink", "octvc1.net.link.ipv6_prefix.add.hlink", + FT_NONE, BASE_NONE, NULL, 0x0, + "hLink",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_RSP[1], + { "IPv6Prefix", "octvc1.net.link.ipv6_prefix.add.ipv6prefix", + FT_NONE, BASE_NONE, NULL, 0x0, + "IPv6Prefix",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_CMD[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_CMD; + +void register_tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_CMD[0], + { "hLink", "octvc1.net.link.ipv6_prefix.remove.hlink", + FT_NONE, BASE_NONE, NULL, 0x0, + "hLink",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_CMD[1], + { "IPv6Prefix", "octvc1.net.link.ipv6_prefix.remove.ipv6prefix", + FT_NONE, BASE_NONE, NULL, 0x0, + "IPv6Prefix",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_RSP; + +void register_tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_RSP[0], + { "hLink", "octvc1.net.link.ipv6_prefix.remove.hlink", + FT_NONE, BASE_NONE, NULL, 0x0, + "hLink",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_RSP[1], + { "IPv6Prefix", "octvc1.net.link.ipv6_prefix.remove.ipv6prefix", + FT_NONE, BASE_NONE, NULL, 0x0, + "IPv6Prefix",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_CMD[2]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_CMD; + +void register_tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_CMD(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_CMD[0], + { "IPv6PrefixGet", "octvc1.net.link.ipv6_prefix.info.ipv6prefixget", + FT_NONE, BASE_NONE, NULL, 0x0, + "IPv6PrefixGet",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_CMD.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + +int ahf_tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_RSP[3]; +tWS_ENTITY_HANDLE ws_htOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_RSP; + +void register_tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_RSP(void) +{ + static hf_register_info hf[] = + { + { + &ahf_tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_RSP[0], + { "IPv6PrefixGet", "octvc1.net.link.ipv6_prefix.info.ipv6prefixget", + FT_NONE, BASE_NONE, NULL, 0x0, + "IPv6PrefixGet",HFILL } + + }, + { + &ahf_tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_RSP[1], + { "IPv6PrefixInfo", "octvc1.net.link.ipv6_prefix.info.ipv6prefixinfo", + FT_NONE, BASE_NONE, NULL, 0x0, + "IPv6PrefixInfo",HFILL } + + }, + }; + + static gint* ett[] = + { + &ws_htOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_RSP.ett + }; + + proto_register_field_array( proto_octvc1_ctrl, hf, array_length(hf) ); + +}; + + +/**************************************************************************** + COMMON dissectors + ****************************************************************************/ + + +unsigned int dissect_tOCTVC1_NET_IP_CURSOR(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_NET_IP_CURSOR))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_IP_CURSOR (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_IP_CURSOR)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_NET_IP_CURSOR); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_IP_CURSOR, hLink), "hLink: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 ); + } + { + int ulVers; + unsigned int offs = offset; + ulVers = tvb_get_ntohl( tvb, offs ); + if( ulVers == cOCTVC1_IP_VERSION_ENUM_4 ) + { unsigned int ulIp0; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_IP_CURSOR[1], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: %d.%d.%d.%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ) ); + }else if( ulVers == cOCTVC1_IP_VERSION_ENUM_6 ) + { unsigned int ulIp0,ulIp1,ulIp2,ulIp3; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp1 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp2 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp3 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_IP_CURSOR[1], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: [%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X]", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), + (( ulIp1 & 0xFF000000 ) >> 24 ), + (( ulIp1 & 0x00FF0000 ) >> 16 ), + (( ulIp1 & 0x0000FF00 ) >> 8 ), + ( ulIp1 & 0x000000FF ), + (( ulIp2 & 0xFF000000 ) >> 24 ), + (( ulIp2 & 0x00FF0000 ) >> 16 ), + (( ulIp2 & 0x0000FF00 ) >> 8 ), + ( ulIp2 & 0x000000FF ), + (( ulIp3 & 0xFF000000 ) >> 24 ), + (( ulIp3 & 0x00FF0000 ) >> 16 ), + (( ulIp3 & 0x0000FF00 ) >> 8 ), + ( ulIp3 & 0x000000FF )); + }else + { ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_IP_CURSOR[1], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: Unknowned IP format(%d)",ulVers ); + } + } + offset += sizeof(tOCTVC1_IP_ADDRESS); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_IP_CURSOR[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_IP_CURSOR, ulGetMode), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_IP_CURSOR[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_IP_CURSOR, ulGetMode); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_NET_RTP_PROFILE_ENTRY(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_NET_RTP_PROFILE_ENTRY))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_RTP_PROFILE_ENTRY (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_RTP_PROFILE_ENTRY)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_NET_RTP_PROFILE_ENTRY); + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_RTP_PROFILE_ENTRY[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_RTP_PROFILE_ENTRY, ulRtpPayloadType), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_RTP_PROFILE_ENTRY[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_RTP_PROFILE_ENTRY, ulRtpPayloadType); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_RTP_PROFILE_ENTRY[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_RTP_PROFILE_ENTRY, ulPktEncodingType), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_RTP_PROFILE_ENTRY[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_RTP_PROFILE_ENTRY, ulPktEncodingType); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_NET_RTP_PROFILE_MODIFY_ENTRY(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_NET_RTP_PROFILE_MODIFY_ENTRY))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_RTP_PROFILE_MODIFY_ENTRY (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_RTP_PROFILE_MODIFY_ENTRY)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_NET_RTP_PROFILE_MODIFY_ENTRY); + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_RTP_PROFILE_MODIFY_ENTRY[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_RTP_PROFILE_MODIFY_ENTRY, ulModifyType), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_RTP_PROFILE_MODIFY_ENTRY[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_RTP_PROFILE_MODIFY_ENTRY, ulModifyType); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_RTP_PROFILE_MODIFY_ENTRY, Entry), "Entry:tOCTVC1_NET_RTP_PROFILE_ENTRY"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_RTP_PROFILE_ENTRY( tvb, pinfo, sub_tree2, offset, pExtValue ); + } + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_NET_SRTP_KEY_ENTRY(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_NET_SRTP_KEY_ENTRY))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_SRTP_KEY_ENTRY (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_SRTP_KEY_ENTRY)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_NET_SRTP_KEY_ENTRY); + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_KEY_ENTRY, ulMasterKeyBitSize), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_SRTP_KEY_ENTRY, ulMasterKeyBitSize); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_KEY_ENTRY, abyMasterKey), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_NET_SRTP_KEY_ENTRY, abyMasterKey); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_KEY_ENTRY, ulMasterSaltBitSize), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_SRTP_KEY_ENTRY, ulMasterSaltBitSize); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_KEY_ENTRY, abyMasterSalt), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_NET_SRTP_KEY_ENTRY, abyMasterSalt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[4], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_KEY_ENTRY, ulKeyDerivationRateLog2), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[4], tvb, offset, + 4, temp_data); + if( ( (unsigned int)temp_data < 0) || ( (unsigned int)temp_data > 24 ) ) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (0..24)]" ); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_SRTP_KEY_ENTRY, ulKeyDerivationRateLog2); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_KEY_ENTRY, aulRtpMasterKeyMaxLifeTime), "aulRtpMasterKeyMaxLifeTime"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<2; 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_NET_SRTP_KEY_ENTRY[5], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_KEY_ENTRY, aulRtpMasterKeyMaxLifeTime), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[5], tvb, offset, + 4, temp_data, "[%d]: 0x%08x", i, temp_data ); + } + offset+=4; + } + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_KEY_ENTRY, aulRtpMasterKeyFromLifeTime), "aulRtpMasterKeyFromLifeTime"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<2; 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_NET_SRTP_KEY_ENTRY[6], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_KEY_ENTRY, aulRtpMasterKeyFromLifeTime), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[6], tvb, offset, + 4, temp_data, "[%d]: 0x%08x", i, temp_data ); + } + offset+=4; + } + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_KEY_ENTRY, aulRtpMasterKeyToLifeTime), "aulRtpMasterKeyToLifeTime"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<2; 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_NET_SRTP_KEY_ENTRY[7], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_KEY_ENTRY, aulRtpMasterKeyToLifeTime), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[7], tvb, offset, + 4, temp_data, "[%d]: 0x%08x", i, temp_data ); + } + offset+=4; + } + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_KEY_ENTRY, aulRtpReKeyEventThreshold), "aulRtpReKeyEventThreshold"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<2; 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_NET_SRTP_KEY_ENTRY[8], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_KEY_ENTRY, aulRtpReKeyEventThreshold), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[8], tvb, offset, + 4, temp_data, "[%d]: 0x%08x", i, temp_data ); + } + offset+=4; + } + } + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[9], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_KEY_ENTRY, ulRtcpMasterKeyMaxLifeTime), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[9], tvb, offset, + 4, temp_data); + if( ( (unsigned int)temp_data < 0) || ( (unsigned int)temp_data > 0x7FFFFFFF ) ) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (0..0x7FFFFFFF)]" ); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_SRTP_KEY_ENTRY, ulRtcpMasterKeyMaxLifeTime); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[10], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_KEY_ENTRY, ulRtcpMasterKeyFromLifeTime), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[10], tvb, offset, + 4, temp_data); + if( ( (unsigned int)temp_data < 0) || ( (unsigned int)temp_data > 0x7FFFFFFF ) ) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (0..0x7FFFFFFF)]" ); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_SRTP_KEY_ENTRY, ulRtcpMasterKeyFromLifeTime); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[11], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_KEY_ENTRY, ulRtcpMasterKeyToLifeTime), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[11], tvb, offset, + 4, temp_data); + if( ( (unsigned int)temp_data < 0) || ( (unsigned int)temp_data > 0x7FFFFFFF ) ) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (0..0x7FFFFFFF)]" ); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_SRTP_KEY_ENTRY, ulRtcpMasterKeyToLifeTime); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[12], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_KEY_ENTRY, ulRtcpReKeyEventThreshold), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[12], tvb, offset, + 4, temp_data); + if( ( (unsigned int)temp_data < 0) || ( (unsigned int)temp_data > 0x7FFFFFFF ) ) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (0..0x7FFFFFFF)]" ); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_SRTP_KEY_ENTRY, ulRtcpReKeyEventThreshold); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_NET_SRTP_KEY_ENTRY[13], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_KEY_ENTRY, abyMkiValue), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_NET_SRTP_KEY_ENTRY, abyMkiValue); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_NET_SRTP_STREAM_CONFIG(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_NET_SRTP_STREAM_CONFIG))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_SRTP_STREAM_CONFIG (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_SRTP_STREAM_CONFIG)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_NET_SRTP_STREAM_CONFIG); + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_CONFIG[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_CONFIG, ulCryptoTransform), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_CONFIG[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_CONFIG, ulCryptoTransform); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_CONFIG[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_CONFIG, ulAuthTransform), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_CONFIG[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_CONFIG, ulAuthTransform); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_CONFIG[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_CONFIG, ulAuthTagBitSize), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_CONFIG[2], tvb, offset, + 4, temp_data); + if( ( (unsigned int)temp_data < 0) || ( (unsigned int)temp_data > 160 ) ) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (0..160)]" ); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_CONFIG, ulAuthTagBitSize); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_CONFIG[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_CONFIG, ulMkiByteSize), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_CONFIG[3], tvb, offset, + 4, temp_data); + if( ( (unsigned int)temp_data < 0) || ( (unsigned int)temp_data > 4 ) ) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (0..4)]" ); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_CONFIG, ulMkiByteSize); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_CONFIG[4], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_CONFIG, ulSessionCryptoKeyBitSize), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_CONFIG[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_CONFIG, ulSessionCryptoKeyBitSize); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_CONFIG[5], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_CONFIG, ulSessionSaltKeyBitSize), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_CONFIG[5], tvb, offset, + 4, temp_data); + if( ( (unsigned int)temp_data < 0) || ( (unsigned int)temp_data > 112 ) ) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (0..112)]" ); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_CONFIG, ulSessionSaltKeyBitSize); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_CONFIG[6], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_CONFIG, ulSessionAuthKeyBitSize), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_CONFIG[6], tvb, offset, + 4, temp_data); + if( ( (unsigned int)temp_data < 0) || ( (unsigned int)temp_data > 512 ) ) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (0..512)]" ); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_CONFIG, ulSessionAuthKeyBitSize); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_CONFIG[7], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_CONFIG, ulInitialRoc), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_CONFIG[7], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_CONFIG, ulInitialRoc); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_CONFIG[8], tvb, offset, + 4,"ulSrtpServiceMask:%s (0x%08x)", pExtValue->pszValue, temp_data); + }else{ + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_CONFIG[8], tvb, offset, + 4,"ulSrtpServiceMask: (0x%08x)", temp_data); + if(temp_data) + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i< mWS_COUNTOF(vals_tOCTVC1_NET_SRTP_SERVICE_MASK); i++ ) + { + if( ( vals_tOCTVC1_NET_SRTP_SERVICE_MASK[i].value && + ( vals_tOCTVC1_NET_SRTP_SERVICE_MASK[i].value & temp_data ) == + vals_tOCTVC1_NET_SRTP_SERVICE_MASK[i].value)) + proto_tree_add_text(sub_tree, tvb, offset,4,"%s", + decode_enumerated_bitfield(vals_tOCTVC1_NET_SRTP_SERVICE_MASK[i].value, 0xFFFFFFFF, (4*8), + VALS(vals_tOCTVC1_NET_SRTP_SERVICE_MASK),"%s")); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_CONFIG, ulSrtpServiceMask); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_CONFIG[9], tvb, offset, + 4,"ulSrtcpServiceMask:%s (0x%08x)", pExtValue->pszValue, temp_data); + }else{ + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_CONFIG[9], tvb, offset, + 4,"ulSrtcpServiceMask: (0x%08x)", temp_data); + if(temp_data) + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i< mWS_COUNTOF(vals_tOCTVC1_NET_SRTP_SERVICE_MASK); i++ ) + { + if( ( vals_tOCTVC1_NET_SRTP_SERVICE_MASK[i].value && + ( vals_tOCTVC1_NET_SRTP_SERVICE_MASK[i].value & temp_data ) == + vals_tOCTVC1_NET_SRTP_SERVICE_MASK[i].value)) + proto_tree_add_text(sub_tree, tvb, offset,4,"%s", + decode_enumerated_bitfield(vals_tOCTVC1_NET_SRTP_SERVICE_MASK[i].value, 0xFFFFFFFF, (4*8), + VALS(vals_tOCTVC1_NET_SRTP_SERVICE_MASK),"%s")); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_CONFIG, ulSrtcpServiceMask); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_NET_SRTP_KEY_STATS(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_NET_SRTP_KEY_STATS))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_SRTP_KEY_STATS (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_SRTP_KEY_STATS)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_NET_SRTP_KEY_STATS); + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_SRTP_KEY_STATS[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_KEY_STATS, ulKeyState), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_SRTP_KEY_STATS[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_SRTP_KEY_STATS, ulKeyState); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_KEY_STATS, aulSrtpPacketCnt), "aulSrtpPacketCnt"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<2; 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_NET_SRTP_KEY_STATS[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_KEY_STATS, aulSrtpPacketCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_NET_SRTP_KEY_STATS[1], tvb, offset, + 4, temp_data, "[%d]: 0x%08x", i, temp_data ); + } + offset+=4; + } + } + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_SRTP_KEY_STATS[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_KEY_STATS, ulSrtcpPacketCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_SRTP_KEY_STATS[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_SRTP_KEY_STATS, ulSrtcpPacketCnt); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_NET_SRTP_STREAM_STATS(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_NET_SRTP_STREAM_STATS))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_SRTP_STREAM_STATS (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_SRTP_STREAM_STATS)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_NET_SRTP_STREAM_STATS); + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_STATS[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_STATS, ulSrtpState), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_STATS[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_STATS, ulSrtpState); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_STATS[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_STATS, ulSsrc), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_STATS[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_STATS, ulSsrc); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_STATS[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_STATS, ulLastRoc), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_STATS[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_STATS, ulLastRoc); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_STATS[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_STATS, ulLastSeq), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_STATS[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_STATS, ulLastSeq); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_STATS[4], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_STATS, ulLastSrtcpIndex), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_STATS[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_STATS, ulLastSrtcpIndex); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_STATS, aulTotalSrtpPktCnt), "aulTotalSrtpPktCnt"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<2; 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_NET_SRTP_STREAM_STATS[5], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_STATS, aulTotalSrtpPktCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_NET_SRTP_STREAM_STATS[5], tvb, offset, + 4, temp_data, "[%d]: 0x%08x", i, temp_data ); + } + offset+=4; + } + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_STATS, aulTotalSrtcpPktCnt), "aulTotalSrtcpPktCnt"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<2; 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_NET_SRTP_STREAM_STATS[6], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_STATS, aulTotalSrtcpPktCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_NET_SRTP_STREAM_STATS[6], tvb, offset, + 4, temp_data, "[%d]: 0x%08x", i, temp_data ); + } + offset+=4; + } + } + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_STATS[7], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_STATS, ulUnAuthPktCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_STATS[7], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_STATS, ulUnAuthPktCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_STATS[8], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_STATS, ulReplayPktCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_STATS[8], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_STATS, ulReplayPktCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_STATS[9], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_STATS, ulReKeyCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_STATS[9], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_STATS, ulReKeyCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_STATS[10], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_STATS, ulActiveKeyIdx), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_STATS[10], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_STATS, ulActiveKeyIdx); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_STATS[11], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_STATS, ulSrtpKeyNum), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_SRTP_STREAM_STATS[11], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_STATS, ulSrtpKeyNum); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_SRTP_STREAM_STATS, aSrtpKeyStats), "aSrtpKeyStats:tOCTVC1_NET_SRTP_KEY_STATS"); + { + 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_NET_SRTP_KEY_STATS), "[%d]:", i); + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_SRTP_KEY_STATS( tvb, pinfo, sub_tree2, offset, pExtValue ); + } + } + } + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_NET_CONFIG_STATIC(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_NET_CONFIG_STATIC))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_CONFIG_STATIC (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_CONFIG_STATIC)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_NET_CONFIG_STATIC); + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_CONFIG_STATIC[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_CONFIG_STATIC, ulMaxRtpMember), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_CONFIG_STATIC[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_CONFIG_STATIC, ulMaxRtpMember); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_CONFIG_STATIC[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_CONFIG_STATIC, ulMaxRtpSession), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_CONFIG_STATIC[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_CONFIG_STATIC, ulMaxRtpSession); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_CONFIG_STATIC[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_CONFIG_STATIC, ulMaxLocalIpHost), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_CONFIG_STATIC[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_CONFIG_STATIC, ulMaxLocalIpHost); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_NET_RTP_MEMBER_CONN_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_NET_RTP_MEMBER_CONN_INFO))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_RTP_MEMBER_CONN_INFO (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_RTP_MEMBER_CONN_INFO)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_NET_RTP_MEMBER_CONN_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_NET_RTP_MEMBER_CONN_INFO[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_RTP_MEMBER_CONN_INFO, ulConnectionState), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_RTP_MEMBER_CONN_INFO[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_RTP_MEMBER_CONN_INFO, ulConnectionState); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_RTP_MEMBER_CONN_INFO, hConnectedRtpSession), "hConnectedRtpSession: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_NET_RTP_MEMBER_CONN_INFO[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_RTP_MEMBER_CONN_INFO, ulConnectedMemberId), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_RTP_MEMBER_CONN_INFO[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_RTP_MEMBER_CONN_INFO, ulConnectedMemberId); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_NET_RTCP_SENDER_STATS(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_NET_RTCP_SENDER_STATS))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_RTCP_SENDER_STATS (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_RTCP_SENDER_STATS)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_NET_RTCP_SENDER_STATS); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_RTCP_SENDER_STATS, aulSentPktCnt), "aulSentPktCnt"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<2; 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_NET_RTCP_SENDER_STATS[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_RTCP_SENDER_STATS, aulSentPktCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_NET_RTCP_SENDER_STATS[0], tvb, offset, + 4, temp_data, "[%d]: 0x%08x", i, temp_data ); + } + offset+=4; + } + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_RTCP_SENDER_STATS, aulSentByteCnt), "aulSentByteCnt"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<2; 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_NET_RTCP_SENDER_STATS[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_RTCP_SENDER_STATS, aulSentByteCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_NET_RTCP_SENDER_STATS[1], tvb, offset, + 4, temp_data, "[%d]: 0x%08x", i, temp_data ); + } + offset+=4; + } + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_RTCP_SENDER_STATS, aulNtpTimestamp), "aulNtpTimestamp"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<2; 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_NET_RTCP_SENDER_STATS[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_RTCP_SENDER_STATS, aulNtpTimestamp), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_NET_RTCP_SENDER_STATS[2], tvb, offset, + 4, temp_data, "[%d]: 0x%08x", i, temp_data ); + } + offset+=4; + } + } + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_RTCP_SENDER_STATS[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_RTCP_SENDER_STATS, ulRtpTimestamp), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_RTCP_SENDER_STATS[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_RTCP_SENDER_STATS, ulRtpTimestamp); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_RTCP_SENDER_STATS[4], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_RTCP_SENDER_STATS, ulSenderSsrc), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_RTCP_SENDER_STATS[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_RTCP_SENDER_STATS, ulSenderSsrc); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_RTCP_SENDER_STATS[5], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_RTCP_SENDER_STATS, ulSenderStartTime), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_RTCP_SENDER_STATS[5], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_RTCP_SENDER_STATS, ulSenderStartTime); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_RTCP_SENDER_STATS[6], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_RTCP_SENDER_STATS, ulSenderReportCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_RTCP_SENDER_STATS[6], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_RTCP_SENDER_STATS, ulSenderReportCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_RTCP_SENDER_STATS[7], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_RTCP_SENDER_STATS, ulSenderState), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_RTCP_SENDER_STATS[7], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_RTCP_SENDER_STATS, ulSenderState); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_RTCP_SENDER_STATS[8], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_RTCP_SENDER_STATS, ulLastSenderReportTime), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_RTCP_SENDER_STATS[8], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_RTCP_SENDER_STATS, ulLastSenderReportTime); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_RTCP_SENDER_STATS[9], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_RTCP_SENDER_STATS, ulSsrcChangeCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_RTCP_SENDER_STATS[9], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_RTCP_SENDER_STATS, ulSsrcChangeCnt); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_NET_RTCP_RECEIVER_STATS(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_NET_RTCP_RECEIVER_STATS))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_RTCP_RECEIVER_STATS (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_RTCP_RECEIVER_STATS)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_NET_RTCP_RECEIVER_STATS); + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_RTCP_RECEIVER_STATS, ulHighestSeqNumber), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_RTCP_RECEIVER_STATS, ulHighestSeqNumber); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_RTCP_RECEIVER_STATS, ulCumulativeLostCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_RTCP_RECEIVER_STATS, ulCumulativeLostCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_RTCP_RECEIVER_STATS, ulFractionLost), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_RTCP_RECEIVER_STATS, ulFractionLost); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_RTCP_RECEIVER_STATS, ulInterArrivalJitter), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_RTCP_RECEIVER_STATS, ulInterArrivalJitter); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[4], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_RTCP_RECEIVER_STATS, ulMaxFractionLost), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_RTCP_RECEIVER_STATS, ulMaxFractionLost); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[5], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_RTCP_RECEIVER_STATS, ulMaxInterArrivalJitter), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[5], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_RTCP_RECEIVER_STATS, ulMaxInterArrivalJitter); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[6], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_RTCP_RECEIVER_STATS, ulAverageFractionLost), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[6], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_RTCP_RECEIVER_STATS, ulAverageFractionLost); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[7], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_RTCP_RECEIVER_STATS, ulAverageInterArrivalJitter), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[7], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_RTCP_RECEIVER_STATS, ulAverageInterArrivalJitter); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[8], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_RTCP_RECEIVER_STATS, ulReceiverStartTime), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[8], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_RTCP_RECEIVER_STATS, ulReceiverStartTime); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[9], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_RTCP_RECEIVER_STATS, ulReceiverReportCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[9], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_RTCP_RECEIVER_STATS, ulReceiverReportCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[10], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_RTCP_RECEIVER_STATS, ulLastReceiverReportTime), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[10], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_RTCP_RECEIVER_STATS, ulLastReceiverReportTime); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[11], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_RTCP_RECEIVER_STATS, ulRemoteSenderSsrc), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[11], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_RTCP_RECEIVER_STATS, ulRemoteSenderSsrc); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[12], tvb, offset, + 4,"ulAlarmRxThreshold:%s (0x%08x)", pExtValue->pszValue, temp_data); + }else{ + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[12], tvb, offset, + 4,"ulAlarmRxThreshold: (0x%08x)", temp_data); + if(temp_data) + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i< mWS_COUNTOF(vals_tOCTVC1_NET_RX_ALARM_MASK); i++ ) + { + if( ( vals_tOCTVC1_NET_RX_ALARM_MASK[i].value && + ( vals_tOCTVC1_NET_RX_ALARM_MASK[i].value & temp_data ) == + vals_tOCTVC1_NET_RX_ALARM_MASK[i].value)) + proto_tree_add_text(sub_tree, tvb, offset,4,"%s", + decode_enumerated_bitfield(vals_tOCTVC1_NET_RX_ALARM_MASK[i].value, 0xFFFFFFFF, (4*8), + VALS(vals_tOCTVC1_NET_RX_ALARM_MASK),"%s")); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_RTCP_RECEIVER_STATS, ulAlarmRxThreshold); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[13], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_RTCP_RECEIVER_STATS, ulAlarmRxThresholdCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_RTCP_RECEIVER_STATS[13], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_RTCP_RECEIVER_STATS, ulAlarmRxThresholdCnt); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_NET_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_NET_VLAN_TAG))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_VLAN_TAG (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_VLAN_TAG)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_NET_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_NET_VLAN_TAG[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_VLAN_TAG, ulPriority), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_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_NET_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_NET_VLAN_TAG[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_VLAN_TAG, ulVlanId), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_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_NET_VLAN_TAG, ulVlanId); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_NET_HEADER_INFO_ETHERNET(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_NET_HEADER_INFO_ETHERNET))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_HEADER_INFO_ETHERNET (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_HEADER_INFO_ETHERNET)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_NET_HEADER_INFO_ETHERNET); + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_HEADER_INFO_ETHERNET[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_HEADER_INFO_ETHERNET, ulEthertypeEncoding), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_HEADER_INFO_ETHERNET[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_HEADER_INFO_ETHERNET, ulEthertypeEncoding); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_HEADER_INFO_ETHERNET[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_HEADER_INFO_ETHERNET, ulEthertype), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_HEADER_INFO_ETHERNET[1], tvb, offset, + 4, temp_data); + if( ( (unsigned int)temp_data < 0) || ( (unsigned int)temp_data > 0xFFFF ) ) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (0..0xFFFF)]" ); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_HEADER_INFO_ETHERNET, ulEthertype); + + { + int ulMac0, ulMac1; + unsigned int offs = offset; + ulMac0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulMac1 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_HEADER_INFO_ETHERNET[2], tvb, offset, + sizeof(tOCTVC1_MAC_ADDRESS), "","LocalMacAddress: %02x:%02x:%02x:%02x:%02x:%02x", + (( ulMac0 & 0x0000FF00 ) >> 8 ), + ( ulMac0 & 0x000000FF ), + (( ulMac1 & 0xFF000000 ) >> 24 ), + (( ulMac1 & 0x00FF0000 ) >> 16 ), + (( ulMac1 & 0x0000FF00 ) >> 8 ), + ( ulMac1 & 0x000000FF ) ); + } + offset += sizeof(tOCTVC1_MAC_ADDRESS); + + { + int ulMac0, ulMac1; + unsigned int offs = offset; + ulMac0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulMac1 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_HEADER_INFO_ETHERNET[3], tvb, offset, + sizeof(tOCTVC1_MAC_ADDRESS), "","RemoteMacAddress: %02x:%02x:%02x:%02x:%02x:%02x", + (( ulMac0 & 0x0000FF00 ) >> 8 ), + ( ulMac0 & 0x000000FF ), + (( ulMac1 & 0xFF000000 ) >> 24 ), + (( ulMac1 & 0x00FF0000 ) >> 16 ), + (( ulMac1 & 0x0000FF00 ) >> 8 ), + ( ulMac1 & 0x000000FF ) ); + } + offset += sizeof(tOCTVC1_MAC_ADDRESS); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_NET_HEADER_INFO_VLAN(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_NET_HEADER_INFO_VLAN))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_HEADER_INFO_VLAN (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_HEADER_INFO_VLAN)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_NET_HEADER_INFO_VLAN); + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_HEADER_INFO_VLAN[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_HEADER_INFO_VLAN, ulNumVlanTag), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_HEADER_INFO_VLAN[0], tvb, offset, + 4, temp_data); + if( ( (unsigned int)temp_data < 0) || ( (unsigned int)temp_data > cOCTVC1_NET_MAX_VLAN_TAG ) ) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (0..cOCTVC1_NET_MAX_VLAN_TAG)]" ); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_HEADER_INFO_VLAN, ulNumVlanTag); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_HEADER_INFO_VLAN, aVlanTag), "aVlanTag:tOCTVC1_NET_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_NET_VLAN_TAG), "[%d]:", i); + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_VLAN_TAG( tvb, pinfo, sub_tree2, offset, pExtValue ); + } + } + } + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_NET_HEADER_INFO_IP(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_NET_HEADER_INFO_IP))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_HEADER_INFO_IP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_HEADER_INFO_IP)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_NET_HEADER_INFO_IP); + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_HEADER_INFO_IP[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_HEADER_INFO_IP, ulIpVersion), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_HEADER_INFO_IP[0], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_HEADER_INFO_IP, ulIpVersion); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_HEADER_INFO_IP[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_HEADER_INFO_IP, ulTypeOfService), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_HEADER_INFO_IP[1], tvb, offset, + 4, temp_data); + if( ( (unsigned int)temp_data < 0) || ( (unsigned int)temp_data > 255 ) ) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (0..255)]" ); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_HEADER_INFO_IP, ulTypeOfService); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_HEADER_INFO_IP[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_HEADER_INFO_IP, ulTimeToLive), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_HEADER_INFO_IP[2], tvb, offset, + 4, temp_data); + if( ( (unsigned int)temp_data < 1) || ( (unsigned int)temp_data > 255 ) ) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (1..255)]" ); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_HEADER_INFO_IP, ulTimeToLive); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_HEADER_INFO_IP[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_HEADER_INFO_IP, ulIpv6FlowLabel), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_HEADER_INFO_IP[3], tvb, offset, + 4, temp_data); + if( ( (unsigned int)temp_data < 0) || ( (unsigned int)temp_data > 1048575 ) ) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (0..1048575)]" ); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_HEADER_INFO_IP, ulIpv6FlowLabel); + + { + int ulVers; + unsigned int offs = offset; + ulVers = tvb_get_ntohl( tvb, offs ); + if( ulVers == cOCTVC1_IP_VERSION_ENUM_4 ) + { unsigned int ulIp0; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_HEADER_INFO_IP[4], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","LocalIpAddress: %d.%d.%d.%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ) ); + }else if( ulVers == cOCTVC1_IP_VERSION_ENUM_6 ) + { unsigned int ulIp0,ulIp1,ulIp2,ulIp3; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp1 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp2 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp3 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_HEADER_INFO_IP[4], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","LocalIpAddress: [%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X]", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), + (( ulIp1 & 0xFF000000 ) >> 24 ), + (( ulIp1 & 0x00FF0000 ) >> 16 ), + (( ulIp1 & 0x0000FF00 ) >> 8 ), + ( ulIp1 & 0x000000FF ), + (( ulIp2 & 0xFF000000 ) >> 24 ), + (( ulIp2 & 0x00FF0000 ) >> 16 ), + (( ulIp2 & 0x0000FF00 ) >> 8 ), + ( ulIp2 & 0x000000FF ), + (( ulIp3 & 0xFF000000 ) >> 24 ), + (( ulIp3 & 0x00FF0000 ) >> 16 ), + (( ulIp3 & 0x0000FF00 ) >> 8 ), + ( ulIp3 & 0x000000FF )); + }else + { ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_HEADER_INFO_IP[4], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","LocalIpAddress: Unknowned IP format(%d)",ulVers ); + } + } + offset += sizeof(tOCTVC1_IP_ADDRESS); + + { + int ulVers; + unsigned int offs = offset; + ulVers = tvb_get_ntohl( tvb, offs ); + if( ulVers == cOCTVC1_IP_VERSION_ENUM_4 ) + { unsigned int ulIp0; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_HEADER_INFO_IP[5], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","RemoteIpAddress: %d.%d.%d.%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ) ); + }else if( ulVers == cOCTVC1_IP_VERSION_ENUM_6 ) + { unsigned int ulIp0,ulIp1,ulIp2,ulIp3; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp1 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp2 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp3 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_HEADER_INFO_IP[5], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","RemoteIpAddress: [%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X]", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), + (( ulIp1 & 0xFF000000 ) >> 24 ), + (( ulIp1 & 0x00FF0000 ) >> 16 ), + (( ulIp1 & 0x0000FF00 ) >> 8 ), + ( ulIp1 & 0x000000FF ), + (( ulIp2 & 0xFF000000 ) >> 24 ), + (( ulIp2 & 0x00FF0000 ) >> 16 ), + (( ulIp2 & 0x0000FF00 ) >> 8 ), + ( ulIp2 & 0x000000FF ), + (( ulIp3 & 0xFF000000 ) >> 24 ), + (( ulIp3 & 0x00FF0000 ) >> 16 ), + (( ulIp3 & 0x0000FF00 ) >> 8 ), + ( ulIp3 & 0x000000FF )); + }else + { ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_HEADER_INFO_IP[5], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","RemoteIpAddress: Unknowned IP format(%d)",ulVers ); + } + } + offset += sizeof(tOCTVC1_IP_ADDRESS); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_NET_HEADER_INFO_UDP(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_NET_HEADER_INFO_UDP))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_HEADER_INFO_UDP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_HEADER_INFO_UDP)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_NET_HEADER_INFO_UDP); + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_HEADER_INFO_UDP[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_HEADER_INFO_UDP, ulLocalUdpPort), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_HEADER_INFO_UDP[0], tvb, offset, + 4, temp_data); + if( ( (unsigned int)temp_data < 0x0000) || ( (unsigned int)temp_data > 0xFFFF ) ) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (0x0000..0xFFFF)]" ); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_HEADER_INFO_UDP, ulLocalUdpPort); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_HEADER_INFO_UDP[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_HEADER_INFO_UDP, ulRemoteUdpPort), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_HEADER_INFO_UDP[1], tvb, offset, + 4, temp_data); + if( ( (unsigned int)temp_data < 0x0000) || ( (unsigned int)temp_data > 0xFFFF ) ) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (0x0000..0xFFFF)]" ); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_HEADER_INFO_UDP, ulRemoteUdpPort); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_NET_HEADER_IPUDP(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_NET_HEADER_IPUDP))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_HEADER_IPUDP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_HEADER_IPUDP)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_NET_HEADER_IPUDP); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_HEADER_IPUDP, Ethernet), "Ethernet:tOCTVC1_NET_HEADER_INFO_ETHERNET"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_HEADER_INFO_ETHERNET( tvb, pinfo, sub_tree2, offset, pExtValue ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_HEADER_IPUDP, Vlan), "Vlan:tOCTVC1_NET_HEADER_INFO_VLAN"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_HEADER_INFO_VLAN( tvb, pinfo, sub_tree2, offset, pExtValue ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_HEADER_IPUDP, Ip), "Ip:tOCTVC1_NET_HEADER_INFO_IP"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_HEADER_INFO_IP( tvb, pinfo, sub_tree2, offset, pExtValue ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_HEADER_IPUDP, Udp), "Udp:tOCTVC1_NET_HEADER_INFO_UDP"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_HEADER_INFO_UDP( tvb, pinfo, sub_tree2, offset, pExtValue ); + } + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_NET_CACHE_ENTRY_CURSOR(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_NET_CACHE_ENTRY_CURSOR))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_CACHE_ENTRY_CURSOR (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_CACHE_ENTRY_CURSOR)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_NET_CACHE_ENTRY_CURSOR); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_CACHE_ENTRY_CURSOR, hLink), "hLink: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 ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_CACHE_ENTRY_CURSOR, Vlan), "Vlan:tOCTVC1_NET_HEADER_INFO_VLAN"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_HEADER_INFO_VLAN( tvb, pinfo, sub_tree2, offset, pExtValue ); + } + { + int ulVers; + unsigned int offs = offset; + ulVers = tvb_get_ntohl( tvb, offs ); + if( ulVers == cOCTVC1_IP_VERSION_ENUM_4 ) + { unsigned int ulIp0; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_CACHE_ENTRY_CURSOR[2], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: %d.%d.%d.%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ) ); + }else if( ulVers == cOCTVC1_IP_VERSION_ENUM_6 ) + { unsigned int ulIp0,ulIp1,ulIp2,ulIp3; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp1 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp2 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp3 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_CACHE_ENTRY_CURSOR[2], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: [%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X]", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), + (( ulIp1 & 0xFF000000 ) >> 24 ), + (( ulIp1 & 0x00FF0000 ) >> 16 ), + (( ulIp1 & 0x0000FF00 ) >> 8 ), + ( ulIp1 & 0x000000FF ), + (( ulIp2 & 0xFF000000 ) >> 24 ), + (( ulIp2 & 0x00FF0000 ) >> 16 ), + (( ulIp2 & 0x0000FF00 ) >> 8 ), + ( ulIp2 & 0x000000FF ), + (( ulIp3 & 0xFF000000 ) >> 24 ), + (( ulIp3 & 0x00FF0000 ) >> 16 ), + (( ulIp3 & 0x0000FF00 ) >> 8 ), + ( ulIp3 & 0x000000FF )); + }else + { ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_CACHE_ENTRY_CURSOR[2], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: Unknowned IP format(%d)",ulVers ); + } + } + offset += sizeof(tOCTVC1_IP_ADDRESS); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_CACHE_ENTRY_CURSOR[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_CACHE_ENTRY_CURSOR, ulGetMode), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_CACHE_ENTRY_CURSOR[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_CACHE_ENTRY_CURSOR, ulGetMode); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_NET_ETH_LINK_CACHE_ENTRY(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_NET_ETH_LINK_CACHE_ENTRY))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_ETH_LINK_CACHE_ENTRY (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_ETH_LINK_CACHE_ENTRY)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_NET_ETH_LINK_CACHE_ENTRY); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CACHE_ENTRY, hLink), "hLink: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 ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CACHE_ENTRY, Vlan), "Vlan:tOCTVC1_NET_HEADER_INFO_VLAN"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_HEADER_INFO_VLAN( tvb, pinfo, sub_tree2, offset, pExtValue ); + } + { + int ulVers; + unsigned int offs = offset; + ulVers = tvb_get_ntohl( tvb, offs ); + if( ulVers == cOCTVC1_IP_VERSION_ENUM_4 ) + { unsigned int ulIp0; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CACHE_ENTRY[2], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: %d.%d.%d.%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ) ); + }else if( ulVers == cOCTVC1_IP_VERSION_ENUM_6 ) + { unsigned int ulIp0,ulIp1,ulIp2,ulIp3; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp1 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp2 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp3 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CACHE_ENTRY[2], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: [%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X]", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), + (( ulIp1 & 0xFF000000 ) >> 24 ), + (( ulIp1 & 0x00FF0000 ) >> 16 ), + (( ulIp1 & 0x0000FF00 ) >> 8 ), + ( ulIp1 & 0x000000FF ), + (( ulIp2 & 0xFF000000 ) >> 24 ), + (( ulIp2 & 0x00FF0000 ) >> 16 ), + (( ulIp2 & 0x0000FF00 ) >> 8 ), + ( ulIp2 & 0x000000FF ), + (( ulIp3 & 0xFF000000 ) >> 24 ), + (( ulIp3 & 0x00FF0000 ) >> 16 ), + (( ulIp3 & 0x0000FF00 ) >> 8 ), + ( ulIp3 & 0x000000FF )); + }else + { ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CACHE_ENTRY[2], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: Unknowned IP format(%d)",ulVers ); + } + } + offset += sizeof(tOCTVC1_IP_ADDRESS); + + { + int ulMac0, ulMac1; + unsigned int offs = offset; + ulMac0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulMac1 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CACHE_ENTRY[3], tvb, offset, + sizeof(tOCTVC1_MAC_ADDRESS), "","MacAddress: %02x:%02x:%02x:%02x:%02x:%02x", + (( ulMac0 & 0x0000FF00 ) >> 8 ), + ( ulMac0 & 0x000000FF ), + (( ulMac1 & 0xFF000000 ) >> 24 ), + (( ulMac1 & 0x00FF0000 ) >> 16 ), + (( ulMac1 & 0x0000FF00 ) >> 8 ), + ( ulMac1 & 0x000000FF ) ); + } + offset += sizeof(tOCTVC1_MAC_ADDRESS); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_boolean_format_value(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CACHE_ENTRY[4], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CACHE_ENTRY, ulStaticFlag), temp_data, "%s (0x%x)", pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CACHE_ENTRY[4], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CACHE_ENTRY, ulStaticFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CACHE_ENTRY, ulStaticFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_boolean_format_value(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CACHE_ENTRY[5], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CACHE_ENTRY, ulReachableFlag), temp_data, "%s (0x%x)", pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CACHE_ENTRY[5], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CACHE_ENTRY, ulReachableFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CACHE_ENTRY, ulReachableFlag); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_NET_LINK_GATEWAY_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_NET_LINK_GATEWAY_INFO))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_LINK_GATEWAY_INFO (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_LINK_GATEWAY_INFO)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_NET_LINK_GATEWAY_INFO); + { + int ulVers; + unsigned int offs = offset; + ulVers = tvb_get_ntohl( tvb, offs ); + if( ulVers == cOCTVC1_IP_VERSION_ENUM_4 ) + { unsigned int ulIp0; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_LINK_GATEWAY_INFO[0], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: %d.%d.%d.%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ) ); + }else if( ulVers == cOCTVC1_IP_VERSION_ENUM_6 ) + { unsigned int ulIp0,ulIp1,ulIp2,ulIp3; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp1 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp2 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp3 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_LINK_GATEWAY_INFO[0], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: [%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X]", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), + (( ulIp1 & 0xFF000000 ) >> 24 ), + (( ulIp1 & 0x00FF0000 ) >> 16 ), + (( ulIp1 & 0x0000FF00 ) >> 8 ), + ( ulIp1 & 0x000000FF ), + (( ulIp2 & 0xFF000000 ) >> 24 ), + (( ulIp2 & 0x00FF0000 ) >> 16 ), + (( ulIp2 & 0x0000FF00 ) >> 8 ), + ( ulIp2 & 0x000000FF ), + (( ulIp3 & 0xFF000000 ) >> 24 ), + (( ulIp3 & 0x00FF0000 ) >> 16 ), + (( ulIp3 & 0x0000FF00 ) >> 8 ), + ( ulIp3 & 0x000000FF )); + }else + { ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_LINK_GATEWAY_INFO[0], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: Unknowned IP format(%d)",ulVers ); + } + } + offset += sizeof(tOCTVC1_IP_ADDRESS); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_LINK_GATEWAY_INFO[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_LINK_GATEWAY_INFO, ulLifetimeSec), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_LINK_GATEWAY_INFO[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_LINK_GATEWAY_INFO, ulLifetimeSec); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_NET_LINK_IPV6_PREFIX(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_NET_LINK_IPV6_PREFIX))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_LINK_IPV6_PREFIX (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_LINK_IPV6_PREFIX)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_NET_LINK_IPV6_PREFIX); + { + int ulVers; + unsigned int offs = offset; + ulVers = tvb_get_ntohl( tvb, offs ); + if( ulVers == cOCTVC1_IP_VERSION_ENUM_4 ) + { unsigned int ulIp0; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_LINK_IPV6_PREFIX[0], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: %d.%d.%d.%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ) ); + }else if( ulVers == cOCTVC1_IP_VERSION_ENUM_6 ) + { unsigned int ulIp0,ulIp1,ulIp2,ulIp3; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp1 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp2 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp3 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_LINK_IPV6_PREFIX[0], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: [%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X]", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), + (( ulIp1 & 0xFF000000 ) >> 24 ), + (( ulIp1 & 0x00FF0000 ) >> 16 ), + (( ulIp1 & 0x0000FF00 ) >> 8 ), + ( ulIp1 & 0x000000FF ), + (( ulIp2 & 0xFF000000 ) >> 24 ), + (( ulIp2 & 0x00FF0000 ) >> 16 ), + (( ulIp2 & 0x0000FF00 ) >> 8 ), + ( ulIp2 & 0x000000FF ), + (( ulIp3 & 0xFF000000 ) >> 24 ), + (( ulIp3 & 0x00FF0000 ) >> 16 ), + (( ulIp3 & 0x0000FF00 ) >> 8 ), + ( ulIp3 & 0x000000FF )); + }else + { ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_LINK_IPV6_PREFIX[0], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: Unknowned IP format(%d)",ulVers ); + } + } + offset += sizeof(tOCTVC1_IP_ADDRESS); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_LINK_IPV6_PREFIX[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_LINK_IPV6_PREFIX, ulBitLength), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_LINK_IPV6_PREFIX[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_LINK_IPV6_PREFIX, ulBitLength); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_NET_LINK_IPV6_PREFIX_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_NET_LINK_IPV6_PREFIX_INFO))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_LINK_IPV6_PREFIX_INFO (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_LINK_IPV6_PREFIX_INFO)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_NET_LINK_IPV6_PREFIX_INFO); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_LINK_IPV6_PREFIX_INFO, IPv6Prefix), "IPv6Prefix:tOCTVC1_NET_LINK_IPV6_PREFIX"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_LINK_IPV6_PREFIX( tvb, pinfo, sub_tree2, offset, pExtValue ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_boolean_format_value(field_tree, ahf_tOCTVC1_NET_LINK_IPV6_PREFIX_INFO[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_LINK_IPV6_PREFIX_INFO, ulOnLinkFlag), temp_data, "%s (0x%x)", pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_NET_LINK_IPV6_PREFIX_INFO[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_LINK_IPV6_PREFIX_INFO, ulOnLinkFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_LINK_IPV6_PREFIX_INFO, ulOnLinkFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_boolean_format_value(field_tree, ahf_tOCTVC1_NET_LINK_IPV6_PREFIX_INFO[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_LINK_IPV6_PREFIX_INFO, ulAddrAutoConfigFlag), temp_data, "%s (0x%x)", pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_NET_LINK_IPV6_PREFIX_INFO[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_LINK_IPV6_PREFIX_INFO, ulAddrAutoConfigFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_LINK_IPV6_PREFIX_INFO, ulAddrAutoConfigFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_NET_INFINITE) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_LINK_IPV6_PREFIX_INFO[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_LINK_IPV6_PREFIX_INFO, ulValidLifetimeSec),temp_data, "cOCTVC1_NET_INFINITE (0x%08x)",temp_data); + }else { + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_LINK_IPV6_PREFIX_INFO[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_LINK_IPV6_PREFIX_INFO, ulValidLifetimeSec), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_LINK_IPV6_PREFIX_INFO[3], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_LINK_IPV6_PREFIX_INFO, ulValidLifetimeSec); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_NET_INFINITE) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_LINK_IPV6_PREFIX_INFO[4], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_LINK_IPV6_PREFIX_INFO, ulPreferredLifetimeSec),temp_data, "cOCTVC1_NET_INFINITE (0x%08x)",temp_data); + }else { + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_LINK_IPV6_PREFIX_INFO[4], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_LINK_IPV6_PREFIX_INFO, ulPreferredLifetimeSec), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_LINK_IPV6_PREFIX_INFO[4], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_LINK_IPV6_PREFIX_INFO, ulPreferredLifetimeSec); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_NET_IPV6_PREFIX_CURSOR(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_NET_IPV6_PREFIX_CURSOR))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_IPV6_PREFIX_CURSOR (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_IPV6_PREFIX_CURSOR)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_NET_IPV6_PREFIX_CURSOR); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_IPV6_PREFIX_CURSOR, hLink), "hLink: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 ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_IPV6_PREFIX_CURSOR, IPv6Prefix), "IPv6Prefix:tOCTVC1_NET_LINK_IPV6_PREFIX"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_LINK_IPV6_PREFIX( 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_NET_IPV6_PREFIX_CURSOR[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_IPV6_PREFIX_CURSOR, ulGetMode), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_IPV6_PREFIX_CURSOR[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_IPV6_PREFIX_CURSOR, ulGetMode); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4(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_NET_ETH_LINK_CONFIG_IPV4))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_ETH_LINK_CONFIG_IPV4 (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_ETH_LINK_CONFIG_IPV4)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_NET_ETH_LINK_CONFIG_IPV4); + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_boolean_format_value(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV4, ulEnableFlag), temp_data, "%s (0x%x)", pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV4, ulEnableFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV4, ulEnableFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV4, ulAddrAutoconfigMode), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV4, ulAddrAutoconfigMode); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV4, ulNDPBaseReachableTimeMs), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV4, ulNDPBaseReachableTimeMs); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV4, ulARPRefreshTimeMs), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV4, ulARPRefreshTimeMs); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4[4], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV4, ulARPReplyTimeMs), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV4, ulARPReplyTimeMs); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4[5], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV4, ulARPUnusedTimeMs), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4[5], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV4, ulARPUnusedTimeMs); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4[6], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV4, ulARPReqCreateCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4[6], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV4, ulARPReqCreateCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4[7], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV4, ulARPReqRefreshCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4[7], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV4, ulARPReqRefreshCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4[8], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV4, ulARPReqRefreshBroadcastCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4[8], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV4, ulARPReqRefreshBroadcastCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4[9], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV4, ulARPReqDupAddrCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4[9], tvb, offset, + 4, temp_data); + if( ( (unsigned int)temp_data < 0) || ( (unsigned int)temp_data > 15 ) ) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (0..15)]" ); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV4, ulARPReqDupAddrCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4[10], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV4, ulGARPRequestCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4[10], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV4, ulGARPRequestCnt); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6(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_NET_ETH_LINK_CONFIG_IPV6))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_ETH_LINK_CONFIG_IPV6 (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_ETH_LINK_CONFIG_IPV6)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_NET_ETH_LINK_CONFIG_IPV6); + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_boolean_format_value(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV6, ulEnableFlag), temp_data, "%s (0x%x)", pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV6, ulEnableFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV6, ulEnableFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_boolean_format_value(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV6, ulCreateLoopbackEntryFlag), temp_data, "%s (0x%x)", pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV6, ulCreateLoopbackEntryFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV6, ulCreateLoopbackEntryFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV6, ulAddrAutoconfigMode), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV6, ulAddrAutoconfigMode); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV6, ulNDPBaseReachableTimeMs), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV6, ulNDPBaseReachableTimeMs); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6[4], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV6, ulNDPRetransTimeMs), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV6, ulNDPRetransTimeMs); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6[5], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV6, ulNDPUnusedTimeMs), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6[5], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV6, ulNDPUnusedTimeMs); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6[6], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV6, ulNDPSolicitCreateCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6[6], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV6, ulNDPSolicitCreateCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6[7], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV6, ulNDPSolicitDupAddrCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6[7], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV6, ulNDPSolicitDupAddrCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6[8], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV6, ulNDPSolicitProbeCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6[8], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV6, ulNDPSolicitProbeCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6[9], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV6, ulNDPSolicitProbeMulticastCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6[9], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV6, ulNDPSolicitProbeMulticastCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6[10], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV6, ulNDPSolicitRouterCnt), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6[10], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_IPV6, ulNDPSolicitRouterCnt); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ(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_NET_ETH_LINK_CONFIG_ETH_802_1PQ))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ); + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_boolean_format_value(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ, ulEnableFlag), temp_data, "%s (0x%x)", pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ, ulEnableFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ, ulEnableFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ, ulDefaultUserPriority), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ, ulDefaultUserPriority); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ, ulVlanId), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ, ulVlanId); + + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_NET_EUI64_INTERFACE_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_NET_EUI64_INTERFACE_ID))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_EUI64_INTERFACE_ID (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_EUI64_INTERFACE_ID)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_NET_EUI64_INTERFACE_ID); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_EUI64_INTERFACE_ID, ausInterfaceId), "ausInterfaceId"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<4; i++ ) + { + temp_data = tvb_get_ntohs( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(sub_tree, ahf_tOCTVC1_NET_EUI64_INTERFACE_ID[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_EUI64_INTERFACE_ID, ausInterfaceId), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_NET_EUI64_INTERFACE_ID[0], tvb, offset, + 2, temp_data, "[%d]: 0x%04x", i, temp_data ); + } + offset+=2; + } + } + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM(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_NET_CUSTOM_MEMBER_IPUDP_STREAM))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM); + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_boolean_format_value(field_tree, ahf_tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM, ulEnableFlag), temp_data, "%s (0x%x)", pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM, ulEnableFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM, ulEnableFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_boolean_format_value(field_tree, ahf_tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM, ulTxPktEnableFlag), temp_data, "%s (0x%x)", pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM, ulTxPktEnableFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM, ulTxPktEnableFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM, ulRxPktFilter), temp_data, "%s (0x%x)",pExtValue->pszValue, temp_data ); + }else + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM, ulRxPktFilter); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM, Header), "Header:tOCTVC1_NET_HEADER_IPUDP"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_HEADER_IPUDP( tvb, pinfo, sub_tree2, offset, pExtValue ); + } + } + + + return offset; + +}; + + +unsigned int dissect_tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_MODIFY(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_NET_CUSTOM_MEMBER_IPUDP_STREAM_MODIFY))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_MODIFY (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_MODIFY)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + bytes = sizeof(tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_MODIFY); + temp_data = tvb_get_ntohl( tvb, offset ); + if( pExtValue && (pExtValue->lValue == temp_data ) ) + { + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_MODIFY[0], tvb, offset, + 4,"ulModifyMask:%s (0x%08x)", pExtValue->pszValue, temp_data); + }else{ + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_MODIFY[0], tvb, offset, + 4,"ulModifyMask: (0x%08x)", temp_data); + if(temp_data) + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i< mWS_COUNTOF(vals_tOCTVC1_NET_CUSTOM_MEMBER_STREAM_MODIFY_MASK); i++ ) + { + if( ( vals_tOCTVC1_NET_CUSTOM_MEMBER_STREAM_MODIFY_MASK[i].value && + ( vals_tOCTVC1_NET_CUSTOM_MEMBER_STREAM_MODIFY_MASK[i].value & temp_data ) == + vals_tOCTVC1_NET_CUSTOM_MEMBER_STREAM_MODIFY_MASK[i].value)) + proto_tree_add_text(sub_tree, tvb, offset,4,"%s", + decode_enumerated_bitfield(vals_tOCTVC1_NET_CUSTOM_MEMBER_STREAM_MODIFY_MASK[i].value, 0xFFFFFFFF, (4*8), + VALS(vals_tOCTVC1_NET_CUSTOM_MEMBER_STREAM_MODIFY_MASK),"%s")); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_MODIFY, ulModifyMask); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_MODIFY, Modify), "Modify:tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM( tvb, pinfo, sub_tree2, offset, pExtValue ); + } + } + + + return offset; + +}; + +/**************************************************************************** + Event dissectors + ****************************************************************************/ + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT, hRtpSession), "hRtpSession: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT, ulMemberId); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT, ulPktType); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT, ulPktByteLength); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT[4], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT, abyRtcpPkt), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT, abyRtcpPkt); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT, hRtpSession), "hRtpSession: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT, ulMemberId); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT, ulCnameLength); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT, achCname), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT, achCname); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT, hRtpSession), "hRtpSession: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT, ulMemberId); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT, ulLocalFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT, ulLocalFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT, ulPreviousSsrc); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT, ulNewSsrc); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT, hRtpSession), "hRtpSession: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT, ulMemberId); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT, ulLocalFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT, ulLocalFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT, ulRoundTripTime); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT, ulMaxRoundTripTime); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT[5], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT, ulAverageRoundTripTime); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT, StatsReceiver), "StatsReceiver:tOCTVC1_NET_RTCP_RECEIVER_STATS"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_RTCP_RECEIVER_STATS( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT, hRtpSession), "hRtpSession: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT, ulMemberId); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT, ulLocalFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT, ulLocalFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT, ulPreviousSenderState); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT, ulNewSenderState); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT, hRtpSession), "hRtpSession: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT, ulMemberId); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT, ulRemoteAddress); + + { + int ulVers; + unsigned int offs = offset; + ulVers = tvb_get_ntohl( tvb, offs ); + if( ulVers == cOCTVC1_IP_VERSION_ENUM_4 ) + { unsigned int ulIp0,ulUdpPort; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 16; + ulUdpPort = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT[3], tvb, offset, + sizeof(tOCTVC1_UDP_ADDRESS), "","RemoteUdpAddress: %d.%d.%d.%d:%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), ulUdpPort ); + }else if( ulVers == cOCTVC1_IP_VERSION_ENUM_6 ) + { unsigned int ulIp0,ulIp1,ulIp2,ulIp3,ulUdpPort; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp1 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp2 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp3 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulUdpPort = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT[3], tvb, offset, + sizeof(tOCTVC1_UDP_ADDRESS), "","RemoteUdpAddress: [%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X]:%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), + (( ulIp1 & 0xFF000000 ) >> 24 ), + (( ulIp1 & 0x00FF0000 ) >> 16 ), + (( ulIp1 & 0x0000FF00 ) >> 8 ), + ( ulIp1 & 0x000000FF ), + (( ulIp2 & 0xFF000000 ) >> 24 ), + (( ulIp2 & 0x00FF0000 ) >> 16 ), + (( ulIp2 & 0x0000FF00 ) >> 8 ), + ( ulIp2 & 0x000000FF ), + (( ulIp3 & 0xFF000000 ) >> 24 ), + (( ulIp3 & 0x00FF0000 ) >> 16 ), + (( ulIp3 & 0x0000FF00 ) >> 8 ), + ( ulIp3 & 0x000000FF ), ulUdpPort ); + }else + { ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT[3], tvb, offset, + sizeof(tOCTVC1_UDP_ADDRESS), "","RemoteUdpAddress: Unknowned IP format(%d)",ulVers ); + } + } + offset += sizeof(tOCTVC1_UDP_ADDRESS); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT, hRtpSession), "hRtpSession: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT, ulMemberId); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT, ulSrtpStreamType); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT, ActiveSrtpKey), "ActiveSrtpKey:tOCTVC1_NET_SRTP_KEY_ENTRY"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_SRTP_KEY_ENTRY( tvb, pinfo, sub_tree2, offset, NULL ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT, aulSrtpPacketCnt), "aulSrtpPacketCnt"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<2; i++ ) + { + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT[4], tvb, offset, + 4, temp_data, "[%d]: 0x%08x", i, temp_data ); + } + offset+=4; + } + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT[5], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT, ulSrtcpPacketCnt); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT, hRtpSession), "hRtpSession: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT, ulMemberId); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT, ulSrtpStreamType); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT, ActiveSrtpKey), "ActiveSrtpKey:tOCTVC1_NET_SRTP_KEY_ENTRY"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_SRTP_KEY_ENTRY( tvb, pinfo, sub_tree2, offset, NULL ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT, aulSrtpPacketCnt), "aulSrtpPacketCnt"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<2; i++ ) + { + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT[4], tvb, offset, + 4, temp_data, "[%d]: 0x%08x", i, temp_data ); + } + offset+=4; + } + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT[5], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT, ulSrtcpPacketCnt); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT, hRtpSession), "hRtpSession: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT, ulMemberId); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT, ulSrtpStreamType); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT, ulKeyChangeReason); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT, ActiveSrtpKey), "ActiveSrtpKey:tOCTVC1_NET_SRTP_KEY_ENTRY"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_SRTP_KEY_ENTRY( tvb, pinfo, sub_tree2, offset, NULL ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT, PreviousSrtpKey), "PreviousSrtpKey:tOCTVC1_NET_SRTP_KEY_ENTRY"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_SRTP_KEY_ENTRY( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT, hRtpSession), "hRtpSession: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT, ulMemberId); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT, ulSrtpStreamType); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT, hRtpSession), "hRtpSession: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT, ulMemberId); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT, ulSrtpStreamType); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT, hRtpSession), "hRtpSession: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT, ulMemberId); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT, ulSrtpStreamType); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT, ulUnknownMkiByteSize); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT[4], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT, abyUnknownMkiValue), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT, abyUnknownMkiValue); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT, hRtpSession), "hRtpSession: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT, ulMemberId); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT, ulSrtpStreamType); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT, ulSsrc); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT, hLocalHost), "hLocalHost: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, NULL ); + } + { + int ulVers; + unsigned int offs = offset; + ulVers = tvb_get_ntohl( tvb, offs ); + if( ulVers == cOCTVC1_IP_VERSION_ENUM_4 ) + { unsigned int ulIp0; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT[1], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","RemoteIpAddr: %d.%d.%d.%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ) ); + }else if( ulVers == cOCTVC1_IP_VERSION_ENUM_6 ) + { unsigned int ulIp0,ulIp1,ulIp2,ulIp3; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp1 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp2 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp3 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT[1], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","RemoteIpAddr: [%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X]", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), + (( ulIp1 & 0xFF000000 ) >> 24 ), + (( ulIp1 & 0x00FF0000 ) >> 16 ), + (( ulIp1 & 0x0000FF00 ) >> 8 ), + ( ulIp1 & 0x000000FF ), + (( ulIp2 & 0xFF000000 ) >> 24 ), + (( ulIp2 & 0x00FF0000 ) >> 16 ), + (( ulIp2 & 0x0000FF00 ) >> 8 ), + ( ulIp2 & 0x000000FF ), + (( ulIp3 & 0xFF000000 ) >> 24 ), + (( ulIp3 & 0x00FF0000 ) >> 16 ), + (( ulIp3 & 0x0000FF00 ) >> 8 ), + ( ulIp3 & 0x000000FF )); + }else + { ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT[1], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","RemoteIpAddr: Unknowned IP format(%d)",ulVers ); + } + } + offset += sizeof(tOCTVC1_IP_ADDRESS); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT, ulAlarmType); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT, ulAlarmCode); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT, ulPktHeaderByteLength); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT[5], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT, abyPktHeader), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT, abyPktHeader); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT, hLocalHost), "hLocalHost: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT, ulRedirectCode); + + { + int ulVers; + unsigned int offs = offset; + ulVers = tvb_get_ntohl( tvb, offs ); + if( ulVers == cOCTVC1_IP_VERSION_ENUM_4 ) + { unsigned int ulIp0; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT[2], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","NewGatewayIpAddress: %d.%d.%d.%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ) ); + }else if( ulVers == cOCTVC1_IP_VERSION_ENUM_6 ) + { unsigned int ulIp0,ulIp1,ulIp2,ulIp3; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp1 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp2 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp3 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT[2], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","NewGatewayIpAddress: [%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X]", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), + (( ulIp1 & 0xFF000000 ) >> 24 ), + (( ulIp1 & 0x00FF0000 ) >> 16 ), + (( ulIp1 & 0x0000FF00 ) >> 8 ), + ( ulIp1 & 0x000000FF ), + (( ulIp2 & 0xFF000000 ) >> 24 ), + (( ulIp2 & 0x00FF0000 ) >> 16 ), + (( ulIp2 & 0x0000FF00 ) >> 8 ), + ( ulIp2 & 0x000000FF ), + (( ulIp3 & 0xFF000000 ) >> 24 ), + (( ulIp3 & 0x00FF0000 ) >> 16 ), + (( ulIp3 & 0x0000FF00 ) >> 8 ), + ( ulIp3 & 0x000000FF )); + }else + { ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT[2], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","NewGatewayIpAddress: Unknowned IP format(%d)",ulVers ); + } + } + offset += sizeof(tOCTVC1_IP_ADDRESS); + + { + int ulVers; + unsigned int offs = offset; + ulVers = tvb_get_ntohl( tvb, offs ); + if( ulVers == cOCTVC1_IP_VERSION_ENUM_4 ) + { unsigned int ulIp0; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT[3], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","PrevGatewayIpAddress: %d.%d.%d.%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ) ); + }else if( ulVers == cOCTVC1_IP_VERSION_ENUM_6 ) + { unsigned int ulIp0,ulIp1,ulIp2,ulIp3; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp1 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp2 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp3 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT[3], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","PrevGatewayIpAddress: [%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X]", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), + (( ulIp1 & 0xFF000000 ) >> 24 ), + (( ulIp1 & 0x00FF0000 ) >> 16 ), + (( ulIp1 & 0x0000FF00 ) >> 8 ), + ( ulIp1 & 0x000000FF ), + (( ulIp2 & 0xFF000000 ) >> 24 ), + (( ulIp2 & 0x00FF0000 ) >> 16 ), + (( ulIp2 & 0x0000FF00 ) >> 8 ), + ( ulIp2 & 0x000000FF ), + (( ulIp3 & 0xFF000000 ) >> 24 ), + (( ulIp3 & 0x00FF0000 ) >> 16 ), + (( ulIp3 & 0x0000FF00 ) >> 8 ), + ( ulIp3 & 0x000000FF )); + }else + { ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT[3], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","PrevGatewayIpAddress: Unknowned IP format(%d)",ulVers ); + } + } + offset += sizeof(tOCTVC1_IP_ADDRESS); + + { + int ulVers; + unsigned int offs = offset; + ulVers = tvb_get_ntohl( tvb, offs ); + if( ulVers == cOCTVC1_IP_VERSION_ENUM_4 ) + { unsigned int ulIp0; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT[4], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","DestinationIpAddress: %d.%d.%d.%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ) ); + }else if( ulVers == cOCTVC1_IP_VERSION_ENUM_6 ) + { unsigned int ulIp0,ulIp1,ulIp2,ulIp3; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp1 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp2 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp3 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT[4], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","DestinationIpAddress: [%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X]", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), + (( ulIp1 & 0xFF000000 ) >> 24 ), + (( ulIp1 & 0x00FF0000 ) >> 16 ), + (( ulIp1 & 0x0000FF00 ) >> 8 ), + ( ulIp1 & 0x000000FF ), + (( ulIp2 & 0xFF000000 ) >> 24 ), + (( ulIp2 & 0x00FF0000 ) >> 16 ), + (( ulIp2 & 0x0000FF00 ) >> 8 ), + ( ulIp2 & 0x000000FF ), + (( ulIp3 & 0xFF000000 ) >> 24 ), + (( ulIp3 & 0x00FF0000 ) >> 16 ), + (( ulIp3 & 0x0000FF00 ) >> 8 ), + ( ulIp3 & 0x000000FF )); + }else + { ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT[4], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","DestinationIpAddress: Unknowned IP format(%d)",ulVers ); + } + } + offset += sizeof(tOCTVC1_IP_ADDRESS); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT, hLink), "hLink: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, NULL ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT, hLocalHost), "hLocalHost: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, NULL ); + } + { + int ulVers; + unsigned int offs = offset; + ulVers = tvb_get_ntohl( tvb, offs ); + if( ulVers == cOCTVC1_IP_VERSION_ENUM_4 ) + { unsigned int ulIp0; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT[2], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: %d.%d.%d.%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ) ); + }else if( ulVers == cOCTVC1_IP_VERSION_ENUM_6 ) + { unsigned int ulIp0,ulIp1,ulIp2,ulIp3; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp1 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp2 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp3 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT[2], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: [%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X]", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), + (( ulIp1 & 0xFF000000 ) >> 24 ), + (( ulIp1 & 0x00FF0000 ) >> 16 ), + (( ulIp1 & 0x0000FF00 ) >> 8 ), + ( ulIp1 & 0x000000FF ), + (( ulIp2 & 0xFF000000 ) >> 24 ), + (( ulIp2 & 0x00FF0000 ) >> 16 ), + (( ulIp2 & 0x0000FF00 ) >> 8 ), + ( ulIp2 & 0x000000FF ), + (( ulIp3 & 0xFF000000 ) >> 24 ), + (( ulIp3 & 0x00FF0000 ) >> 16 ), + (( ulIp3 & 0x0000FF00 ) >> 8 ), + ( ulIp3 & 0x000000FF )); + }else + { ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT[2], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: Unknowned IP format(%d)",ulVers ); + } + } + offset += sizeof(tOCTVC1_IP_ADDRESS); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT, ulAddrAutoConfigFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT, ulAddrAutoConfigFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT, ulPreviousAddrStatus); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT[5], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT, ulNewAddrStatus); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT[6], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT, ulStatusChangeCause); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT, hLocalHost), "hLocalHost: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, NULL ); + } + { + int ulVers; + unsigned int offs = offset; + ulVers = tvb_get_ntohl( tvb, offs ); + if( ulVers == cOCTVC1_IP_VERSION_ENUM_4 ) + { unsigned int ulIp0; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT[1], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: %d.%d.%d.%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ) ); + }else if( ulVers == cOCTVC1_IP_VERSION_ENUM_6 ) + { unsigned int ulIp0,ulIp1,ulIp2,ulIp3; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp1 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp2 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp3 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT[1], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: [%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X]", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), + (( ulIp1 & 0xFF000000 ) >> 24 ), + (( ulIp1 & 0x00FF0000 ) >> 16 ), + (( ulIp1 & 0x0000FF00 ) >> 8 ), + ( ulIp1 & 0x000000FF ), + (( ulIp2 & 0xFF000000 ) >> 24 ), + (( ulIp2 & 0x00FF0000 ) >> 16 ), + (( ulIp2 & 0x0000FF00 ) >> 8 ), + ( ulIp2 & 0x000000FF ), + (( ulIp3 & 0xFF000000 ) >> 24 ), + (( ulIp3 & 0x00FF0000 ) >> 16 ), + (( ulIp3 & 0x0000FF00 ) >> 8 ), + ( ulIp3 & 0x000000FF )); + }else + { ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT[1], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: Unknowned IP format(%d)",ulVers ); + } + } + offset += sizeof(tOCTVC1_IP_ADDRESS); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT, ulDuplicateSource); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT)-sizeof(tOCTVC1_EVENT_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT)-sizeof(tOCTVC1_EVENT_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT, hEthLink), "hEthLink: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, NULL ); + } + { + int ulVers; + unsigned int offs = offset; + ulVers = tvb_get_ntohl( tvb, offs ); + if( ulVers == cOCTVC1_IP_VERSION_ENUM_4 ) + { unsigned int ulIp0; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT[1], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: %d.%d.%d.%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ) ); + }else if( ulVers == cOCTVC1_IP_VERSION_ENUM_6 ) + { unsigned int ulIp0,ulIp1,ulIp2,ulIp3; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp1 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp2 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp3 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT[1], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: [%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X]", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), + (( ulIp1 & 0xFF000000 ) >> 24 ), + (( ulIp1 & 0x00FF0000 ) >> 16 ), + (( ulIp1 & 0x0000FF00 ) >> 8 ), + ( ulIp1 & 0x000000FF ), + (( ulIp2 & 0xFF000000 ) >> 24 ), + (( ulIp2 & 0x00FF0000 ) >> 16 ), + (( ulIp2 & 0x0000FF00 ) >> 8 ), + ( ulIp2 & 0x000000FF ), + (( ulIp3 & 0xFF000000 ) >> 24 ), + (( ulIp3 & 0x00FF0000 ) >> 16 ), + (( ulIp3 & 0x0000FF00 ) >> 8 ), + ( ulIp3 & 0x000000FF )); + }else + { ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT[1], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: Unknowned IP format(%d)",ulVers ); + } + } + offset += sizeof(tOCTVC1_IP_ADDRESS); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT, ulPreviousStatus); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT, ulNewStatus); + + } + + + return 0; + +}; + +/**************************************************************************** + CMD/RSP dissectors + ****************************************************************************/ + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD, hLocalHost), "hLocalHost: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[1], tvb, offset, + 4,"ulRtpEventMask: (0x%08x)", temp_data); + if(temp_data) + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i< mWS_COUNTOF(vals_tOCTVC1_NET_RTP_EVT_MASK); i++ ) + { + if( ( vals_tOCTVC1_NET_RTP_EVT_MASK[i].value && + ( vals_tOCTVC1_NET_RTP_EVT_MASK[i].value & temp_data ) == + vals_tOCTVC1_NET_RTP_EVT_MASK[i].value)) + proto_tree_add_text(sub_tree, tvb, offset,4,"%s", + decode_enumerated_bitfield(vals_tOCTVC1_NET_RTP_EVT_MASK[i].value, 0xFFFFFFFF, (4*8), + VALS(vals_tOCTVC1_NET_RTP_EVT_MASK),"%s")); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD, ulRtpEventMask); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[2], tvb, offset, + 4,"ulRtcpEventMask: (0x%08x)", temp_data); + if(temp_data) + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i< mWS_COUNTOF(vals_tOCTVC1_NET_RTCP_EVT_MASK); i++ ) + { + if( ( vals_tOCTVC1_NET_RTCP_EVT_MASK[i].value && + ( vals_tOCTVC1_NET_RTCP_EVT_MASK[i].value & temp_data ) == + vals_tOCTVC1_NET_RTCP_EVT_MASK[i].value)) + proto_tree_add_text(sub_tree, tvb, offset,4,"%s", + decode_enumerated_bitfield(vals_tOCTVC1_NET_RTCP_EVT_MASK[i].value, 0xFFFFFFFF, (4*8), + VALS(vals_tOCTVC1_NET_RTCP_EVT_MASK),"%s")); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD, ulRtcpEventMask); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[3], tvb, offset, + 4,"ulSrtpEventMask: (0x%08x)", temp_data); + if(temp_data) + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i< mWS_COUNTOF(vals_tOCTVC1_NET_SRTP_EVT_MASK); i++ ) + { + if( ( vals_tOCTVC1_NET_SRTP_EVT_MASK[i].value && + ( vals_tOCTVC1_NET_SRTP_EVT_MASK[i].value & temp_data ) == + vals_tOCTVC1_NET_SRTP_EVT_MASK[i].value)) + proto_tree_add_text(sub_tree, tvb, offset,4,"%s", + decode_enumerated_bitfield(vals_tOCTVC1_NET_SRTP_EVT_MASK[i].value, 0xFFFFFFFF, (4*8), + VALS(vals_tOCTVC1_NET_SRTP_EVT_MASK),"%s")); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD, ulSrtpEventMask); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD, ulUserEventId); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[5], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD, ulInitialOperationMode); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[6], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD, ulSenderMaxPendingTimeSec); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[7], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD, ulSenderMaxInactiveTimeSec); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[8], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD, ulRtcpEnableFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD, ulRtcpEnableFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[9], tvb, offset, + 4,"ulRtcpVideoFeedbackEnableFlagMask: (0x%08x)", temp_data); + if(temp_data) + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i< mWS_COUNTOF(vals_tOCTVC1_NET_VIDEO_RTCP_FB_MSG_MASK); i++ ) + { + if( ( vals_tOCTVC1_NET_VIDEO_RTCP_FB_MSG_MASK[i].value && + ( vals_tOCTVC1_NET_VIDEO_RTCP_FB_MSG_MASK[i].value & temp_data ) == + vals_tOCTVC1_NET_VIDEO_RTCP_FB_MSG_MASK[i].value)) + proto_tree_add_text(sub_tree, tvb, offset,4,"%s", + decode_enumerated_bitfield(vals_tOCTVC1_NET_VIDEO_RTCP_FB_MSG_MASK[i].value, 0xFFFFFFFF, (4*8), + VALS(vals_tOCTVC1_NET_VIDEO_RTCP_FB_MSG_MASK),"%s")); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD, ulRtcpVideoFeedbackEnableFlagMask); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[10], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD, ulRtpSessionBandwidth); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[11], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD, ulHighFractionLost); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[12], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD, ulHighCumulativePacketLost); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[13], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD, ulHighJitter); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[14], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD, ulHighRoundTripTime); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[15], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD, ulLowFractionLost); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[16], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD, ulLowJitter); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[17], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD, ulLowRoundTripTime); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD, hEventDestObj), "hEventDestObj: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[19], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD, ulEventDestObjPort); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_FIFO_ID_INVALID) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[20], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD, ulEventDestObjFifoId),temp_data, "cOCTVC1_FIFO_ID_INVALID (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD[20], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD, ulEventDestObjFifoId); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_OPEN_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_OPEN_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_OPEN_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_OPEN_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_OPEN_RSP, hRtpSession), "hRtpSession: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_OPEN_RSP, ulFifoId); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_CMD, hRtpSession), "hRtpSession: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, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_RSP, hRtpSession), "hRtpSession: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, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD, hRtpSession), "hRtpSession: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD, ulHighFractionLost); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD, ulHighCumulativePacketLost); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD, ulHighJitter); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD, ulHighRoundTripTime); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD[5], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD, ulLowFractionLost); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD[6], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD, ulLowJitter); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD[7], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD, ulLowRoundTripTime); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_RSP, hRtpSession), "hRtpSession: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, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_INFO_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_INFO_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_INFO_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_INFO_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_INFO_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_CMD, ObjectGet), "ObjectGet:tOCTVC1_CURSOR_HANDLE_GET"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_GET( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP, ObjectGet), "ObjectGet:tOCTVC1_CURSOR_HANDLE_GET"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_GET( tvb, pinfo, sub_tree2, offset, NULL ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP, hLocalHost), "hLocalHost: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP, ulFifoId); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[3], tvb, offset, + 4,"ulRtpEventMask: (0x%08x)", temp_data); + if(temp_data) + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i< mWS_COUNTOF(vals_tOCTVC1_NET_RTP_EVT_MASK); i++ ) + { + if( ( vals_tOCTVC1_NET_RTP_EVT_MASK[i].value && + ( vals_tOCTVC1_NET_RTP_EVT_MASK[i].value & temp_data ) == + vals_tOCTVC1_NET_RTP_EVT_MASK[i].value)) + proto_tree_add_text(sub_tree, tvb, offset,4,"%s", + decode_enumerated_bitfield(vals_tOCTVC1_NET_RTP_EVT_MASK[i].value, 0xFFFFFFFF, (4*8), + VALS(vals_tOCTVC1_NET_RTP_EVT_MASK),"%s")); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP, ulRtpEventMask); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[4], tvb, offset, + 4,"ulRtcpEventMask: (0x%08x)", temp_data); + if(temp_data) + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i< mWS_COUNTOF(vals_tOCTVC1_NET_RTCP_EVT_MASK); i++ ) + { + if( ( vals_tOCTVC1_NET_RTCP_EVT_MASK[i].value && + ( vals_tOCTVC1_NET_RTCP_EVT_MASK[i].value & temp_data ) == + vals_tOCTVC1_NET_RTCP_EVT_MASK[i].value)) + proto_tree_add_text(sub_tree, tvb, offset,4,"%s", + decode_enumerated_bitfield(vals_tOCTVC1_NET_RTCP_EVT_MASK[i].value, 0xFFFFFFFF, (4*8), + VALS(vals_tOCTVC1_NET_RTCP_EVT_MASK),"%s")); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP, ulRtcpEventMask); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[5], tvb, offset, + 4,"ulSrtpEventMask: (0x%08x)", temp_data); + if(temp_data) + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i< mWS_COUNTOF(vals_tOCTVC1_NET_SRTP_EVT_MASK); i++ ) + { + if( ( vals_tOCTVC1_NET_SRTP_EVT_MASK[i].value && + ( vals_tOCTVC1_NET_SRTP_EVT_MASK[i].value & temp_data ) == + vals_tOCTVC1_NET_SRTP_EVT_MASK[i].value)) + proto_tree_add_text(sub_tree, tvb, offset,4,"%s", + decode_enumerated_bitfield(vals_tOCTVC1_NET_SRTP_EVT_MASK[i].value, 0xFFFFFFFF, (4*8), + VALS(vals_tOCTVC1_NET_SRTP_EVT_MASK),"%s")); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP, ulSrtpEventMask); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[6], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP, ulUserEventId); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[7], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP, ulInitialOperationMode); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[8], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP, ulSenderMaxPendingTimeSec); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[9], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP, ulSenderMaxInactiveTimeSec); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[10], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP, ulRtcpEnableFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP, ulRtcpEnableFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[11], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP, ulRtpSessionBandwidth); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[12], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP, ulHighFractionLost); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[13], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP, ulHighCumulativePacketLost); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[14], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP, ulHighJitter); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[15], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP, ulHighRoundTripTime); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[16], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP, ulLowFractionLost); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[17], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP, ulLowJitter); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[18], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP, ulLowRoundTripTime); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP, hEventDestObj), "hEventDestObj: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[20], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP, ulEventDestObjPort); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP[21], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP, ulEventDestObjFifoId); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_STATS_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_STATS_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_STATS_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_STATS_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_STATS_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_STATS_CMD, ObjectGet), "ObjectGet:tOCTVC1_CURSOR_HANDLE_GET"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_GET( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP, ObjectGet), "ObjectGet:tOCTVC1_CURSOR_HANDLE_GET"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_GET( tvb, pinfo, sub_tree2, offset, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP, ulNumMember); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP, ulNumSender); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP, ulSessionStartTime); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP, ulRxByePktCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP[5], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP, ulRxSenderJoinCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP[6], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP, ulRxMemberJoinCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP[7], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP, ulErrCollisionCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP[8], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP, ulErrLoopCnt); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP[9], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP, ulErrRtcpPktInvalidCnt); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CMD, hRtpSession), "hRtpSession: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CMD[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CMD, ulTxRtcpPauseFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CMD, ulTxRtcpPauseFlag); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_RSP, hRtpSession), "hRtpSession: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, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD, hRtpSession), "hRtpSession: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, NULL ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD, hTerm), "hTerm: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD, ulRxPktFilter); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_UDP_PORT_INVALID) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD, ulLocalUdpPortRtp),temp_data, "cOCTVC1_UDP_PORT_INVALID (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[3], tvb, offset, + 4, temp_data); + if( ( (unsigned int)temp_data < 0) || ( (unsigned int)temp_data > 65535 ) ) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (0..65535)]" ); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD, ulLocalUdpPortRtp); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_UDP_PORT_INVALID) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[4], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD, ulLocalUdpPortRtcp),temp_data, "cOCTVC1_UDP_PORT_INVALID (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[4], tvb, offset, + 4, temp_data); + if( ( (unsigned int)temp_data < 0) || ( (unsigned int)temp_data > 65535 ) ) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (0..65535)]" ); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD, ulLocalUdpPortRtcp); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_UDP_PORT_INVALID) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[5], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD, ulLocalUdpPortT38),temp_data, "cOCTVC1_UDP_PORT_INVALID (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[5], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD, ulLocalUdpPortT38); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[6], tvb, offset, + 4, temp_data); + if( ( (unsigned int)temp_data < 0) || ( (unsigned int)temp_data > 255 ) ) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (0..255)]" ); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD, ulLocalCnameLength); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[7], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD, achLocalCname), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD, achLocalCname); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[8], tvb, offset, + 4,"ulLocalForcedRtpParmMask: (0x%08x)", temp_data); + if(temp_data) + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i< mWS_COUNTOF(vals_tOCTVC1_NET_RTP_FORCED_PARAMETER_MASK); i++ ) + { + if( ( vals_tOCTVC1_NET_RTP_FORCED_PARAMETER_MASK[i].value && + ( vals_tOCTVC1_NET_RTP_FORCED_PARAMETER_MASK[i].value & temp_data ) == + vals_tOCTVC1_NET_RTP_FORCED_PARAMETER_MASK[i].value)) + proto_tree_add_text(sub_tree, tvb, offset,4,"%s", + decode_enumerated_bitfield(vals_tOCTVC1_NET_RTP_FORCED_PARAMETER_MASK[i].value, 0xFFFFFFFF, (4*8), + VALS(vals_tOCTVC1_NET_RTP_FORCED_PARAMETER_MASK),"%s")); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD, ulLocalForcedRtpParmMask); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[9], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD, ulLocalForcedSsrc); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[10], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD, ulLocalForcedInitialSeqNumber); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[11], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD, ulRemoteAutoDetectFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD, ulRemoteAutoDetectFlag); + + { + int ulVers; + unsigned int offs = offset; + ulVers = tvb_get_ntohl( tvb, offs ); + if( ulVers == cOCTVC1_IP_VERSION_ENUM_4 ) + { unsigned int ulIp0,ulUdpPort; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 16; + ulUdpPort = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[12], tvb, offset, + sizeof(tOCTVC1_UDP_ADDRESS), "","RemoteUdpAddressRtp: %d.%d.%d.%d:%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), ulUdpPort ); + }else if( ulVers == cOCTVC1_IP_VERSION_ENUM_6 ) + { unsigned int ulIp0,ulIp1,ulIp2,ulIp3,ulUdpPort; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp1 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp2 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp3 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulUdpPort = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[12], tvb, offset, + sizeof(tOCTVC1_UDP_ADDRESS), "","RemoteUdpAddressRtp: [%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X]:%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), + (( ulIp1 & 0xFF000000 ) >> 24 ), + (( ulIp1 & 0x00FF0000 ) >> 16 ), + (( ulIp1 & 0x0000FF00 ) >> 8 ), + ( ulIp1 & 0x000000FF ), + (( ulIp2 & 0xFF000000 ) >> 24 ), + (( ulIp2 & 0x00FF0000 ) >> 16 ), + (( ulIp2 & 0x0000FF00 ) >> 8 ), + ( ulIp2 & 0x000000FF ), + (( ulIp3 & 0xFF000000 ) >> 24 ), + (( ulIp3 & 0x00FF0000 ) >> 16 ), + (( ulIp3 & 0x0000FF00 ) >> 8 ), + ( ulIp3 & 0x000000FF ), ulUdpPort ); + }else + { ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[12], tvb, offset, + sizeof(tOCTVC1_UDP_ADDRESS), "","RemoteUdpAddressRtp: Unknowned IP format(%d)",ulVers ); + } + } + offset += sizeof(tOCTVC1_UDP_ADDRESS); + + { + int ulVers; + unsigned int offs = offset; + ulVers = tvb_get_ntohl( tvb, offs ); + if( ulVers == cOCTVC1_IP_VERSION_ENUM_4 ) + { unsigned int ulIp0,ulUdpPort; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 16; + ulUdpPort = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[13], tvb, offset, + sizeof(tOCTVC1_UDP_ADDRESS), "","RemoteUdpAddressRtcp: %d.%d.%d.%d:%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), ulUdpPort ); + }else if( ulVers == cOCTVC1_IP_VERSION_ENUM_6 ) + { unsigned int ulIp0,ulIp1,ulIp2,ulIp3,ulUdpPort; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp1 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp2 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp3 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulUdpPort = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[13], tvb, offset, + sizeof(tOCTVC1_UDP_ADDRESS), "","RemoteUdpAddressRtcp: [%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X]:%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), + (( ulIp1 & 0xFF000000 ) >> 24 ), + (( ulIp1 & 0x00FF0000 ) >> 16 ), + (( ulIp1 & 0x0000FF00 ) >> 8 ), + ( ulIp1 & 0x000000FF ), + (( ulIp2 & 0xFF000000 ) >> 24 ), + (( ulIp2 & 0x00FF0000 ) >> 16 ), + (( ulIp2 & 0x0000FF00 ) >> 8 ), + ( ulIp2 & 0x000000FF ), + (( ulIp3 & 0xFF000000 ) >> 24 ), + (( ulIp3 & 0x00FF0000 ) >> 16 ), + (( ulIp3 & 0x0000FF00 ) >> 8 ), + ( ulIp3 & 0x000000FF ), ulUdpPort ); + }else + { ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[13], tvb, offset, + sizeof(tOCTVC1_UDP_ADDRESS), "","RemoteUdpAddressRtcp: Unknowned IP format(%d)",ulVers ); + } + } + offset += sizeof(tOCTVC1_UDP_ADDRESS); + + { + int ulVers; + unsigned int offs = offset; + ulVers = tvb_get_ntohl( tvb, offs ); + if( ulVers == cOCTVC1_IP_VERSION_ENUM_4 ) + { unsigned int ulIp0,ulUdpPort; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 16; + ulUdpPort = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[14], tvb, offset, + sizeof(tOCTVC1_UDP_ADDRESS), "","RemoteUdpAddressT38: %d.%d.%d.%d:%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), ulUdpPort ); + }else if( ulVers == cOCTVC1_IP_VERSION_ENUM_6 ) + { unsigned int ulIp0,ulIp1,ulIp2,ulIp3,ulUdpPort; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp1 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp2 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp3 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulUdpPort = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[14], tvb, offset, + sizeof(tOCTVC1_UDP_ADDRESS), "","RemoteUdpAddressT38: [%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X]:%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), + (( ulIp1 & 0xFF000000 ) >> 24 ), + (( ulIp1 & 0x00FF0000 ) >> 16 ), + (( ulIp1 & 0x0000FF00 ) >> 8 ), + ( ulIp1 & 0x000000FF ), + (( ulIp2 & 0xFF000000 ) >> 24 ), + (( ulIp2 & 0x00FF0000 ) >> 16 ), + (( ulIp2 & 0x0000FF00 ) >> 8 ), + ( ulIp2 & 0x000000FF ), + (( ulIp3 & 0xFF000000 ) >> 24 ), + (( ulIp3 & 0x00FF0000 ) >> 16 ), + (( ulIp3 & 0x0000FF00 ) >> 8 ), + ( ulIp3 & 0x000000FF ), ulUdpPort ); + }else + { ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[14], tvb, offset, + sizeof(tOCTVC1_UDP_ADDRESS), "","RemoteUdpAddressT38: Unknowned IP format(%d)",ulVers ); + } + } + offset += sizeof(tOCTVC1_UDP_ADDRESS); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[15], tvb, offset, + 4, temp_data); + if( ( (unsigned int)temp_data < 0) || ( (unsigned int)temp_data > 255 ) ) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (0..255)]" ); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD, ulRemoteCnameLength); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[16], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD, achRemoteCname), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD, achRemoteCname); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[17], tvb, offset, + 4,"ulRemoteForcedRtpParmMask: (0x%08x)", temp_data); + if(temp_data) + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i< mWS_COUNTOF(vals_tOCTVC1_NET_RTP_FORCED_PARAMETER_MASK); i++ ) + { + if( ( vals_tOCTVC1_NET_RTP_FORCED_PARAMETER_MASK[i].value && + ( vals_tOCTVC1_NET_RTP_FORCED_PARAMETER_MASK[i].value & temp_data ) == + vals_tOCTVC1_NET_RTP_FORCED_PARAMETER_MASK[i].value)) + proto_tree_add_text(sub_tree, tvb, offset,4,"%s", + decode_enumerated_bitfield(vals_tOCTVC1_NET_RTP_FORCED_PARAMETER_MASK[i].value, 0xFFFFFFFF, (4*8), + VALS(vals_tOCTVC1_NET_RTP_FORCED_PARAMETER_MASK),"%s")); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD, ulRemoteForcedRtpParmMask); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[18], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD, ulRemoteForcedSsrc); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[19], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD, ulRemoteForcedInitialSeqNumber); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[20], tvb, offset, + 4, temp_data); + if( ( (unsigned int)temp_data < 1) || ( (unsigned int)temp_data > 255 ) ) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (1..255)]" ); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD, ulIpv4TimeToLive); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[21], tvb, offset, + 4, temp_data); + if( ( (unsigned int)temp_data < 0) || ( (unsigned int)temp_data > 255 ) ) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (0..255)]" ); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD, ulIpv4TypeOfService); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[22], tvb, offset, + 4, temp_data); + if( ( (unsigned int)temp_data < 1) || ( (unsigned int)temp_data > 255 ) ) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (1..255)]" ); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD, ulIpv6HopLimit); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[23], tvb, offset, + 4, temp_data); + if( ( (unsigned int)temp_data < 0) || ( (unsigned int)temp_data > 1048575 ) ) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (0..1048575)]" ); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD, ulIpv6FlowLabel); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[24], tvb, offset, + 4, temp_data); + if( ( (unsigned int)temp_data < 0) || ( (unsigned int)temp_data > 255 ) ) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (0..255)]" ); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD, ulIpv6TrafficClass); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD[25], tvb, offset, + 4, temp_data); + if( ( (unsigned int)temp_data < 0) || ( (unsigned int)temp_data > 8 ) ) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (0..8)]" ); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD, ulNumProfEntry); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD, aRtpProfEntry), "aRtpProfEntry:tOCTVC1_NET_RTP_PROFILE_ENTRY"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<8; i++ ) + { + { + proto_tree* sub_tree2; + ti = proto_tree_add_text(sub_tree, tvb, offset, + sizeof(tOCTVC1_NET_RTP_PROFILE_ENTRY), "[%d]:", i); + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_RTP_PROFILE_ENTRY( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD, SenderSrtp), "SenderSrtp:tOCTVC1_NET_SRTP_STREAM_CONFIG"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_SRTP_STREAM_CONFIG( tvb, pinfo, sub_tree2, offset, NULL ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD, SenderSrtpKey), "SenderSrtpKey:tOCTVC1_NET_SRTP_KEY_ENTRY"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_SRTP_KEY_ENTRY( tvb, pinfo, sub_tree2, offset, NULL ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD, ReceiverSrtp), "ReceiverSrtp:tOCTVC1_NET_SRTP_STREAM_CONFIG"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_SRTP_STREAM_CONFIG( tvb, pinfo, sub_tree2, offset, NULL ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD, ReceiverSrtpKey), "ReceiverSrtpKey:tOCTVC1_NET_SRTP_KEY_ENTRY"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_SRTP_KEY_ENTRY( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP, hRtpSession), "hRtpSession: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP, ulLocalMemberId); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP, ulLocalSsrc); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP, ulLocalInitialSeqNumber); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_CMD, hRtpSession), "hRtpSession: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_CMD[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_CMD, ulLocalMemberId); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_RSP, hRtpSession), "hRtpSession: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_RSP, ulLocalMemberId); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD, hRtpSession), "hRtpSession: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD, ulLocalMemberId); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD, ulTxRtpPauseFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD, ulTxRtpPauseFlag); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_RSP, hRtpSession), "hRtpSession: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_RSP, ulLocalMemberId); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD, hRtpSession), "hRtpSession: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD, ulLocalMemberId); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[2], tvb, offset, + 4,"ulModifyMask: (0x%08x)", temp_data); + if(temp_data) + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i< mWS_COUNTOF(vals_tOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK); i++ ) + { + if( ( vals_tOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK[i].value && + ( vals_tOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK[i].value & temp_data ) == + vals_tOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK[i].value)) + proto_tree_add_text(sub_tree, tvb, offset,4,"%s", + decode_enumerated_bitfield(vals_tOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK[i].value, 0xFFFFFFFF, (4*8), + VALS(vals_tOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK),"%s")); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD, ulModifyMask); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD, ulRemoteAutoDetectFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD, ulRemoteAutoDetectFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_UDP_PORT_INVALID) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[4], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD, ulLocalUdpPortRtp),temp_data, "cOCTVC1_UDP_PORT_INVALID (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[4], tvb, offset, + 4, temp_data); + if( ( (unsigned int)temp_data < 0) || ( (unsigned int)temp_data > 65535 ) ) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (0..65535)]" ); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD, ulLocalUdpPortRtp); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_UDP_PORT_INVALID) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[5], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD, ulLocalUdpPortRtcp),temp_data, "cOCTVC1_UDP_PORT_INVALID (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[5], tvb, offset, + 4, temp_data); + if( ( (unsigned int)temp_data < 0) || ( (unsigned int)temp_data > 65535 ) ) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (0..65535)]" ); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD, ulLocalUdpPortRtcp); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_UDP_PORT_INVALID) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[6], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD, ulLocalUdpPortT38),temp_data, "cOCTVC1_UDP_PORT_INVALID (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[6], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD, ulLocalUdpPortT38); + + { + int ulVers; + unsigned int offs = offset; + ulVers = tvb_get_ntohl( tvb, offs ); + if( ulVers == cOCTVC1_IP_VERSION_ENUM_4 ) + { unsigned int ulIp0,ulUdpPort; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 16; + ulUdpPort = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[7], tvb, offset, + sizeof(tOCTVC1_UDP_ADDRESS), "","RemoteUdpAddressRtp: %d.%d.%d.%d:%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), ulUdpPort ); + }else if( ulVers == cOCTVC1_IP_VERSION_ENUM_6 ) + { unsigned int ulIp0,ulIp1,ulIp2,ulIp3,ulUdpPort; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp1 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp2 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp3 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulUdpPort = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[7], tvb, offset, + sizeof(tOCTVC1_UDP_ADDRESS), "","RemoteUdpAddressRtp: [%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X]:%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), + (( ulIp1 & 0xFF000000 ) >> 24 ), + (( ulIp1 & 0x00FF0000 ) >> 16 ), + (( ulIp1 & 0x0000FF00 ) >> 8 ), + ( ulIp1 & 0x000000FF ), + (( ulIp2 & 0xFF000000 ) >> 24 ), + (( ulIp2 & 0x00FF0000 ) >> 16 ), + (( ulIp2 & 0x0000FF00 ) >> 8 ), + ( ulIp2 & 0x000000FF ), + (( ulIp3 & 0xFF000000 ) >> 24 ), + (( ulIp3 & 0x00FF0000 ) >> 16 ), + (( ulIp3 & 0x0000FF00 ) >> 8 ), + ( ulIp3 & 0x000000FF ), ulUdpPort ); + }else + { ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[7], tvb, offset, + sizeof(tOCTVC1_UDP_ADDRESS), "","RemoteUdpAddressRtp: Unknowned IP format(%d)",ulVers ); + } + } + offset += sizeof(tOCTVC1_UDP_ADDRESS); + + { + int ulVers; + unsigned int offs = offset; + ulVers = tvb_get_ntohl( tvb, offs ); + if( ulVers == cOCTVC1_IP_VERSION_ENUM_4 ) + { unsigned int ulIp0,ulUdpPort; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 16; + ulUdpPort = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[8], tvb, offset, + sizeof(tOCTVC1_UDP_ADDRESS), "","RemoteUdpAddressRtcp: %d.%d.%d.%d:%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), ulUdpPort ); + }else if( ulVers == cOCTVC1_IP_VERSION_ENUM_6 ) + { unsigned int ulIp0,ulIp1,ulIp2,ulIp3,ulUdpPort; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp1 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp2 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp3 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulUdpPort = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[8], tvb, offset, + sizeof(tOCTVC1_UDP_ADDRESS), "","RemoteUdpAddressRtcp: [%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X]:%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), + (( ulIp1 & 0xFF000000 ) >> 24 ), + (( ulIp1 & 0x00FF0000 ) >> 16 ), + (( ulIp1 & 0x0000FF00 ) >> 8 ), + ( ulIp1 & 0x000000FF ), + (( ulIp2 & 0xFF000000 ) >> 24 ), + (( ulIp2 & 0x00FF0000 ) >> 16 ), + (( ulIp2 & 0x0000FF00 ) >> 8 ), + ( ulIp2 & 0x000000FF ), + (( ulIp3 & 0xFF000000 ) >> 24 ), + (( ulIp3 & 0x00FF0000 ) >> 16 ), + (( ulIp3 & 0x0000FF00 ) >> 8 ), + ( ulIp3 & 0x000000FF ), ulUdpPort ); + }else + { ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[8], tvb, offset, + sizeof(tOCTVC1_UDP_ADDRESS), "","RemoteUdpAddressRtcp: Unknowned IP format(%d)",ulVers ); + } + } + offset += sizeof(tOCTVC1_UDP_ADDRESS); + + { + int ulVers; + unsigned int offs = offset; + ulVers = tvb_get_ntohl( tvb, offs ); + if( ulVers == cOCTVC1_IP_VERSION_ENUM_4 ) + { unsigned int ulIp0,ulUdpPort; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 16; + ulUdpPort = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[9], tvb, offset, + sizeof(tOCTVC1_UDP_ADDRESS), "","RemoteUdpAddressT38: %d.%d.%d.%d:%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), ulUdpPort ); + }else if( ulVers == cOCTVC1_IP_VERSION_ENUM_6 ) + { unsigned int ulIp0,ulIp1,ulIp2,ulIp3,ulUdpPort; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp1 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp2 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp3 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulUdpPort = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[9], tvb, offset, + sizeof(tOCTVC1_UDP_ADDRESS), "","RemoteUdpAddressT38: [%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X]:%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), + (( ulIp1 & 0xFF000000 ) >> 24 ), + (( ulIp1 & 0x00FF0000 ) >> 16 ), + (( ulIp1 & 0x0000FF00 ) >> 8 ), + ( ulIp1 & 0x000000FF ), + (( ulIp2 & 0xFF000000 ) >> 24 ), + (( ulIp2 & 0x00FF0000 ) >> 16 ), + (( ulIp2 & 0x0000FF00 ) >> 8 ), + ( ulIp2 & 0x000000FF ), + (( ulIp3 & 0xFF000000 ) >> 24 ), + (( ulIp3 & 0x00FF0000 ) >> 16 ), + (( ulIp3 & 0x0000FF00 ) >> 8 ), + ( ulIp3 & 0x000000FF ), ulUdpPort ); + }else + { ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[9], tvb, offset, + sizeof(tOCTVC1_UDP_ADDRESS), "","RemoteUdpAddressT38: Unknowned IP format(%d)",ulVers ); + } + } + offset += sizeof(tOCTVC1_UDP_ADDRESS); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[10], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD, ulRemoteCnameLength); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[11], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD, achRemoteCname), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD, achRemoteCname); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[12], tvb, offset, + 4,"ulRemoteForcedRtpParmMask: (0x%08x)", temp_data); + if(temp_data) + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i< mWS_COUNTOF(vals_tOCTVC1_NET_RTP_FORCED_PARAMETER_MASK); i++ ) + { + if( ( vals_tOCTVC1_NET_RTP_FORCED_PARAMETER_MASK[i].value && + ( vals_tOCTVC1_NET_RTP_FORCED_PARAMETER_MASK[i].value & temp_data ) == + vals_tOCTVC1_NET_RTP_FORCED_PARAMETER_MASK[i].value)) + proto_tree_add_text(sub_tree, tvb, offset,4,"%s", + decode_enumerated_bitfield(vals_tOCTVC1_NET_RTP_FORCED_PARAMETER_MASK[i].value, 0xFFFFFFFF, (4*8), + VALS(vals_tOCTVC1_NET_RTP_FORCED_PARAMETER_MASK),"%s")); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD, ulRemoteForcedRtpParmMask); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[13], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD, ulRemoteForcedSsrc); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD[14], tvb, offset, + 4, temp_data); + if( (unsigned int)temp_data > 0xFFFF) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (..0xFFFF)]" ); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD, ulRemoteForcedInitialSeqNumber); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD, SenderSrtp), "SenderSrtp:tOCTVC1_NET_SRTP_STREAM_CONFIG"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_SRTP_STREAM_CONFIG( tvb, pinfo, sub_tree2, offset, NULL ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD, SenderSrtpKey), "SenderSrtpKey:tOCTVC1_NET_SRTP_KEY_ENTRY"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_SRTP_KEY_ENTRY( tvb, pinfo, sub_tree2, offset, NULL ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD, ReceiverSrtp), "ReceiverSrtp:tOCTVC1_NET_SRTP_STREAM_CONFIG"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_SRTP_STREAM_CONFIG( tvb, pinfo, sub_tree2, offset, NULL ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD, ReceiverSrtpKey), "ReceiverSrtpKey:tOCTVC1_NET_SRTP_KEY_ENTRY"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_SRTP_KEY_ENTRY( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RSP, hRtpSession), "hRtpSession: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RSP, ulLocalMemberId); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD[0], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD, ulForceFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD, ulForceFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD, ulRecoverNtpFromRtpTsFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD, ulRecoverNtpFromRtpTsFlag); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD, hRtpSession), "hRtpSession:tOCTVC1_HANDLE"); + { + proto_tree* sub_tree2; + tWS_EXTRA_VALUE ExtraVal; + ExtraVal.lValue = cOCTVC1_HANDLE_INVALID; + ExtraVal.pszValue = "cOCTVC1_HANDLE_INVALID"; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_HANDLE( tvb, pinfo, sub_tree2, offset, &ExtraVal ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD, ulLocalMemberId); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD, hRtpSessionAssociated), "hRtpSessionAssociated:tOCTVC1_HANDLE"); + { + proto_tree* sub_tree2; + tWS_EXTRA_VALUE ExtraVal; + ExtraVal.lValue = cOCTVC1_HANDLE_INVALID; + ExtraVal.pszValue = "cOCTVC1_HANDLE_INVALID"; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_HANDLE( tvb, pinfo, sub_tree2, offset, &ExtraVal ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD[5], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD, ulLocalMemberIdAssociated); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP, hRtpSession), "hRtpSession: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP, ulLocalMemberId); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP, RtpMemberPrevConnInfo), "RtpMemberPrevConnInfo:tOCTVC1_NET_RTP_MEMBER_CONN_INFO"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_RTP_MEMBER_CONN_INFO( tvb, pinfo, sub_tree2, offset, NULL ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP, hRtpSessionAssociated), "hRtpSessionAssociated: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP, ulLocalMemberIdAssociated); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP, RtpMemberPrevConnInfoAssociated), "RtpMemberPrevConnInfoAssociated:tOCTVC1_NET_RTP_MEMBER_CONN_INFO"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_RTP_MEMBER_CONN_INFO( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_CMD, hRtpSession), "hRtpSession:tOCTVC1_HANDLE"); + { + proto_tree* sub_tree2; + tWS_EXTRA_VALUE ExtraVal; + ExtraVal.lValue = cOCTVC1_HANDLE_INVALID; + ExtraVal.pszValue = "cOCTVC1_HANDLE_INVALID"; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_HANDLE( tvb, pinfo, sub_tree2, offset, &ExtraVal ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_CMD[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_CMD, ulLocalMemberId); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP, hRtpSession), "hRtpSession: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP, ulLocalMemberId); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP, RtpMemberPrevConnInfo), "RtpMemberPrevConnInfo:tOCTVC1_NET_RTP_MEMBER_CONN_INFO"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_RTP_MEMBER_CONN_INFO( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_CMD, SubObjectIdGet), "SubObjectIdGet:tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, SubObjectIdGet), "SubObjectIdGet:tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID( tvb, pinfo, sub_tree2, offset, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, ulOperationMode); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, ulTxRtpPauseFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, ulTxRtpPauseFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, ulTxRtcpPauseFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, ulTxRtcpPauseFlag); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, hTerm), "hTerm: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, NULL ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, hDestObj), "hDestObj: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[6], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, ulDestObjPort); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[7], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, ulRxPktFilter); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[8], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, ulDestObjFifoId); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_UDP_PORT_INVALID) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[9], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, ulLocalUdpPortRtp),temp_data, "cOCTVC1_UDP_PORT_INVALID (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[9], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, ulLocalUdpPortRtp); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_UDP_PORT_INVALID) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[10], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, ulLocalUdpPortRtcp),temp_data, "cOCTVC1_UDP_PORT_INVALID (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[10], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, ulLocalUdpPortRtcp); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_UDP_PORT_INVALID) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[11], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, ulLocalUdpPortT38),temp_data, "cOCTVC1_UDP_PORT_INVALID (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[11], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, ulLocalUdpPortT38); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[12], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, ulLocalCnameLength); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[13], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, achLocalCname), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, achLocalCname); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[14], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, ulRemoteAutoDetectFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, ulRemoteAutoDetectFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[15], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, ulValidRemoteFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, ulValidRemoteFlag); + + { + int ulVers; + unsigned int offs = offset; + ulVers = tvb_get_ntohl( tvb, offs ); + if( ulVers == cOCTVC1_IP_VERSION_ENUM_4 ) + { unsigned int ulIp0,ulUdpPort; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 16; + ulUdpPort = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[16], tvb, offset, + sizeof(tOCTVC1_UDP_ADDRESS), "","RemoteUdpAddressRtp: %d.%d.%d.%d:%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), ulUdpPort ); + }else if( ulVers == cOCTVC1_IP_VERSION_ENUM_6 ) + { unsigned int ulIp0,ulIp1,ulIp2,ulIp3,ulUdpPort; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp1 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp2 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp3 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulUdpPort = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[16], tvb, offset, + sizeof(tOCTVC1_UDP_ADDRESS), "","RemoteUdpAddressRtp: [%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X]:%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), + (( ulIp1 & 0xFF000000 ) >> 24 ), + (( ulIp1 & 0x00FF0000 ) >> 16 ), + (( ulIp1 & 0x0000FF00 ) >> 8 ), + ( ulIp1 & 0x000000FF ), + (( ulIp2 & 0xFF000000 ) >> 24 ), + (( ulIp2 & 0x00FF0000 ) >> 16 ), + (( ulIp2 & 0x0000FF00 ) >> 8 ), + ( ulIp2 & 0x000000FF ), + (( ulIp3 & 0xFF000000 ) >> 24 ), + (( ulIp3 & 0x00FF0000 ) >> 16 ), + (( ulIp3 & 0x0000FF00 ) >> 8 ), + ( ulIp3 & 0x000000FF ), ulUdpPort ); + }else + { ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[16], tvb, offset, + sizeof(tOCTVC1_UDP_ADDRESS), "","RemoteUdpAddressRtp: Unknowned IP format(%d)",ulVers ); + } + } + offset += sizeof(tOCTVC1_UDP_ADDRESS); + + { + int ulVers; + unsigned int offs = offset; + ulVers = tvb_get_ntohl( tvb, offs ); + if( ulVers == cOCTVC1_IP_VERSION_ENUM_4 ) + { unsigned int ulIp0,ulUdpPort; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 16; + ulUdpPort = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[17], tvb, offset, + sizeof(tOCTVC1_UDP_ADDRESS), "","RemoteUdpAddressRtcp: %d.%d.%d.%d:%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), ulUdpPort ); + }else if( ulVers == cOCTVC1_IP_VERSION_ENUM_6 ) + { unsigned int ulIp0,ulIp1,ulIp2,ulIp3,ulUdpPort; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp1 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp2 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp3 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulUdpPort = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[17], tvb, offset, + sizeof(tOCTVC1_UDP_ADDRESS), "","RemoteUdpAddressRtcp: [%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X]:%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), + (( ulIp1 & 0xFF000000 ) >> 24 ), + (( ulIp1 & 0x00FF0000 ) >> 16 ), + (( ulIp1 & 0x0000FF00 ) >> 8 ), + ( ulIp1 & 0x000000FF ), + (( ulIp2 & 0xFF000000 ) >> 24 ), + (( ulIp2 & 0x00FF0000 ) >> 16 ), + (( ulIp2 & 0x0000FF00 ) >> 8 ), + ( ulIp2 & 0x000000FF ), + (( ulIp3 & 0xFF000000 ) >> 24 ), + (( ulIp3 & 0x00FF0000 ) >> 16 ), + (( ulIp3 & 0x0000FF00 ) >> 8 ), + ( ulIp3 & 0x000000FF ), ulUdpPort ); + }else + { ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[17], tvb, offset, + sizeof(tOCTVC1_UDP_ADDRESS), "","RemoteUdpAddressRtcp: Unknowned IP format(%d)",ulVers ); + } + } + offset += sizeof(tOCTVC1_UDP_ADDRESS); + + { + int ulVers; + unsigned int offs = offset; + ulVers = tvb_get_ntohl( tvb, offs ); + if( ulVers == cOCTVC1_IP_VERSION_ENUM_4 ) + { unsigned int ulIp0,ulUdpPort; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 16; + ulUdpPort = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[18], tvb, offset, + sizeof(tOCTVC1_UDP_ADDRESS), "","RemoteUdpAddressT38: %d.%d.%d.%d:%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), ulUdpPort ); + }else if( ulVers == cOCTVC1_IP_VERSION_ENUM_6 ) + { unsigned int ulIp0,ulIp1,ulIp2,ulIp3,ulUdpPort; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp1 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp2 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp3 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulUdpPort = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[18], tvb, offset, + sizeof(tOCTVC1_UDP_ADDRESS), "","RemoteUdpAddressT38: [%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X]:%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), + (( ulIp1 & 0xFF000000 ) >> 24 ), + (( ulIp1 & 0x00FF0000 ) >> 16 ), + (( ulIp1 & 0x0000FF00 ) >> 8 ), + ( ulIp1 & 0x000000FF ), + (( ulIp2 & 0xFF000000 ) >> 24 ), + (( ulIp2 & 0x00FF0000 ) >> 16 ), + (( ulIp2 & 0x0000FF00 ) >> 8 ), + ( ulIp2 & 0x000000FF ), + (( ulIp3 & 0xFF000000 ) >> 24 ), + (( ulIp3 & 0x00FF0000 ) >> 16 ), + (( ulIp3 & 0x0000FF00 ) >> 8 ), + ( ulIp3 & 0x000000FF ), ulUdpPort ); + }else + { ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[18], tvb, offset, + sizeof(tOCTVC1_UDP_ADDRESS), "","RemoteUdpAddressT38: Unknowned IP format(%d)",ulVers ); + } + } + offset += sizeof(tOCTVC1_UDP_ADDRESS); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[19], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, ulRemoteCnameLength); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[20], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, achRemoteCname), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, achRemoteCname); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[21], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, ulIpv4TimeToLive); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[22], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, ulIpv4TypeOfService); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[23], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, ulIpv6HopLimit); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[24], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, ulIpv6FlowLabel); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[25], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, ulIpv6TrafficClass); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP[26], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, ulNumProfEntry); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, aRtpProfEntry), "aRtpProfEntry:tOCTVC1_NET_RTP_PROFILE_ENTRY"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<8; i++ ) + { + { + proto_tree* sub_tree2; + ti = proto_tree_add_text(sub_tree, tvb, offset, + sizeof(tOCTVC1_NET_RTP_PROFILE_ENTRY), "[%d]:", i); + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_RTP_PROFILE_ENTRY( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP, RtpMemberConnInfo), "RtpMemberConnInfo:tOCTVC1_NET_RTP_MEMBER_CONN_INFO"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_RTP_MEMBER_CONN_INFO( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_CMD, SubObjectIdGet), "SubObjectIdGet:tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP, SubObjectIdGet), "SubObjectIdGet:tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID( tvb, pinfo, sub_tree2, offset, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP, ulRemoteMemberId); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP, aulReceivedPktCnt), "aulReceivedPktCnt"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<2; i++ ) + { + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP[2], tvb, offset, + 4, temp_data, "[%d]: 0x%08x", i, temp_data ); + } + offset+=4; + } + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP, aulReceivedByteCnt), "aulReceivedByteCnt"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<2; i++ ) + { + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint_format(sub_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP[3], tvb, offset, + 4, temp_data, "[%d]: 0x%08x", i, temp_data ); + } + offset+=4; + } + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP, SenderStats), "SenderStats:tOCTVC1_NET_RTCP_SENDER_STATS"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_RTCP_SENDER_STATS( tvb, pinfo, sub_tree2, offset, NULL ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP, ReceiverStats), "ReceiverStats:tOCTVC1_NET_RTCP_RECEIVER_STATS"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_RTCP_RECEIVER_STATS( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_CMD, SubObjectIdGet), "SubObjectIdGet:tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP, SubObjectIdGet), "SubObjectIdGet:tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID( tvb, pinfo, sub_tree2, offset, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP, ulRoundTripTime); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP, ulMaxRoundTripTime); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP, ulAverageRoundTripTime); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP, SenderStats), "SenderStats:tOCTVC1_NET_RTCP_SENDER_STATS"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_RTCP_SENDER_STATS( tvb, pinfo, sub_tree2, offset, NULL ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP, ReceiverStats), "ReceiverStats:tOCTVC1_NET_RTCP_RECEIVER_STATS"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_RTCP_RECEIVER_STATS( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_CMD, SubObjectIdGet), "SubObjectIdGet:tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP, SubObjectIdGet), "SubObjectIdGet:tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID( tvb, pinfo, sub_tree2, offset, NULL ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP, SenderSrtp), "SenderSrtp:tOCTVC1_NET_SRTP_STREAM_CONFIG"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_SRTP_STREAM_CONFIG( tvb, pinfo, sub_tree2, offset, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP, ulSenderSrtpKeyActiveIdx); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP, ulSenderSrtpKeyNum); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP, aSenderSrtpKeyList), "aSenderSrtpKeyList:tOCTVC1_NET_SRTP_KEY_ENTRY"); + { + 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_NET_SRTP_KEY_ENTRY), "[%d]:", i); + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_SRTP_KEY_ENTRY( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP, ReceiverSrtp), "ReceiverSrtp:tOCTVC1_NET_SRTP_STREAM_CONFIG"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_SRTP_STREAM_CONFIG( tvb, pinfo, sub_tree2, offset, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP[6], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP, ulReceiverSrtpKeyActiveIdx); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP[7], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP, ulReceiverSrtpKeyNum); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP, aReceiverSrtpKeyList), "aReceiverSrtpKeyList:tOCTVC1_NET_SRTP_KEY_ENTRY"); + { + 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_NET_SRTP_KEY_ENTRY), "[%d]:", i); + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_SRTP_KEY_ENTRY( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_CMD, SubObjectIdGet), "SubObjectIdGet:tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_RSP, SubObjectIdGet), "SubObjectIdGet:tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID( tvb, pinfo, sub_tree2, offset, NULL ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_RSP, SenderSrtpStats), "SenderSrtpStats:tOCTVC1_NET_SRTP_STREAM_STATS"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_SRTP_STREAM_STATS( tvb, pinfo, sub_tree2, offset, NULL ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_RSP, ReceiverSrtpStats), "ReceiverSrtpStats:tOCTVC1_NET_SRTP_STREAM_STATS"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_SRTP_STREAM_STATS( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD, hRtpSession), "hRtpSession:tOCTVC1_HANDLE"); + { + proto_tree* sub_tree2; + tWS_EXTRA_VALUE ExtraVal; + ExtraVal.lValue = cOCTVC1_HANDLE_INVALID; + ExtraVal.pszValue = "cOCTVC1_HANDLE_INVALID"; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_HANDLE( tvb, pinfo, sub_tree2, offset, &ExtraVal ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD, ulLocalMemberId); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_DO_NOT_MODIFY) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD, ulSenderSrtpKeyActiveIdx),temp_data, "cOCTVC1_DO_NOT_MODIFY (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD[2], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD, ulSenderSrtpKeyActiveIdx); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_DO_NOT_MODIFY) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD, ulSenderSrtpKeyNum),temp_data, "cOCTVC1_DO_NOT_MODIFY (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD[3], tvb, offset, + 4, temp_data); + if( ( (unsigned int)temp_data < 1) || ( (unsigned int)temp_data > 4 ) ) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (1..4)]" ); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD, ulSenderSrtpKeyNum); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD, aSenderSrtpKeyList), "aSenderSrtpKeyList:tOCTVC1_NET_SRTP_KEY_ENTRY"); + { + 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_NET_SRTP_KEY_ENTRY), "[%d]:", i); + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_SRTP_KEY_ENTRY( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + } + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_DO_NOT_MODIFY) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD[5], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD, ulReceiverSrtpKeyActiveIdx),temp_data, "cOCTVC1_DO_NOT_MODIFY (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD[5], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD, ulReceiverSrtpKeyActiveIdx); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_DO_NOT_MODIFY) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD[6], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD, ulReceiverSrtpKeyNum),temp_data, "cOCTVC1_DO_NOT_MODIFY (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD[6], tvb, offset, + 4, temp_data); + if( ( (unsigned int)temp_data < 1) || ( (unsigned int)temp_data > 4 ) ) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (1..4)]" ); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD, ulReceiverSrtpKeyNum); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD, aReceiverSrtpKeyList), "aReceiverSrtpKeyList:tOCTVC1_NET_SRTP_KEY_ENTRY"); + { + 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; + tWS_EXTRA_VALUE ExtraVal; + ExtraVal.lValue = cOCTVC1_DO_NOT_MODIFY; + ExtraVal.pszValue = "cOCTVC1_DO_NOT_MODIFY"; + ti = proto_tree_add_text(sub_tree, tvb, offset, + sizeof(tOCTVC1_NET_SRTP_KEY_ENTRY), "[%d]:", i); + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_SRTP_KEY_ENTRY( tvb, pinfo, sub_tree2, offset, &ExtraVal ); + } + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_RSP, hRtpSession), "hRtpSession: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_RSP, ulLocalMemberId); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD, hRtpSession), "hRtpSession: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD, ulLocalMemberId); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD, ulNumEntry); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD, aEntry), "aEntry:tOCTVC1_NET_RTP_PROFILE_MODIFY_ENTRY"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<8; i++ ) + { + { + proto_tree* sub_tree2; + ti = proto_tree_add_text(sub_tree, tvb, offset, + sizeof(tOCTVC1_NET_RTP_PROFILE_MODIFY_ENTRY), "[%d]:", i); + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_RTP_PROFILE_MODIFY_ENTRY( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_RSP, hRtpSession), "hRtpSession: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_RSP, ulLocalMemberId); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD, hRtpSession), "hRtpSession: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, NULL ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD, hTerm), "hTerm: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, NULL ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD, aStream), "aStream:tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<3; i++ ) + { + { + proto_tree* sub_tree2; + ti = proto_tree_add_text(sub_tree, tvb, offset, + sizeof(tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM), "[%d]:", i); + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD[3], tvb, offset, + 4,"ulLocalForcedRtpParmMask: (0x%08x)", temp_data); + if(temp_data) + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i< mWS_COUNTOF(vals_tOCTVC1_NET_RTP_FORCED_PARAMETER_MASK); i++ ) + { + if( ( vals_tOCTVC1_NET_RTP_FORCED_PARAMETER_MASK[i].value && + ( vals_tOCTVC1_NET_RTP_FORCED_PARAMETER_MASK[i].value & temp_data ) == + vals_tOCTVC1_NET_RTP_FORCED_PARAMETER_MASK[i].value)) + proto_tree_add_text(sub_tree, tvb, offset,4,"%s", + decode_enumerated_bitfield(vals_tOCTVC1_NET_RTP_FORCED_PARAMETER_MASK[i].value, 0xFFFFFFFF, (4*8), + VALS(vals_tOCTVC1_NET_RTP_FORCED_PARAMETER_MASK),"%s")); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD, ulLocalForcedRtpParmMask); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD, ulLocalForcedSsrc); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD[5], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD, ulLocalForcedInitialSeqNumber); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD[6], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD, ulNumRtpProfEntry); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD, aRtpProfEntry), "aRtpProfEntry:tOCTVC1_NET_RTP_PROFILE_ENTRY"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<8; i++ ) + { + { + proto_tree* sub_tree2; + ti = proto_tree_add_text(sub_tree, tvb, offset, + sizeof(tOCTVC1_NET_RTP_PROFILE_ENTRY), "[%d]:", i); + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_RTP_PROFILE_ENTRY( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD[8], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD, ulLocalCnameByteLength); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD[9], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD, achLocalCname), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD, achLocalCname); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD[10], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD, ulRemoteCnameByteLength); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD[11], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD, achRemoteCname), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD, achRemoteCname); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_RSP, hRtpSession), "hRtpSession: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_RSP, ulLocalMemberId); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD, hRtpSession), "hRtpSession: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD, ulLocalMemberId); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD[2], tvb, offset, + 4,"ulModifyMask: (0x%08x)", temp_data); + if(temp_data) + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i< mWS_COUNTOF(vals_tOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK); i++ ) + { + if( ( vals_tOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK[i].value && + ( vals_tOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK[i].value & temp_data ) == + vals_tOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK[i].value)) + proto_tree_add_text(sub_tree, tvb, offset,4,"%s", + decode_enumerated_bitfield(vals_tOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK[i].value, 0xFFFFFFFF, (4*8), + VALS(vals_tOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK),"%s")); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD, ulModifyMask); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD, aStream), "aStream:tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_MODIFY"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<3; i++ ) + { + { + proto_tree* sub_tree2; + ti = proto_tree_add_text(sub_tree, tvb, offset, + sizeof(tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_MODIFY), "[%d]:", i); + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_MODIFY( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD, ulLocalCnameByteLength); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD[5], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD, achLocalCname), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD, achLocalCname); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD[6], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD, ulRemoteCnameByteLength); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD[7], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD, achRemoteCname), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD, achRemoteCname); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_RSP, hRtpSession), "hRtpSession: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_RSP, ulLocalMemberId); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_CMD, SubObjectIdGet), "SubObjectIdGet:tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP, SubObjectIdGet), "SubObjectIdGet:tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID( tvb, pinfo, sub_tree2, offset, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP, ulOperationMode); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP, hTerm), "hTerm: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, NULL ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP, aStream), "aStream:tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<3; i++ ) + { + { + proto_tree* sub_tree2; + ti = proto_tree_add_text(sub_tree, tvb, offset, + sizeof(tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM), "[%d]:", i); + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP, ulNumRtpProfEntry); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP, aRtpProfEntry), "aRtpProfEntry:tOCTVC1_NET_RTP_PROFILE_ENTRY"); + { + int i, ofs=offset; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i<8; i++ ) + { + { + proto_tree* sub_tree2; + ti = proto_tree_add_text(sub_tree, tvb, offset, + sizeof(tOCTVC1_NET_RTP_PROFILE_ENTRY), "[%d]:", i); + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_RTP_PROFILE_ENTRY( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP[6], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP, ulLocalCnameByteLength); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP[7], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP, achLocalCname), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP, achLocalCname); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP[8], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP, ulRemoteCnameByteLength); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP[9], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP, achRemoteCname), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP, achRemoteCname); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + { + int ulVers; + unsigned int offs = offset; + ulVers = tvb_get_ntohl( tvb, offs ); + if( ulVers == cOCTVC1_IP_VERSION_ENUM_4 ) + { unsigned int ulIp0; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD[0], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: %d.%d.%d.%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ) ); + }else if( ulVers == cOCTVC1_IP_VERSION_ENUM_6 ) + { unsigned int ulIp0,ulIp1,ulIp2,ulIp3; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp1 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp2 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp3 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD[0], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: [%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X]", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), + (( ulIp1 & 0xFF000000 ) >> 24 ), + (( ulIp1 & 0x00FF0000 ) >> 16 ), + (( ulIp1 & 0x0000FF00 ) >> 8 ), + ( ulIp1 & 0x000000FF ), + (( ulIp2 & 0xFF000000 ) >> 24 ), + (( ulIp2 & 0x00FF0000 ) >> 16 ), + (( ulIp2 & 0x0000FF00 ) >> 8 ), + ( ulIp2 & 0x000000FF ), + (( ulIp3 & 0xFF000000 ) >> 24 ), + (( ulIp3 & 0x00FF0000 ) >> 16 ), + (( ulIp3 & 0x0000FF00 ) >> 8 ), + ( ulIp3 & 0x000000FF )); + }else + { ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD[0], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: Unknowned IP format(%d)",ulVers ); + } + } + offset += sizeof(tOCTVC1_IP_ADDRESS); + + { + int ulVers; + unsigned int offs = offset; + ulVers = tvb_get_ntohl( tvb, offs ); + if( ulVers == cOCTVC1_IP_VERSION_ENUM_4 ) + { unsigned int ulIp0; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD[1], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","NetworkMask: %d.%d.%d.%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ) ); + }else if( ulVers == cOCTVC1_IP_VERSION_ENUM_6 ) + { unsigned int ulIp0,ulIp1,ulIp2,ulIp3; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp1 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp2 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp3 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD[1], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","NetworkMask: [%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X]", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), + (( ulIp1 & 0xFF000000 ) >> 24 ), + (( ulIp1 & 0x00FF0000 ) >> 16 ), + (( ulIp1 & 0x0000FF00 ) >> 8 ), + ( ulIp1 & 0x000000FF ), + (( ulIp2 & 0xFF000000 ) >> 24 ), + (( ulIp2 & 0x00FF0000 ) >> 16 ), + (( ulIp2 & 0x0000FF00 ) >> 8 ), + ( ulIp2 & 0x000000FF ), + (( ulIp3 & 0xFF000000 ) >> 24 ), + (( ulIp3 & 0x00FF0000 ) >> 16 ), + (( ulIp3 & 0x0000FF00 ) >> 8 ), + ( ulIp3 & 0x000000FF )); + }else + { ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD[1], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","NetworkMask: Unknowned IP format(%d)",ulVers ); + } + } + offset += sizeof(tOCTVC1_IP_ADDRESS); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD, ulAddrAutoConfigFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD, ulAddrAutoConfigFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD, ulMuteOnAddrExpireFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD, ulMuteOnAddrExpireFlag); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD, hLink), "hLink: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD[5], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD, ulUserEventId); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD[6], tvb, offset, + 4,"ulEventMask: (0x%08x)", temp_data); + if(temp_data) + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i< mWS_COUNTOF(vals_tOCTVC1_NET_LOCAL_HOST_EVT_MASK); i++ ) + { + if( ( vals_tOCTVC1_NET_LOCAL_HOST_EVT_MASK[i].value && + ( vals_tOCTVC1_NET_LOCAL_HOST_EVT_MASK[i].value & temp_data ) == + vals_tOCTVC1_NET_LOCAL_HOST_EVT_MASK[i].value)) + proto_tree_add_text(sub_tree, tvb, offset,4,"%s", + decode_enumerated_bitfield(vals_tOCTVC1_NET_LOCAL_HOST_EVT_MASK[i].value, 0xFFFFFFFF, (4*8), + VALS(vals_tOCTVC1_NET_LOCAL_HOST_EVT_MASK),"%s")); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD, ulEventMask); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD[7], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD, ulEventThrottle); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD, hEventDestObj), "hEventDestObj: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD[9], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD, ulEventDestObjPort); + + temp_data = tvb_get_ntohl( tvb, offset ); + if( temp_data == cOCTVC1_FIFO_ID_INVALID) + { ti = proto_tree_add_uint_format_value(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD[10], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD, ulEventDestObjFifoId),temp_data, "cOCTVC1_FIFO_ID_INVALID (0x%08x)",temp_data); + }else { + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD[10], tvb, offset, + 4, temp_data); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD, ulEventDestObjFifoId); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_RSP, hLocalHost), "hLocalHost: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_RSP, ulAddrStatus); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_CMD, hLocalHost), "hLocalHost: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, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_RSP, hLocalHost), "hLocalHost: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, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_LOCAL_HOST_INFO_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LOCAL_HOST_INFO_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_LOCAL_HOST_INFO_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LOCAL_HOST_INFO_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_INFO_CMD, ObjectGet), "ObjectGet:tOCTVC1_CURSOR_HANDLE_GET"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_GET( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP, ObjectGet), "ObjectGet:tOCTVC1_CURSOR_HANDLE_GET"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_GET( tvb, pinfo, sub_tree2, offset, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP, ulAddrAutoConfigFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP, ulAddrAutoConfigFlag); + + { + int ulVers; + unsigned int offs = offset; + ulVers = tvb_get_ntohl( tvb, offs ); + if( ulVers == cOCTVC1_IP_VERSION_ENUM_4 ) + { unsigned int ulIp0; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP[2], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: %d.%d.%d.%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ) ); + }else if( ulVers == cOCTVC1_IP_VERSION_ENUM_6 ) + { unsigned int ulIp0,ulIp1,ulIp2,ulIp3; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp1 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp2 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp3 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP[2], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: [%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X]", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), + (( ulIp1 & 0xFF000000 ) >> 24 ), + (( ulIp1 & 0x00FF0000 ) >> 16 ), + (( ulIp1 & 0x0000FF00 ) >> 8 ), + ( ulIp1 & 0x000000FF ), + (( ulIp2 & 0xFF000000 ) >> 24 ), + (( ulIp2 & 0x00FF0000 ) >> 16 ), + (( ulIp2 & 0x0000FF00 ) >> 8 ), + ( ulIp2 & 0x000000FF ), + (( ulIp3 & 0xFF000000 ) >> 24 ), + (( ulIp3 & 0x00FF0000 ) >> 16 ), + (( ulIp3 & 0x0000FF00 ) >> 8 ), + ( ulIp3 & 0x000000FF )); + }else + { ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP[2], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: Unknowned IP format(%d)",ulVers ); + } + } + offset += sizeof(tOCTVC1_IP_ADDRESS); + + { + int ulVers; + unsigned int offs = offset; + ulVers = tvb_get_ntohl( tvb, offs ); + if( ulVers == cOCTVC1_IP_VERSION_ENUM_4 ) + { unsigned int ulIp0; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP[3], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","NetworkMask: %d.%d.%d.%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ) ); + }else if( ulVers == cOCTVC1_IP_VERSION_ENUM_6 ) + { unsigned int ulIp0,ulIp1,ulIp2,ulIp3; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp1 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp2 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp3 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP[3], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","NetworkMask: [%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X]", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), + (( ulIp1 & 0xFF000000 ) >> 24 ), + (( ulIp1 & 0x00FF0000 ) >> 16 ), + (( ulIp1 & 0x0000FF00 ) >> 8 ), + ( ulIp1 & 0x000000FF ), + (( ulIp2 & 0xFF000000 ) >> 24 ), + (( ulIp2 & 0x00FF0000 ) >> 16 ), + (( ulIp2 & 0x0000FF00 ) >> 8 ), + ( ulIp2 & 0x000000FF ), + (( ulIp3 & 0xFF000000 ) >> 24 ), + (( ulIp3 & 0x00FF0000 ) >> 16 ), + (( ulIp3 & 0x0000FF00 ) >> 8 ), + ( ulIp3 & 0x000000FF )); + }else + { ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP[3], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","NetworkMask: Unknowned IP format(%d)",ulVers ); + } + } + offset += sizeof(tOCTVC1_IP_ADDRESS); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP, hLink), "hLink: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP[5], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP, ulAddrStatus); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP[6], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP, ulUserEventId); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP[7], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP, ulEventThrottle); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_none_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP[8], tvb, offset, + 4,"ulEventMask: (0x%08x)", temp_data); + if(temp_data) + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + for( i=0; i< mWS_COUNTOF(vals_tOCTVC1_NET_LOCAL_HOST_EVT_MASK); i++ ) + { + if( ( vals_tOCTVC1_NET_LOCAL_HOST_EVT_MASK[i].value && + ( vals_tOCTVC1_NET_LOCAL_HOST_EVT_MASK[i].value & temp_data ) == + vals_tOCTVC1_NET_LOCAL_HOST_EVT_MASK[i].value)) + proto_tree_add_text(sub_tree, tvb, offset,4,"%s", + decode_enumerated_bitfield(vals_tOCTVC1_NET_LOCAL_HOST_EVT_MASK[i].value, 0xFFFFFFFF, (4*8), + VALS(vals_tOCTVC1_NET_LOCAL_HOST_EVT_MASK),"%s")); + } + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP, ulEventMask); + + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP, hEventDestObj), "hEventDestObj: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP[10], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP, ulEventDestObjPort); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP[11], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP, ulEventDestObjFifoId); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_LOCAL_HOST_STATS_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_LOCAL_HOST_STATS_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LOCAL_HOST_STATS_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_LOCAL_HOST_STATS_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LOCAL_HOST_STATS_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_STATS_CMD, ObjectGet), "ObjectGet:tOCTVC1_CURSOR_HANDLE_GET"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_GET( tvb, pinfo, sub_tree2, offset, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_STATS_CMD[1], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_STATS_CMD, ulResetStatsFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_STATS_CMD, ulResetStatsFlag); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_LOCAL_HOST_STATS_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_LOCAL_HOST_STATS_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LOCAL_HOST_STATS_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_LOCAL_HOST_STATS_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LOCAL_HOST_STATS_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_STATS_RSP, ObjectGet), "ObjectGet:tOCTVC1_CURSOR_HANDLE_GET"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_CURSOR_HANDLE_GET( tvb, pinfo, sub_tree2, offset, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_STATS_RSP[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_STATS_RSP, ulApiEventCnt); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD, hLocalHost), "hLocalHost: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, NULL ); + } + { + int ulVers; + unsigned int offs = offset; + ulVers = tvb_get_ntohl( tvb, offs ); + if( ulVers == cOCTVC1_IP_VERSION_ENUM_4 ) + { unsigned int ulIp0; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD[1], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","RemoteIpAddress: %d.%d.%d.%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ) ); + }else if( ulVers == cOCTVC1_IP_VERSION_ENUM_6 ) + { unsigned int ulIp0,ulIp1,ulIp2,ulIp3; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp1 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp2 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp3 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD[1], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","RemoteIpAddress: [%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X]", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), + (( ulIp1 & 0xFF000000 ) >> 24 ), + (( ulIp1 & 0x00FF0000 ) >> 16 ), + (( ulIp1 & 0x0000FF00 ) >> 8 ), + ( ulIp1 & 0x000000FF ), + (( ulIp2 & 0xFF000000 ) >> 24 ), + (( ulIp2 & 0x00FF0000 ) >> 16 ), + (( ulIp2 & 0x0000FF00 ) >> 8 ), + ( ulIp2 & 0x000000FF ), + (( ulIp3 & 0xFF000000 ) >> 24 ), + (( ulIp3 & 0x00FF0000 ) >> 16 ), + (( ulIp3 & 0x0000FF00 ) >> 8 ), + ( ulIp3 & 0x000000FF )); + }else + { ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD[1], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","RemoteIpAddress: Unknowned IP format(%d)",ulVers ); + } + } + offset += sizeof(tOCTVC1_IP_ADDRESS); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD[2], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD, ulTimeout); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD[3], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD, ulTimeToLive); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD, ulUserEventId); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD[5], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD, ulPayloadLength); + + ti = proto_tree_add_item(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD[6], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD, abyPayload), FALSE); + + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD, abyPayload); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_RSP, hLocalHost), "hLocalHost: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, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD, hLocalHost), "hLocalHost: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, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD[1], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD, ulProbeIntervalMs); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD[2], tvb, offset, + 4, temp_data); + if( ( (unsigned int)temp_data < 0) || ( (unsigned int)temp_data > 15 ) ) + { + proto_item_set_expert_flags(ti, PI_MALFORMED, PI_ERROR); + proto_item_append_text(ti," [Out of range - (0..15)]" ); + } + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD, ulNumProbe); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_RSP, hLocalHost), "hLocalHost: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, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_CMD, hLink), "hLink: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, NULL ); + } + { + int ulVers; + unsigned int offs = offset; + ulVers = tvb_get_ntohl( tvb, offs ); + if( ulVers == cOCTVC1_IP_VERSION_ENUM_4 ) + { unsigned int ulIp0; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_CMD[1], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: %d.%d.%d.%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ) ); + }else if( ulVers == cOCTVC1_IP_VERSION_ENUM_6 ) + { unsigned int ulIp0,ulIp1,ulIp2,ulIp3; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp1 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp2 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp3 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_CMD[1], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: [%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X]", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), + (( ulIp1 & 0xFF000000 ) >> 24 ), + (( ulIp1 & 0x00FF0000 ) >> 16 ), + (( ulIp1 & 0x0000FF00 ) >> 8 ), + ( ulIp1 & 0x000000FF ), + (( ulIp2 & 0xFF000000 ) >> 24 ), + (( ulIp2 & 0x00FF0000 ) >> 16 ), + (( ulIp2 & 0x0000FF00 ) >> 8 ), + ( ulIp2 & 0x000000FF ), + (( ulIp3 & 0xFF000000 ) >> 24 ), + (( ulIp3 & 0x00FF0000 ) >> 16 ), + (( ulIp3 & 0x0000FF00 ) >> 8 ), + ( ulIp3 & 0x000000FF )); + }else + { ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_CMD[1], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: Unknowned IP format(%d)",ulVers ); + } + } + offset += sizeof(tOCTVC1_IP_ADDRESS); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_RSP, hLink), "hLink: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, NULL ); + } + { + int ulVers; + unsigned int offs = offset; + ulVers = tvb_get_ntohl( tvb, offs ); + if( ulVers == cOCTVC1_IP_VERSION_ENUM_4 ) + { unsigned int ulIp0; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_RSP[1], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: %d.%d.%d.%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ) ); + }else if( ulVers == cOCTVC1_IP_VERSION_ENUM_6 ) + { unsigned int ulIp0,ulIp1,ulIp2,ulIp3; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp1 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp2 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp3 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_RSP[1], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: [%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X]", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), + (( ulIp1 & 0xFF000000 ) >> 24 ), + (( ulIp1 & 0x00FF0000 ) >> 16 ), + (( ulIp1 & 0x0000FF00 ) >> 8 ), + ( ulIp1 & 0x000000FF ), + (( ulIp2 & 0xFF000000 ) >> 24 ), + (( ulIp2 & 0x00FF0000 ) >> 16 ), + (( ulIp2 & 0x0000FF00 ) >> 8 ), + ( ulIp2 & 0x000000FF ), + (( ulIp3 & 0xFF000000 ) >> 24 ), + (( ulIp3 & 0x00FF0000 ) >> 16 ), + (( ulIp3 & 0x0000FF00 ) >> 8 ), + ( ulIp3 & 0x000000FF )); + }else + { ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_RSP[1], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: Unknowned IP format(%d)",ulVers ); + } + } + offset += sizeof(tOCTVC1_IP_ADDRESS); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_CMD, hLink), "hLink: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, NULL ); + } + { + int ulVers; + unsigned int offs = offset; + ulVers = tvb_get_ntohl( tvb, offs ); + if( ulVers == cOCTVC1_IP_VERSION_ENUM_4 ) + { unsigned int ulIp0; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_CMD[1], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: %d.%d.%d.%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ) ); + }else if( ulVers == cOCTVC1_IP_VERSION_ENUM_6 ) + { unsigned int ulIp0,ulIp1,ulIp2,ulIp3; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp1 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp2 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp3 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_CMD[1], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: [%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X]", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), + (( ulIp1 & 0xFF000000 ) >> 24 ), + (( ulIp1 & 0x00FF0000 ) >> 16 ), + (( ulIp1 & 0x0000FF00 ) >> 8 ), + ( ulIp1 & 0x000000FF ), + (( ulIp2 & 0xFF000000 ) >> 24 ), + (( ulIp2 & 0x00FF0000 ) >> 16 ), + (( ulIp2 & 0x0000FF00 ) >> 8 ), + ( ulIp2 & 0x000000FF ), + (( ulIp3 & 0xFF000000 ) >> 24 ), + (( ulIp3 & 0x00FF0000 ) >> 16 ), + (( ulIp3 & 0x0000FF00 ) >> 8 ), + ( ulIp3 & 0x000000FF )); + }else + { ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_CMD[1], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: Unknowned IP format(%d)",ulVers ); + } + } + offset += sizeof(tOCTVC1_IP_ADDRESS); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_RSP, hLink), "hLink: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, NULL ); + } + { + int ulVers; + unsigned int offs = offset; + ulVers = tvb_get_ntohl( tvb, offs ); + if( ulVers == cOCTVC1_IP_VERSION_ENUM_4 ) + { unsigned int ulIp0; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_RSP[1], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: %d.%d.%d.%d", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ) ); + }else if( ulVers == cOCTVC1_IP_VERSION_ENUM_6 ) + { unsigned int ulIp0,ulIp1,ulIp2,ulIp3; + offs += 4; + ulIp0 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp1 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp2 = tvb_get_ntohl( tvb, offs ); + offs += 4; + ulIp3 = tvb_get_ntohl( tvb, offs ); + ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_RSP[1], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: [%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X:%02X%02X]", + (( ulIp0 & 0xFF000000 ) >> 24 ), + (( ulIp0 & 0x00FF0000 ) >> 16 ), + (( ulIp0 & 0x0000FF00 ) >> 8 ), + ( ulIp0 & 0x000000FF ), + (( ulIp1 & 0xFF000000 ) >> 24 ), + (( ulIp1 & 0x00FF0000 ) >> 16 ), + (( ulIp1 & 0x0000FF00 ) >> 8 ), + ( ulIp1 & 0x000000FF ), + (( ulIp2 & 0xFF000000 ) >> 24 ), + (( ulIp2 & 0x00FF0000 ) >> 16 ), + (( ulIp2 & 0x0000FF00 ) >> 8 ), + ( ulIp2 & 0x000000FF ), + (( ulIp3 & 0xFF000000 ) >> 24 ), + (( ulIp3 & 0x00FF0000 ) >> 16 ), + (( ulIp3 & 0x0000FF00 ) >> 8 ), + ( ulIp3 & 0x000000FF )); + }else + { ti = proto_tree_add_string_format(field_tree, ahf_tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_RSP[1], tvb, offset, + sizeof(tOCTVC1_IP_ADDRESS), "","IpAddress: Unknowned IP format(%d)",ulVers ); + } + } + offset += sizeof(tOCTVC1_IP_ADDRESS); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_LINK_INFO_GATEWAY_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_LINK_INFO_GATEWAY_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LINK_INFO_GATEWAY_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_LINK_INFO_GATEWAY_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LINK_INFO_GATEWAY_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LINK_INFO_GATEWAY_CMD, GatewayGet), "GatewayGet:tOCTVC1_NET_IP_CURSOR"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_IP_CURSOR( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_LINK_INFO_GATEWAY_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_LINK_INFO_GATEWAY_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LINK_INFO_GATEWAY_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_LINK_INFO_GATEWAY_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LINK_INFO_GATEWAY_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LINK_INFO_GATEWAY_RSP, GatewayGet), "GatewayGet:tOCTVC1_NET_IP_CURSOR"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_IP_CURSOR( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD, hLink), "hLink: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, NULL ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD, IPv6Prefix), "IPv6Prefix:tOCTVC1_NET_LINK_IPV6_PREFIX"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_LINK_IPV6_PREFIX( tvb, pinfo, sub_tree2, offset, NULL ); + } + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD[2], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD, ulOnLinkFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD, ulOnLinkFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_boolean(field_tree, ahf_tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD[3], tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD, ulAddrAutoConfigFlag), temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD, ulAddrAutoConfigFlag); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD[4], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD, ulValidLifetimeSec); + + temp_data = tvb_get_ntohl( tvb, offset ); + { + ti = proto_tree_add_uint(field_tree, ahf_tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD[5], tvb, offset, + 4, temp_data); + } + offset += mWS_FIELDSIZE(tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD, ulPreferredLifetimeSec); + + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_RSP, hLink), "hLink: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, NULL ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_RSP, IPv6Prefix), "IPv6Prefix:tOCTVC1_NET_LINK_IPV6_PREFIX"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_LINK_IPV6_PREFIX( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_CMD, hLink), "hLink: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, NULL ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_CMD, IPv6Prefix), "IPv6Prefix:tOCTVC1_NET_LINK_IPV6_PREFIX"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_LINK_IPV6_PREFIX( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_RSP, hLink), "hLink: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, NULL ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_RSP, IPv6Prefix), "IPv6Prefix:tOCTVC1_NET_LINK_IPV6_PREFIX"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_LINK_IPV6_PREFIX( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_CMD(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_CMD)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_CMD (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_CMD)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_CMD (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_CMD, IPv6PrefixGet), "IPv6PrefixGet:tOCTVC1_NET_IPV6_PREFIX_CURSOR"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_IPV6_PREFIX_CURSOR( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +unsigned int dissect_tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_RSP(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned int offset ) +{ + proto_tree *field_tree = tree; + unsigned int offset_0 = offset; + gint bytes = tvb_length_remaining(tvb, offset); + if (bytes < (gint)(sizeof(tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_RSP)-sizeof(tOCTVC1_MSG_HEADER))) + { + proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_RSP (%d byte%s) - Malformated packet...expected(%ld)", + bytes, plurality(bytes, "", "s"), + sizeof(tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_RSP)-sizeof(tOCTVC1_MSG_HEADER)); + return 1; + } + else + { + int temp_data = 0; + proto_item *ti; + ti = proto_tree_add_text(tree, tvb, offset, bytes, + "tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_RSP (%d byte%s)", bytes, plurality(bytes, "", "s")); + + field_tree = proto_item_add_subtree(ti, ett_octvc1_msg_type); + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_RSP, IPv6PrefixGet), "IPv6PrefixGet:tOCTVC1_NET_IPV6_PREFIX_CURSOR"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_IPV6_PREFIX_CURSOR( tvb, pinfo, sub_tree2, offset, NULL ); + } + ti = proto_tree_add_text(field_tree, tvb, offset, + mWS_FIELDSIZE(tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_RSP, IPv6PrefixInfo), "IPv6PrefixInfo:tOCTVC1_NET_LINK_IPV6_PREFIX_INFO"); + { + proto_tree* sub_tree2; + sub_tree2 = proto_item_add_subtree(ti, ett_octvc1_msg_type); + offset = dissect_tOCTVC1_NET_LINK_IPV6_PREFIX_INFO( tvb, pinfo, sub_tree2, offset, NULL ); + } + } + + + return 0; + +}; + + +/**************************************************************************** + MODULE REGISTERED EXPORTED FUNCTION + ****************************************************************************/ + +void ws_register_OCTVC1_NET(void) +{ + /**************************************************************************** + Register Common struct + ****************************************************************************/ + register_tOCTVC1_NET_IP_CURSOR(); + register_tOCTVC1_NET_RTP_PROFILE_ENTRY(); + register_tOCTVC1_NET_RTP_PROFILE_MODIFY_ENTRY(); + register_tOCTVC1_NET_SRTP_KEY_ENTRY(); + register_tOCTVC1_NET_SRTP_STREAM_CONFIG(); + register_tOCTVC1_NET_SRTP_KEY_STATS(); + register_tOCTVC1_NET_SRTP_STREAM_STATS(); + register_tOCTVC1_NET_CONFIG_STATIC(); + register_tOCTVC1_NET_RTP_MEMBER_CONN_INFO(); + register_tOCTVC1_NET_RTCP_SENDER_STATS(); + register_tOCTVC1_NET_RTCP_RECEIVER_STATS(); + register_tOCTVC1_NET_VLAN_TAG(); + register_tOCTVC1_NET_HEADER_INFO_ETHERNET(); + register_tOCTVC1_NET_HEADER_INFO_VLAN(); + register_tOCTVC1_NET_HEADER_INFO_IP(); + register_tOCTVC1_NET_HEADER_INFO_UDP(); + register_tOCTVC1_NET_HEADER_IPUDP(); + register_tOCTVC1_NET_CACHE_ENTRY_CURSOR(); + register_tOCTVC1_NET_ETH_LINK_CACHE_ENTRY(); + register_tOCTVC1_NET_LINK_GATEWAY_INFO(); + register_tOCTVC1_NET_LINK_IPV6_PREFIX(); + register_tOCTVC1_NET_LINK_IPV6_PREFIX_INFO(); + register_tOCTVC1_NET_IPV6_PREFIX_CURSOR(); + register_tOCTVC1_NET_ETH_LINK_CONFIG_IPV4(); + register_tOCTVC1_NET_ETH_LINK_CONFIG_IPV6(); + register_tOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ(); + register_tOCTVC1_NET_EUI64_INTERFACE_ID(); + register_tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM(); + register_tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_MODIFY(); + + /**************************************************************************** + CMD/RSP Registered + ****************************************************************************/ + register_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD(); + register_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_RSP(); + register_tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_CMD(); + register_tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_RSP(); + register_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD(); + register_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_RSP(); + register_tOCTVC1_NET_MSG_RTP_SESSION_INFO_CMD(); + register_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP(); + register_tOCTVC1_NET_MSG_RTP_SESSION_STATS_CMD(); + register_tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP(); + register_tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CMD(); + register_tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_RSP(); + register_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD(); + register_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP(); + register_tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_CMD(); + register_tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_RSP(); + register_tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD(); + register_tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_RSP(); + register_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD(); + register_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RSP(); + register_tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD(); + register_tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP(); + register_tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_CMD(); + register_tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP(); + register_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_CMD(); + register_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP(); + register_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_CMD(); + register_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP(); + register_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_CMD(); + register_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP(); + register_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_CMD(); + register_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP(); + register_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_CMD(); + register_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_RSP(); + register_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD(); + register_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_RSP(); + register_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD(); + register_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_RSP(); + register_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD(); + register_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_RSP(); + register_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD(); + register_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_RSP(); + register_tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_CMD(); + register_tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP(); + register_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD(); + register_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_RSP(); + register_tOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_CMD(); + register_tOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_RSP(); + register_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_CMD(); + register_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP(); + register_tOCTVC1_NET_MSG_LOCAL_HOST_STATS_CMD(); + register_tOCTVC1_NET_MSG_LOCAL_HOST_STATS_RSP(); + register_tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD(); + register_tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_RSP(); + register_tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD(); + register_tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_RSP(); + register_tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_CMD(); + register_tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_RSP(); + register_tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_CMD(); + register_tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_RSP(); + register_tOCTVC1_NET_MSG_LINK_INFO_GATEWAY_CMD(); + register_tOCTVC1_NET_MSG_LINK_INFO_GATEWAY_RSP(); + register_tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD(); + register_tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_RSP(); + register_tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_CMD(); + register_tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_RSP(); + register_tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_CMD(); + register_tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_RSP(); + + /**************************************************************************** + Event Registered + ****************************************************************************/ + register_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT(); + register_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT(); + register_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT(); + register_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT(); + register_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT(); + register_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT(); + register_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT(); + register_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT(); + register_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT(); + register_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT(); + register_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT(); + register_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT(); + register_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT(); + register_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT(); + register_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT(); + register_tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT(); + register_tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT(); + register_tOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT(); + +} + +/**************************************************************************** + MODULE DISSECTOR FUNCTIONS + ****************************************************************************/ +int ws_dissect_OCTVC1_NET_CMD( guint32 CID, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ) +{ + if( tree ) + { + switch( CID ) { + case cOCTVC1_NET_MSG_RTP_SESSION_OPEN_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_CLOSE_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_INFO_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_INFO_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_STATS_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_STATS_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CID: return dissect_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_CID: return dissect_tOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_LOCAL_HOST_INFO_CID: return dissect_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_LOCAL_HOST_STATS_CID: return dissect_tOCTVC1_NET_MSG_LOCAL_HOST_STATS_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CID: return dissect_tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CID: return dissect_tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_LINK_ADD_GATEWAY_CID: return dissect_tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_CID: return dissect_tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_LINK_INFO_GATEWAY_CID: return dissect_tOCTVC1_NET_MSG_LINK_INFO_GATEWAY_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CID: return dissect_tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_CID: return dissect_tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_CMD( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_CID: return dissect_tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_CMD( tvb, pinfo, tree, 0 ); break; + default: return 1; + } + } + return 0; + +} +int ws_dissect_OCTVC1_NET_RSP( guint32 CID, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ) +{ + if( tree ) + { + switch( CID ) { + case cOCTVC1_NET_MSG_RTP_SESSION_OPEN_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_OPEN_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_CLOSE_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_INFO_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_STATS_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_CID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CID: return dissect_tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_CID: return dissect_tOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_LOCAL_HOST_INFO_CID: return dissect_tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_LOCAL_HOST_STATS_CID: return dissect_tOCTVC1_NET_MSG_LOCAL_HOST_STATS_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CID: return dissect_tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CID: return dissect_tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_LINK_ADD_GATEWAY_CID: return dissect_tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_CID: return dissect_tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_LINK_INFO_GATEWAY_CID: return dissect_tOCTVC1_NET_MSG_LINK_INFO_GATEWAY_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CID: return dissect_tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_CID: return dissect_tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_RSP( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_CID: return dissect_tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_RSP( tvb, pinfo, tree, 0 ); break; + default: return 1; + } + } + return 0; + +} +int ws_dissect_OCTVC1_NET_EVT( guint32 CID, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ) +{ + if( tree ) + { + switch( CID ) { + case cOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EID: return dissect_tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EID: return dissect_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EID: return dissect_tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EID: return dissect_tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EID: return dissect_tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT( tvb, pinfo, tree, 0 ); break; + case cOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EID: return dissect_tOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT( tvb, pinfo, tree, 0 ); break; + default: return 1; + } + } + return 0; + +} + +/**************************************************************************** + MODULE DISSECTOR EXPORTED FUNCTION + ****************************************************************************/ + +int ws_dissect_OCTVC1_NET( guint8 message_type, guint32 CID, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ) +{ + if (message_type == cOCTVC1_MSG_TYPE_RESPONSE) + return ws_dissect_OCTVC1_NET_RSP( CID, tvb, pinfo, tree); + if (message_type == cOCTVC1_MSG_TYPE_COMMAND) + return ws_dissect_OCTVC1_NET_CMD( CID, tvb, pinfo, tree); + if (message_type == cOCTVC1_MSG_TYPE_NOTIFICATION ) + return ws_dissect_OCTVC1_NET_EVT( CID, tvb, pinfo, tree); + else + return 1; + +} + diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_msg_ctrl.c b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_msg_ctrl.c new file mode 100644 index 0000000..06a3529 --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_msg_ctrl.c @@ -0,0 +1,740 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: octvc1_msg_ctrl.c + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: Routines for vocallonet dissection + +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 +#include +#include +#include + +#include "../include/module.h" +#include "../include/octvc1_common.h" +#include "../include/plugin_info.h" +#include "../../../include/oct_ws_macro.h" + +#include +#include +#include +#include +#include +#include + +#include "../include/ws_util.h" + +#include +#include +#define OCTVC1_RC2STRING_DECLARE +#include +#include + +/* Define version if we are not building Wireshark statically */ +/* Initialize the protocol and registered fields */ +int proto_octvc1_ctrl = -1; + +/* tOCTVC1_MSG_HEADER */ +int hf_octvc1_msg_cmd = -1; +int hf_octvc1_msg_rsp = -1; +int hf_octvc1_msg_evt = -1; + +extern int g_fIsRegistered; + +static int hf_octvc1_msg_header_ulLength = -1; +static int hf_octvc1_msg_header_ulTransactionId = -1; +static int hf_octvc1_msg_header_ul_Type_R_CmdId = -1; +static int hf_octvc1_msg_header_ulSessionId = -1; +static int hf_octvc1_msg_header_ulReturnCode = -1; +static int hf_octvc1_msg_header_ulUserInfo = -1; + +static int hf_octvc1_msg_header_reject_expected_transaction_id = -1; +static int hf_octvc1_msg_header_reject_rejected_command_id = -1; + + +static int hf_octvc1_msg_header_ul_Type_R_CmdId_Type = -1; +static int hf_octvc1_msg_header_ul_Type_R_CmdId_Resynch = -1; +static int hf_octvc1_msg_header_ul_Type_R_CmdId_Base = -1; +static int hf_octvc1_msg_header_ul_Type_R_CmdId_ModuleId = -1; +static int hf_octvc1_msg_header_ul_Type_R_CmdId_MsgId = -1; +static int hf_octvc1_msg_header_ul_Type_R_CmdId_Flag = -1; + + +#define mWD_OCTVC1_CID_TYPE_BASE(uint32) ((uint32) & 0x00f00000) +#define mWD_OCTVC1_CID_UID(uint32) ((uint32) & 0x000f0000) +#define mWD_OCTVC1_CID_CODE(uint32) ((uint32) & 0x00000FFF) +#define mWD_OCTVC1_CID_FLAG(uint32) ((uint32) & 0x0000F000) + +#define mWD_OCTVC1_CID_2_FLAG(uint32) (((uint32)& 0x0000F000)>>12) +#define mWD_OCTVC1_CID_2_UID(uint32) (((uint32)& 0x000F0000)>>16) +#define mWD_OCTVC1_CID_2_BASE(uint32) (((uint32)& 0x00F00000)>>20) + + +const value_string octvc1_message_type_vals[] = +{ + { cOCTVC1_MSG_TYPE_COMMAND, "Command" }, + { cOCTVC1_MSG_TYPE_RESPONSE, "Response" }, + { cOCTVC1_MSG_TYPE_NOTIFICATION, "Notification" }, + { cOCTVC1_MSG_TYPE_SUPERVISORY, "Supervisory" }, + { 0, NULL }, +}; + +const value_string octvc1_message_type_base_vals[] = +{ + { cOCTVC1_CID_BASE>>20, "Cmd/Rsp" }, + { cOCTVC1_EID_BASE>>20, "Notification" }, + { cOCTVC1_SID_BASE>>20, "Supervisory" }, + { 0, NULL }, +}; + +const value_string octvc1_cid_flag_vals[] = +{ + { cOCTVC1_MSG_RETRANSMIT_FLAG >> cOCTVC1_MSG_FLAGS_BIT_OFFSET, "Retransmit" }, + { cOCTVC1_MSG_NO_RESPONSE_FLAG >> cOCTVC1_MSG_FLAGS_BIT_OFFSET, "No Response" }, + { cOCTVC1_MSG_LONG_PROCESSING_FLAG >> cOCTVC1_MSG_FLAGS_BIT_OFFSET, "Long Processing" }, + { 0, "None" }, + { 0, NULL }, +}; + + + +/* fields defining a subtree */ +static gint ett_octvc1_msg_header = -1; +static gint ett_octvc1_type_r_cmd = -1; +gint ett_octvc1_msg_type = -1; + + + + + +/************************************************************************* +* +* Code to actually dissect the Vocallo event packet header +* +**************************************************************************/ +void dissect_octvc1_ctrl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) +{ + unsigned int packet_offset = 0; + guint32 message_length; + guint32 transaction_id; + guint32 type_r_cmdid; + guint8 message_type; + guint8 message_resynch; + guint32 message_command_id; + + guint32 command_id_type_base; + guint32 command_id_uid; + guint32 command_id_code; + guint32 command_id_flag; + + guint32 session_id; + guint32 return_code; + guint32 user_info; + guint32 expected_transaction_id = -1; + guint32 rejected_command_id = -1; + proto_tree* msg_tree = NULL; + gint32 module_index = -1; + guint32 fOldMainCid = FALSE; + const gchar* pszValueStringCID=NULL; + gint32 iRegistered = 1; + + + if (check_col(pinfo->cinfo, COL_PROTOCOL)) + col_set_str(pinfo->cinfo, COL_PROTOCOL, "OCTVC1_CTRL"); + + /* Now parse the message header */ + message_length = tvb_get_ntohl( tvb, packet_offset ); + packet_offset += sizeof(message_length); + transaction_id = tvb_get_ntohl( tvb, packet_offset ); + packet_offset += sizeof(transaction_id); + + type_r_cmdid = tvb_get_ntohl( tvb, packet_offset ); + + message_type = ( type_r_cmdid >> cOCTVC1_MSG_TYPE_BIT_OFFSET ) & cOCTVC1_MSG_TYPE_BIT_MASK; + message_resynch = ( type_r_cmdid >> cOCTVC1_MSG_RESYNCH_BIT_OFFSET ) & cOCTVC1_MSG_RESYNCH_BIT_MASK; + message_command_id = ( type_r_cmdid >> cOCTVC1_MSG_ID_BIT_OFFSET ) & cOCTVC1_MSG_ID_BIT_MASK; + + command_id_type_base = mWD_OCTVC1_CID_TYPE_BASE(message_command_id); + command_id_uid = mWD_OCTVC1_CID_UID(message_command_id); + command_id_code = mWD_OCTVC1_CID_CODE(message_command_id); + command_id_flag = mWD_OCTVC1_CID_FLAG(message_command_id); + + /* Find Tbl Module Index */ + OCT_MATCH_STRVAL_IDX( mWD_OCTVC1_CID_2_UID(message_command_id), vals_OCTVC1_module_UID, &module_index ); + + // Special process on main ... CID use to be 0x01yz and we are now 0x0zzz + // if can't find 0x01yz try with 0x00yz + + if( cOCTVC1_MAIN_UID == mWD_OCTVC1_CID_2_UID(message_command_id) ) + { + int cmd_index; + + OCT_MATCH_STRVAL_IDX( command_id_code, + aOCTVC1ModuleColInfo[module_index].apCodeIdValueString, &cmd_index ); + // did we found the cid + if( cmd_index == -1 ) + { + OCT_MATCH_STRVAL_IDX( command_id_code & 0x000000FF, + aOCTVC1ModuleColInfo[module_index].apCodeIdValueString, &cmd_index ); + + if( cmd_index != -1 ) + { + // This is an old trace ... + command_id_code &= 0xFFFFFEFF; + fOldMainCid = TRUE; + } + } + } + + packet_offset += sizeof(type_r_cmdid); + + session_id = tvb_get_ntohl( tvb, packet_offset ); + packet_offset += sizeof(session_id); + return_code = tvb_get_ntohl( tvb, packet_offset ); + packet_offset += sizeof(return_code); + + // Get no swap + tvb_memcpy( tvb, &user_info, packet_offset, sizeof(user_info) ); + // user_info = tvb_get_ntohl( tvb, packet_offset ); + packet_offset += sizeof(user_info); + + if( ( message_type == cOCTVC1_MSG_TYPE_SUPERVISORY ) && + ( ( cOCTVC1_SUPERVISORY_MSG_MODULE_REJECT_CID == message_command_id ) || + ( cOCTVC1_CTRL_MSG_MODULE_REJECT_SID == message_command_id ) ) ) + { + expected_transaction_id = tvb_get_ntohl( tvb, packet_offset ); + packet_offset += sizeof(expected_transaction_id); + rejected_command_id = tvb_get_ntohl( tvb, packet_offset ); + packet_offset += sizeof(rejected_command_id); + } + + + if ( check_col( pinfo->cinfo, COL_INFO) ) + { + col_clear(pinfo->cinfo, COL_INFO); + if( message_type != cOCTVC1_MSG_TYPE_SUPERVISORY ) + { + if( module_index < 0 ) + { + col_add_fstr( pinfo->cinfo, COL_INFO, + "%s %s, CID=0x%04X, Trans ID=0x%x", + val_to_str( mWD_OCTVC1_CID_2_UID(message_command_id), vals_OCTVC1_module_UID, "Unknown (%x)" ), + val_to_str( message_type, octvc1_message_type_vals, "Unknown (%x)" ), + command_id_code, + transaction_id ); + } + else + { + pszValueStringCID = val_to_str( command_id_code, aOCTVC1ModuleColInfo[module_index].apCodeIdValueString, cOCTVC1_UNKNOWN_STRING ); + + // look for private + if( strcmp( pszValueStringCID, cOCTVC1_PRIVATE_ID_STRING ) == 0 ) + { + iRegistered = 0; + // look if somebody register + if( g_fIsRegistered ) + { + pszValueStringCID = octvc1_chck_private( command_id_code, aOCTVC1ModuleColInfo[module_index].apPrivateCodeIdValueString, &iRegistered ); + } + else + pszValueStringCID = cOCTVC1_UNKNOWN_STRING; + } + + col_add_fstr( pinfo->cinfo, COL_INFO, + "%s%s_MSG_%s(0x%04X), Trans ID=0x%x", + fOldMainCid ? "*" : "", + aOCTVC1ModuleColInfo[module_index].pszModuleName, + pszValueStringCID, + command_id_code, + transaction_id); + } + if (message_type == cOCTVC1_MSG_TYPE_RESPONSE) + { + if ( check_col(pinfo->cinfo, COL_PROTOCOL) ) + col_set_str(pinfo->cinfo, COL_PROTOCOL, "OCTVC1_RSP"); + + col_append_fstr( pinfo->cinfo, COL_INFO, + ", Ret Code=%s (0x%08X)", + mOCTVC1_RC2STRING(return_code), return_code ); + } + else + { + if ( check_col(pinfo->cinfo, COL_PROTOCOL) ) + col_set_str(pinfo->cinfo, COL_PROTOCOL, "OCTVC1_CMD"); + } + } + else + { + if( ( cOCTVC1_SUPERVISORY_MSG_MODULE_REJECT_CID == message_command_id ) || + ( cOCTVC1_CTRL_MSG_MODULE_REJECT_SID == message_command_id ) ) + { + gint32 rej_module_index = -1; + gint32 rej_command_id_code = mWD_OCTVC1_CID_CODE(rejected_command_id); + + /* Find Tbl Module Index */ + OCT_MATCH_STRVAL_IDX( mWD_OCTVC1_CID_2_UID(rejected_command_id), vals_OCTVC1_module_UID, &rej_module_index ); + + if( ( rej_module_index != -1 ) && + ( cOCTVC1_MAIN_UID == mWD_OCTVC1_CID_2_UID(rejected_command_id ) ) ) + { + int cmd_index; + + OCT_MATCH_STRVAL_IDX( rejected_command_id, + aOCTVC1ModuleColInfo[rej_module_index].apCodeIdValueString, &cmd_index ); + // did we found the cid + if( cmd_index == -1 ) + { + OCT_MATCH_STRVAL_IDX( rejected_command_id & 0x000000FF, + aOCTVC1ModuleColInfo[rej_module_index].apCodeIdValueString, &cmd_index ); + + if( cmd_index != -1 ) + { + // This is an old trace ... + rejected_command_id &= 0xFFFFFEFF; + fOldMainCid = TRUE; + } + } + } + + + if( rej_module_index == -1 ) + col_add_fstr( pinfo->cinfo, COL_INFO, + "Reject %s, CID=0x%04X, Exp trans ID=0x%x", + val_to_str( mWD_OCTVC1_CID_2_UID(rejected_command_id), vals_OCTVC1_module_UID, "Unknown (%x)" ), + rej_command_id_code, + expected_transaction_id ); + else + { + pszValueStringCID = val_to_str( rej_command_id_code, aOCTVC1ModuleColInfo[rej_module_index].apCodeIdValueString, cOCTVC1_UNKNOWN_STRING ); + + // look for private + if( strcmp( pszValueStringCID, cOCTVC1_PRIVATE_ID_STRING ) == 0 ) + { + iRegistered = 0; + // look if somebody register + if( g_fIsRegistered ) + { + pszValueStringCID = octvc1_chck_private( rej_command_id_code, aOCTVC1ModuleColInfo[rej_module_index].apPrivateCodeIdValueString, &iRegistered ); + } + else + pszValueStringCID = cOCTVC1_UNKNOWN_STRING; + } + + col_add_fstr( pinfo->cinfo, COL_INFO, + "Reject %s%s_MSG_%s, Exp trans ID=0x%x", + fOldMainCid ? "*" : "", + aOCTVC1ModuleColInfo[rej_module_index].pszModuleName, + pszValueStringCID, + expected_transaction_id ); + } + } + } + } + + if (tree) + { + proto_item* ti = NULL; + + proto_item *tf = NULL; + proto_tree *field_tree; + + /* Add the subtree for struct tOCTVOCNET_PKT_CTL_HEADER */ + ti = proto_tree_add_item( tree, proto_octvc1_ctrl, tvb, 0, -1, FALSE ); + msg_tree = proto_item_add_subtree( ti, ett_octvc1_msg_header ); + + /* Scroll back to the beginning of the packet */ + packet_offset = 0; + + proto_tree_add_uint( msg_tree, hf_octvc1_msg_header_ulLength, tvb, packet_offset, 4, message_length ); + packet_offset += sizeof(message_length); + proto_tree_add_uint( msg_tree, hf_octvc1_msg_header_ulTransactionId, tvb, packet_offset, 4, transaction_id ); + packet_offset += sizeof(transaction_id); + + /* Validate the cmd */ + if( module_index < 0 ) + { + proto_tree_add_uint(msg_tree, hf_octvc1_msg_header_ul_Type_R_CmdId, tvb, packet_offset, 4, type_r_cmdid ); + } + else + { + if( message_type != cOCTVC1_MSG_TYPE_SUPERVISORY ) + { + if( pszValueStringCID == NULL ) + { + pszValueStringCID = val_to_str( command_id_code, aOCTVC1ModuleColInfo[module_index].apCodeIdValueString, cOCTVC1_UNKNOWN_STRING ); + + // look for private + if( strcmp( pszValueStringCID, cOCTVC1_PRIVATE_ID_STRING ) == 0 ) + { + iRegistered = 0; + // look if somebody register + if( g_fIsRegistered ) + { + pszValueStringCID = octvc1_chck_private( command_id_code, aOCTVC1ModuleColInfo[module_index].apPrivateCodeIdValueString, &iRegistered ); + } + else + pszValueStringCID = cOCTVC1_UNKNOWN_STRING; + } + } + + tf = proto_tree_add_uint_format(msg_tree, hf_octvc1_msg_header_ul_Type_R_CmdId, tvb, + packet_offset, 4, type_r_cmdid, + "Type/%s(0x%08X): %scOCTVC1_%s_MSG_%s_CID", + (message_type == cOCTVC1_MSG_TYPE_RESPONSE) ? "Rsp" : "Cmd", + type_r_cmdid, + fOldMainCid ? "*" : "", + aOCTVC1ModuleColInfo[module_index].pszModuleName, + pszValueStringCID ); + } + else + { + tf = proto_tree_add_uint_format(msg_tree, hf_octvc1_msg_header_ul_Type_R_CmdId, tvb, + packet_offset, 4, type_r_cmdid, + "Type/Sup(0x%08X): cOCTVC1_%s_MSG_%s_SID", + type_r_cmdid, + aOCTVC1ModuleColInfo[module_index].pszModuleName, + val_to_str( command_id_code,aOCTVC1ModuleColInfo[module_index].apSupIdValueString, "Unknown (%x)" )); + } + } + + if( tf ) + { + int iFlag = 0x00001000; + int i,cFlag = 0; + + field_tree = proto_item_add_subtree(tf, ett_octvc1_type_r_cmd); + + proto_tree_add_uint( field_tree, hf_octvc1_msg_header_ul_Type_R_CmdId_Type, tvb, + packet_offset, 1, message_type << 29 ); + + proto_tree_add_uint( field_tree, hf_octvc1_msg_header_ul_Type_R_CmdId_Resynch, tvb, + packet_offset, 1, message_resynch<<28 ); + + proto_tree_add_uint( field_tree, hf_octvc1_msg_header_ul_Type_R_CmdId_Base, tvb, + packet_offset+1, 1, command_id_type_base ); + + proto_tree_add_uint( field_tree, hf_octvc1_msg_header_ul_Type_R_CmdId_ModuleId, tvb, + packet_offset+1, 1, command_id_uid ); + + // Count nb of flag + for( i=0; i<4; i++) + { + if( command_id_flag & iFlag ) + cFlag++; + iFlag = iFlag << 1; + } + + if( cFlag < 2 ) + proto_tree_add_uint( field_tree, hf_octvc1_msg_header_ul_Type_R_CmdId_Flag, tvb, + packet_offset+2, 1, command_id_flag ); + else + { + int i; + proto_tree* sub_tree = proto_item_add_subtree(field_tree, ett_octvc1_msg_type); + + proto_tree_add_uint_format_value( field_tree, hf_octvc1_msg_header_ul_Type_R_CmdId_Flag, tvb, + packet_offset+2, 1, command_id_flag, + "(0x%X)", (command_id_flag >>cOCTVC1_MSG_FLAGS_BIT_OFFSET) ); + + + for( i=0; i< mWS_COUNTOF(octvc1_cid_flag_vals); i++ ) + { + if( ( octvc1_cid_flag_vals[i].value && + ( octvc1_cid_flag_vals[i].value & ( command_id_flag >> cOCTVC1_MSG_FLAGS_BIT_OFFSET )) == + octvc1_cid_flag_vals[i].value)) + proto_tree_add_text(sub_tree, tvb, packet_offset+2,1,"%s", + decode_enumerated_bitfield(octvc1_cid_flag_vals[i].value, 0xFFFFFFFF, (4*1), + VALS(octvc1_cid_flag_vals),"%s")); + } + } + + if( message_type != cOCTVC1_MSG_TYPE_SUPERVISORY ) + proto_tree_add_uint_format_value(field_tree, hf_octvc1_msg_header_ul_Type_R_CmdId_MsgId, tvb, + packet_offset+2, 2, command_id_code, + "%s%s (0x%03X)", + fOldMainCid ? "*" : "", + pszValueStringCID, command_id_code ); + else + proto_tree_add_uint_format_value(field_tree, hf_octvc1_msg_header_ul_Type_R_CmdId_MsgId, tvb, + packet_offset+2, 2, command_id_code, + "%s (0x%03X)", + val_to_str( command_id_code, aOCTVC1ModuleColInfo[module_index].apSupIdValueString, + "Unknown (%x)" ), command_id_code ); + + } + + packet_offset += sizeof(command_id_code); + proto_tree_add_uint( msg_tree, hf_octvc1_msg_header_ulSessionId, tvb, + packet_offset, 4, session_id ); + packet_offset += sizeof(session_id); + + + ti = proto_tree_add_uint_format_value(msg_tree, hf_octvc1_msg_header_ulReturnCode, tvb, + packet_offset, 4, return_code, + "%s (0x%08X)", + mOCTVC1_RC2STRING(return_code), return_code ); + + if( return_code ) + { + if( return_code & cOCTDEV_RC_FATAL_FLAG ) + expert_add_info_format(pinfo, ti, PI_RESPONSE_CODE, PI_ERROR, "API:FATAL" ); + else + expert_add_info_format(pinfo, ti, PI_RESPONSE_CODE, PI_WARN, "API:ERROR" ); + } + + packet_offset += sizeof(return_code); + proto_tree_add_uint( msg_tree, hf_octvc1_msg_header_ulUserInfo, tvb, + packet_offset, 4, user_info ); + packet_offset += sizeof(user_info); + + if( ( message_type == cOCTVC1_MSG_TYPE_SUPERVISORY ) && + ( ( cOCTVC1_SUPERVISORY_MSG_MODULE_REJECT_CID == message_command_id ) || + ( cOCTVC1_CTRL_MSG_MODULE_REJECT_SID == message_command_id ) ) ) + { + gint32 rej_module_index = -1; + gint32 rej_command_id_code = mWD_OCTVC1_CID_CODE(rejected_command_id); + + /* Find Tbl Module Index */ + OCT_MATCH_STRVAL_IDX( mWD_OCTVC1_CID_2_UID(rejected_command_id), vals_OCTVC1_module_UID, &rej_module_index ); + + if( ( rej_module_index != -1 ) && + ( cOCTVC1_MAIN_UID == mWD_OCTVC1_CID_2_UID(rej_command_id_code) ) ) + { + int cmd_index; + + OCT_MATCH_STRVAL_IDX( rejected_command_id, + aOCTVC1ModuleColInfo[rej_module_index].apCodeIdValueString, &cmd_index ); + // did we found the cid + if( cmd_index == -1 ) + { + OCT_MATCH_STRVAL_IDX( rej_command_id_code & 0x000000FF, + aOCTVC1ModuleColInfo[rej_module_index].apCodeIdValueString, &cmd_index ); + + if( cmd_index != -1 ) + { + // This is an old trace ... + rej_command_id_code &= 0xFFFFFEFF; + fOldMainCid = TRUE; + } + } + } + + proto_tree_add_uint( msg_tree, hf_octvc1_msg_header_reject_expected_transaction_id, tvb, + packet_offset, 4, expected_transaction_id ); + packet_offset += sizeof(expected_transaction_id); + + if( rej_module_index == -1 ) + proto_tree_add_uint_format(msg_tree, hf_octvc1_msg_header_reject_rejected_command_id, tvb, + packet_offset, 4, rejected_command_id, + "Reject CID: %s, CID=0x%08X", + val_to_str( mWD_OCTVC1_CID_2_UID(rejected_command_id), vals_OCTVC1_module_UID, "Unknown (%x)" ), + rej_command_id_code ); + else + { + pszValueStringCID = val_to_str( rej_command_id_code, aOCTVC1ModuleColInfo[rej_module_index].apCodeIdValueString, cOCTVC1_UNKNOWN_STRING ); + + // look for private + if( strcmp( pszValueStringCID, cOCTVC1_PRIVATE_ID_STRING ) == 0 ) + { + iRegistered = 0; + // look if somebody register + if( g_fIsRegistered ) + { + pszValueStringCID = octvc1_chck_private( rej_command_id_code, aOCTVC1ModuleColInfo[rej_module_index].apPrivateCodeIdValueString, &iRegistered ); + } + else + pszValueStringCID = cOCTVC1_UNKNOWN_STRING; + } + + + proto_tree_add_uint_format(msg_tree, hf_octvc1_msg_header_reject_rejected_command_id, tvb, + packet_offset, 4, rejected_command_id, + "Rejected CID: %scOCTVC1_%s_MSG_%s_CID (0x%08X)", + fOldMainCid ? "*" : "", + aOCTVC1ModuleColInfo[rej_module_index].pszModuleName, + pszValueStringCID, + rejected_command_id ); + } + + packet_offset += sizeof(rejected_command_id); + } + } + + { + int fDoData = 1; + int reported_length = message_length ? ( message_length - sizeof(tOCTVC1_MSG_HEADER)) : 0; + int available_length = tvb_length_remaining(tvb, packet_offset); + tvbuff_t *tvbData; + + tvbData = tvb_new_subset(tvb, packet_offset, available_length, reported_length); + + if( ( module_index >= 0 ) && iRegistered ) + { + /* Call the module dissector */ + fDoData = aOCTVC1ModuleColInfo[module_index].Dissector_fnc( message_type, + message_command_id & ~(cOCTVC1_MSG_RETRANSMIT_FLAG), + tvbData, pinfo, msg_tree ); + } + + if( fDoData ) + { + /* Dump the rest in raw format */ + call_dissector(data_handle, tvbData, pinfo, msg_tree); + } + } +// return tvb_length(tvb); + +} + + + + +/************************************************************************* +* +* Code to register the protocol with Wireshark +* +**************************************************************************/ +void proto_register_octvc1_ctrl(void) +{ + + static hf_register_info hf_octvc1_msg_header[] = + { + { &hf_octvc1_msg_header_ulLength, + { "API Message Length (in bytes)", "octvc1.msg_header.ullength", + FT_UINT32, BASE_DEC, NULL, 0x0, + "API Message Length (in bytes)", HFILL } + }, + { &hf_octvc1_msg_header_ulTransactionId, + { "Transaction Id", "octvc1.msg_header.ultransaction_id", + FT_UINT32, BASE_HEX, 0, 0x0, + "Transcation identifier", HFILL } + }, + + { &hf_octvc1_msg_header_ul_Type_R_CmdId, + { "Msg type/Id", "octvc1.msg_header.ul_Type_R_CmdId", FT_UINT32, BASE_HEX, NULL, 0x0, + "", HFILL }}, + + { &hf_octvc1_msg_header_ulSessionId, + { "Session Id", "octvc1.msg_header.ulsessionid", + FT_UINT32, BASE_HEX, NULL, 0x0, + "Session Id", HFILL } + }, + { &hf_octvc1_msg_header_ulReturnCode, + { "Return Code", "octvc1.msg_header.ulReturnCode", + FT_UINT32, BASE_HEX, NULL, 0x0, + "Return Code", HFILL } + }, + { &hf_octvc1_msg_header_ulUserInfo, + { "User Info", "octvc1.msg_header.ulUserInfo", + FT_UINT32, BASE_HEX, NULL, 0x0, + "User Info", HFILL } + }, + + { &hf_octvc1_msg_header_reject_expected_transaction_id, + { "Expected transaction Id", "octvc1.msg_header.reject.expected_transaction_id", + FT_UINT32, BASE_HEX, NULL, 0x0, + "Expected transaction Id", HFILL } + }, + { &hf_octvc1_msg_header_reject_rejected_command_id, + { "Rejected command ID", "octvc1.msg_header.reject.rejected_command_id", + FT_UINT32, BASE_HEX, NULL, 0x0, + "Rejected command ID", HFILL } + }, + + + { &hf_octvc1_msg_header_ul_Type_R_CmdId_Type, + { "Message Type", "octvc1.msg_header.message_type", + FT_UINT32, BASE_HEX, VALS(octvc1_message_type_vals), 0xe0000000, + "Message type", HFILL } + }, + { &hf_octvc1_msg_header_ul_Type_R_CmdId_Resynch, + { "Control Resynch", "octvc1.msg_header.resynch", + FT_UINT32, BASE_HEX, NULL, 0x10000000, + "Control resynch", HFILL } + }, + + { &hf_octvc1_msg_header_ul_Type_R_CmdId_Base, + { "Message Type Base", "octvc1.msg_header.type_base", + FT_UINT32, BASE_HEX, VALS(octvc1_message_type_base_vals), 0x00f00000, + "Message identifier", HFILL } + }, + + { &hf_octvc1_msg_header_ul_Type_R_CmdId_ModuleId, + { "Module ID", "octvc1.msg_header.module_id", + FT_UINT32, BASE_HEX, VALS(vals_OCTVC1_module_UID), 0x000f0000, + "Module identifier", HFILL } + }, + { &hf_octvc1_msg_header_ul_Type_R_CmdId_Flag, + { "Msg Flag", "octvc1.msg_header.msg_flag", + FT_UINT32, BASE_HEX, VALS(octvc1_cid_flag_vals), 0x0000f000, + "Message flag", HFILL } + }, + + { &hf_octvc1_msg_header_ul_Type_R_CmdId_MsgId, + { "Msg ID", "octvc1.msg_header.msg_id", + FT_UINT32, BASE_HEX, NULL, 0x00000fff, + "Message identifier", HFILL } + }, + { &hf_octvc1_msg_cmd, + { "Cmd", "octvc1.msg_header.cmd", + FT_NONE, BASE_NONE, NULL, 0x0, + "Cmd", HFILL } + }, + { &hf_octvc1_msg_rsp, + { "Rsp", "octvc1.msg_header.rsp", + FT_NONE, BASE_NONE, NULL, 0x0, + "Rsp", HFILL } + }, + { &hf_octvc1_msg_evt, + { "Evt", "octvc1.msg_header.evt", + FT_NONE, BASE_NONE, NULL, 0x0, + "Evt", HFILL } + }, + + }; + + /* Setup protocol subtree array */ + static gint* ett[] = + { + &ett_octvc1_msg_header, + &ett_octvc1_type_r_cmd, + &ett_octvc1_msg_type, + + }; + + + proto_octvc1_ctrl = proto_register_protocol( "OCTVC1 Control Packets", + "Octasic OCTVC1 Control", "octvc1_ctrl"); + + /* Required function calls to register the header fields and subtrees used */ + proto_register_field_array( proto_octvc1_ctrl, hf_octvc1_msg_header, array_length(hf_octvc1_msg_header) ); + proto_register_subtree_array(ett, array_length(ett)); + + register_dissector("Octvc1_Ctrl", dissect_octvc1_ctrl, proto_octvc1_ctrl); + + +} + + + diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_msg_event.c b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_msg_event.c new file mode 100644 index 0000000..2208cd7 --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_msg_event.c @@ -0,0 +1,315 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: octvc1_msg_event.c + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: Routines for vocallonet dissection + +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 +#include +#include +#include + +#include "../include/module.h" +#include "../include/octvc1_common.h" +#include "../include/plugin_info.h" +#include "../../../include/oct_ws_macro.h" + +#include + +#include +#include +#include +#include + +#include +#include + +#include
+#include + + + +/* Define version if we are not building Wireshark statically */ +/* Initialize the protocol and registered fields */ +int proto_octvc1_event = -1; + +extern int g_fIsRegistered; + +/* Event packet data fields */ +static int hf_octvc1_event_header_ulLength = -1; +static int hf_octvc1_event_header_ulEventId = -1; +static int hf_octvc1_event_header_ulUserEventId = -1; +static int hf_octvc1_event_header_ulEventId_Base = -1; +static int hf_octvc1_event_header_ulEventId_Type = -1; +static int hf_octvc1_event_header_ulEventId_Code = -1; + +#define mWD_OCTVC1_EID_BASE(uint32) ((uint32) & 0x00ff0000) +#define mWD_OCTVC1_EID_2_UID(uint32) (((uint32)& 0x000f0000)>>16) +#define mWD_OCTVC1_EID_CODE(uint32) ((uint32) & 0x0000ffff) + + +/* fields defining a subtree */ +static gint ett_octvc1_event_header = -1; +static gint ett_octvc1_event_id = -1; + +/************************************************************************* +* +* Code to actually dissect the Vocallo event packet header +* +**************************************************************************/ +void dissect_octvc1_event(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) +{ + unsigned int packet_offset = 0; + guint32 evt_length; + guint32 event_id; + guint32 event_id_base; + guint32 event_id_code; + guint32 user_event_id; + proto_tree* evt_tree = NULL; + gint32 module_index = -1; + const gchar* pszValueStringEID=NULL; + gint32 iRegistered = 1; + + if (check_col(pinfo->cinfo, COL_PROTOCOL)) + col_set_str(pinfo->cinfo, COL_PROTOCOL, "OCTVC1_EVT"); + + /* parse the event header */ + evt_length = tvb_get_ntohl( tvb, packet_offset ); + packet_offset += sizeof(evt_length); + event_id = tvb_get_ntohl( tvb, packet_offset ); + event_id_base = mWD_OCTVC1_EID_BASE(event_id); + event_id_code = mWD_OCTVC1_EID_CODE(event_id); + packet_offset += sizeof(event_id_code); + user_event_id = tvb_get_ntohl( tvb, packet_offset ); + packet_offset += sizeof(user_event_id); + + /* Find Tbl Module Index */ + OCT_MATCH_STRVAL_IDX( mWD_OCTVC1_EID_2_UID(event_id_base), vals_OCTVC1_module_UID, &module_index ); + + if ( check_col( pinfo->cinfo, COL_INFO) ) + { + col_clear(pinfo->cinfo, COL_INFO); + + if( module_index < 0 ) + { + col_add_fstr( pinfo->cinfo, COL_INFO, + "%s, CID=0x%04X", + val_to_str( mWD_OCTVC1_EID_2_UID(event_id_base), vals_OCTVC1_module_UID, "Unknown (%x)" ), + event_id_code ); + } + else + { + pszValueStringEID = val_to_str( event_id_code, aOCTVC1ModuleColInfo[module_index].apEvtIdValueString, cOCTVC1_UNKNOWN_STRING ); + + // look for private + if( strcmp( pszValueStringEID, cOCTVC1_PRIVATE_ID_STRING ) == 0 ) + { + iRegistered = 0; + // look if somebody register + if( g_fIsRegistered ) + { + pszValueStringEID = octvc1_chck_private( event_id_code, aOCTVC1ModuleColInfo[module_index].apPrivateEvtIdValueString, &iRegistered ); + } + else + pszValueStringEID = cOCTVC1_UNKNOWN_STRING; + } + + col_add_fstr( pinfo->cinfo, COL_INFO, + "%s_MSG_%s(0x%04X)", + aOCTVC1ModuleColInfo[module_index].pszModuleName, + pszValueStringEID, + event_id_code ); + + } + } + + if (tree) + { + proto_item *ti; + proto_item *tf = NULL; + + + packet_offset = 0; + + /* Add the subtree for struct octvc1 evt */ + ti = proto_tree_add_item( tree, proto_octvc1_event, tvb, 0, -1, FALSE ); + evt_tree = proto_item_add_subtree( ti, ett_octvc1_event_header ); + + proto_tree_add_uint( evt_tree, hf_octvc1_event_header_ulLength, tvb, + packet_offset, 4, evt_length ); + packet_offset += sizeof(evt_length); + + + /* Validate the cmd */ + if( module_index < 0 ) + { + proto_tree_add_uint(evt_tree, hf_octvc1_event_header_ulEventId, tvb, packet_offset, 4, event_id ); + } + else + { + if( pszValueStringEID == NULL ) + { + pszValueStringEID = val_to_str( event_id_code, aOCTVC1ModuleColInfo[module_index].apEvtIdValueString, cOCTVC1_UNKNOWN_STRING ); + + // look for private + if( strcmp( pszValueStringEID, cOCTVC1_PRIVATE_ID_STRING ) == 0 ) + { + iRegistered = 0; + + // look if somebody register + if( g_fIsRegistered ) + { + pszValueStringEID = octvc1_chck_private( event_id_code, aOCTVC1ModuleColInfo[module_index].apPrivateEvtIdValueString, &iRegistered ); + } + else + pszValueStringEID = cOCTVC1_UNKNOWN_STRING; + } + } + + tf = proto_tree_add_uint_format(evt_tree, hf_octvc1_event_header_ulEventId, tvb, + packet_offset, 4, event_id, + "Event Id(0x%08X): cOCTVC1_%s_MSG_%s_EID", + event_id, + aOCTVC1ModuleColInfo[module_index].pszModuleName, + pszValueStringEID ); + } + + if( tf ) + { + proto_tree *field_tree; + + field_tree = proto_item_add_subtree(tf, ett_octvc1_event_id); + + proto_tree_add_uint( field_tree, hf_octvc1_event_header_ulEventId_Type, tvb, + packet_offset+1, 1, event_id_base ); + + proto_tree_add_uint( field_tree, hf_octvc1_event_header_ulEventId_Base, tvb, + packet_offset+1, 1, event_id_base ); + + proto_tree_add_uint_format_value(field_tree, hf_octvc1_event_header_ulEventId_Code, tvb, + packet_offset+2, 2, event_id_code, + "%s(0x%04X)", + pszValueStringEID, event_id_code ); + } + + packet_offset += sizeof(event_id_code); + + proto_tree_add_uint( evt_tree, hf_octvc1_event_header_ulUserEventId, tvb, + packet_offset, 4, user_event_id ); + packet_offset += sizeof(user_event_id); + } + + { + int fDoData = 1; + int reported_length = evt_length ? (evt_length - sizeof(tOCTVC1_EVENT_HEADER)) : 0; + int available_length = tvb_length_remaining(tvb, packet_offset); + tvbuff_t *tvbData; + + tvbData = tvb_new_subset(tvb, packet_offset, available_length, reported_length); + + if( ( module_index >= 0 ) && iRegistered ) + { + /* Call the module dissector */ + fDoData = aOCTVC1ModuleColInfo[module_index].Dissector_fnc( cOCTVC1_MSG_TYPE_NOTIFICATION, + event_id_base | event_id_code, + tvbData, pinfo, evt_tree ); + } + + if( fDoData ) + { + /* Dump the rest in raw format */ + call_dissector(data_handle, tvbData, pinfo, evt_tree); + } + } + +// return tvb_length(tvb); + +} + + + + + + + +/************************************************************************* +* +* Code to register the protocol with Wireshark +* +**************************************************************************/ +void proto_register_octvc1_event(void) +{ + static hf_register_info hf_octvc1_event[] = + { + /* Packet format F event fields */ + { &hf_octvc1_event_header_ulLength, + { "Event Length", "octvc1.event_header.ulLength", + FT_UINT32, BASE_HEX, NULL, 0x0, + "Event Length", HFILL } + }, + + { &hf_octvc1_event_header_ulEventId, + { "Event ID", "octvc1.event_header.ulEventId", FT_UINT32, BASE_HEX, NULL, 0x0, + "", HFILL }}, + + { &hf_octvc1_event_header_ulUserEventId, + { "User Event ID", "octvc1.event_header.ulUserEventId", + FT_UINT32, BASE_HEX, NULL, 0x0, + "User Event ID", HFILL } + }, + + { &hf_octvc1_event_header_ulEventId_Type, + { "Message Type Base", "octvc1.event_header.type_base", + FT_UINT32, BASE_HEX, NULL, 0x00f00000, + "Message identifier", HFILL } + }, + + { &hf_octvc1_event_header_ulEventId_Base, + { "Module ID", "octvc1.event_header.module_id", + FT_UINT32, BASE_HEX, VALS(vals_OCTVC1_module_UID), 0x000f0000, + "Module identifier", HFILL } + }, + { &hf_octvc1_event_header_ulEventId_Code, + { "Event Code Id", "octvc1.event_header.code_id", + FT_UINT32, BASE_HEX, NULL, 0x0000ffff, + "Event code", HFILL } + }, + }; + + /* Setup protocol subtree array */ + static gint* ett[] = + { + &ett_octvc1_event_header, + &ett_octvc1_event_id + }; + + proto_octvc1_event = proto_register_protocol( "OCTVC1 Event Packets", + "Octasic OCTVC1 Event", "octvc1_event"); + + /* Required function calls to register the header fields and subtrees used */ + proto_register_field_array( proto_octvc1_event, hf_octvc1_event, array_length(hf_octvc1_event) ); + proto_register_subtree_array(ett, array_length(ett)); + register_dissector("Octvc1_Event", dissect_octvc1_event, proto_octvc1_event); + +} + diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_plugin.c b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_plugin.c new file mode 100644 index 0000000..5284f54 --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvc1_plugin.c @@ -0,0 +1,404 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: octvc1_plugin.c + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 + +#include +#include +#include +#include + +#include "../include/plugin_info.h" +#include "../include/module.h" +#define OCT_DECLARE_COMMON +#include "../include/octvc1_common.h" +#include + +static int proto_octvc1 = -1; +static int fUserRegistered = 0; + +char * pszOctvc1_user_name=NULL; +char * pszOctvc1_user_id=NULL; +int g_fIsRegistered = 0; +static char l_szRegisteredUser[128]={0}; +static int l_iRegisteredUserLen = 0; +static int l_id_code_Registered = 0; +static gchar l_szAPIStr[256]; +static int l_fIsGod = 0; + +dissector_handle_t data_handle; + +const gchar* octvc1_chck_private( guint32 f_id_code, const value_string *f_PrivateApi, gint32 *f_piRegistered ) +{ + const gchar* pszValueString; + + //CHck if same as last request + if( l_iRegisteredUserLen && ( l_id_code_Registered == f_id_code ) ) + { + *f_piRegistered = 1; + return l_szAPIStr; + } + + *f_piRegistered = 0; + pszValueString = val_to_str( f_id_code, f_PrivateApi, cOCTVC1_UNKNOWN_STRING ); + if( strcmp( pszValueString, cOCTVC1_UNKNOWN_STRING ) ) + { + // Expect API ID STRING:user,user2,user3 + gchar *pszColumn = strchr( pszValueString, ':' ); + if( pszColumn ) + { + gchar *pszStr; + + // Keep API string + strncpy( l_szAPIStr, pszValueString, (pszColumn-pszValueString) ); + l_szAPIStr[(pszColumn-pszValueString)]=0; + + // Chck if god is register + if( !l_fIsGod ) + pszStr = strstr( pszColumn+1, l_szRegisteredUser ); + + // Find if register for this + if( l_fIsGod || + ( pszStr && ((pszStr==(pszColumn+1)) || (*(pszStr-1)==',') ) && + ( (*(pszStr+l_iRegisteredUserLen)==',') || (*(pszStr+l_iRegisteredUserLen)==0 ) ) ) ) + { + l_id_code_Registered = f_id_code; + *f_piRegistered = 1; + return l_szAPIStr; + } + } + } + return cOCTVC1_UNKNOWN_STRING; +} + +void pref_proto_octvc1_apply_callback( void ) +{ + char *pszPath; + + // by default this callback is called at startup ... skip the first call + if( fUserRegistered ) + { + int fReguser=0; + + if( ( strcmp( pszOctvc1_user_name, cOCTVC1_GOD_USER ) == 0 ) && + ( strcmp( pszOctvc1_user_id, cOCTVC1_GOD_USER_ID ) == 0 ) ) + { + fReguser = 1; + l_fIsGod = 1; + } + else + { + int i; + + for( i=0; ; i++ ) + { + if( aOCTVC1_user_list[i][0] == NULL ) + break; + + if( ( strcmp( aOCTVC1_user_list[i][0], pszOctvc1_user_name ) == 0 ) && + ( strcmp( aOCTVC1_user_list[i][1], pszOctvc1_user_id ) == 0 ) ) + { + fReguser = 1; + l_fIsGod = 0; + break; + } + } + } + + if( fReguser ) + { + g_fIsRegistered = 1; + strcpy( l_szRegisteredUser, pszOctvc1_user_name ); + l_iRegisteredUserLen = strlen( l_szRegisteredUser ); + } + else + { + g_fIsRegistered = 0; + l_fIsGod = 0; + } + } + fUserRegistered = 1; + + prefs_set_pref( "octvc1.user_name:user" ); + prefs_set_pref( "octvc1.user_id:****" ); + write_prefs( &pszPath ); + + // Reset last check + l_id_code_Registered = 0; + l_szAPIStr[0] = 0; + + + +} + +extern tModuleColInfo aOCTVC1ModuleColInfo[]; +#define mWD_OCTVC1_CID_CODE(uint32) ((uint32) & 0x00000FFF) + + +void dissect_OCTVC1_GSM(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) +{ + int temp_data, ulMsgType, ulCommandId, ulOctvc1MsgType, remaining_length, module_index; + int offset = 0; + tvbuff_t *message_tvb; + const gchar* pszValueString = NULL; + tModuleColInfo GsmModule; + + /* Find Tbl Module Index */ + match_strval_idx( cOCTVC1_GSM_UID, vals_OCTVC1_module_UID, &module_index ); + + /*Get the proper module info */ + GsmModule = aOCTVC1ModuleColInfo[module_index]; + + temp_data = tvb_get_ntohs( tvb, offset ); + proto_tree_add_text(tree, tvb, offset, 2, "reserved %d", temp_data ); + offset += 2; + ulMsgType = tvb_get_guint8( tvb, offset ); + ulCommandId = (ulMsgType & 0x7F) | cOCTVC1_GSM_CID_BASE; + ulOctvc1MsgType = ((ulMsgType & 0x80) == 0 )? cOCTVC1_MSG_TYPE_RESPONSE: cOCTVC1_MSG_TYPE_COMMAND; + + /* Hardcoded event mapping */ + if( ulMsgType == 0x01 || ulMsgType == 0x02 || ulMsgType == 0x07 || ulMsgType == 0x0e || ulMsgType == 0x16 ) + { + ulOctvc1MsgType = cOCTVC1_MSG_TYPE_NOTIFICATION; + ulCommandId = ulMsgType | cOCTVC1_GSM_EID_BASE; + } + + proto_tree_add_text(tree, tvb, offset, 1, "MsgType 0x%02x (CID:0x%08x, type:%d)", ulMsgType, ulCommandId, ulOctvc1MsgType ); + offset += 1; + temp_data = tvb_get_guint8( tvb, offset ); + proto_tree_add_text(tree, tvb, offset, 1, "size: %d", temp_data ); + offset += 1; + temp_data = tvb_get_ntohs( tvb, offset ); + proto_tree_add_text(tree, tvb, offset, 2, "sequence %d", temp_data ); + offset += 2; + + if( (ulMsgType & 0x7F) == 0x00 ) + { + ulCommandId |= 0x100; + } + /*API is not orthogonal!! remap response to proper Ids */ + if( ulOctvc1MsgType == cOCTVC1_MSG_TYPE_RESPONSE ) + { + if( ulMsgType == 0x08 || ulMsgType == 0x09 ) + ulCommandId = ((ulMsgType-1) & 0x7F) | cOCTVC1_GSM_CID_BASE; + + if( ulMsgType == 0x0a ) + ulCommandId = (0x11) | cOCTVC1_GSM_CID_BASE; + } + + if( ulOctvc1MsgType == cOCTVC1_MSG_TYPE_COMMAND ) + { + if( ulMsgType == 0x82 || ulMsgType == 0x81 ) + ulCommandId |= cOCTVC1_MSG_NO_RESPONSE_FLAG; + + } + + if( ulOctvc1MsgType == cOCTVC1_MSG_TYPE_NOTIFICATION ) + { + pszValueString = val_to_str( mWD_OCTVC1_CID_CODE( ulCommandId), GsmModule.apEvtIdValueString, cOCTVC1_UNKNOWN_STRING ); + + }else { + + pszValueString = val_to_str( mWD_OCTVC1_CID_CODE( ulCommandId), GsmModule.apCodeIdValueString, cOCTVC1_UNKNOWN_STRING ); + } + + if ( check_col(pinfo->cinfo, COL_INFO) ) + { + col_add_fstr( pinfo->cinfo, COL_INFO, + "%s_MSG_%s(0x%04X)", + GsmModule.pszModuleName, + pszValueString, + ulCommandId ); + } + + + if ( check_col(pinfo->cinfo, COL_PROTOCOL) ) + col_set_str(pinfo->cinfo, COL_PROTOCOL, "oct_gsm"); + + + remaining_length = tvb_reported_length_remaining(tvb, offset); + message_tvb = tvb_new_subset(tvb, offset, remaining_length, remaining_length); + GsmModule.Dissector_fnc( ulOctvc1MsgType, ulCommandId, message_tvb, pinfo, tree); + + /* We can call the amr plugin */ + /* think it can support IF2 Frame (GPP TS 26.101), need to double check */ +} + + +#ifdef cOCTVC1_WCDMA_UID +void dissect_OCTVC1_WCDMA(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) +{ + int temp_data, ulMsgType, ulCommandId, ulOctvc1MsgType, remaining_length, module_index; + int offset = 0; + tvbuff_t *message_tvb; + const gchar* pszValueString = NULL; + tModuleColInfo WcdmaModule; + + /* Find Tbl Module Index */ + match_strval_idx( cOCTVC1_WCDMA_UID, vals_OCTVC1_module_UID, &module_index ); + + /*Get the proper module info */ + WcdmaModule = aOCTVC1ModuleColInfo[module_index]; + ulMsgType = 0; + + ulOctvc1MsgType = cOCTVC1_MSG_TYPE_COMMAND; + + temp_data = tvb_get_ntohs( tvb, offset ); + proto_tree_add_text(tree, tvb, offset, 1, "L1c etherType 0x%02x", temp_data ); + offset += 2; + temp_data = tvb_get_ntohs( tvb, offset ); + proto_tree_add_text(tree, tvb, offset, 1, "Body Size: %d", temp_data ); + offset += 2; + temp_data = tvb_get_ntohs( tvb, offset ); + proto_tree_add_text(tree, tvb, offset, 2, "Message Type: %d", temp_data ); + offset += 2; + + temp_data = tvb_get_ntohs( tvb, offset ); + proto_tree_add_text(tree, tvb, offset, 2, "Message Id: %d", temp_data ); + ulCommandId = (temp_data & 0x7F) | cOCTVC1_WCDMA_CID_BASE; + + offset += 2; + temp_data = tvb_get_guint8( tvb, offset ); + proto_tree_add_text(tree, tvb, offset, 2, "FP Header size: %d", temp_data ); + offset += 2; + temp_data = tvb_get_guint8( tvb, offset ); + proto_tree_add_text(tree, tvb, offset, 2, "Transaction Id: %d", temp_data ); + offset += 2; + + /*API is not orthogonal!! remap response to proper Ids */ + if( ulOctvc1MsgType == cOCTVC1_MSG_TYPE_RESPONSE ) + { + if( ulMsgType == 0x08 || ulMsgType == 0x09 ) + ulCommandId = ((ulMsgType-1) & 0x7F) | cOCTVC1_GSM_CID_BASE; + + if( ulMsgType == 0x0a ) + ulCommandId = (0x11) | cOCTVC1_GSM_CID_BASE; + } + + if( ulOctvc1MsgType == cOCTVC1_MSG_TYPE_NOTIFICATION ) + { + pszValueString = val_to_str( mWD_OCTVC1_CID_CODE( ulCommandId), WcdmaModule.apEvtIdValueString, cOCTVC1_UNKNOWN_STRING ); + + }else { + + pszValueString = val_to_str( mWD_OCTVC1_CID_CODE( ulCommandId), WcdmaModule.apCodeIdValueString, cOCTVC1_UNKNOWN_STRING ); + } + + if ( check_col(pinfo->cinfo, COL_INFO) ) + { + col_add_fstr( pinfo->cinfo, COL_INFO, + "%s_MSG_%s(0x%04X)", + WcdmaModule.pszModuleName, + pszValueString, + ulCommandId ); + } + + + if ( check_col(pinfo->cinfo, COL_PROTOCOL) ) + col_set_str(pinfo->cinfo, COL_PROTOCOL, "oct_wcdma"); + + + remaining_length = tvb_reported_length_remaining(tvb, offset); + message_tvb = tvb_new_subset(tvb, offset, remaining_length, remaining_length); + WcdmaModule.Dissector_fnc( ulOctvc1MsgType, ulCommandId, message_tvb, pinfo, tree); + + /* We can call the amr plugin */ + /* think it can support IF2 Frame (GPP TS 26.101), need to double check */ +} +#endif + +/************************************************************************* +* +* Code to register the protocol with Wireshark +* +**************************************************************************/ +void proto_register_octvc1(void) +{ + module_t *octvc1_module; + int proto_gsm = -1; + int proto_wcdma = -1; + + proto_octvc1 = proto_register_protocol( "OCTVC1 Packets", "Octasic OCTVC1", "octvc1"); + octvc1_module = prefs_register_protocol(proto_octvc1, pref_proto_octvc1_apply_callback); + prefs_register_string_preference(octvc1_module, "user_name", "User name", "OCTVC1 user name", &pszOctvc1_user_name); + prefs_register_string_preference(octvc1_module, "user_id", "User id", "OCTVC1 user id", &pszOctvc1_user_id); + + /* register ctrl dissector */ + proto_register_octvc1_ctrl(); + + /* register event dissector */ + proto_register_octvc1_event(); + + /* Call module register fnc */ + ws_register_dissector_module(); + + + proto_gsm = proto_register_protocol( "OCTASIC GSM MODULE", "OCTGSM", "oct_gsm"); + register_dissector("OCTGSM", dissect_OCTVC1_GSM, proto_gsm); + +#ifdef cOCTVC1_WCDMA_UID + proto_wcdma = proto_register_protocol( "OCTASIC WCDMA MODULE", "OCTWCDMA", "oct_wcdma"); + register_dissector("OCTWCDMA", dissect_OCTVC1_WCDMA, proto_wcdma); +#endif + + +} + + + + + +/************************************************************************* +* +* If this dissector uses sub-dissector registration add a registration routine. +* This format is required because a script is used to find these routines and +* create the code that calls these routines. +* +**************************************************************************/ +void proto_reg_handoff_octvc1(void) +{ + extern int proto_octvc1_event; + extern int proto_octvc1_ctrl; + + extern int dissect_octvc1_ctrl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); + extern int dissect_octvc1_event(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); + + dissector_handle_t octvc1_ctrl_handle; + dissector_handle_t octvc1_event_handle; + + register_dissector_table( "vocallonet.api_type", "Vocallonet API", FT_UINT32, BASE_HEX); + + octvc1_ctrl_handle = new_create_dissector_handle(dissect_octvc1_ctrl, proto_octvc1_ctrl); + dissector_add_uint("vocallonet.api_type", 0, octvc1_ctrl_handle); + + octvc1_event_handle = new_create_dissector_handle(dissect_octvc1_event, proto_octvc1_event); + dissector_add_uint("vocallonet.api_type", 0, octvc1_event_handle); + + data_handle = find_dissector("data"); + +} + diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvocnet_common.c b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvocnet_common.c new file mode 100644 index 0000000..26ee2af --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/octvocnet_common.c @@ -0,0 +1,101 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: octvocnet_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/octvocnet_common.h" + + +#include + +/**************************************************************************** + MODULE API ENUMERATION STRING VALUES + ****************************************************************************/ + +const value_string vals_tOCTVOCNET_PKT_CONTROL_PROTOCOL_TYPE_ENUM[] = + { + { cOCTVOCNET_PKT_CONTROL_PROTOCOL_TYPE_ENUM_OCTVC1, "cOCTVOCNET_PKT_CONTROL_PROTOCOL_TYPE_ENUM_OCTVC1" }, + { 0, NULL } + }; + +const value_string vals_tOCTVOCNET_PKT_D_TYPE_ENUM[] = + { + { cOCTVOCNET_PKT_D_TYPE_ENUM_TONE, "cOCTVOCNET_PKT_D_TYPE_ENUM_TONE" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_GEN_SID, "cOCTVOCNET_PKT_D_TYPE_ENUM_GEN_SID" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_LINEAR_8KSS, "cOCTVOCNET_PKT_D_TYPE_ENUM_LINEAR_8KSS" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_LINEAR_16KSS, "cOCTVOCNET_PKT_D_TYPE_ENUM_LINEAR_16KSS" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_PCM_U_LAW, "cOCTVOCNET_PKT_D_TYPE_ENUM_PCM_U_LAW" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_PCM_A_LAW, "cOCTVOCNET_PKT_D_TYPE_ENUM_PCM_A_LAW" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_PCM_U_LAW_VBD, "cOCTVOCNET_PKT_D_TYPE_ENUM_PCM_U_LAW_VBD" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_PCM_A_LAW_VBD, "cOCTVOCNET_PKT_D_TYPE_ENUM_PCM_A_LAW_VBD" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_G726_16, "cOCTVOCNET_PKT_D_TYPE_ENUM_G726_16" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_G726_24, "cOCTVOCNET_PKT_D_TYPE_ENUM_G726_24" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_G726_32, "cOCTVOCNET_PKT_D_TYPE_ENUM_G726_32" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_G726_40, "cOCTVOCNET_PKT_D_TYPE_ENUM_G726_40" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_G726_16_RTP, "cOCTVOCNET_PKT_D_TYPE_ENUM_G726_16_RTP" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_G726_24_RTP, "cOCTVOCNET_PKT_D_TYPE_ENUM_G726_24_RTP" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_G726_32_RTP, "cOCTVOCNET_PKT_D_TYPE_ENUM_G726_32_RTP" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_G726_40_RTP, "cOCTVOCNET_PKT_D_TYPE_ENUM_G726_40_RTP" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_G722_48, "cOCTVOCNET_PKT_D_TYPE_ENUM_G722_48" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_G722_56, "cOCTVOCNET_PKT_D_TYPE_ENUM_G722_56" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_G722_64, "cOCTVOCNET_PKT_D_TYPE_ENUM_G722_64" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_G723_1, "cOCTVOCNET_PKT_D_TYPE_ENUM_G723_1" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_G729A, "cOCTVOCNET_PKT_D_TYPE_ENUM_G729A" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_G729AB_8, "cOCTVOCNET_PKT_D_TYPE_ENUM_G729AB_8" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_AMR, "cOCTVOCNET_PKT_D_TYPE_ENUM_AMR" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_AMR_RTP, "cOCTVOCNET_PKT_D_TYPE_ENUM_AMR_RTP" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_EFR, "cOCTVOCNET_PKT_D_TYPE_ENUM_EFR" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_EFR_RTP, "cOCTVOCNET_PKT_D_TYPE_ENUM_EFR_RTP" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_FR, "cOCTVOCNET_PKT_D_TYPE_ENUM_FR" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_FR_RTP, "cOCTVOCNET_PKT_D_TYPE_ENUM_FR_RTP" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_AMR_WB, "cOCTVOCNET_PKT_D_TYPE_ENUM_AMR_WB" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_AMR_WB_RTP, "cOCTVOCNET_PKT_D_TYPE_ENUM_AMR_WB_RTP" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_ILBC, "cOCTVOCNET_PKT_D_TYPE_ENUM_ILBC" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_G722_1_24, "cOCTVOCNET_PKT_D_TYPE_ENUM_G722_1_24" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_G722_1_32, "cOCTVOCNET_PKT_D_TYPE_ENUM_G722_1_32" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_G729_1, "cOCTVOCNET_PKT_D_TYPE_ENUM_G729_1" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_G729_1_RTP, "cOCTVOCNET_PKT_D_TYPE_ENUM_G729_1_RTP" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_T38_UDPTL, "cOCTVOCNET_PKT_D_TYPE_ENUM_T38_UDPTL" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_T38_RTP, "cOCTVOCNET_PKT_D_TYPE_ENUM_T38_RTP" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_VOX, "cOCTVOCNET_PKT_D_TYPE_ENUM_VOX" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_YUV_RTP_RFC4175, "cOCTVOCNET_PKT_D_TYPE_ENUM_YUV_RTP_RFC4175" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_RAW_YUV, "cOCTVOCNET_PKT_D_TYPE_ENUM_RAW_YUV" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_RAW_RGB, "cOCTVOCNET_PKT_D_TYPE_ENUM_RAW_RGB" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_RAW_YUV_EXTENDED, "cOCTVOCNET_PKT_D_TYPE_ENUM_RAW_YUV_EXTENDED" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_H263_RTP_RFC2190, "cOCTVOCNET_PKT_D_TYPE_ENUM_H263_RTP_RFC2190" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_H263_RTP_RFC2190_BYTE_BOUNDARY, "cOCTVOCNET_PKT_D_TYPE_ENUM_H263_RTP_RFC2190_BYTE_BOUNDARY" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_H263_RTP_RFC2429, "cOCTVOCNET_PKT_D_TYPE_ENUM_H263_RTP_RFC2429" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_MPEG4_RTP_RFC3016, "cOCTVOCNET_PKT_D_TYPE_ENUM_MPEG4_RTP_RFC3016" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_H264_RTP_RFC3984, "cOCTVOCNET_PKT_D_TYPE_ENUM_H264_RTP_RFC3984" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_FAST_YUV, "cOCTVOCNET_PKT_D_TYPE_ENUM_FAST_YUV" }, + { cOCTVOCNET_PKT_D_TYPE_ENUM_UNKNOWN_RTP_PAYLOAD_TYPE, "cOCTVOCNET_PKT_D_TYPE_ENUM_UNKNOWN_RTP_PAYLOAD_TYPE" }, + { 0, NULL } + }; diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/plugin.c b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/plugin.c new file mode 100644 index 0000000..f875024 --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/plugin.c @@ -0,0 +1,61 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: plugin.c + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + + +#include + +#include "../include/plugin_info.h" + +#ifndef ENABLE_STATIC + +#if defined(VERSION_MAJOR) && (VERSION_MAJOR > 1 || (VERSION_MAJOR == 1 && VERSION_MINOR > 8)) +#define WS_BUILD_DLL +#include "ws_symbol_export.h" +#define WS_EXPORT WS_DLL_PUBLIC_NOEXTERN +#else +#define WS_EXPORT G_MODULE_EXPORT +#endif + +WS_EXPORT const gchar version[] = VERSION; + +/* Start the functions we need for the plugin stuff */ +WS_EXPORT void +plugin_register (void) +{ + {extern void proto_register_octvc1(void); proto_register_octvc1();} +} + +WS_EXPORT void +plugin_reg_handoff(void) +{ + {extern void proto_reg_handoff_octvc1(void); proto_reg_handoff_octvc1();} +} +#endif diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/ws_util.c b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/ws_util.c new file mode 100644 index 0000000..0c8cb77 --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/source/ws_util.c @@ -0,0 +1,85 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: ws_util.c + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 "../../../include/oct_ws_macro.h" +/***************************** DEFINES **************************************/ + +void ws_dissector_not_registered(void) +{ + +} + +/************************************************************************* +* +* Return 0 on success +**************************************************************************/ +int ws_dissector_notimplemented( tvbuff_t * UNUSED(tvb), packet_info * UNUSED(pinfo), proto_tree * UNUSED(tree), unsigned int UNUSED(offset) ) +{ + return 1; +} + +/************************************************************************* +* +* Return 0 on success +**************************************************************************/ +int ws_dissector_module_notimplemented( guint8 UNUSED( message_type ), guint32 UNUSED(CID), tvbuff_t * UNUSED(tvb), packet_info * UNUSED(pinfo), + proto_tree * UNUSED(tree) ) +{ + return 1; +} + +unsigned int dissect_tOCTVC1_MAIN_FILE_HANDLE(tvbuff_t * UNUSED(tvb), packet_info * UNUSED(pinfo), proto_tree * UNUSED(tree), unsigned int UNUSED(offset)) +{ + return 0; +} + +const char * dissect_OCTVC1_Return_Code( guint32 ulRc ) +{ + return octvc1_rc2string( ulRc ); +} + +#if defined(VERSION_MAJOR) && (VERSION_MAJOR > 1 || (VERSION_MAJOR == 1 && VERSION_MINOR > 8)) +/************************************************************************* +* +* +**************************************************************************/ + +/* Generate a string describing an enumerated bitfield (an N-bit field with various specific values having particular names). */ +const char *decode_enumerated_bitfield(const guint32 val, const guint32 mask, const int width, const value_string *tab, const char *fmt) +{ + static char buf[1025]; + char *p; + + p = decode_bitfield_value(buf, val, mask, width); + g_snprintf(p, (gulong) (1024-(p-buf)), fmt, val_to_str(val & mask, tab, "Unknown")); + return buf; +} +#endif diff --git a/application/tool/wireshark/plugins/octasic/plugin.rc.in b/application/tool/wireshark/plugins/octasic/plugin.rc.in new file mode 100644 index 0000000..c4e9190 --- /dev/null +++ b/application/tool/wireshark/plugins/octasic/plugin.rc.in @@ -0,0 +1,34 @@ +#include "winver.h" + +VS_VERSION_INFO VERSIONINFO + FILEVERSION @RC_MODULE_VERSION@ + PRODUCTVERSION @RC_VERSION@ + FILEFLAGSMASK 0x0L +#ifdef _DEBUG + FILEFLAGS VS_FF_DEBUG +#else + FILEFLAGS 0 +#endif + FILEOS VOS_NT_WINDOWS32 + FILETYPE VFT_DLL +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "CompanyName", "Octasic, http://www.octasic.com/\0" + VALUE "FileDescription", "@PACKAGE@ dissector\0" + VALUE "FileVersion", "@MODULE_VERSION@\0" + VALUE "InternalName", "@INTERNAL_NAME@\0" + VALUE "LegalCopyright", "Copyright © 2013 Octasic\0" + VALUE "OriginalFilename", "@PLUGIN_NAME@.dll\0" + VALUE "ProductName", "Wireshark\0" + VALUE "ProductVersion", "@VERSION@\0" + VALUE "Comments", "Build with @MSVC_VARIANT@\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END diff --git a/application/tool/wireshark/ws_dev_root.nmake b/application/tool/wireshark/ws_dev_root.nmake new file mode 100644 index 0000000..9d9f9c5 --- /dev/null +++ b/application/tool/wireshark/ws_dev_root.nmake @@ -0,0 +1 @@ +WS_DEV_ROOT=Y:\work\3rdParty\wireshark diff --git a/readme.txt b/readme.txt new file mode 100644 index 0000000..b4b686a --- /dev/null +++ b/readme.txt @@ -0,0 +1,7 @@ +GSM Wireshark Plugin Source Code + +This source code works with Wireshark version 1.6.5. + +Makefile for octvc1 plugin is located in application\tool\wireshark\plugins\octasic\octsdr + +Makefile for octpkt_ws plugin is located in application\tool\wireshark\plugins\octasic\octpkt_ws \ No newline at end of file diff --git a/software/include/octdev_devices.h b/software/include/octdev_devices.h new file mode 100644 index 0000000..e098d90 --- /dev/null +++ b/software/include/octdev_devices.h @@ -0,0 +1,63 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTDEV_DEVICES.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTDEV_DEVICES_H__ +#define __OCTDEV_DEVICES_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "octdev_types.h" + + +/************************ COMMON DEFINITIONS *******************************/ + +/*------------------------------------------------------------------------------------- + tOCTDEV_DEVICES_TYPE_ENUM : Octasic Device type. +-------------------------------------------------------------------------------------*/ +#define tOCTDEV_DEVICES_TYPE_ENUM tOCT_UINT32 + +#define cOCTDEV_DEVICES_TYPE_ENUM_INVALID 0x0 +#define cOCTDEV_DEVICES_TYPE_ENUM_OCT1010 0x1 +#define cOCTDEV_DEVICES_TYPE_ENUM_OCT2200 0x2 + +/*------------------------------------------------------------------------------------- + tOCTDEV_DEVICES_DSP_CORE_TYPE_ENUM : Octasic DSP Core type. +-------------------------------------------------------------------------------------*/ +#define tOCTDEV_DEVICES_DSP_CORE_TYPE_ENUM tOCT_UINT32 + +#define cOCTDEV_DEVICES_DSP_CORE_TYPE_ENUM_INVALID 0x0 +#define cOCTDEV_DEVICES_DSP_CORE_TYPE_ENUM_OPUS1 0x1 +#define cOCTDEV_DEVICES_DSP_CORE_TYPE_ENUM_OPUS2 0x2 + +/*------------------------------------------------------------------------------------- + OCT1010 specific definitions. +-------------------------------------------------------------------------------------*/ +#define cOCTDEV_DEVICES_OCT1010_MAX_CORE_NUMBER 15 /* Maximum number of core in the OCT1010. */ +#define cOCTDEV_DEVICES_OCT1010_MAX_VSPMGR_THREADS 12 /* Maximum number of VSP Mgr threads that can be started on the OCT1010. */ +#define cOCTDEV_DEVICES_OCT1010_CORE_TYPE cOCTDEV_DEVICES_DSP_CORE_TYPE_ENUM_OPUS1 /* Type of DSP Core in the OCT1010. */ +#define cOCTDEV_DEVICES_OCT1010_MAX_ETH_PORT_NUMBER 2 /* Maximum number of Ethernet port in the OCT1010. */ + +/*------------------------------------------------------------------------------------- + OCT2200 specific definitions. +-------------------------------------------------------------------------------------*/ +#define cOCTDEV_DEVICES_OCT2200_MAX_CORE_NUMBER 24 /* Maximum number of core in the OCT2200. */ +#define cOCTDEV_DEVICES_OCT2200_MAX_VSPMGR_THREADS 21 /* Maximum number of VSP Mgr threads that can be started on the OCT2200. */ +#define cOCTDEV_DEVICES_OCT2200_CORE_TYPE cOCTDEV_DEVICES_DSP_CORE_TYPE_ENUM_OPUS2 /* Type of DSP Core in the OCT2200. */ +#define cOCTDEV_DEVICES_OCT2200_MAX_ETH_PORT_NUMBER 4 /* Maximum number of Ethernet port in the OCT2200. */ + + +#endif /* __OCTDEV_DEVICES_H__ */ + diff --git a/software/include/octdev_macro.h b/software/include/octdev_macro.h new file mode 100644 index 0000000..02bca3c --- /dev/null +++ b/software/include/octdev_macro.h @@ -0,0 +1,91 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTDEV_MACRO.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTDEV_MACRO_H__ +#define __OCTDEV_MACRO_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "octdev_types.h" + + +/************************ COMMON DEFINITIONS *******************************/ + +/*------------------------------------------------------------------------------------- + Generic swap macros +-------------------------------------------------------------------------------------*/ + + +/*-------------------------------------------------------------------------- + 32-bit Endian Swapping when target is Little Endian +----------------------------------------------------------------------------*/ +#if !defined( mOCT_SWAP32_IF_LE ) +#if defined( __linux__ ) +/* Linux (and probably other unices') htonl implementation is far more + * efficient than our own; Win32 implementation, howerever is similar to + * our own BUT with the added cost of a function call */ + +#include +#define mOCT_SWAP32_IF_LE htonl + +#else /* __linux__ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) + +#define mOCT_SWAP32_IF_LE( f_ulValue ) \ + ( (((f_ulValue) & 0xff000000 ) >> 24) | \ + (((f_ulValue) & 0x00ff0000 ) >> 8) | \ + (((f_ulValue) & 0x0000ff00 ) << 8) | \ + (((f_ulValue) & 0x000000ff ) << 24) ) +#else + +#define mOCT_SWAP32_IF_LE( f_ulValue ) (f_ulValue) + +#endif /* _OCT_ENDIAN_TYPE_LE_ */ +#endif /* __linux__ */ +#endif /* mOCT_SWAP32_IF_LE */ + +/*-------------------------------------------------------------------------- + 16-bit Endian Swapping when target is Little Endian +----------------------------------------------------------------------------*/ +#if !defined( mOCT_SWAP16_IF_LE ) +#if defined( __linux__ ) +/* Linux (and probably other unices') htons implementation is far more + * efficient than our own; Win32 implementation, howerever is similar to + * our own BUT with the added cost of a function call */ + +#include +#define mOCT_SWAP16_IF_LE htons + +#else /* __linux__ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) + +#define mOCT_SWAP16_IF_LE( f_usValue ) \ + ( (((f_usValue) & 0x00ff ) << 8) | \ + (((f_usValue) & 0xff00 ) >> 8) ) +#else + +#define mOCT_SWAP16_IF_LE( f_usValue ) (f_usValue) + +#endif /* _OCT_ENDIAN_TYPE_LE_ */ +#endif /* __linux__ */ +#endif /* mOCT_SWAP16_IF_LE */ + + + +#endif /* __OCTDEV_MACRO_H__ */ + diff --git a/software/include/octdev_opus_rev.h b/software/include/octdev_opus_rev.h new file mode 100644 index 0000000..086adab --- /dev/null +++ b/software/include/octdev_opus_rev.h @@ -0,0 +1,105 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTDEV_OPUS_REV.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTDEV_OPUS_REV_H__ +#define __OCTDEV_OPUS_REV_H__ + + +/************************ COMMON DEFINITIONS *******************************/ + +/*------------------------------------------------------------------------------------- + Revision history +-------------------------------------------------------------------------------------*/ + + +#ifdef _M_OPUS1 +#define OCT1010_REV_B +#endif /* _M_OPUS1 */ + +#ifdef OCT1010_REV_A + #define d1jnsrc d1jnsrp + #define d2jnsrc d2jnsrp + #define d4jnsrc d4jnsrp + #define d8jnsrc d8jnsrp + #define d16jnsrc d16jnsrp + #define d32jnsrc d32jnsrp + #define d64jnsrc d64jnsrp + #define d128jnsrc d128jnsrp + #define d1jnsc d1jnsrp + #define d2jnsc d2jnsrp + #define d4jnsc d4jnsrp + #define d8jnsc d8jnsrp + #define d16jnsc d16jnsrp + #define d32jnsc d32jnsrp + #define d64jnsc d64jnsrp + #define d128jnsc d128jnsrp + + /* need for the migration from Rev A to Rev B + */ + #define mOCTDEV_OPUS_RDTSC_CORRECTION( f_ulTimestamp ) \ + _asm and f_ulTimestamp, 0x7FFFFFFF + + #define mOCTDEV_OPUS_RDTSC_CORRECTION_C( f_ulTimestamp ) \ + f_ulTimestamp &= 0x7FFFFFFF; + + #define mOCTDEV_OPUS_UNSEIZABLE_FIX( f_ulRegister ) \ + _asm { halt ( ( f_ulRegister & 0 ) != 0 ) } + + #define mOCTDEV_OPUS_UNSEIZABLE_FIX_C( f_ulRegister ) \ + {_chalt(( f_ulRegister & 0 ) != 0 );} + +#endif /* OCT1010_REV_A */ + +#ifdef OCT1010_REV_B + #define mOCTDEV_OPUS_RDTSC_CORRECTION( f_ulTimestamp ) \ + _asm and f_ulTimestamp, 0x7FFFFFFF + + #define mOCTDEV_OPUS_RDTSC_CORRECTION_C( f_ulTimestamp ) \ + f_ulTimestamp &= 0x7FFFFFFF; + + #define mOCTDEV_OPUS_UNSEIZABLE_FIX( f_ulRegister ) \ + _asm { halt ( ( f_ulRegister & 0 ) != 0 ) } + + #define mOCTDEV_OPUS_UNSEIZABLE_FIX_C( f_ulRegister ) \ + {_chalt(( f_ulRegister & 0 ) != 0 );} + +#endif /* OCT1010_REV_B */ + +#ifdef _M_OPUS2 + #define OCT2200_REV_B +#endif /* _M_OPUS2 */ + +#ifdef OCT2200_REV_A + #define mOCTDEV_OPUS_RDTSC_CORRECTION( f_ulTimestamp ) + #define mOCTDEV_OPUS_RDTSC_CORRECTION_C( f_ulTimestamp ) + + #define mOCTDEV_OPUS_UNSEIZABLE_FIX( f_ulRegister ) + #define mOCTDEV_OPUS_UNSEIZABLE_FIX_C( f_ulRegister ) + +#endif /* OCT2200_REV_A */ + +#ifdef OCT2200_REV_B + #define mOCTDEV_OPUS_RDTSC_CORRECTION( f_ulTimestamp ) + #define mOCTDEV_OPUS_RDTSC_CORRECTION_C( f_ulTimestamp ) + + #define mOCTDEV_OPUS_UNSEIZABLE_FIX( f_ulRegister ) + #define mOCTDEV_OPUS_UNSEIZABLE_FIX_C( f_ulRegister ) + +#endif /* OCT2200_REV_B */ + + +#endif /* __OCTDEV_OPUS_REV_H__ */ + diff --git a/software/include/octdev_rc_base.h b/software/include/octdev_rc_base.h new file mode 100644 index 0000000..d894b93 --- /dev/null +++ b/software/include/octdev_rc_base.h @@ -0,0 +1,39 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTDEV_RC_BASE.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTDEV_RC_BASE_H__ +#define __OCTDEV_RC_BASE_H__ + + +/************************ COMMON DEFINITIONS *******************************/ + +/*------------------------------------------------------------------------------------- + Gemeric Return Code bases +-------------------------------------------------------------------------------------*/ + +#define cOCTADF_TARGET_RC_BASE 0x01000000 +#define cOCTVC1_API_RC_BASE 0x0A000000 +#define cOCTCOMMON_API_RC_BASE 0x0E000000 +#define cOCTDEVICE_API_RC_BASE 0x0F000000 + +/*------------------------------------------------------------------------------------- + Return Code fatal flag +-------------------------------------------------------------------------------------*/ + +#define cOCTDEV_RC_FATAL_FLAG 0x80000000 + +#endif /* __OCTDEV_RC_BASE_H__ */ + diff --git a/software/include/octdev_types.h b/software/include/octdev_types.h new file mode 100644 index 0000000..64b1889 --- /dev/null +++ b/software/include/octdev_types.h @@ -0,0 +1,277 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTDEV_TYPES.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTDEV_TYPES_H__ +#define __OCTDEV_TYPES_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include + + +/************************ COMMON DEFINITIONS *******************************/ + +/*------------------------------------------------------------------------------------- + API Data Types +-------------------------------------------------------------------------------------*/ + + +#ifndef NULL +#ifdef __cplusplus +#define NULL 0 +#else +#define NULL ((void *)0) +#endif +#endif + +#if SHRT_MAX == 32767 + /* short is 16-bit */ + typedef unsigned short tOCT_UINT16; + typedef short tOCT_INT16; +#elif INT_MAX == 32767 + /* integer is 16-bit */ + typedef unsigned int tOCT_UINT16; + typedef int tOCT_INT16; +#else + /* unexpected 16-bit type */ + #error Cannot determine 16-bit type +#endif + +#if INT_MAX == 2147483647L + /* integer is 32-bit */ + typedef int tOCT_INT32; + typedef unsigned int tOCT_UINT32; +#elif LONG_MAX == 2147483647L + /* long is 32-bit */ + typedef long tOCT_INT32; + typedef unsigned long tOCT_UINT32; +#else + /* unexpected 32-bit type */ + #error Cannot determine 32-bit type +#endif + +typedef char tOCT_INT8; +typedef unsigned char tOCT_UINT8; + + +/*------------------------------------------------------------------------------------- + TRUE/FALSE +-------------------------------------------------------------------------------------*/ +/*------------------------------------------------------------------------------------- + tOCT_BOOL32 : +-------------------------------------------------------------------------------------*/ +#define tOCT_BOOL32 tOCT_UINT32 + +#define cOCT_TRUE 1 +#define cOCT_FALSE 0 + +/*------------------------------------------------------------------------------------- + Generic Timeout value +-------------------------------------------------------------------------------------*/ +#define cOCTDEV_TIMEOUT_FOREVER 0xFFFFFFFF + + +/*-------------------------------------------------------------------------- + ENDIAN Determination + + _OCT_ENDIAN_TYPE_BE_: Defined when target is Big Endian + _OCT_ENDIAN_TYPE_LE_: Defined when target is Little Endian + + These must be set by the user. If not set the system will try to + automatically determine them based on some common compiler #define + values. + +----------------------------------------------------------------------------*/ + +#if !defined( _OCT_ENDIAN_TYPE_BE_ ) && !defined( _OCT_ENDIAN_TYPE_LE_ ) + /* Not Set - try to determine automatically */ + + /* Look for Intel target */ + #if defined( __OCT_ENV_OPUS__ ) || defined( _M_OPUS1 ) || defined( _M_OPUS2 ) || defined( _M_OPUS3 ) + #define _OCT_ENDIAN_TYPE_BE_ + #elif defined( _M_IX86 ) || defined(__x86_64__) + #define _OCT_ENDIAN_TYPE_LE_ + #elif defined( __i386 ) + #define _OCT_ENDIAN_TYPE_LE_ + #elif defined( i386 ) + #define _OCT_ENDIAN_TYPE_LE_ + /* Look for Motorola PPC target */ + #elif defined( _M_MPPC ) || defined( _M_PPC ) || defined( __ppc__ ) || defined( __PPC ) + #define _OCT_ENDIAN_TYPE_BE_ + /* Look for Sparc target */ + #elif defined( __sparc ) + #define _OCT_ENDIAN_TYPE_BE_ + #elif defined( __sun__ ) + #define _OCT_ENDIAN_TYPE_BE_ + /* Look for ARM target */ + #elif defined( __ARMEL__ ) + #define _OCT_ENDIAN_TYPE_LE_ + /* Look for MIPS target */ + #elif defined( __mips__ ) || defined( __MIPSEB ) + #define _OCT_ENDIAN_TYPE_BE_ + /* others */ + #elif defined( CPU ) + #if CPU==PPC860 + #define _OCT_ENDIAN_TYPE_BE_ + #endif + #endif +#endif + +/* Now insure the endian format is set properly */ +#if !defined( _OCT_ENDIAN_TYPE_BE_ ) && !defined( _OCT_ENDIAN_TYPE_LE_ ) + #error Processor Endian not determined +#endif +#if defined( _OCT_ENDIAN_TYPE_BE_ ) && defined( _OCT_ENDIAN_TYPE_LE_ ) + #error Processor Endian Set to both Values +#endif + +/*-------------------------------------------------------------------------- + PLATFORM Determination + + OCT_WINDOWS_ENV : Defined when target running under windows + OCT_LINUX_ENV : Defined when target running under linux + OCT_OPUS_ENV : OPUS env + OCT_UNKNOWN_ENV : Unknown env + +----------------------------------------------------------------------------*/ +#define __OCTDEV_TYPE_STR2__(x) #x +#define __OCTDEV_TYPE_STR1__(x) __OCTDEV_TYPE_STR2__(x) +#define __OCTDEV_TYPE_WARNLOC__ __FILE__ "("__OCTDEV_TYPE_STR1__(__LINE__)") : Warning Msg: " + +#if defined( __OCT_ENV_OPUS__ ) || defined( _M_OPUS1 ) || defined( _M_OPUS2 ) || defined( _M_OPUS3 ) + #define OCT_ENV_TYPE_OPUS +#ifdef _DEBUG + #define OCT_ENV_MODE_DEBUG +#endif +#elif defined( _LINUX_ ) || defined( __linux__ ) + #define OCT_ENV_TYPE_LINUX +#ifndef NDEBUG + #define OCT_ENV_MODE_DEBUG +#endif +#elif defined( _WIN32 ) || defined( _WIN64 ) || defined( WIN32 ) || defined( WIN64 ) + #define OCT_ENV_TYPE_WINDOWS +#ifdef _DEBUG + #define OCT_ENV_MODE_DEBUG +#endif +#else + #define OCT_ENV_TYPE_UNKNOWN + #pragma message(__OCTDEV_TYPE_WARNLOC__"Environment platform not determined") +#endif + + +/*------------------------------------------------------------------------------------- + Generic IP Address +-------------------------------------------------------------------------------------*/ + +/*------------------------------------------------------------------------------------- + tOCTDEV_IP_VERSION_ENUM : +-------------------------------------------------------------------------------------*/ +#define tOCTDEV_IP_VERSION_ENUM tOCT_UINT32 + +#define cOCTDEV_IP_VERSION_ENUM_4 0 /* IP address version 4 */ +#define cOCTDEV_IP_VERSION_ENUM_6 1 /* IP address version 6 */ +#define cOCTDEV_IP_VERSION_ENUM_INVALID 0xFFFFFFFF + +/*------------------------------------------------------------------------------------- + tOCTDEV_IP_ADDRESS + IP address structure + + Members: + ulIpVersion + Default: cOCTDEV_IP_VERSION_ENUM_4 + Version of the IP address + aulIpAddress + Ip address, Version 4 -> aulIpAddress[0] only. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTDEV_IP_VERSION_ENUM ulIpVersion; + tOCT_UINT32 aulIpAddress[4]; + +} tOCTDEV_IP_ADDRESS; + +/*------------------------------------------------------------------------------------- + Generic UDP Address +-------------------------------------------------------------------------------------*/ +#define cOCTDEV_UDP_PORT_INVALID 0xFFFFFFFF /* Invalid UDP port specification. */ + +/*------------------------------------------------------------------------------------- + tOCTDEV_UDP_ADDRESS + UDP address structure + + Members: + IpAddress + IP version and address. + ulUdpPort + Default: cOCTDEV_UDP_PORT_INVALID + UDP port used with IP address +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTDEV_IP_ADDRESS IpAddress; + tOCT_UINT32 ulUdpPort; + +} tOCTDEV_UDP_ADDRESS; + +/*------------------------------------------------------------------------------------- + Generic TCP Address +-------------------------------------------------------------------------------------*/ +#define cOCTDEV_TCP_PORT_INVALID 0xFFFFFFFF /* Invalid TCP port specification. */ + +/*------------------------------------------------------------------------------------- + tOCTDEV_TCP_ADDRESS + TCP address structure + + Members: + IpAddress + IP version and address. + ulTcpPort + Default: cOCTDEV_TCP_PORT_INVALID + TCP port used with IP address +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTDEV_IP_ADDRESS IpAddress; + tOCT_UINT32 ulTcpPort; + +} tOCTDEV_TCP_ADDRESS; + +/*------------------------------------------------------------------------------------- + Generic MAC Address +-------------------------------------------------------------------------------------*/ +#define cOCTDEV_MAC_ADDRESS_BYTE_COUNT 6 + +/*------------------------------------------------------------------------------------- + tOCTDEV_MAC_ADDRESS + MAC address structure + + Members: + abyReserved + Reserved fields inserted to ensure that the structure is an integer multiple of + DWORDS. + abyMacAddress + MAC address; abyMacAddress[0] = msb, abyMacAddress[5] = lsb. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCT_UINT8 abyReserved[2]; + tOCT_UINT8 abyMacAddress[cOCTDEV_MAC_ADDRESS_BYTE_COUNT]; + +} tOCTDEV_MAC_ADDRESS; + + +#endif /* __OCTDEV_TYPES_H__ */ + diff --git a/software/include/octdev_types_swap.h b/software/include/octdev_types_swap.h new file mode 100644 index 0000000..2236dcb --- /dev/null +++ b/software/include/octdev_types_swap.h @@ -0,0 +1,67 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* + +File: octdev_types_swap.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#ifndef __OCTDEV_TYPES_SWAP_H__ +#define __OCTDEV_TYPES_SWAP_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************** INCLUDE FILES *******************************/ +#include "vocallo/octvc1_swap_hdrs.h" +#include "octdev_types.h" + +/********************************* MACROS **********************************/ + + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTDEV_IP_ADDRESS_SWAP( _f_pParms ){ tOCTDEV_IP_ADDRESS * pOCTDEV_IP_ADDRESS = (_f_pParms); \ + ((tOCTDEV_IP_ADDRESS *)pOCTDEV_IP_ADDRESS)->ulIpVersion = \ + mOCT_SWAP32_IF_LE(((tOCTDEV_IP_ADDRESS *)pOCTDEV_IP_ADDRESS)->ulIpVersion); \ + { tOCT_UINT32 iOCTDEV_IP_ADDRESS; \ + for( iOCTDEV_IP_ADDRESS=0; \ + iOCTDEV_IP_ADDRESS<(4);iOCTDEV_IP_ADDRESS++ ) \ + ((tOCTDEV_IP_ADDRESS *)pOCTDEV_IP_ADDRESS)->aulIpAddress[iOCTDEV_IP_ADDRESS] = \ + mOCT_SWAP32_IF_LE(((tOCTDEV_IP_ADDRESS *)pOCTDEV_IP_ADDRESS)->aulIpAddress[iOCTDEV_IP_ADDRESS]);}\ +} +#else +#define mOCTDEV_IP_ADDRESS_SWAP( pOCTDEV_IP_ADDRESS ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTDEV_UDP_ADDRESS_SWAP( _f_pParms ){ tOCTDEV_UDP_ADDRESS * pOCTDEV_UDP_ADDRESS = (_f_pParms); \ + { mOCTDEV_IP_ADDRESS_SWAP( &((tOCTDEV_UDP_ADDRESS *)pOCTDEV_UDP_ADDRESS)->IpAddress ); } \ + ((tOCTDEV_UDP_ADDRESS *)pOCTDEV_UDP_ADDRESS)->ulUdpPort = \ + mOCT_SWAP32_IF_LE(((tOCTDEV_UDP_ADDRESS *)pOCTDEV_UDP_ADDRESS)->ulUdpPort); \ +} +#else +#define mOCTDEV_UDP_ADDRESS_SWAP( pOCTDEV_UDP_ADDRESS ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTDEV_TCP_ADDRESS_SWAP( _f_pParms ){ tOCTDEV_TCP_ADDRESS * pOCTDEV_TCP_ADDRESS = (_f_pParms); \ + { mOCTDEV_IP_ADDRESS_SWAP( &((tOCTDEV_TCP_ADDRESS *)pOCTDEV_TCP_ADDRESS)->IpAddress ); } \ + ((tOCTDEV_TCP_ADDRESS *)pOCTDEV_TCP_ADDRESS)->ulTcpPort = \ + mOCT_SWAP32_IF_LE(((tOCTDEV_TCP_ADDRESS *)pOCTDEV_TCP_ADDRESS)->ulTcpPort); \ +} +#else +#define mOCTDEV_TCP_ADDRESS_SWAP( pOCTDEV_TCP_ADDRESS ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#ifdef __cplusplus +} + +#endif + +#endif /* __OCTDEV_TYPES_SWAP_H__ */ diff --git a/software/include/octpkt/octpkt_hdr.h b/software/include/octpkt/octpkt_hdr.h new file mode 100644 index 0000000..b2c3c2a --- /dev/null +++ b/software/include/octpkt/octpkt_hdr.h @@ -0,0 +1,91 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTPKT_HDR.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTPKT_HDR_H__ +#define __OCTPKT_HDR_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "../octdev_types.h" + + +/************************ COMMON DEFINITIONS *******************************/ + +#define cOCTPKT_HDR_ETHERTYPE 0x5200 +#define cOCTPKT_HDR_WCDMA 0xCDAB +#define cOCTPKT_HDR_GSM 0xF00D + +/*------------------------------------------------------------------------------------- + OctPkt-Packet Format Values +-------------------------------------------------------------------------------------*/ + +/*------------------------------------------------------------------------------------- + tOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK : +-------------------------------------------------------------------------------------*/ +#define tOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK tOCT_UINT32 + +#define cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_FORMAT_BIT_MASK 0x000000FF +#define cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_FORMAT_BIT_OFFSET 24 +#define cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_FORMAT ((tOCT_UINT32)(cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_FORMAT_BIT_MASK<. + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#ifndef __OCTPKT_HDR_SWAP_H__ +#define __OCTPKT_HDR_SWAP_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************** INCLUDE FILES *******************************/ +#include "../vocallo/octvc1_swap_hdrs.h" +#include "octpkt_hdr.h" + +/********************************* MACROS **********************************/ + + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTPKT_HDR_SWAP( _f_pParms ){ tOCTPKT_HDR * pOCTPKT_HDR = (_f_pParms); \ + ((tOCTPKT_HDR *)pOCTPKT_HDR)->ul_Format_Trace_Length = \ + mOCT_SWAP32_IF_LE(((tOCTPKT_HDR *)pOCTPKT_HDR)->ul_Format_Trace_Length); \ +} +#else +#define mOCTPKT_HDR_SWAP( pOCTPKT_HDR ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#ifdef __cplusplus +} + +#endif + +#endif /* __OCTPKT_HDR_SWAP_H__ */ diff --git a/software/include/octpkt/octpkt_hdrxl.h b/software/include/octpkt/octpkt_hdrxl.h new file mode 100644 index 0000000..1d1c22f --- /dev/null +++ b/software/include/octpkt/octpkt_hdrxl.h @@ -0,0 +1,85 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTPKT_HDRXL.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTPKT_HDRXL_H__ +#define __OCTPKT_HDRXL_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "../octdev_types.h" +#include "octpkt_hdr.h" + + +/************************ COMMON DEFINITIONS *******************************/ + +#define cOCTPKT_HDRXL_ETHERTYPE 0x5201 + +/*------------------------------------------------------------------------------------- + OctPkt-Packet Format Values +-------------------------------------------------------------------------------------*/ + +/*------------------------------------------------------------------------------------- + tOCTPKT_HDRXL_FORMAT_PROTO_TYPE_LEN_MASK : +-------------------------------------------------------------------------------------*/ +#define tOCTPKT_HDRXL_FORMAT_PROTO_TYPE_LEN_MASK tOCT_UINT32 + +#define cOCTPKT_HDRXL_FORMAT_PROTO_TYPE_LEN_MASK_FORMAT_BIT_MASK 0x000000FF +#define cOCTPKT_HDRXL_FORMAT_PROTO_TYPE_LEN_MASK_FORMAT_BIT_OFFSET 16 +#define cOCTPKT_HDRXL_FORMAT_PROTO_TYPE_LEN_MASK_FORMAT ((tOCT_UINT32)(cOCTPKT_HDRXL_FORMAT_PROTO_TYPE_LEN_MASK_FORMAT_BIT_MASK<. + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#ifndef __OCTPKT_HDRXL_SWAP_H__ +#define __OCTPKT_HDRXL_SWAP_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************** INCLUDE FILES *******************************/ +#include "../vocallo/octvc1_swap_hdrs.h" +#include "octpkt_hdrxl.h" + +/********************************* MACROS **********************************/ + + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTPKT_HDRXL_SWAP( _f_pParms ){ tOCTPKT_HDRXL * pOCTPKT_HDRXL = (_f_pParms); \ + ((tOCTPKT_HDRXL *)pOCTPKT_HDRXL)->ul_Proto_Format_Length = \ + mOCT_SWAP32_IF_LE(((tOCTPKT_HDRXL *)pOCTPKT_HDRXL)->ul_Proto_Format_Length); \ +} +#else +#define mOCTPKT_HDRXL_SWAP( pOCTPKT_HDRXL ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTPKT_HDRXL_ETH_SWAP( _f_pParms ){ tOCTPKT_HDRXL_ETH * pOCTPKT_HDRXL_ETH = (_f_pParms); \ + ((tOCTPKT_HDRXL_ETH *)pOCTPKT_HDRXL_ETH)->usReserved = \ + mOCT_SWAP16_IF_LE(((tOCTPKT_HDRXL_ETH *)pOCTPKT_HDRXL_ETH)->usReserved); \ +} +#else +#define mOCTPKT_HDRXL_ETH_SWAP( pOCTPKT_HDRXL_ETH ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#ifdef __cplusplus +} + +#endif + +#endif /* __OCTPKT_HDRXL_SWAP_H__ */ diff --git a/software/include/vocallo/cpp/octvc1_cpp_api.h b/software/include/vocallo/cpp/octvc1_cpp_api.h new file mode 100644 index 0000000..2f837b6 --- /dev/null +++ b/software/include/vocallo/cpp/octvc1_cpp_api.h @@ -0,0 +1,930 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_CPP_API.h + +$Octasic_Copyright: $ + +Description: Contains the definition of the CPP API. + +$Octasic_Confidentiality: $ + +$Octasic_Release: $ + +$Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_CPP_API_H__ +#define __OCTVC1_CPP_API_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "../../octdev_types.h" +#include "../octvc1_msg.h" +#include "../octvc1_handle.h" +#include "../octvc1_cursor.h" +#include "../octvc1_ip.h" +#include "../octvc1_udp.h" +#include "../octvc1_mac.h" +#include "../octvc1_eth.h" +#include "../octvc1_fifo.h" +#include "../octvocnet_pkt.h" + +#include "octvc1_cpp_id.h" +#include "octvc1_cpp_rc.h" + +/************************ COMMON DEFINITIONS *******************************/ + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_UDP_SEARCH_TYPE_ENUM : RX UDP connection types. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_CPP_UDP_SEARCH_TYPE_ENUM tOCT_UINT32 + +#define cOCTVC1_CPP_UDP_SEARCH_TYPE_ENUM_NONE 0x0 +#define cOCTVC1_CPP_UDP_SEARCH_TYPE_ENUM_SRCIPUDP 0x1 +#define cOCTVC1_CPP_UDP_SEARCH_TYPE_ENUM_SSRC 0x2 +#define cOCTVC1_CPP_UDP_SEARCH_TYPE_ENUM_SRCIPUDP_SSRC 0x3 + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_TCP_SEARCH_TYPE_ENUM : RX TCP connection types. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_CPP_TCP_SEARCH_TYPE_ENUM tOCT_UINT32 + +#define cOCTVC1_CPP_TCP_SEARCH_TYPE_ENUM_NONE 0x0 +#define cOCTVC1_CPP_TCP_SEARCH_TYPE_ENUM_SRCIPTCP 0x1 + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_TX_HDR_TYPE_ENUM : Tx Header Types. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_CPP_TX_HDR_TYPE_ENUM tOCT_UINT32 + +#define cOCTVC1_CPP_TX_HDR_TYPE_ENUM_ETHERNET 0x0 +#define cOCTVC1_CPP_TX_HDR_TYPE_ENUM_ETH_PQ 0x1 +#define cOCTVC1_CPP_TX_HDR_TYPE_ENUM_LLC 0x2 +#define cOCTVC1_CPP_TX_HDR_TYPE_ENUM_NLPID 0x3 +#define cOCTVC1_CPP_TX_HDR_TYPE_ENUM_SNAP 0x4 +#define cOCTVC1_CPP_TX_HDR_TYPE_ENUM_IPV4 0x5 +#define cOCTVC1_CPP_TX_HDR_TYPE_ENUM_UDP 0x6 +#define cOCTVC1_CPP_TX_HDR_TYPE_ENUM_RTP 0x7 +#define cOCTVC1_CPP_TX_HDR_TYPE_ENUM_IPV6 0x8 + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_ETHERTYPE_ENUM : Ethernet Encoding Types. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_CPP_ETHERTYPE_ENUM tOCT_UINT32 + +#define cOCTVC1_CPP_ETHERTYPE_ENUM_ETH_II 0x0 +#define cOCTVC1_CPP_ETHERTYPE_ENUM_IEEE_802_3 0x1 + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_DEST_REMOVE_MODE_ENUM : Remove destination modes. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_CPP_DEST_REMOVE_MODE_ENUM tOCT_UINT32 + +#define cOCTVC1_CPP_DEST_REMOVE_MODE_ENUM_SPECIFIC 0x0 +#define cOCTVC1_CPP_DEST_REMOVE_MODE_ENUM_ALL 0x1 +#define cOCTVC1_CPP_DEST_REMOVE_MODE_ENUM_SPECIFIC_PORT 0x2 +#define cOCTVC1_CPP_DEST_REMOVE_MODE_ENUM_SPECIFIC_DEST_OBJ 0x3 + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_DEST_INFO_ENUM : Destination info modes. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_CPP_DEST_INFO_ENUM tOCT_UINT32 + +#define cOCTVC1_CPP_DEST_INFO_ENUM_OBJ_FIRST 0x0 +#define cOCTVC1_CPP_DEST_INFO_ENUM_OBJ_NEXT 0x1 + +/*------------------------------------------------------------------------------------- + Maximum number of Destination Entry returned in a Destination Info + response. +-------------------------------------------------------------------------------------*/ + +#define cOCTVC1_CPP_MAX_DEST_ENTRY 4 + +/*------------------------------------------------------------------------------------- + Maximum number of Ethernet Route Entries allocated in a ETH_ROUTE_INFO_RSP. +-------------------------------------------------------------------------------------*/ + +#define cOCTVC1_CPP_MAX_ETH_ROUTE_ENTRY 10 + +/*------------------------------------------------------------------------------------- + CPP API configuration default values +-------------------------------------------------------------------------------------*/ + +#define cOCTVC1_CPP_DEFAULT_ADDITIONAL_OBJECT_DEST_POOL 0 +#define cOCTVC1_CPP_DEFAULT_MAX_FORWARD 256 +#define cOCTVC1_CPP_DEFAULT_IP_FRAGMENT_ID_MASK 0x0 +#define cOCTVC1_CPP_DEFAULT_IP_FRAGMENT_ID_MATCH 0x0 +#define cOCTVC1_CPP_DEFAULT_MAX_NON_ETHERNET_BANDWIDTH 0 +#define cOCTVC1_CPP_DEFAULT_MAX_NON_UDP_BANDWIDTH 0 +#define cOCTVC1_CPP_DEFAULT_MAX_RTP_CONNECTION 800 +#define cOCTVC1_CPP_DEFAULT_MAX_TCP_CONNECTION 8 +#define cOCTVC1_CPP_DEFAULT_MAX_UDP_CONNECTION 8 + +/*------------------------------------------------------------------------------------- + CPP API Object Type. +-------------------------------------------------------------------------------------*/ + +#define cOCTVC1_CPP_OBJ_TYPE_FORWARD (0x0001|cOCTVC1_HANDLE_BASE_OBJ_TYPE_CPP) +#define cOCTVC1_CPP_OBJ_TYPE_RX_UDP_PORT (0x0002|cOCTVC1_HANDLE_BASE_OBJ_TYPE_CPP) +#define cOCTVC1_CPP_OBJ_TYPE_TX_UDP_CNCT (0x0003|cOCTVC1_HANDLE_BASE_OBJ_TYPE_CPP) +#define cOCTVC1_CPP_OBJ_TYPE_RX_IP_PORT (0x0004|cOCTVC1_HANDLE_BASE_OBJ_TYPE_CPP) +#define cOCTVC1_CPP_OBJ_TYPE_RX_TCP_PORT (0x0005|cOCTVC1_HANDLE_BASE_OBJ_TYPE_CPP) +#define cOCTVC1_CPP_OBJ_TYPE_INTERNAL_FORWARD (0x0006|cOCTVC1_HANDLE_BASE_OBJ_TYPE_CPP) + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_CONFIG_STATIC + + Members: + ulMaxDestination + ulMaxRxUdpPort + ulMaxRxUdpCnct + ulMaxTxUdpCnct + ulMaxRxRtpPort + ulMaxRxRtpCnct + ulMaxTxRtpCnct + ulMaxRxTcpPort + ulMaxRxTcpCnct + ulMaxRxIpPort + ulMaxForwardObj + ulIpFragmentIdMask + ulIpFragmentIdMatch + ulMaxNonEthernetBandwidth + ulMaxNonUdpBandwidth +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCT_UINT32 ulMaxDestination; + tOCT_UINT32 ulMaxRxUdpPort; + tOCT_UINT32 ulMaxRxUdpCnct; + tOCT_UINT32 ulMaxTxUdpCnct; + tOCT_UINT32 ulMaxRxRtpPort; + tOCT_UINT32 ulMaxRxRtpCnct; + tOCT_UINT32 ulMaxTxRtpCnct; + tOCT_UINT32 ulMaxRxTcpPort; + tOCT_UINT32 ulMaxRxTcpCnct; + tOCT_UINT32 ulMaxRxIpPort; + tOCT_UINT32 ulMaxForwardObj; + tOCT_UINT32 ulIpFragmentIdMask; + tOCT_UINT32 ulIpFragmentIdMatch; + tOCT_UINT32 ulMaxNonEthernetBandwidth; + tOCT_UINT32 ulMaxNonUdpBandwidth; + +} tOCTVC1_CPP_CONFIG_STATIC; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_RX_RTP_PROFILE_ENTRY + + Members: + ulPacketEncodeType + Packet encoding type + ulRtpPayloadType + RTP payload type + ulPktPortIndex + Index of the associated packet port +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVOCNET_PKT_D_TYPE_ENUM ulPacketEncodeType; + tOCT_UINT32 ulRtpPayloadType; + tOCT_UINT32 ulPktPortIndex; + +} tOCTVC1_CPP_RX_RTP_PROFILE_ENTRY; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_TX_RTP_PROFILE_ENTRY + + Members: + ulPacketEncodeType + Packet encoding type + ulRtpPayloadType + RTP payload type +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVOCNET_PKT_D_TYPE_ENUM ulPacketEncodeType; + tOCT_UINT32 ulRtpPayloadType; + +} tOCTVC1_CPP_TX_RTP_PROFILE_ENTRY; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_DEST_ENTRY + + Members: + hCppObj + CPP SVP Source Object handle + ulCppObjPort + CPP SVP Source packet port to bind. + hDestObj + Destination Object handle + ulDestObjPort + Destination packet port to bind. + ulDestObjFifoId + Destination object FIFO ID. + DestMacAddress + Mac Address of the Vocallo port of the destination object + BridgeMacAddress + Mac Address that must be used to create the Packet Bridging Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_HANDLE hCppObj; + tOCT_UINT32 ulCppObjPort; + tOCTVC1_HANDLE hDestObj; + tOCT_UINT32 ulDestObjPort; + tOCT_UINT32 ulDestObjFifoId; + tOCTVC1_MAC_ADDRESS DestMacAddress; + tOCTVC1_MAC_ADDRESS BridgeMacAddress; + +} tOCTVC1_CPP_DEST_ENTRY; + +/*------------------------------------------------------------------------------------- + Header structures +-------------------------------------------------------------------------------------*/ +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_TX_HDR_COMMON + + Members: + ulHeaderType + ulHeaderLength +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_CPP_TX_HDR_TYPE_ENUM ulHeaderType; + tOCT_UINT32 ulHeaderLength; + +} tOCTVC1_CPP_TX_HDR_COMMON; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_TX_HDR_ETHERNET + + Members: + CommonHeader + ulEthertypeEncoding + ulEthertype + SourceMacAddr + DestinationMacAddr +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_CPP_TX_HDR_COMMON CommonHeader; + tOCTVC1_CPP_ETHERTYPE_ENUM ulEthertypeEncoding; + tOCT_UINT32 ulEthertype; + tOCTVC1_MAC_ADDRESS SourceMacAddr; + tOCTVC1_MAC_ADDRESS DestinationMacAddr; + +} tOCTVC1_CPP_TX_HDR_ETHERNET; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_TX_HDR_ETH_PQ + + Members: + CommonHeader + ulEthertypeEncoding + ulEthertype + ulTci + SourceMacAddr + DestinationMacAddr +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_CPP_TX_HDR_COMMON CommonHeader; + tOCTVC1_CPP_ETHERTYPE_ENUM ulEthertypeEncoding; + tOCT_UINT32 ulEthertype; + tOCT_UINT32 ulTci; + tOCTVC1_MAC_ADDRESS SourceMacAddr; + tOCTVC1_MAC_ADDRESS DestinationMacAddr; + +} tOCTVC1_CPP_TX_HDR_ETH_PQ; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_TX_HDR_LLC + + Members: + CommonHeader + ulLlcValue +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_CPP_TX_HDR_COMMON CommonHeader; + tOCT_UINT32 ulLlcValue; + +} tOCTVC1_CPP_TX_HDR_LLC; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_TX_HDR_NLPID + + Members: + CommonHeader + ulNlpidValue +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_CPP_TX_HDR_COMMON CommonHeader; + tOCT_UINT32 ulNlpidValue; + +} tOCTVC1_CPP_TX_HDR_NLPID; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_TX_HDR_SNAP + + Members: + CommonHeader + ulOuiValue + ulPidValue +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_CPP_TX_HDR_COMMON CommonHeader; + tOCT_UINT32 ulOuiValue; + tOCT_UINT32 ulPidValue; + +} tOCTVC1_CPP_TX_HDR_SNAP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_TX_HDR_IPV4 + + Members: + CommonHeader + ulTypeOfService + ulTimeToLive + ulProtocol + ulFlags + ulSourceAddr + ulDestinationAddr + ulUdpChecksumAddr + ulOptionsLength + aulOptions +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_CPP_TX_HDR_COMMON CommonHeader; + tOCT_UINT32 ulTypeOfService; + tOCT_UINT32 ulTimeToLive; + tOCT_UINT32 ulProtocol; + tOCT_UINT32 ulFlags; + tOCT_UINT32 ulSourceAddr; + tOCT_UINT32 ulDestinationAddr; + tOCT_UINT32 ulUdpChecksumAddr; + tOCT_UINT32 ulOptionsLength; + tOCT_UINT32 aulOptions[1];/* NOSWAPMAC */ + +} tOCTVC1_CPP_TX_HDR_IPV4; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_TX_HDR_IPV6 + + Members: + CommonHeader + ulTrafficClass + ulFlowLabel + ulHopLimit + aulSourceAddr + aulDestinationAddr + aulUdpChecksumAddr + ulNextHeader +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_CPP_TX_HDR_COMMON CommonHeader; + tOCT_UINT32 ulTrafficClass; + tOCT_UINT32 ulFlowLabel; + tOCT_UINT32 ulHopLimit; + tOCT_UINT32 aulSourceAddr[4]; + tOCT_UINT32 aulDestinationAddr[4]; + tOCT_UINT32 aulUdpChecksumAddr[4]; + tOCT_UINT32 ulNextHeader; + +} tOCTVC1_CPP_TX_HDR_IPV6; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_TX_HDR_UDP + + Members: + CommonHeader + ulSourcePort + ulDestinationPort +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_CPP_TX_HDR_COMMON CommonHeader; + tOCT_UINT32 ulSourcePort; + tOCT_UINT32 ulDestinationPort; + +} tOCTVC1_CPP_TX_HDR_UDP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_TX_HDR_RTP + + Members: + CommonHeader + ulNumContributingSources + ulSynchronizationSource + ulExtensionFlag + ulExtensionType + ulExtensionLength + aulCsrcs + aulExtensions +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_CPP_TX_HDR_COMMON CommonHeader; + tOCT_UINT32 ulNumContributingSources; + tOCT_UINT32 ulSynchronizationSource; + tOCT_BOOL32 ulExtensionFlag; + tOCT_UINT32 ulExtensionType; + tOCT_UINT32 ulExtensionLength; + tOCT_UINT32 aulCsrcs[15]; + tOCT_UINT32 aulExtensions[1];/* NOSWAPMAC */ + +} tOCTVC1_CPP_TX_HDR_RTP; + +/***************************** METHODS *************************************/ +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_CMD + + Members: + Header + OCTVC1 Message Header + ulResetStatsFlag + Reset the statistics +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_BOOL32 ulResetStatsFlag; + +} tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP + + Members: + Header + OCTVC1 Message Header + ulControlRxPktCnt + ulDataRxPktCnt + ulControlBadHdrLenCnt + ulDataBadHdrLenCnt + ulInvalidPktFormatCnt + ulNoFwdPktCnt + ulCppCmdOverflowCnt + ulTxPktQueueOverflowFlag + ulTxPktQueueOverflowFifoPoolId + ulTxPktQueueOverflowFifoIndex + ulRxFifoResynchFlag + ulRxFifoResynchFifoPoolId + ulRxFifoResynchFifoIndex +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 ulControlRxPktCnt; + tOCT_UINT32 ulDataRxPktCnt; + tOCT_UINT32 ulControlBadHdrLenCnt; + tOCT_UINT32 ulDataBadHdrLenCnt; + tOCT_UINT32 ulInvalidPktFormatCnt; + tOCT_UINT32 ulNoFwdPktCnt; + tOCT_UINT32 ulCppCmdOverflowCnt; + tOCT_BOOL32 ulTxPktQueueOverflowFlag; + tOCT_UINT32 ulTxPktQueueOverflowFifoPoolId; + tOCT_UINT32 ulTxPktQueueOverflowFifoIndex; + tOCT_BOOL32 ulRxFifoResynchFlag; + tOCT_UINT32 ulRxFifoResynchFifoPoolId; + tOCT_UINT32 ulRxFifoResynchFifoIndex; + +} tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_MSG_MODULE_STATS_ETH_CMD + + Members: + Header + OCTVC1 Message Header + ulEthPort +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_ETH_PORT_ID_ENUM ulEthPort; + +} tOCTVC1_CPP_MSG_MODULE_STATS_ETH_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP + + Members: + Header + OCTVC1 Message Header + ulEthPort + ulEthRxPktCnt + ulEthTxPktCnt + ulEthRxByteCnt + ulEthTxByteCnt + ulEthBadHdrCnt + ulEthBadHdrLenCnt + ulEth8023BadLlcOuiCnt + ulRxFifoReSyncCnt + ulTxPktQueueOverflowCnt +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_ETH_PORT_ID_ENUM ulEthPort; + tOCT_UINT32 ulEthRxPktCnt; + tOCT_UINT32 ulEthTxPktCnt; + tOCT_UINT32 ulEthRxByteCnt; + tOCT_UINT32 ulEthTxByteCnt; + tOCT_UINT32 ulEthBadHdrCnt; + tOCT_UINT32 ulEthBadHdrLenCnt; + tOCT_UINT32 ulEth8023BadLlcOuiCnt; + tOCT_UINT32 ulRxFifoReSyncCnt; + tOCT_UINT32 ulTxPktQueueOverflowCnt; + +} tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_MSG_MODULE_GET_CONFIG_CMD + + Members: + Header + OCTVC1 Message Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + +} tOCTVC1_CPP_MSG_MODULE_GET_CONFIG_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_MSG_MODULE_GET_CONFIG_RSP + + Members: + Header + OCTVC1 Message Header + Static +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CPP_CONFIG_STATIC Static; + +} tOCTVC1_CPP_MSG_MODULE_GET_CONFIG_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_MSG_FORWARD_OPEN_CMD + + Members: + Header + OCTVC1 Message Header + hDestObj + Destination Object handle + ulDestObjPort + Destination packet port to bind. + ulDestObjFifoId + Default: cOCTVC1_FIFO_ID_INVALID + Destination object FIFO ID. + DestMacAddress + Mac Address of the Vocallo port of the destination object + SrcMacAddress + Mac Address of the Vocallo port of the source object, only effective if + the destination Mac Address is not equal to 0 +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hDestObj; + tOCT_UINT32 ulDestObjPort; + tOCT_UINT32 ulDestObjFifoId; + tOCTVC1_MAC_ADDRESS DestMacAddress; + tOCTVC1_MAC_ADDRESS SrcMacAddress; + +} tOCTVC1_CPP_MSG_FORWARD_OPEN_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_MSG_FORWARD_OPEN_RSP + + Members: + Header + OCTVC1 Message Header + hForward + Forward Object Handle + ulFifoId + Fifo ID used to reach the Forward object. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hForward; + tOCT_UINT32 ulFifoId; + +} tOCTVC1_CPP_MSG_FORWARD_OPEN_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_MSG_FORWARD_CLOSE_CMD + + Members: + Header + OCTVC1 Message Header + hForward + Forward Object Handle +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hForward; + +} tOCTVC1_CPP_MSG_FORWARD_CLOSE_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_MSG_FORWARD_CLOSE_RSP + + Members: + Header + OCTVC1 Message Header + hForward + Forward Object Handle +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hForward; + +} tOCTVC1_CPP_MSG_FORWARD_CLOSE_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_MSG_FORWARD_STATS_CMD + + Members: + Header + OCTVC1 Message Header + ObjectGet + Generic object get structure. + ulResetStatsFlag + Reset the statistics +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_GET ObjectGet; + tOCT_BOOL32 ulResetStatsFlag; + +} tOCTVC1_CPP_MSG_FORWARD_STATS_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_MSG_FORWARD_STATS_RSP + + Members: + Header + OCTVC1 Message Header + ObjectGet + Generic object get structure. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_GET ObjectGet; + +} tOCTVC1_CPP_MSG_FORWARD_STATS_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_MSG_FORWARD_INFO_CMD + + Members: + Header + OCTVC1 Message Header + ObjectGet + Generic object get structure. + ulGetType + Default: cOCTVC1_CPP_DEST_INFO_ENUM_OBJ_FIRST + hDestObj + Destination Object handle of the entry to search from. Must be specified only + when ulGetType is set to cOCTVC1_CPP_DEST_INFO_ENUM_OBJ_NEXT. + ulDestObjPort + Destination packet port of the entry to search from. Must be specified only + when ulGetType is set to cOCTVC1_CPP_DEST_INFO_ENUM_OBJ_NEXT. + ulDestObjFifoId + Default: cOCTVC1_FIFO_ID_INVALID + Destination object FIFO ID of the entry to search from. Must be specified only + when ulGetType is set to cOCTVC1_CPP_DEST_INFO_ENUM_OBJ_NEXT. + DestMacAddress + Mac Address of the Vocallo port of the entry's destination object to search + from. Must be specified only when ulGetType is set to + cOCTVC1_CPP_DEST_INFO_ENUM_OBJ_NEXT. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_GET ObjectGet; + tOCTVC1_CPP_DEST_INFO_ENUM ulGetType; + tOCTVC1_HANDLE hDestObj; + tOCT_UINT32 ulDestObjPort; + tOCT_UINT32 ulDestObjFifoId; + tOCTVC1_MAC_ADDRESS DestMacAddress; + +} tOCTVC1_CPP_MSG_FORWARD_INFO_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_MSG_FORWARD_INFO_RSP + + Members: + Header + OCTVC1 Message Header + ObjectGet + Generic object get structure. + ulFifoId + FifoId ID used to send packet to this object. + ulMoreFlag + If TRUE, there are more destination entries matching the queried info. To + retrieve them, the command can be used with ulGetType parameter set to + cOCTVC1_CPP_DEST_INFO_ENUM_OBJ_NEXT and with valid destination information. + ulNumDestEntry + Number of valid destination entries stored in the array aDestEntry. + aDestEntry + Array of destination entries. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_GET ObjectGet; + tOCT_UINT32 ulFifoId; + tOCT_BOOL32 ulMoreFlag; + tOCT_UINT32 ulNumDestEntry; + tOCTVC1_CPP_DEST_ENTRY aDestEntry[cOCTVC1_CPP_MAX_DEST_ENTRY]; + +} tOCTVC1_CPP_MSG_FORWARD_INFO_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD + + Members: + Header + OCTVC1 Message Header + hCppObj + CPP SVP Source Object handle + ulCppObjPort + CPP SVP Source packet port to bind. + hDestObj + Destination Object handle + ulDestObjPort + Destination packet port to bind. + ulDestObjFifoId + Default: cOCTVC1_FIFO_ID_INVALID + Destination object FIFO ID. + DestMacAddress + Mac Address of the Vocallo port of the destination object + SrcMacAddress + Mac Address of the Vocallo port of the source object, only effective if + the destination Mac Address is not equal to 0 + BridgeMacAddress + Mac Address that must be used to create the Packet Bridging Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hCppObj; + tOCT_UINT32 ulCppObjPort; + tOCTVC1_HANDLE hDestObj; + tOCT_UINT32 ulDestObjPort; + tOCT_UINT32 ulDestObjFifoId; + tOCTVC1_MAC_ADDRESS DestMacAddress; + tOCTVC1_MAC_ADDRESS SrcMacAddress; + tOCTVC1_MAC_ADDRESS BridgeMacAddress; + +} tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_MSG_MODULE_ADD_DEST_RSP + + Members: + Header + OCTVC1 Message Header + hCppObj + CPP SVP Source Object handle +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hCppObj; + +} tOCTVC1_CPP_MSG_MODULE_ADD_DEST_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD + + Members: + Header + OCTVC1 Message Header + ulRemoveMode + Default: cOCTVC1_CPP_DEST_REMOVE_MODE_ENUM_SPECIFIC + Remove method that is requested. + hCppObj + CPP SVP Source Object handle + ulCppObjPort + CPP SVP Source packet port to bind. + hDestObj + Destination Object handle + ulDestObjPort + Destination packet port to bind. + ulDestObjFifoId + Default: cOCTVC1_FIFO_ID_INVALID + Destination object FIFO ID. + DestMacAddress + Mac Address of the Vocallo port of the destination object +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CPP_DEST_REMOVE_MODE_ENUM ulRemoveMode; + tOCTVC1_HANDLE hCppObj; + tOCT_UINT32 ulCppObjPort; + tOCTVC1_HANDLE hDestObj; + tOCT_UINT32 ulDestObjPort; + tOCT_UINT32 ulDestObjFifoId; + tOCTVC1_MAC_ADDRESS DestMacAddress; + +} tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_RSP + + Members: + Header + OCTVC1 Message Header + ulNumDestRemoved + Number of destination removed. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 ulNumDestRemoved; + +} tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD + + Members: + Header + OCTVC1 Message Header + ulGetType + Default: cOCTVC1_CPP_DEST_INFO_ENUM_OBJ_FIRST + hCppObj + CPP SVP Source Object handle + ulCppObjPort + CPP SVP Source packet port to bind. + hDestObj + Destination Object handle + ulDestObjPort + Destination packet port to bind. + ulDestObjFifoId + Default: cOCTVC1_FIFO_ID_INVALID + Destination object FIFO ID. + DestMacAddress + Mac Address of the Vocallo port of the destination object +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CPP_DEST_INFO_ENUM ulGetType; + tOCTVC1_HANDLE hCppObj; + tOCT_UINT32 ulCppObjPort; + tOCTVC1_HANDLE hDestObj; + tOCT_UINT32 ulDestObjPort; + tOCT_UINT32 ulDestObjFifoId; + tOCTVC1_MAC_ADDRESS DestMacAddress; + +} tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP + + Members: + Header + OCTVC1 Message Header + ulMoreFlag + If TRUE, there are more binding matching the queried info + ulNumDestEntry + Number of valid bindings stored in the binding array aBindings. + aDestEntry + Array of destination bind entries. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_BOOL32 ulMoreFlag; + tOCT_UINT32 ulNumDestEntry; + tOCTVC1_CPP_DEST_ENTRY aDestEntry[cOCTVC1_CPP_MAX_DEST_ENTRY]; + +} tOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP; + + +/*************** INCLUDE FILES WITH DEPENDENCIES ON THIS FILE **************/ + +#ifdef cDO_PRAGMA_PACK_POP +#pragma pack( pop ) +#endif /* cDO_PRAGMA_PACK_POP */ +#undef cDO_PRAGMA_PACK_POP + +#endif /* __OCTVC1_CPP_API_H__ */ + diff --git a/software/include/vocallo/cpp/octvc1_cpp_api_swap.h b/software/include/vocallo/cpp/octvc1_cpp_api_swap.h new file mode 100644 index 0000000..b2cbfb9 --- /dev/null +++ b/software/include/vocallo/cpp/octvc1_cpp_api_swap.h @@ -0,0 +1,551 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* + +File: octvc1_cpp_api_swap.h + +$Octasic_Copyright: $ + +Description: + +$Octasic_Confidentiality: $ + +$Octasic_Release: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#ifndef __OCTVC1_CPP_API_SWAP_H__ +#define __OCTVC1_CPP_API_SWAP_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************** INCLUDE FILES *******************************/ +#include "../octvc1_swap_hdrs.h" +#include "octvc1_cpp_api.h" + +/********************************* MACROS **********************************/ + + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CPP_CONFIG_STATIC_SWAP( _f_pParms ){ tOCTVC1_CPP_CONFIG_STATIC * pOCTVC1_CPP_CONFIG_STATIC = (_f_pParms); \ + ((tOCTVC1_CPP_CONFIG_STATIC *)pOCTVC1_CPP_CONFIG_STATIC)->ulMaxDestination = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_CONFIG_STATIC *)pOCTVC1_CPP_CONFIG_STATIC)->ulMaxDestination); \ + ((tOCTVC1_CPP_CONFIG_STATIC *)pOCTVC1_CPP_CONFIG_STATIC)->ulMaxRxUdpPort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_CONFIG_STATIC *)pOCTVC1_CPP_CONFIG_STATIC)->ulMaxRxUdpPort); \ + ((tOCTVC1_CPP_CONFIG_STATIC *)pOCTVC1_CPP_CONFIG_STATIC)->ulMaxRxUdpCnct = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_CONFIG_STATIC *)pOCTVC1_CPP_CONFIG_STATIC)->ulMaxRxUdpCnct); \ + ((tOCTVC1_CPP_CONFIG_STATIC *)pOCTVC1_CPP_CONFIG_STATIC)->ulMaxTxUdpCnct = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_CONFIG_STATIC *)pOCTVC1_CPP_CONFIG_STATIC)->ulMaxTxUdpCnct); \ + ((tOCTVC1_CPP_CONFIG_STATIC *)pOCTVC1_CPP_CONFIG_STATIC)->ulMaxRxRtpPort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_CONFIG_STATIC *)pOCTVC1_CPP_CONFIG_STATIC)->ulMaxRxRtpPort); \ + ((tOCTVC1_CPP_CONFIG_STATIC *)pOCTVC1_CPP_CONFIG_STATIC)->ulMaxRxRtpCnct = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_CONFIG_STATIC *)pOCTVC1_CPP_CONFIG_STATIC)->ulMaxRxRtpCnct); \ + ((tOCTVC1_CPP_CONFIG_STATIC *)pOCTVC1_CPP_CONFIG_STATIC)->ulMaxTxRtpCnct = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_CONFIG_STATIC *)pOCTVC1_CPP_CONFIG_STATIC)->ulMaxTxRtpCnct); \ + ((tOCTVC1_CPP_CONFIG_STATIC *)pOCTVC1_CPP_CONFIG_STATIC)->ulMaxRxTcpPort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_CONFIG_STATIC *)pOCTVC1_CPP_CONFIG_STATIC)->ulMaxRxTcpPort); \ + ((tOCTVC1_CPP_CONFIG_STATIC *)pOCTVC1_CPP_CONFIG_STATIC)->ulMaxRxTcpCnct = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_CONFIG_STATIC *)pOCTVC1_CPP_CONFIG_STATIC)->ulMaxRxTcpCnct); \ + ((tOCTVC1_CPP_CONFIG_STATIC *)pOCTVC1_CPP_CONFIG_STATIC)->ulMaxRxIpPort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_CONFIG_STATIC *)pOCTVC1_CPP_CONFIG_STATIC)->ulMaxRxIpPort); \ + ((tOCTVC1_CPP_CONFIG_STATIC *)pOCTVC1_CPP_CONFIG_STATIC)->ulMaxForwardObj = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_CONFIG_STATIC *)pOCTVC1_CPP_CONFIG_STATIC)->ulMaxForwardObj); \ + ((tOCTVC1_CPP_CONFIG_STATIC *)pOCTVC1_CPP_CONFIG_STATIC)->ulIpFragmentIdMask = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_CONFIG_STATIC *)pOCTVC1_CPP_CONFIG_STATIC)->ulIpFragmentIdMask); \ + ((tOCTVC1_CPP_CONFIG_STATIC *)pOCTVC1_CPP_CONFIG_STATIC)->ulIpFragmentIdMatch = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_CONFIG_STATIC *)pOCTVC1_CPP_CONFIG_STATIC)->ulIpFragmentIdMatch); \ + ((tOCTVC1_CPP_CONFIG_STATIC *)pOCTVC1_CPP_CONFIG_STATIC)->ulMaxNonEthernetBandwidth = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_CONFIG_STATIC *)pOCTVC1_CPP_CONFIG_STATIC)->ulMaxNonEthernetBandwidth); \ + ((tOCTVC1_CPP_CONFIG_STATIC *)pOCTVC1_CPP_CONFIG_STATIC)->ulMaxNonUdpBandwidth = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_CONFIG_STATIC *)pOCTVC1_CPP_CONFIG_STATIC)->ulMaxNonUdpBandwidth); \ +} +#else +#define mOCTVC1_CPP_CONFIG_STATIC_SWAP( pOCTVC1_CPP_CONFIG_STATIC ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CPP_RX_RTP_PROFILE_ENTRY_SWAP( _f_pParms ){ tOCTVC1_CPP_RX_RTP_PROFILE_ENTRY * pOCTVC1_CPP_RX_RTP_PROFILE_ENTRY = (_f_pParms); \ + ((tOCTVC1_CPP_RX_RTP_PROFILE_ENTRY *)pOCTVC1_CPP_RX_RTP_PROFILE_ENTRY)->ulPacketEncodeType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_RX_RTP_PROFILE_ENTRY *)pOCTVC1_CPP_RX_RTP_PROFILE_ENTRY)->ulPacketEncodeType); \ + ((tOCTVC1_CPP_RX_RTP_PROFILE_ENTRY *)pOCTVC1_CPP_RX_RTP_PROFILE_ENTRY)->ulRtpPayloadType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_RX_RTP_PROFILE_ENTRY *)pOCTVC1_CPP_RX_RTP_PROFILE_ENTRY)->ulRtpPayloadType); \ + ((tOCTVC1_CPP_RX_RTP_PROFILE_ENTRY *)pOCTVC1_CPP_RX_RTP_PROFILE_ENTRY)->ulPktPortIndex = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_RX_RTP_PROFILE_ENTRY *)pOCTVC1_CPP_RX_RTP_PROFILE_ENTRY)->ulPktPortIndex); \ +} +#else +#define mOCTVC1_CPP_RX_RTP_PROFILE_ENTRY_SWAP( pOCTVC1_CPP_RX_RTP_PROFILE_ENTRY ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CPP_TX_RTP_PROFILE_ENTRY_SWAP( _f_pParms ){ tOCTVC1_CPP_TX_RTP_PROFILE_ENTRY * pOCTVC1_CPP_TX_RTP_PROFILE_ENTRY = (_f_pParms); \ + ((tOCTVC1_CPP_TX_RTP_PROFILE_ENTRY *)pOCTVC1_CPP_TX_RTP_PROFILE_ENTRY)->ulPacketEncodeType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_RTP_PROFILE_ENTRY *)pOCTVC1_CPP_TX_RTP_PROFILE_ENTRY)->ulPacketEncodeType); \ + ((tOCTVC1_CPP_TX_RTP_PROFILE_ENTRY *)pOCTVC1_CPP_TX_RTP_PROFILE_ENTRY)->ulRtpPayloadType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_RTP_PROFILE_ENTRY *)pOCTVC1_CPP_TX_RTP_PROFILE_ENTRY)->ulRtpPayloadType); \ +} +#else +#define mOCTVC1_CPP_TX_RTP_PROFILE_ENTRY_SWAP( pOCTVC1_CPP_TX_RTP_PROFILE_ENTRY ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CPP_DEST_ENTRY_SWAP( _f_pParms ){ tOCTVC1_CPP_DEST_ENTRY * pOCTVC1_CPP_DEST_ENTRY = (_f_pParms); \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_CPP_DEST_ENTRY *)pOCTVC1_CPP_DEST_ENTRY)->hCppObj ); } \ + ((tOCTVC1_CPP_DEST_ENTRY *)pOCTVC1_CPP_DEST_ENTRY)->ulCppObjPort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_DEST_ENTRY *)pOCTVC1_CPP_DEST_ENTRY)->ulCppObjPort); \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_CPP_DEST_ENTRY *)pOCTVC1_CPP_DEST_ENTRY)->hDestObj ); } \ + ((tOCTVC1_CPP_DEST_ENTRY *)pOCTVC1_CPP_DEST_ENTRY)->ulDestObjPort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_DEST_ENTRY *)pOCTVC1_CPP_DEST_ENTRY)->ulDestObjPort); \ + ((tOCTVC1_CPP_DEST_ENTRY *)pOCTVC1_CPP_DEST_ENTRY)->ulDestObjFifoId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_DEST_ENTRY *)pOCTVC1_CPP_DEST_ENTRY)->ulDestObjFifoId); \ +} +#else +#define mOCTVC1_CPP_DEST_ENTRY_SWAP( pOCTVC1_CPP_DEST_ENTRY ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CPP_TX_HDR_COMMON_SWAP( _f_pParms ){ tOCTVC1_CPP_TX_HDR_COMMON * pOCTVC1_CPP_TX_HDR_COMMON = (_f_pParms); \ + ((tOCTVC1_CPP_TX_HDR_COMMON *)pOCTVC1_CPP_TX_HDR_COMMON)->ulHeaderType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_HDR_COMMON *)pOCTVC1_CPP_TX_HDR_COMMON)->ulHeaderType); \ + ((tOCTVC1_CPP_TX_HDR_COMMON *)pOCTVC1_CPP_TX_HDR_COMMON)->ulHeaderLength = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_HDR_COMMON *)pOCTVC1_CPP_TX_HDR_COMMON)->ulHeaderLength); \ +} +#else +#define mOCTVC1_CPP_TX_HDR_COMMON_SWAP( pOCTVC1_CPP_TX_HDR_COMMON ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CPP_TX_HDR_ETHERNET_SWAP( _f_pParms ){ tOCTVC1_CPP_TX_HDR_ETHERNET * pOCTVC1_CPP_TX_HDR_ETHERNET = (_f_pParms); \ + { mOCTVC1_CPP_TX_HDR_COMMON_SWAP( &((tOCTVC1_CPP_TX_HDR_ETHERNET *)pOCTVC1_CPP_TX_HDR_ETHERNET)->CommonHeader ); } \ + ((tOCTVC1_CPP_TX_HDR_ETHERNET *)pOCTVC1_CPP_TX_HDR_ETHERNET)->ulEthertypeEncoding = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_HDR_ETHERNET *)pOCTVC1_CPP_TX_HDR_ETHERNET)->ulEthertypeEncoding); \ + ((tOCTVC1_CPP_TX_HDR_ETHERNET *)pOCTVC1_CPP_TX_HDR_ETHERNET)->ulEthertype = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_HDR_ETHERNET *)pOCTVC1_CPP_TX_HDR_ETHERNET)->ulEthertype); \ +} +#else +#define mOCTVC1_CPP_TX_HDR_ETHERNET_SWAP( pOCTVC1_CPP_TX_HDR_ETHERNET ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CPP_TX_HDR_ETH_PQ_SWAP( _f_pParms ){ tOCTVC1_CPP_TX_HDR_ETH_PQ * pOCTVC1_CPP_TX_HDR_ETH_PQ = (_f_pParms); \ + { mOCTVC1_CPP_TX_HDR_COMMON_SWAP( &((tOCTVC1_CPP_TX_HDR_ETH_PQ *)pOCTVC1_CPP_TX_HDR_ETH_PQ)->CommonHeader ); } \ + ((tOCTVC1_CPP_TX_HDR_ETH_PQ *)pOCTVC1_CPP_TX_HDR_ETH_PQ)->ulEthertypeEncoding = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_HDR_ETH_PQ *)pOCTVC1_CPP_TX_HDR_ETH_PQ)->ulEthertypeEncoding); \ + ((tOCTVC1_CPP_TX_HDR_ETH_PQ *)pOCTVC1_CPP_TX_HDR_ETH_PQ)->ulEthertype = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_HDR_ETH_PQ *)pOCTVC1_CPP_TX_HDR_ETH_PQ)->ulEthertype); \ + ((tOCTVC1_CPP_TX_HDR_ETH_PQ *)pOCTVC1_CPP_TX_HDR_ETH_PQ)->ulTci = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_HDR_ETH_PQ *)pOCTVC1_CPP_TX_HDR_ETH_PQ)->ulTci); \ +} +#else +#define mOCTVC1_CPP_TX_HDR_ETH_PQ_SWAP( pOCTVC1_CPP_TX_HDR_ETH_PQ ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CPP_TX_HDR_LLC_SWAP( _f_pParms ){ tOCTVC1_CPP_TX_HDR_LLC * pOCTVC1_CPP_TX_HDR_LLC = (_f_pParms); \ + { mOCTVC1_CPP_TX_HDR_COMMON_SWAP( &((tOCTVC1_CPP_TX_HDR_LLC *)pOCTVC1_CPP_TX_HDR_LLC)->CommonHeader ); } \ + ((tOCTVC1_CPP_TX_HDR_LLC *)pOCTVC1_CPP_TX_HDR_LLC)->ulLlcValue = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_HDR_LLC *)pOCTVC1_CPP_TX_HDR_LLC)->ulLlcValue); \ +} +#else +#define mOCTVC1_CPP_TX_HDR_LLC_SWAP( pOCTVC1_CPP_TX_HDR_LLC ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CPP_TX_HDR_NLPID_SWAP( _f_pParms ){ tOCTVC1_CPP_TX_HDR_NLPID * pOCTVC1_CPP_TX_HDR_NLPID = (_f_pParms); \ + { mOCTVC1_CPP_TX_HDR_COMMON_SWAP( &((tOCTVC1_CPP_TX_HDR_NLPID *)pOCTVC1_CPP_TX_HDR_NLPID)->CommonHeader ); } \ + ((tOCTVC1_CPP_TX_HDR_NLPID *)pOCTVC1_CPP_TX_HDR_NLPID)->ulNlpidValue = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_HDR_NLPID *)pOCTVC1_CPP_TX_HDR_NLPID)->ulNlpidValue); \ +} +#else +#define mOCTVC1_CPP_TX_HDR_NLPID_SWAP( pOCTVC1_CPP_TX_HDR_NLPID ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CPP_TX_HDR_SNAP_SWAP( _f_pParms ){ tOCTVC1_CPP_TX_HDR_SNAP * pOCTVC1_CPP_TX_HDR_SNAP = (_f_pParms); \ + { mOCTVC1_CPP_TX_HDR_COMMON_SWAP( &((tOCTVC1_CPP_TX_HDR_SNAP *)pOCTVC1_CPP_TX_HDR_SNAP)->CommonHeader ); } \ + ((tOCTVC1_CPP_TX_HDR_SNAP *)pOCTVC1_CPP_TX_HDR_SNAP)->ulOuiValue = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_HDR_SNAP *)pOCTVC1_CPP_TX_HDR_SNAP)->ulOuiValue); \ + ((tOCTVC1_CPP_TX_HDR_SNAP *)pOCTVC1_CPP_TX_HDR_SNAP)->ulPidValue = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_HDR_SNAP *)pOCTVC1_CPP_TX_HDR_SNAP)->ulPidValue); \ +} +#else +#define mOCTVC1_CPP_TX_HDR_SNAP_SWAP( pOCTVC1_CPP_TX_HDR_SNAP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CPP_TX_HDR_IPV4_SWAP( _f_pParms ){ tOCTVC1_CPP_TX_HDR_IPV4 * pOCTVC1_CPP_TX_HDR_IPV4 = (_f_pParms); \ + { mOCTVC1_CPP_TX_HDR_COMMON_SWAP( &((tOCTVC1_CPP_TX_HDR_IPV4 *)pOCTVC1_CPP_TX_HDR_IPV4)->CommonHeader ); } \ + ((tOCTVC1_CPP_TX_HDR_IPV4 *)pOCTVC1_CPP_TX_HDR_IPV4)->ulTypeOfService = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_HDR_IPV4 *)pOCTVC1_CPP_TX_HDR_IPV4)->ulTypeOfService); \ + ((tOCTVC1_CPP_TX_HDR_IPV4 *)pOCTVC1_CPP_TX_HDR_IPV4)->ulTimeToLive = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_HDR_IPV4 *)pOCTVC1_CPP_TX_HDR_IPV4)->ulTimeToLive); \ + ((tOCTVC1_CPP_TX_HDR_IPV4 *)pOCTVC1_CPP_TX_HDR_IPV4)->ulProtocol = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_HDR_IPV4 *)pOCTVC1_CPP_TX_HDR_IPV4)->ulProtocol); \ + ((tOCTVC1_CPP_TX_HDR_IPV4 *)pOCTVC1_CPP_TX_HDR_IPV4)->ulFlags = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_HDR_IPV4 *)pOCTVC1_CPP_TX_HDR_IPV4)->ulFlags); \ + ((tOCTVC1_CPP_TX_HDR_IPV4 *)pOCTVC1_CPP_TX_HDR_IPV4)->ulSourceAddr = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_HDR_IPV4 *)pOCTVC1_CPP_TX_HDR_IPV4)->ulSourceAddr); \ + ((tOCTVC1_CPP_TX_HDR_IPV4 *)pOCTVC1_CPP_TX_HDR_IPV4)->ulDestinationAddr = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_HDR_IPV4 *)pOCTVC1_CPP_TX_HDR_IPV4)->ulDestinationAddr); \ + ((tOCTVC1_CPP_TX_HDR_IPV4 *)pOCTVC1_CPP_TX_HDR_IPV4)->ulUdpChecksumAddr = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_HDR_IPV4 *)pOCTVC1_CPP_TX_HDR_IPV4)->ulUdpChecksumAddr); \ + ((tOCTVC1_CPP_TX_HDR_IPV4 *)pOCTVC1_CPP_TX_HDR_IPV4)->ulOptionsLength = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_HDR_IPV4 *)pOCTVC1_CPP_TX_HDR_IPV4)->ulOptionsLength); \ +} +#else +#define mOCTVC1_CPP_TX_HDR_IPV4_SWAP( pOCTVC1_CPP_TX_HDR_IPV4 ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CPP_TX_HDR_IPV6_SWAP( _f_pParms ){ tOCTVC1_CPP_TX_HDR_IPV6 * pOCTVC1_CPP_TX_HDR_IPV6 = (_f_pParms); \ + { mOCTVC1_CPP_TX_HDR_COMMON_SWAP( &((tOCTVC1_CPP_TX_HDR_IPV6 *)pOCTVC1_CPP_TX_HDR_IPV6)->CommonHeader ); } \ + ((tOCTVC1_CPP_TX_HDR_IPV6 *)pOCTVC1_CPP_TX_HDR_IPV6)->ulTrafficClass = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_HDR_IPV6 *)pOCTVC1_CPP_TX_HDR_IPV6)->ulTrafficClass); \ + ((tOCTVC1_CPP_TX_HDR_IPV6 *)pOCTVC1_CPP_TX_HDR_IPV6)->ulFlowLabel = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_HDR_IPV6 *)pOCTVC1_CPP_TX_HDR_IPV6)->ulFlowLabel); \ + ((tOCTVC1_CPP_TX_HDR_IPV6 *)pOCTVC1_CPP_TX_HDR_IPV6)->ulHopLimit = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_HDR_IPV6 *)pOCTVC1_CPP_TX_HDR_IPV6)->ulHopLimit); \ + { tOCT_UINT32 iOCTVC1_CPP_TX_HDR_IPV6; \ + for( iOCTVC1_CPP_TX_HDR_IPV6=0; \ + iOCTVC1_CPP_TX_HDR_IPV6<(4);iOCTVC1_CPP_TX_HDR_IPV6++ ) \ + ((tOCTVC1_CPP_TX_HDR_IPV6 *)pOCTVC1_CPP_TX_HDR_IPV6)->aulSourceAddr[iOCTVC1_CPP_TX_HDR_IPV6] = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_HDR_IPV6 *)pOCTVC1_CPP_TX_HDR_IPV6)->aulSourceAddr[iOCTVC1_CPP_TX_HDR_IPV6]);}\ + { tOCT_UINT32 iOCTVC1_CPP_TX_HDR_IPV6; \ + for( iOCTVC1_CPP_TX_HDR_IPV6=0; \ + iOCTVC1_CPP_TX_HDR_IPV6<(4);iOCTVC1_CPP_TX_HDR_IPV6++ ) \ + ((tOCTVC1_CPP_TX_HDR_IPV6 *)pOCTVC1_CPP_TX_HDR_IPV6)->aulDestinationAddr[iOCTVC1_CPP_TX_HDR_IPV6] = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_HDR_IPV6 *)pOCTVC1_CPP_TX_HDR_IPV6)->aulDestinationAddr[iOCTVC1_CPP_TX_HDR_IPV6]);}\ + { tOCT_UINT32 iOCTVC1_CPP_TX_HDR_IPV6; \ + for( iOCTVC1_CPP_TX_HDR_IPV6=0; \ + iOCTVC1_CPP_TX_HDR_IPV6<(4);iOCTVC1_CPP_TX_HDR_IPV6++ ) \ + ((tOCTVC1_CPP_TX_HDR_IPV6 *)pOCTVC1_CPP_TX_HDR_IPV6)->aulUdpChecksumAddr[iOCTVC1_CPP_TX_HDR_IPV6] = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_HDR_IPV6 *)pOCTVC1_CPP_TX_HDR_IPV6)->aulUdpChecksumAddr[iOCTVC1_CPP_TX_HDR_IPV6]);}\ + ((tOCTVC1_CPP_TX_HDR_IPV6 *)pOCTVC1_CPP_TX_HDR_IPV6)->ulNextHeader = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_HDR_IPV6 *)pOCTVC1_CPP_TX_HDR_IPV6)->ulNextHeader); \ +} +#else +#define mOCTVC1_CPP_TX_HDR_IPV6_SWAP( pOCTVC1_CPP_TX_HDR_IPV6 ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CPP_TX_HDR_UDP_SWAP( _f_pParms ){ tOCTVC1_CPP_TX_HDR_UDP * pOCTVC1_CPP_TX_HDR_UDP = (_f_pParms); \ + { mOCTVC1_CPP_TX_HDR_COMMON_SWAP( &((tOCTVC1_CPP_TX_HDR_UDP *)pOCTVC1_CPP_TX_HDR_UDP)->CommonHeader ); } \ + ((tOCTVC1_CPP_TX_HDR_UDP *)pOCTVC1_CPP_TX_HDR_UDP)->ulSourcePort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_HDR_UDP *)pOCTVC1_CPP_TX_HDR_UDP)->ulSourcePort); \ + ((tOCTVC1_CPP_TX_HDR_UDP *)pOCTVC1_CPP_TX_HDR_UDP)->ulDestinationPort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_HDR_UDP *)pOCTVC1_CPP_TX_HDR_UDP)->ulDestinationPort); \ +} +#else +#define mOCTVC1_CPP_TX_HDR_UDP_SWAP( pOCTVC1_CPP_TX_HDR_UDP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CPP_TX_HDR_RTP_SWAP( _f_pParms ){ tOCTVC1_CPP_TX_HDR_RTP * pOCTVC1_CPP_TX_HDR_RTP = (_f_pParms); \ + { mOCTVC1_CPP_TX_HDR_COMMON_SWAP( &((tOCTVC1_CPP_TX_HDR_RTP *)pOCTVC1_CPP_TX_HDR_RTP)->CommonHeader ); } \ + ((tOCTVC1_CPP_TX_HDR_RTP *)pOCTVC1_CPP_TX_HDR_RTP)->ulNumContributingSources = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_HDR_RTP *)pOCTVC1_CPP_TX_HDR_RTP)->ulNumContributingSources); \ + ((tOCTVC1_CPP_TX_HDR_RTP *)pOCTVC1_CPP_TX_HDR_RTP)->ulSynchronizationSource = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_HDR_RTP *)pOCTVC1_CPP_TX_HDR_RTP)->ulSynchronizationSource); \ + ((tOCTVC1_CPP_TX_HDR_RTP *)pOCTVC1_CPP_TX_HDR_RTP)->ulExtensionFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_HDR_RTP *)pOCTVC1_CPP_TX_HDR_RTP)->ulExtensionFlag); \ + ((tOCTVC1_CPP_TX_HDR_RTP *)pOCTVC1_CPP_TX_HDR_RTP)->ulExtensionType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_HDR_RTP *)pOCTVC1_CPP_TX_HDR_RTP)->ulExtensionType); \ + ((tOCTVC1_CPP_TX_HDR_RTP *)pOCTVC1_CPP_TX_HDR_RTP)->ulExtensionLength = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_HDR_RTP *)pOCTVC1_CPP_TX_HDR_RTP)->ulExtensionLength); \ + { tOCT_UINT32 iOCTVC1_CPP_TX_HDR_RTP; \ + for( iOCTVC1_CPP_TX_HDR_RTP=0; \ + iOCTVC1_CPP_TX_HDR_RTP<(15);iOCTVC1_CPP_TX_HDR_RTP++ ) \ + ((tOCTVC1_CPP_TX_HDR_RTP *)pOCTVC1_CPP_TX_HDR_RTP)->aulCsrcs[iOCTVC1_CPP_TX_HDR_RTP] = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_TX_HDR_RTP *)pOCTVC1_CPP_TX_HDR_RTP)->aulCsrcs[iOCTVC1_CPP_TX_HDR_RTP]);}\ +} +#else +#define mOCTVC1_CPP_TX_HDR_RTP_SWAP( pOCTVC1_CPP_TX_HDR_RTP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_CMD_SWAP( _f_pParms ){ tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_CMD * pOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_CMD *)pOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_CMD)->Header ); } \ + ((tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_CMD *)pOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_CMD)->ulResetStatsFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_CMD *)pOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_CMD)->ulResetStatsFlag); \ +} +#else +#define mOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_CMD_SWAP( pOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP_SWAP( _f_pParms ){ tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP * pOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP)->Header ); } \ + ((tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP)->ulControlRxPktCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP)->ulControlRxPktCnt); \ + ((tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP)->ulDataRxPktCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP)->ulDataRxPktCnt); \ + ((tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP)->ulControlBadHdrLenCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP)->ulControlBadHdrLenCnt); \ + ((tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP)->ulDataBadHdrLenCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP)->ulDataBadHdrLenCnt); \ + ((tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP)->ulInvalidPktFormatCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP)->ulInvalidPktFormatCnt); \ + ((tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP)->ulNoFwdPktCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP)->ulNoFwdPktCnt); \ + ((tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP)->ulCppCmdOverflowCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP)->ulCppCmdOverflowCnt); \ + ((tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP)->ulTxPktQueueOverflowFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP)->ulTxPktQueueOverflowFlag); \ + ((tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP)->ulTxPktQueueOverflowFifoPoolId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP)->ulTxPktQueueOverflowFifoPoolId); \ + ((tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP)->ulTxPktQueueOverflowFifoIndex = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP)->ulTxPktQueueOverflowFifoIndex); \ + ((tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP)->ulRxFifoResynchFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP)->ulRxFifoResynchFlag); \ + ((tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP)->ulRxFifoResynchFifoPoolId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP)->ulRxFifoResynchFifoPoolId); \ + ((tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP)->ulRxFifoResynchFifoIndex = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP)->ulRxFifoResynchFifoIndex); \ +} +#else +#define mOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP_SWAP( pOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CPP_MSG_MODULE_STATS_ETH_CMD_SWAP( _f_pParms ){ tOCTVC1_CPP_MSG_MODULE_STATS_ETH_CMD * pOCTVC1_CPP_MSG_MODULE_STATS_ETH_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_CPP_MSG_MODULE_STATS_ETH_CMD *)pOCTVC1_CPP_MSG_MODULE_STATS_ETH_CMD)->Header ); } \ + ((tOCTVC1_CPP_MSG_MODULE_STATS_ETH_CMD *)pOCTVC1_CPP_MSG_MODULE_STATS_ETH_CMD)->ulEthPort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_STATS_ETH_CMD *)pOCTVC1_CPP_MSG_MODULE_STATS_ETH_CMD)->ulEthPort); \ +} +#else +#define mOCTVC1_CPP_MSG_MODULE_STATS_ETH_CMD_SWAP( pOCTVC1_CPP_MSG_MODULE_STATS_ETH_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP_SWAP( _f_pParms ){ tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP * pOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP)->Header ); } \ + ((tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP)->ulEthPort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP)->ulEthPort); \ + ((tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP)->ulEthRxPktCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP)->ulEthRxPktCnt); \ + ((tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP)->ulEthTxPktCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP)->ulEthTxPktCnt); \ + ((tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP)->ulEthRxByteCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP)->ulEthRxByteCnt); \ + ((tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP)->ulEthTxByteCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP)->ulEthTxByteCnt); \ + ((tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP)->ulEthBadHdrCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP)->ulEthBadHdrCnt); \ + ((tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP)->ulEthBadHdrLenCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP)->ulEthBadHdrLenCnt); \ + ((tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP)->ulEth8023BadLlcOuiCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP)->ulEth8023BadLlcOuiCnt); \ + ((tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP)->ulRxFifoReSyncCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP)->ulRxFifoReSyncCnt); \ + ((tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP)->ulTxPktQueueOverflowCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP *)pOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP)->ulTxPktQueueOverflowCnt); \ +} +#else +#define mOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP_SWAP( pOCTVC1_CPP_MSG_MODULE_STATS_ETH_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CPP_MSG_MODULE_GET_CONFIG_CMD_SWAP( _f_pParms ){ tOCTVC1_CPP_MSG_MODULE_GET_CONFIG_CMD * pOCTVC1_CPP_MSG_MODULE_GET_CONFIG_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_CPP_MSG_MODULE_GET_CONFIG_CMD *)pOCTVC1_CPP_MSG_MODULE_GET_CONFIG_CMD)->Header ); } \ +} +#else +#define mOCTVC1_CPP_MSG_MODULE_GET_CONFIG_CMD_SWAP( pOCTVC1_CPP_MSG_MODULE_GET_CONFIG_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CPP_MSG_MODULE_GET_CONFIG_RSP_SWAP( _f_pParms ){ tOCTVC1_CPP_MSG_MODULE_GET_CONFIG_RSP * pOCTVC1_CPP_MSG_MODULE_GET_CONFIG_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_CPP_MSG_MODULE_GET_CONFIG_RSP *)pOCTVC1_CPP_MSG_MODULE_GET_CONFIG_RSP)->Header ); } \ + { mOCTVC1_CPP_CONFIG_STATIC_SWAP( &((tOCTVC1_CPP_MSG_MODULE_GET_CONFIG_RSP *)pOCTVC1_CPP_MSG_MODULE_GET_CONFIG_RSP)->Static ); } \ +} +#else +#define mOCTVC1_CPP_MSG_MODULE_GET_CONFIG_RSP_SWAP( pOCTVC1_CPP_MSG_MODULE_GET_CONFIG_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CPP_MSG_FORWARD_OPEN_CMD_SWAP( _f_pParms ){ tOCTVC1_CPP_MSG_FORWARD_OPEN_CMD * pOCTVC1_CPP_MSG_FORWARD_OPEN_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_CPP_MSG_FORWARD_OPEN_CMD *)pOCTVC1_CPP_MSG_FORWARD_OPEN_CMD)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_CPP_MSG_FORWARD_OPEN_CMD *)pOCTVC1_CPP_MSG_FORWARD_OPEN_CMD)->hDestObj ); } \ + ((tOCTVC1_CPP_MSG_FORWARD_OPEN_CMD *)pOCTVC1_CPP_MSG_FORWARD_OPEN_CMD)->ulDestObjPort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_FORWARD_OPEN_CMD *)pOCTVC1_CPP_MSG_FORWARD_OPEN_CMD)->ulDestObjPort); \ + ((tOCTVC1_CPP_MSG_FORWARD_OPEN_CMD *)pOCTVC1_CPP_MSG_FORWARD_OPEN_CMD)->ulDestObjFifoId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_FORWARD_OPEN_CMD *)pOCTVC1_CPP_MSG_FORWARD_OPEN_CMD)->ulDestObjFifoId); \ +} +#else +#define mOCTVC1_CPP_MSG_FORWARD_OPEN_CMD_SWAP( pOCTVC1_CPP_MSG_FORWARD_OPEN_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CPP_MSG_FORWARD_OPEN_RSP_SWAP( _f_pParms ){ tOCTVC1_CPP_MSG_FORWARD_OPEN_RSP * pOCTVC1_CPP_MSG_FORWARD_OPEN_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_CPP_MSG_FORWARD_OPEN_RSP *)pOCTVC1_CPP_MSG_FORWARD_OPEN_RSP)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_CPP_MSG_FORWARD_OPEN_RSP *)pOCTVC1_CPP_MSG_FORWARD_OPEN_RSP)->hForward ); } \ + ((tOCTVC1_CPP_MSG_FORWARD_OPEN_RSP *)pOCTVC1_CPP_MSG_FORWARD_OPEN_RSP)->ulFifoId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_FORWARD_OPEN_RSP *)pOCTVC1_CPP_MSG_FORWARD_OPEN_RSP)->ulFifoId); \ +} +#else +#define mOCTVC1_CPP_MSG_FORWARD_OPEN_RSP_SWAP( pOCTVC1_CPP_MSG_FORWARD_OPEN_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CPP_MSG_FORWARD_CLOSE_CMD_SWAP( _f_pParms ){ tOCTVC1_CPP_MSG_FORWARD_CLOSE_CMD * pOCTVC1_CPP_MSG_FORWARD_CLOSE_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_CPP_MSG_FORWARD_CLOSE_CMD *)pOCTVC1_CPP_MSG_FORWARD_CLOSE_CMD)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_CPP_MSG_FORWARD_CLOSE_CMD *)pOCTVC1_CPP_MSG_FORWARD_CLOSE_CMD)->hForward ); } \ +} +#else +#define mOCTVC1_CPP_MSG_FORWARD_CLOSE_CMD_SWAP( pOCTVC1_CPP_MSG_FORWARD_CLOSE_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CPP_MSG_FORWARD_CLOSE_RSP_SWAP( _f_pParms ){ tOCTVC1_CPP_MSG_FORWARD_CLOSE_RSP * pOCTVC1_CPP_MSG_FORWARD_CLOSE_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_CPP_MSG_FORWARD_CLOSE_RSP *)pOCTVC1_CPP_MSG_FORWARD_CLOSE_RSP)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_CPP_MSG_FORWARD_CLOSE_RSP *)pOCTVC1_CPP_MSG_FORWARD_CLOSE_RSP)->hForward ); } \ +} +#else +#define mOCTVC1_CPP_MSG_FORWARD_CLOSE_RSP_SWAP( pOCTVC1_CPP_MSG_FORWARD_CLOSE_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CPP_MSG_FORWARD_STATS_CMD_SWAP( _f_pParms ){ tOCTVC1_CPP_MSG_FORWARD_STATS_CMD * pOCTVC1_CPP_MSG_FORWARD_STATS_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_CPP_MSG_FORWARD_STATS_CMD *)pOCTVC1_CPP_MSG_FORWARD_STATS_CMD)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_GET_SWAP( &((tOCTVC1_CPP_MSG_FORWARD_STATS_CMD *)pOCTVC1_CPP_MSG_FORWARD_STATS_CMD)->ObjectGet ); } \ + ((tOCTVC1_CPP_MSG_FORWARD_STATS_CMD *)pOCTVC1_CPP_MSG_FORWARD_STATS_CMD)->ulResetStatsFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_FORWARD_STATS_CMD *)pOCTVC1_CPP_MSG_FORWARD_STATS_CMD)->ulResetStatsFlag); \ +} +#else +#define mOCTVC1_CPP_MSG_FORWARD_STATS_CMD_SWAP( pOCTVC1_CPP_MSG_FORWARD_STATS_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CPP_MSG_FORWARD_STATS_RSP_SWAP( _f_pParms ){ tOCTVC1_CPP_MSG_FORWARD_STATS_RSP * pOCTVC1_CPP_MSG_FORWARD_STATS_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_CPP_MSG_FORWARD_STATS_RSP *)pOCTVC1_CPP_MSG_FORWARD_STATS_RSP)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_GET_SWAP( &((tOCTVC1_CPP_MSG_FORWARD_STATS_RSP *)pOCTVC1_CPP_MSG_FORWARD_STATS_RSP)->ObjectGet ); } \ +} +#else +#define mOCTVC1_CPP_MSG_FORWARD_STATS_RSP_SWAP( pOCTVC1_CPP_MSG_FORWARD_STATS_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CPP_MSG_FORWARD_INFO_CMD_SWAP( _f_pParms ){ tOCTVC1_CPP_MSG_FORWARD_INFO_CMD * pOCTVC1_CPP_MSG_FORWARD_INFO_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_CPP_MSG_FORWARD_INFO_CMD *)pOCTVC1_CPP_MSG_FORWARD_INFO_CMD)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_GET_SWAP( &((tOCTVC1_CPP_MSG_FORWARD_INFO_CMD *)pOCTVC1_CPP_MSG_FORWARD_INFO_CMD)->ObjectGet ); } \ + ((tOCTVC1_CPP_MSG_FORWARD_INFO_CMD *)pOCTVC1_CPP_MSG_FORWARD_INFO_CMD)->ulGetType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_FORWARD_INFO_CMD *)pOCTVC1_CPP_MSG_FORWARD_INFO_CMD)->ulGetType); \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_CPP_MSG_FORWARD_INFO_CMD *)pOCTVC1_CPP_MSG_FORWARD_INFO_CMD)->hDestObj ); } \ + ((tOCTVC1_CPP_MSG_FORWARD_INFO_CMD *)pOCTVC1_CPP_MSG_FORWARD_INFO_CMD)->ulDestObjPort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_FORWARD_INFO_CMD *)pOCTVC1_CPP_MSG_FORWARD_INFO_CMD)->ulDestObjPort); \ + ((tOCTVC1_CPP_MSG_FORWARD_INFO_CMD *)pOCTVC1_CPP_MSG_FORWARD_INFO_CMD)->ulDestObjFifoId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_FORWARD_INFO_CMD *)pOCTVC1_CPP_MSG_FORWARD_INFO_CMD)->ulDestObjFifoId); \ +} +#else +#define mOCTVC1_CPP_MSG_FORWARD_INFO_CMD_SWAP( pOCTVC1_CPP_MSG_FORWARD_INFO_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CPP_MSG_FORWARD_INFO_RSP_SWAP( _f_pParms ){ tOCTVC1_CPP_MSG_FORWARD_INFO_RSP * pOCTVC1_CPP_MSG_FORWARD_INFO_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_CPP_MSG_FORWARD_INFO_RSP *)pOCTVC1_CPP_MSG_FORWARD_INFO_RSP)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_GET_SWAP( &((tOCTVC1_CPP_MSG_FORWARD_INFO_RSP *)pOCTVC1_CPP_MSG_FORWARD_INFO_RSP)->ObjectGet ); } \ + ((tOCTVC1_CPP_MSG_FORWARD_INFO_RSP *)pOCTVC1_CPP_MSG_FORWARD_INFO_RSP)->ulFifoId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_FORWARD_INFO_RSP *)pOCTVC1_CPP_MSG_FORWARD_INFO_RSP)->ulFifoId); \ + ((tOCTVC1_CPP_MSG_FORWARD_INFO_RSP *)pOCTVC1_CPP_MSG_FORWARD_INFO_RSP)->ulMoreFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_FORWARD_INFO_RSP *)pOCTVC1_CPP_MSG_FORWARD_INFO_RSP)->ulMoreFlag); \ + ((tOCTVC1_CPP_MSG_FORWARD_INFO_RSP *)pOCTVC1_CPP_MSG_FORWARD_INFO_RSP)->ulNumDestEntry = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_FORWARD_INFO_RSP *)pOCTVC1_CPP_MSG_FORWARD_INFO_RSP)->ulNumDestEntry); \ + { tOCT_UINT32 jOCTVC1_CPP_MSG_FORWARD_INFO_RSP; \ + for( jOCTVC1_CPP_MSG_FORWARD_INFO_RSP=0; \ + jOCTVC1_CPP_MSG_FORWARD_INFO_RSP<(cOCTVC1_CPP_MAX_DEST_ENTRY);jOCTVC1_CPP_MSG_FORWARD_INFO_RSP++ ) \ + { mOCTVC1_CPP_DEST_ENTRY_SWAP( &((tOCTVC1_CPP_MSG_FORWARD_INFO_RSP *)pOCTVC1_CPP_MSG_FORWARD_INFO_RSP)->aDestEntry[jOCTVC1_CPP_MSG_FORWARD_INFO_RSP] ); }} \ +} +#else +#define mOCTVC1_CPP_MSG_FORWARD_INFO_RSP_SWAP( pOCTVC1_CPP_MSG_FORWARD_INFO_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD_SWAP( _f_pParms ){ tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD * pOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD *)pOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD *)pOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD)->hCppObj ); } \ + ((tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD *)pOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD)->ulCppObjPort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD *)pOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD)->ulCppObjPort); \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD *)pOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD)->hDestObj ); } \ + ((tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD *)pOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD)->ulDestObjPort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD *)pOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD)->ulDestObjPort); \ + ((tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD *)pOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD)->ulDestObjFifoId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD *)pOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD)->ulDestObjFifoId); \ +} +#else +#define mOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD_SWAP( pOCTVC1_CPP_MSG_MODULE_ADD_DEST_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CPP_MSG_MODULE_ADD_DEST_RSP_SWAP( _f_pParms ){ tOCTVC1_CPP_MSG_MODULE_ADD_DEST_RSP * pOCTVC1_CPP_MSG_MODULE_ADD_DEST_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_CPP_MSG_MODULE_ADD_DEST_RSP *)pOCTVC1_CPP_MSG_MODULE_ADD_DEST_RSP)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_CPP_MSG_MODULE_ADD_DEST_RSP *)pOCTVC1_CPP_MSG_MODULE_ADD_DEST_RSP)->hCppObj ); } \ +} +#else +#define mOCTVC1_CPP_MSG_MODULE_ADD_DEST_RSP_SWAP( pOCTVC1_CPP_MSG_MODULE_ADD_DEST_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD_SWAP( _f_pParms ){ tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD * pOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD *)pOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD)->Header ); } \ + ((tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD *)pOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD)->ulRemoveMode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD *)pOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD)->ulRemoveMode); \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD *)pOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD)->hCppObj ); } \ + ((tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD *)pOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD)->ulCppObjPort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD *)pOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD)->ulCppObjPort); \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD *)pOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD)->hDestObj ); } \ + ((tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD *)pOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD)->ulDestObjPort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD *)pOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD)->ulDestObjPort); \ + ((tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD *)pOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD)->ulDestObjFifoId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD *)pOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD)->ulDestObjFifoId); \ +} +#else +#define mOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD_SWAP( pOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_RSP_SWAP( _f_pParms ){ tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_RSP * pOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_RSP *)pOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_RSP)->Header ); } \ + ((tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_RSP *)pOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_RSP)->ulNumDestRemoved = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_RSP *)pOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_RSP)->ulNumDestRemoved); \ +} +#else +#define mOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_RSP_SWAP( pOCTVC1_CPP_MSG_MODULE_REMOVE_DEST_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD_SWAP( _f_pParms ){ tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD * pOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD *)pOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD)->Header ); } \ + ((tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD *)pOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD)->ulGetType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD *)pOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD)->ulGetType); \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD *)pOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD)->hCppObj ); } \ + ((tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD *)pOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD)->ulCppObjPort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD *)pOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD)->ulCppObjPort); \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD *)pOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD)->hDestObj ); } \ + ((tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD *)pOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD)->ulDestObjPort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD *)pOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD)->ulDestObjPort); \ + ((tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD *)pOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD)->ulDestObjFifoId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD *)pOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD)->ulDestObjFifoId); \ +} +#else +#define mOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD_SWAP( pOCTVC1_CPP_MSG_MODULE_INFO_DEST_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP_SWAP( _f_pParms ){ tOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP * pOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP *)pOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP)->Header ); } \ + ((tOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP *)pOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP)->ulMoreFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP *)pOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP)->ulMoreFlag); \ + ((tOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP *)pOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP)->ulNumDestEntry = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP *)pOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP)->ulNumDestEntry); \ + { tOCT_UINT32 jOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP; \ + for( jOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP=0; \ + jOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP<(cOCTVC1_CPP_MAX_DEST_ENTRY);jOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP++ ) \ + { mOCTVC1_CPP_DEST_ENTRY_SWAP( &((tOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP *)pOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP)->aDestEntry[jOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP] ); }} \ +} +#else +#define mOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP_SWAP( pOCTVC1_CPP_MSG_MODULE_INFO_DEST_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#ifdef __cplusplus +} + +#endif + +#endif /* __OCTVC1_CPP_API_SWAP_H__ */ diff --git a/software/include/vocallo/cpp/octvc1_cpp_default.h b/software/include/vocallo/cpp/octvc1_cpp_default.h new file mode 100644 index 0000000..c0e5635 --- /dev/null +++ b/software/include/vocallo/cpp/octvc1_cpp_default.h @@ -0,0 +1,541 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_CPP_DEFAULT.h + +$Octasic_Copyright: $ + +Description: Contains the event definition of the CPP API. + +$Octasic_Confidentiality: $ + +$Octasic_Release: $ + +$Octasic_Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_CPP_DEFAULT_H__ +#define __OCTVC1_CPP_DEFAULT_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "octvc1_cpp_api.h" + +/***************************** COMMAND DEFAULT *****************************/ + +/*-------------------------------------------------------------------------- + tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_CMD +----------------------------------------------------------------------------*/ +#ifdef OCTVC1_OPT_DECLARE_DEFAULTS + +const tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_CMD buf_tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_CMD = +{ + { /* Header */ + ((sizeof(tOCTVC1_CPP_MSG_MODULE_STATS_GLOBAL_CMD)<. + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_CTRL_API_H__ +#define __OCTVC1_CTRL_API_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "../../octdev_types.h" +#include "../octvc1_msg.h" +#include "../octvc1_handle.h" + +#include "octvc1_ctrl_id.h" + +/************************ COMMON DEFINITIONS *******************************/ + +/***************************** SUPERVISORY *************************************/ +/*------------------------------------------------------------------------------------- + tOCTVC1_CTRL_MSG_MODULE_REJECT_SPV + OCTVC1 Reject Supervisory Command + + Members: + Header + VocalloNet and API header. + ulExpectedTransactionId + Transaction ID expected for this session. + ulRejectedCmdId + Command ID of the command rejected. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 ulExpectedTransactionId; + tOCT_UINT32 ulRejectedCmdId; + +} tOCTVC1_CTRL_MSG_MODULE_REJECT_SPV; + + +/*************** INCLUDE FILES WITH DEPENDENCIES ON THIS FILE **************/ + +#ifdef cDO_PRAGMA_PACK_POP +#pragma pack( pop ) +#endif /* cDO_PRAGMA_PACK_POP */ +#undef cDO_PRAGMA_PACK_POP + +#endif /* __OCTVC1_CTRL_API_H__ */ + diff --git a/software/include/vocallo/ctrl/octvc1_ctrl_api_swap.h b/software/include/vocallo/ctrl/octvc1_ctrl_api_swap.h new file mode 100644 index 0000000..ff6cd5b --- /dev/null +++ b/software/include/vocallo/ctrl/octvc1_ctrl_api_swap.h @@ -0,0 +1,45 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* + +File: octvc1_ctrl_api_swap.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#ifndef __OCTVC1_CTRL_API_SWAP_H__ +#define __OCTVC1_CTRL_API_SWAP_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************** INCLUDE FILES *******************************/ +#include "../octvc1_swap_hdrs.h" +#include "octvc1_ctrl_api.h" + +/********************************* MACROS **********************************/ + + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CTRL_MSG_MODULE_REJECT_SPV_SWAP( _f_pParms ){ tOCTVC1_CTRL_MSG_MODULE_REJECT_SPV * pOCTVC1_CTRL_MSG_MODULE_REJECT_SPV = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_CTRL_MSG_MODULE_REJECT_SPV *)pOCTVC1_CTRL_MSG_MODULE_REJECT_SPV)->Header ); } \ + ((tOCTVC1_CTRL_MSG_MODULE_REJECT_SPV *)pOCTVC1_CTRL_MSG_MODULE_REJECT_SPV)->ulExpectedTransactionId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CTRL_MSG_MODULE_REJECT_SPV *)pOCTVC1_CTRL_MSG_MODULE_REJECT_SPV)->ulExpectedTransactionId); \ + ((tOCTVC1_CTRL_MSG_MODULE_REJECT_SPV *)pOCTVC1_CTRL_MSG_MODULE_REJECT_SPV)->ulRejectedCmdId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CTRL_MSG_MODULE_REJECT_SPV *)pOCTVC1_CTRL_MSG_MODULE_REJECT_SPV)->ulRejectedCmdId); \ +} +#else +#define mOCTVC1_CTRL_MSG_MODULE_REJECT_SPV_SWAP( pOCTVC1_CTRL_MSG_MODULE_REJECT_SPV ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#ifdef __cplusplus +} + +#endif + +#endif /* __OCTVC1_CTRL_API_SWAP_H__ */ diff --git a/software/include/vocallo/ctrl/octvc1_ctrl_id.h b/software/include/vocallo/ctrl/octvc1_ctrl_id.h new file mode 100644 index 0000000..05a635b --- /dev/null +++ b/software/include/vocallo/ctrl/octvc1_ctrl_id.h @@ -0,0 +1,34 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_CTRL_ID.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: Contains the identifiers for the CTRL API. + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Octasic_Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_CTRL_ID_H__ +#define __OCTVC1_CTRL_ID_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "../octvc1_base.h" +#include "../octvc1_generic_rc.h" + +/**************************************************************************** + Supervisory IDs + ****************************************************************************/ +#define cOCTVC1_CTRL_MSG_MODULE_REJECT_SID ( 0x0001 + cOCTVC1_CTRL_SID_BASE ) + +#define cOCTVC1_CTRL_SID_MAX (( 0x0001 + 1 ) & 0xFFFF) + + +#endif /* __OCTVC1_CTRL_ID_H__ */ + diff --git a/software/include/vocallo/ctrl/octvc1_ctrl_version.h b/software/include/vocallo/ctrl/octvc1_ctrl_version.h new file mode 100644 index 0000000..b014ca5 --- /dev/null +++ b/software/include/vocallo/ctrl/octvc1_ctrl_version.h @@ -0,0 +1,39 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_CTRL_VERSION.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: Contains the version of the CTRL API interface. + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Octasic_Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_CTRL_VERSION_H__ +#define __OCTVC1_CTRL_VERSION_H__ + + +/* The version ID is separated into the following sections: + + bit[31:25]: Major version + bit[24:18]: Minor version + bit[17:11]: Bug fix version + bit[10:0]: Build number +*/ +#define cOCTVC1_CTRL_VERSION_MAJOR 1 +#define cOCTVC1_CTRL_VERSION_MINOR 11 +#define cOCTVC1_CTRL_VERSION_MAINTENANCE 0 +#define cOCTVC1_CTRL_VERSION_BUILD 0 + +#define cOCTVC1_CTRL_VERSION_ID ( (cOCTVC1_CTRL_VERSION_MAJOR << 25) + \ + (cOCTVC1_CTRL_VERSION_MINOR << 18) + \ + (cOCTVC1_CTRL_VERSION_MAINTENANCE << 11) + \ + cOCTVC1_CTRL_VERSION_BUILD ) + +#endif /* __OCTVC1_CTRL_VERSION_H__ */ + diff --git a/software/include/vocallo/gsm/octvc1_gsm_api.h b/software/include/vocallo/gsm/octvc1_gsm_api.h new file mode 100644 index 0000000..fb38c8a --- /dev/null +++ b/software/include/vocallo/gsm/octvc1_gsm_api.h @@ -0,0 +1,1327 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_GSM_API.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: Contains the definition of the GSM API. + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_GSM_API_H__ +#define __OCTVC1_GSM_API_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "../../octdev_types.h" +#include "../../octdev_devices.h" +#include "../octvc1_msg.h" +#include "../octvc1_handle.h" +#include "../octvc1_cursor.h" +#include "../octvc1_list.h" +#include "../octvc1_fifo.h" + +#include "octvc1_gsm_id.h" +#include "octvc1_gsm_rc.h" + +/************************ COMMON DEFINITIONS *******************************/ + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_tSUBCHANNEL_STATUS + + Members: + usActiveUplinkSAPIMapMSW + usActiveUplinkSAPIMapLSW + usActiveDownlinkSAPIMapMSW + usActiveDownlinkSAPIMapLSW +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCT_UINT16 usActiveUplinkSAPIMapMSW; + tOCT_UINT16 usActiveUplinkSAPIMapLSW; + tOCT_UINT16 usActiveDownlinkSAPIMapMSW; + tOCT_UINT16 usActiveDownlinkSAPIMapLSW; + +} tOCTVC1_GSM_tSUBCHANNEL_STATUS; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_tMEASUREMENT_INFO + + Members: + sRSSI + sSNR + sBurstTiming + usBERCount + usBERTOtalBitCOunt +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCT_INT16 sRSSI; + tOCT_INT16 sSNR; + tOCT_INT16 sBurstTiming; + tOCT_UINT16 usBERCount; + tOCT_UINT16 usBERTOtalBitCOunt; + +} tOCTVC1_GSM_tMEASUREMENT_INFO; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK : TRX_BAND +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK tOCT_UINT16 + +#define cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_TRX_ID_BIT0 ((tOCT_UINT16)(1<<15) ) +#define cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_TRX_ID_BIT1 ((tOCT_UINT16)(1<<14) ) +#define cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_TRX_ID_BIT2 ((tOCT_UINT16)(1<<13) ) +#define cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_TRX_ID_BIT3 ((tOCT_UINT16)(1<<12) ) +#define cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_TRX_ID_BIT4 ((tOCT_UINT16)(1<<11) ) +#define cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_TRX_ID_BIT5 ((tOCT_UINT16)(1<<10) ) +#define cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_BAND_BIT0 ((tOCT_UINT16)(1<<9) ) +#define cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_BAND_BIT1 ((tOCT_UINT16)(1<<8) ) +#define cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_BAND_BIT2 ((tOCT_UINT16)(1<<7) ) +#define cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_BAND_BIT3 ((tOCT_UINT16)(1<<6) ) +#define cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_HOPPING ((tOCT_UINT16)(1<<5) ) +#define cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_TSC_BIT0 ((tOCT_UINT16)(1<<4) ) +#define cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_TSC_BIT1 ((tOCT_UINT16)(1<<3) ) +#define cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_TSC_BIT2 ((tOCT_UINT16)(1<<2) ) +#define cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_TSC_BIT3 ((tOCT_UINT16)(1<<1) ) +#define cOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK_TSC_BIT4 ((tOCT_UINT16)(1<<0) ) + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_TIMESLOT_STATUS + + Members: + byChannelType + bySubchannelCount +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCT_UINT8 byChannelType; + tOCT_UINT8 bySubchannelCount; + +} tOCTVC1_GSM_TIMESLOT_STATUS; + +#define cOCTVC1_GSM_HOPPING_LIST_SIZE_WORD 64 /* This is the maximum number of entries in a hopping list */ +#define cOCTVC1_GSM_HARDWARE_INFO_RESPONSE_LENGTH 253 /* This is the maximum length of the string to be returned by a Hardware Info */ + /* Response message. */ +#define cOCTVC1_GSM_TRX_NUM_TIMESLOTS 8 /* This is the number of timeslots associated with a TRX. */ +#define cOCTVC1_GSM_TRX_NUM_SUBCHANNELS 16 /* This is the number of subchannels associated with a TRX timeslot. */ +#define cOCTVC1_GSM_cSDR_DATA_IND_MAX_DATA_SIZE_WORDS 234 /* This is the maximum number of words in the Data Indicator message's frame data. */ + /* NEEDS TO BE DEFINED PROPERLY */ +#define cOCTVC1_GSM_cSDR_RACH_IND_MAX_MESSAGE_LENGTH_WORDS 16 /* This is the maximum number of words in the Data Indicator message's frame data. */ + /* nEEDS TO BE DEFINED PROPERLY */ + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_SAPI_ENUM : Indicates the SAPI to use +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_GSM_SAPI_ENUM tOCT_UINT8 + +#define cOCTVC1_GSM_SAPI_ENUM_IDLE 0x00 +#define cOCTVC1_GSM_SAPI_ENUM_FCCH 0x01 +#define cOCTVC1_GSM_SAPI_ENUM_SCH 0x02 +#define cOCTVC1_GSM_SAPI_ENUM_SACCH 0x03 +#define cOCTVC1_GSM_SAPI_ENUM_SDCCH 0x04 +#define cOCTVC1_GSM_SAPI_ENUM_BCCH 0x05 +#define cOCTVC1_GSM_SAPI_ENUM_PCH_AGCH 0x07 +#define cOCTVC1_GSM_SAPI_ENUM_CBCH 0x08 +#define cOCTVC1_GSM_SAPI_ENUM_RACH 0x09 +#define cOCTVC1_GSM_SAPI_ENUM_TCHF 0x0a +#define cOCTVC1_GSM_SAPI_ENUM_FACCHF 0x0b +#define cOCTVC1_GSM_SAPI_ENUM_TCHH 0x0c +#define cOCTVC1_GSM_SAPI_ENUM_FACCHH 0x0D +#define cOCTVC1_GSM_SAPI_ENUM_NCH 0x0E +#define cOCTVC1_GSM_SAPI_ENUM_PDTCH 0x0F +#define cOCTVC1_GSM_SAPI_ENUM_PACCH 0x10 +#define cOCTVC1_GSM_SAPI_ENUM_PBCCH 0x11 +#define cOCTVC1_GSM_SAPI_ENUM_PAGCH 0x12 +#define cOCTVC1_GSM_SAPI_ENUM_PPCH 0x13 +#define cOCTVC1_GSM_SAPI_ENUM_PNCH 0x14 +#define cOCTVC1_GSM_SAPI_ENUM_PTCCH 0x15 +#define cOCTVC1_GSM_SAPI_ENUM_PRACH 0x16 + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_Channel_Type_ENUM : Indicates the Channel Type to use +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_GSM_Channel_Type_ENUM tOCT_UINT8 + +#define cOCTVC1_GSM_Channel_Type_ENUM_CCCH 0x01 +#define cOCTVC1_GSM_Channel_Type_ENUM_CCCH4 0x02 +#define cOCTVC1_GSM_Channel_Type_ENUM_SDCCH 0x03 +#define cOCTVC1_GSM_Channel_Type_ENUM_TCH_F 0x04 +#define cOCTVC1_GSM_Channel_Type_ENUM_TCH_H 0x05 +#define cOCTVC1_GSM_Channel_Type_ENUM_PDTCH 0x06 + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_CIPHERING_ENUM : Indicates the Ciphering to use +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_GSM_CIPHERING_ENUM tOCT_UINT8 + +#define cOCTVC1_GSM_CIPHERING_ENUM_A5_0 0x00 +#define cOCTVC1_GSM_CIPHERING_ENUM_A5_1 0x01 +#define cOCTVC1_GSM_CIPHERING_ENUM_A5_2 0x02 +#define cOCTVC1_GSM_CIPHERING_ENUM_A5_3 0x03 + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_LOGICAL_CHANNEL_ENUM : Indicates the Logical channel Combination to use +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_GSM_LOGICAL_CHANNEL_ENUM tOCT_UINT8 + +#define cOCTVC1_GSM_LOGICAL_CHANNEL_ENUM_EMPTY 0x00 +#define cOCTVC1_GSM_LOGICAL_CHANNEL_ENUM_TCHF 0x01 +#define cOCTVC1_GSM_LOGICAL_CHANNEL_ENUM_TCHH 0x02 +#define cOCTVC1_GSM_LOGICAL_CHANNEL_ENUM_FCCH_SCH_BCCH_CCCH 0x03 +#define cOCTVC1_GSM_LOGICAL_CHANNEL_ENUM_FCCH_SCH_BCCH_CCCH_SDCCH_SACCH 0x04 +#define cOCTVC1_GSM_LOGICAL_CHANNEL_ENUM_SDCCH_SACCH 0x05 +#define cOCTVC1_GSM_LOGICAL_CHANNEL_ENUM_PDTCH_PACCH_PTCCH 0x06 + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_AMR_CODEC_ENUM : Indicates the AMR CODEC to use +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_GSM_AMR_CODEC_ENUM tOCT_UINT8 + +#define cOCTVC1_GSM_AMR_CODEC_ENUM_RATE_4_75 0x00 +#define cOCTVC1_GSM_AMR_CODEC_ENUM_RATE_5_15 0x01 +#define cOCTVC1_GSM_AMR_CODEC_ENUM_RATE_5_90 0x02 +#define cOCTVC1_GSM_AMR_CODEC_ENUM_RATE_6_70 0x03 +#define cOCTVC1_GSM_AMR_CODEC_ENUM_RATE_7_40 0x04 +#define cOCTVC1_GSM_AMR_CODEC_ENUM_RATE_7_95 0x05 +#define cOCTVC1_GSM_AMR_CODEC_ENUM_RATE_10_2 0x07 +#define cOCTVC1_GSM_AMR_CODEC_ENUM_RATE_12_2 0x08 +#define cOCTVC1_GSM_AMR_CODEC_ENUM_RATE_Unset 0x0F + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_BURST_ENUM : Indicates the BURST to use +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_GSM_BURST_ENUM tOCT_UINT8 + +#define cOCTVC1_GSM_BURST_ENUM_Synchronization 0x00 +#define cOCTVC1_GSM_BURST_ENUM_Normal 0x01 +#define cOCTVC1_GSM_BURST_ENUM_Dummy 0x02 +#define cOCTVC1_GSM_BURST_ENUM_Normal_8PSK 0x03 +#define cOCTVC1_GSM_BURST_ENUM_Access_TSC0 0x04 +#define cOCTVC1_GSM_BURST_ENUM_Access_TSC1 0x05 +#define cOCTVC1_GSM_BURST_ENUM_Access_TSC2 0x06 +#define cOCTVC1_GSM_BURST_ENUM_Frequency_Correction 0x07 + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_DIR_ENUM : Indicates the Direction to use +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_GSM_DIR_ENUM tOCT_UINT8 + +#define cOCTVC1_GSM_DIR_ENUM_NO_PATH 0x00 +#define cOCTVC1_GSM_DIR_ENUM_RX_MS_BTS 0x01 +#define cOCTVC1_GSM_DIR_ENUM_RX_BTS_MS 0x02 +#define cOCTVC1_GSM_DIR_ENUM_TX_BTS_MS 0x03 +#define cOCTVC1_GSM_DIR_ENUM_TX_MS_BTS 0x04 + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_BAND_ENUM : Indicates the GSM band to use +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_GSM_BAND_ENUM tOCT_UINT32 + +#define cOCTVC1_GSM_BAND_ENUM_GSM450 0x0000 +#define cOCTVC1_GSM_BAND_ENUM_GSM850 0x0001 +#define cOCTVC1_GSM_BAND_ENUM_GSM900 0x0002 +#define cOCTVC1_GSM_BAND_ENUM_GSM1800 0x0003 +#define cOCTVC1_GSM_BAND_ENUM_GSM1900 0x0004 +#define cOCTVC1_GSM_BAND_ENUM_EGSM 0x0005 +#define cOCTVC1_GSM_BAND_ENUM_RGSM 0x0006 + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_PROCESS_TYPE_ENUM : Process utilization type. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_GSM_PROCESS_TYPE_ENUM tOCT_UINT32 + +#define cOCTVC1_GSM_PROCESS_TYPE_ENUM_INVALID 0 +#define cOCTVC1_GSM_PROCESS_TYPE_ENUM_CONTROL 1 +#define cOCTVC1_GSM_PROCESS_TYPE_ENUM_TDM_DRIVER 2 +#define cOCTVC1_GSM_PROCESS_TYPE_ENUM_ROUTER 3 +#define cOCTVC1_GSM_PROCESS_TYPE_ENUM_SCHEDULER 4 +#define cOCTVC1_GSM_PROCESS_TYPE_ENUM_VSPMGR 5 +#define cOCTVC1_GSM_PROCESS_TYPE_ENUM_AF_SRV 6 +#define cOCTVC1_GSM_PROCESS_TYPE_ENUM_CAMERA_DRIVER 7 +#define cOCTVC1_GSM_PROCESS_TYPE_ENUM_WCDMA_SCHEDULER ((tOCT_UINT32)(1|cOCTVC1_GSM_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_GSM_PROCESS_TYPE_ENUM_L1C_APAPTATION_LAYER ((tOCT_UINT32)(2|cOCTVC1_GSM_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_GSM_PROCESS_TYPE_ENUM_ULIM_RACH ((tOCT_UINT32)(3|cOCTVC1_GSM_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_GSM_PROCESS_TYPE_ENUM_ULIM_MASTER ((tOCT_UINT32)(4|cOCTVC1_GSM_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_GSM_PROCESS_TYPE_ENUM_ULIM_RFI ((tOCT_UINT32)(5|cOCTVC1_GSM_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_GSM_PROCESS_TYPE_ENUM_ULIM_SLAVE ((tOCT_UINT32)(6|cOCTVC1_GSM_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_GSM_PROCESS_TYPE_ENUM_ULOM_MASTER ((tOCT_UINT32)(7|cOCTVC1_GSM_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_GSM_PROCESS_TYPE_ENUM_ULOM_SLAVE ((tOCT_UINT32)(8|cOCTVC1_GSM_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_GSM_PROCESS_TYPE_ENUM_DLIM_MASTER ((tOCT_UINT32)(9|cOCTVC1_GSM_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_GSM_PROCESS_TYPE_ENUM_DLIM_SLAVE ((tOCT_UINT32)(10|cOCTVC1_GSM_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_GSM_PROCESS_TYPE_ENUM_DLOM_MASTER ((tOCT_UINT32)(11|cOCTVC1_GSM_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_GSM_PROCESS_TYPE_ENUM_DLOM_SLAVE ((tOCT_UINT32)(12|cOCTVC1_GSM_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_GSM_PROCESS_TYPE_ENUM_RFI ((tOCT_UINT32)(13|cOCTVC1_GSM_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_GSM_PROCESS_TYPE_ENUM_ETH ((tOCT_UINT32)(14|cOCTVC1_GSM_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_GSM_PROCESS_TYPE_ENUM_HSDLOM ((tOCT_UINT32)(15|cOCTVC1_GSM_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_GSM_PROCESS_TYPE_ENUM_HSDLIM ((tOCT_UINT32)(16|cOCTVC1_GSM_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_GSM_PROCESS_TYPE_ENUM_CTRL ((tOCT_UINT32)(17|cOCTVC1_GSM_SDR_PROCESS_TYPE_FLAG) ) + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_EVT_MASK : Phy Events. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_GSM_EVT_MASK tOCT_UINT32 + +#define cOCTVC1_GSM_EVT_MASK_ERROR ((tOCT_UINT32)(1<<0) ) +#define cOCTVC1_GSM_EVT_MASK_TRACE_REQUEST ((tOCT_UINT32)(1<<1) ) +#define cOCTVC1_GSM_EVT_MASK_TRACE_RESPONSE ((tOCT_UINT32)(1<<2) ) +#define cOCTVC1_GSM_EVT_MASK_MESSAGE ((tOCT_UINT32)(1<<3) ) +#define cOCTVC1_GSM_EVT_MASK_CHECKPOINT ((tOCT_UINT32)(1<<4) ) +#define cOCTVC1_GSM_EVT_MASK_ALL 0xFFFFFFFF + +#define cOCTVC1_GSM_SDR_PROCESS_TYPE_FLAG 0x0020 +#define cOCTVC1_GSM_REQUEST_INDICATION_FLAG 0x8000 +#define cOCTVC1_GSM_RESPONSE_INDICATION_FLAG 0x4000 +#define cOCTVC1_GSM_TRACING_BUFFER_SIZE 512 /* This is the maximum size of a tracing packet. */ +#define cOCTVC1_GSM_NB_RESERVED 3 /* This is the maximum size of a tracing packet. */ + +/***************************** METHODS *************************************/ +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD + + Members: + Header + OCTVC1 Message Header + byu2Pad_u6TRXId + byu3TN_u5SAPI + bySubchannelNum + byPad + usFrameNumberMsb + usFrameNumberLsb + aPadding +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT8 byu2Pad_u6TRXId; + tOCT_UINT8 byu3TN_u5SAPI; + tOCT_UINT8 bySubchannelNum; + tOCT_UINT8 byPad; + tOCT_UINT16 usFrameNumberMsb; + tOCT_UINT16 usFrameNumberLsb; + tOCT_UINT8 aPadding[480]; + +} tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_RSP + The empty frame request has no response. This structure should not be defined, + but the xml requires us to do so + + Members: + Header + OCTVC1 Message Header + usTodo +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT16 usTodo; + +} tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD + + Members: + Header + OCTVC1 Message Header + byU2Pad_u6TRXId + byU3TN_u5SAPI + bySubchannelNum + byPad + usFrameNumberMSB + usFrameNumberLSB + usDataLength + ausDataContents +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT8 byU2Pad_u6TRXId; + tOCT_UINT8 byU3TN_u5SAPI; + tOCT_UINT8 bySubchannelNum; + tOCT_UINT8 byPad; + tOCT_UINT16 usFrameNumberMSB; + tOCT_UINT16 usFrameNumberLSB; + tOCT_UINT16 usDataLength; + tOCT_UINT8 ausDataContents[478]; + +} tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_RSP + + Members: + Header + OCTVC1 Message Header + usTodo +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT16 usTodo; + +} tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD + + Members: + Header + OCTVC1 Message Header + byu2Pad_u6TrxId + Default: 0 + byu5Pad_u3TimeslotNumber + byChannelType + byPayloadType + aPadding +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT8 byu2Pad_u6TrxId; + tOCT_UINT8 byu5Pad_u3TimeslotNumber; + tOCT_UINT8 byChannelType; + tOCT_UINT8 byPayloadType; + tOCT_UINT8 aPadding[484]; + +} tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP + + Members: + Header + OCTVC1 Message Header + byu2Pad_u6TRXId + byu5Pad_u3TN + usStatus + aPadding +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT8 byu2Pad_u6TRXId; + tOCT_UINT8 byu5Pad_u3TN; + tOCT_UINT16 usStatus; + tOCT_UINT8 aPadding[460]; + +} tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CMD + + Members: + Header + OCTVC1 Message Header + byu2Pad_u6TrxId + Default: 0 + byu5Pad_u3TimeslotNumber + aPadding +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT8 byu2Pad_u6TrxId; + tOCT_UINT8 byu5Pad_u3TimeslotNumber; + tOCT_UINT8 aPadding[476]; + +} tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP + + Members: + Header + OCTVC1 Message Header + byu2Pad_u6TRXId + byu5Pad_u3TN + usStatus + aPadding +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT8 byu2Pad_u6TRXId; + tOCT_UINT8 byu5Pad_u3TN; + tOCT_UINT16 usStatus; + tOCT_UINT8 aPadding[460]; + +} tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_TRX_STATUS_CMD + + Members: + Header + OCTVC1 Message Header + usu2Pad_u6TRXId_u8Pad +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT16 usu2Pad_u6TRXId_u8Pad; + +} tOCTVC1_GSM_MSG_TRX_STATUS_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_TRX_STATUS_RSP + + Members: + Header + OCTVC1 Message Header + byu2Pad_u6TRXId + byPad + atStatus + aPadding +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT8 byu2Pad_u6TRXId; + tOCT_UINT8 byPad; + tOCTVC1_GSM_TIMESLOT_STATUS atStatus[cOCTVC1_GSM_TRX_NUM_TIMESLOTS]; + tOCT_UINT8 aPadding[446]; + +} tOCTVC1_GSM_MSG_TRX_STATUS_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_CMD + + Members: + Header + OCTVC1 Message Header + usu2Pad_u6TRXId_u5Pad_u3TN +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT16 usu2Pad_u6TRXId_u5Pad_u3TN;/* NOSWAPMAC */ + +} tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_RSP + + Members: + Header + OCTVC1 Message Header + usu2Pad_u6TRXId_u5Pad_u3TN + byChannelType + bySubchannelCount + atSubchannnelStatus + aPadding +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT16 usu2Pad_u6TRXId_u5Pad_u3TN;/* NOSWAPMAC */ + tOCT_UINT8 byChannelType;/* NOSWAPMAC */ + tOCT_UINT8 bySubchannelCount;/* NOSWAPMAC */ + tOCTVC1_GSM_tSUBCHANNEL_STATUS atSubchannnelStatus[cOCTVC1_GSM_TRX_NUM_SUBCHANNELS];/* NOSWAPMAC */ + tOCT_UINT8 aPadding[332]; + +} tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_TRX_RESET_CMD + + Members: + Header + OCTVC1 Message Header + usu2Pad_u6TRXId_u8Pad + aPadding +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT16 usu2Pad_u6TRXId_u8Pad; + tOCT_UINT8 aPadding[486]; + +} tOCTVC1_GSM_MSG_TRX_RESET_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_TRX_RESET_RSP + + Members: + Header + OCTVC1 Message Header + byu2Pad_u6TRXId + byPad + usStatus + aPadding +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT8 byu2Pad_u6TRXId; + tOCT_UINT8 byPad; + tOCT_UINT16 usStatus; + tOCT_UINT8 aPadding[460]; + +} tOCTVC1_GSM_MSG_TRX_RESET_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_CMD + + Members: + Header + OCTVC1 Message Header + aPadding +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT8 aPadding[462]; + +} tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_RSP + + Members: + Header + OCTVC1 Message Header + usStatus + aPadding +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT16 usStatus; + tOCT_UINT8 aPadding[476]; + +} tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD + + Members: + Header + OCTVC1 Message Header + byu2Pad_u6TRXId + byu2Pad_u3TN_u3Dir + bySubchannelNum + byu3Pad_u5SAPI + byTimingAdvance + byPad + byBSIC + byu1CMIPhase_u7InitRate + byu4Rate1_u4Rate2 + byu4Rate3_u4Rate4 + aPadding +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT8 byu2Pad_u6TRXId; + tOCT_UINT8 byu2Pad_u3TN_u3Dir; + tOCT_UINT8 bySubchannelNum; + tOCT_UINT8 byu3Pad_u5SAPI; + tOCT_UINT8 byTimingAdvance; + tOCT_UINT8 byPad; + tOCT_UINT8 byBSIC; + tOCT_UINT8 byu1CMIPhase_u7InitRate; + tOCT_UINT8 byu4Rate1_u4Rate2; + tOCT_UINT8 byu4Rate3_u4Rate4; + tOCT_UINT8 aPadding[476]; + +} tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP + + Members: + Header + OCTVC1 Message Header + byu2Pad_u3TRXId + byu2Pad_u3TN_u3Dir + bySubchannelNum + byu3Pad_u5SAPI + usStatus + aPadding +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT8 byu2Pad_u3TRXId; + tOCT_UINT8 byu2Pad_u3TN_u3Dir; + tOCT_UINT8 bySubchannelNum; + tOCT_UINT8 byu3Pad_u5SAPI; + tOCT_UINT16 usStatus; + tOCT_UINT8 aPadding[458]; + +} tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CMD + + Members: + Header + OCTVC1 Message Header + byu2Pad_u6TRXId + byu2Pad_u3TN_u3Dir + bySubchannelNum + byu3Pad_u5SAPI +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT8 byu2Pad_u6TRXId; + tOCT_UINT8 byu2Pad_u3TN_u3Dir; + tOCT_UINT8 bySubchannelNum; + tOCT_UINT8 byu3Pad_u5SAPI; + +} tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP + + Members: + Header + OCTVC1 Message Header + byu2Pad_u3TRXId + byu2Pad_u3TN_u3Dir + bySubchannelNum + byu3Pad_u5SAPI + usStatus + aPadding +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT8 byu2Pad_u3TRXId; + tOCT_UINT8 byu2Pad_u3TN_u3Dir; + tOCT_UINT8 bySubchannelNum; + tOCT_UINT8 byu3Pad_u5SAPI; + tOCT_UINT16 usStatus; + tOCT_UINT8 aPadding[458]; + +} tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD + + Members: + Header + OCTVC1 Message Header + byu2Pad_u6TRXId + byu2Pad_u3TN_u3Dir + bySubchannelNum + byuCipherId + usKC0 + usKC1 + usKC2 + usKC3 +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT8 byu2Pad_u6TRXId; + tOCT_UINT8 byu2Pad_u3TN_u3Dir; + tOCT_UINT8 bySubchannelNum; + tOCT_UINT8 byuCipherId; + tOCT_UINT16 usKC0; + tOCT_UINT16 usKC1; + tOCT_UINT16 usKC2; + tOCT_UINT16 usKC3; + +} tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP + + Members: + Header + OCTVC1 Message Header + byu2Pad_u6TRXId + byu2Pad_u3TN_u3Dir + bySubchannelNum + byPad + usStatus + aPadding +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT8 byu2Pad_u6TRXId; + tOCT_UINT8 byu2Pad_u3TN_u3Dir; + tOCT_UINT8 bySubchannelNum; + tOCT_UINT8 byPad; + tOCT_UINT16 usStatus; + tOCT_UINT8 aPadding[458]; + +} tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_CMD + + Members: + Header + OCTVC1 Message Header + aPadding +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT8 aPadding[488]; + +} tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_RSP + + Members: + Header + OCTVC1 Message Header + szHardwareInfo + aPadding +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT8 szHardwareInfo[cOCTVC1_GSM_HARDWARE_INFO_RESPONSE_LENGTH]; + tOCT_UINT8 aPadding[210]; + +} tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_CMD + + Members: + Header + OCTVC1 Message Header + byu2Pad_u6TRXId + byu5Pad_u3TN +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT8 byu2Pad_u6TRXId;/* NOSWAPMAC */ + tOCT_UINT8 byu5Pad_u3TN;/* NOSWAPMAC */ + +} tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_RSP + + Members: + Header + OCTVC1 Message Header + byu2Pad_u6TRXId + byu5Pad_u3TN + tMeasurementInfo + aPadding +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT8 byu2Pad_u6TRXId;/* NOSWAPMAC */ + tOCT_UINT8 byu5Pad_u3TN;/* NOSWAPMAC */ + tOCTVC1_GSM_tMEASUREMENT_INFO tMeasurementInfo;/* NOSWAPMAC */ + tOCT_UINT8 aPadding[454]; + +} tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_TEST_START_ETSI_CMD + + Members: + Header + OCTVC1 Message Header + usTodo +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT16 usTodo; + +} tOCTVC1_GSM_MSG_TEST_START_ETSI_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_TEST_START_ETSI_RSP + + Members: + Header + OCTVC1 Message Header + usTodo +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT16 usTodo; + +} tOCTVC1_GSM_MSG_TEST_START_ETSI_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_TEST_START_FCC_CMD + + Members: + Header + OCTVC1 Message Header + usTodo +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT16 usTodo; + +} tOCTVC1_GSM_MSG_TEST_START_FCC_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_TEST_START_FCC_RSP + + Members: + Header + OCTVC1 Message Header + usTodo +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT16 usTodo; + +} tOCTVC1_GSM_MSG_TEST_START_FCC_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_TEST_END_ETSI_CMD + + Members: + Header + OCTVC1 Message Header + usTodo +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT16 usTodo; + +} tOCTVC1_GSM_MSG_TEST_END_ETSI_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_TEST_END_ETSI_RSP + + Members: + Header + OCTVC1 Message Header + usTodo +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT16 usTodo; + +} tOCTVC1_GSM_MSG_TEST_END_ETSI_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_TEST_END_FCC_CMD + + Members: + Header + OCTVC1 Message Header + usTodo +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT16 usTodo; + +} tOCTVC1_GSM_MSG_TEST_END_FCC_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_TEST_END_FCC_RSP + + Members: + Header + OCTVC1 Message Header + usTodo +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT16 usTodo; + +} tOCTVC1_GSM_MSG_TEST_END_FCC_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD + + Members: + Header + OCTVC1 Message Header + ulEventMask + Default: (cOCTVC1_GSM_EVT_MASK_MESSAGE|cOCTVC1_GSM_EVT_MASK_ERROR) + ulUserEventId + hEventDestObj + Destination Object handle + ulEventDestObjPort + Destination packet port to bind. + ulEventDestObjFifoId + Destination object FIFO ID. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_GSM_EVT_MASK ulEventMask; + tOCT_UINT32 ulUserEventId; + tOCTVC1_HANDLE hEventDestObj; + tOCT_UINT32 ulEventDestObjPort; + tOCT_UINT32 ulEventDestObjFifoId; + +} tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_RSP + + Members: + Header + OCTVC1 Message Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + +} tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_MODULE_INFO_EVT_CMD + + Members: + Header + OCTVC1 Message Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + +} tOCTVC1_GSM_MSG_MODULE_INFO_EVT_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP + + Members: + Header + OCTVC1 Message Header + ulEventMask + Default: (cOCTVC1_GSM_EVT_MASK_MESSAGE|cOCTVC1_GSM_EVT_MASK_ERROR) + ulUserEventId + hEventDestObj + Destination Object handle + ulEventDestObjPort + Destination packet port to bind. + ulEventDestObjFifoId + Destination object FIFO ID. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_GSM_EVT_MASK ulEventMask; + tOCT_UINT32 ulUserEventId; + tOCTVC1_HANDLE hEventDestObj; + tOCT_UINT32 ulEventDestObjPort; + tOCT_UINT32 ulEventDestObjFifoId; + +} tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_MODULE_INFO_CMD + + Members: + Header + OCTVC1 Message Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + +} tOCTVC1_GSM_MSG_MODULE_INFO_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_MODULE_INFO_RSP + + Members: + Header + OCTVC1 Message Header + ulDeviceType +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 ulDeviceType; + +} tOCTVC1_GSM_MSG_MODULE_INFO_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD + Event parameters can be sent upon detection of errors or particular situation. + This command allows the user to specify which events are returned and which are + masked by the device. + This can be useful for both in-system monitoring and debugging. + + Members: + Header + OCTVC1 Message Header + hProcessUnit + Handle of the VSP Termination. + ulUserEventId + Default: cOCTVC1_DO_NOT_MODIFY + User-specified value that is included in the events packets generated by this + termination. + ulEventMask + Default: (cOCTVC1_GSM_EVT_MASK_MESSAGE|cOCTVC1_GSM_EVT_MASK_ERROR) + ulDebugFwdEventMask + Default: (cOCTVC1_GSM_EVT_MASK_MESSAGE|cOCTVC1_GSM_EVT_MASK_ERROR) + Bit field that contains the list of API events that can be generated by this + termination. Those events will be forwarded by the + OCTVC1_MAIN_MSG_DEBUG_FORWARD object. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hProcessUnit; + tOCT_UINT32 ulUserEventId; + tOCTVC1_GSM_EVT_MASK ulEventMask; + tOCTVC1_GSM_EVT_MASK ulDebugFwdEventMask; + +} tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_RSP + + Members: + Header + OCTVC1 Message Header + hProcessUnit + Handle of the VSP Termination. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hProcessUnit; + +} tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_CMD + + Members: + Header + OCTVC1 Message Header + hProcessUnit + Handle of the VSP Termination. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hProcessUnit; + +} tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP + + Members: + Header + OCTVC1 Message Header + ulEventMask + ulUserEventId + hEventDestObj + Destination Object handle + ulEventDestObjPort + Destination packet port to bind. + ulEventDestObjFifoId + Destination object FIFO ID. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_GSM_EVT_MASK ulEventMask; + tOCT_UINT32 ulUserEventId; + tOCTVC1_HANDLE hEventDestObj; + tOCT_UINT32 ulEventDestObjPort; + tOCT_UINT32 ulEventDestObjFifoId; + +} tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD + + Members: + Header + OCTVC1 Message Header + u6TrxId_u4band_u1H_u5TSC + ARFCN + BCCH_ARFCN + HSN + MAIO + HoppingListLength + ausHoppingList + aPadding +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK u6TrxId_u4band_u1H_u5TSC;/* NOSWAPMAC */ + tOCT_UINT16 ARFCN;/* NOSWAPMAC */ + tOCT_UINT16 BCCH_ARFCN;/* NOSWAPMAC */ + tOCT_UINT8 HSN;/* NOSWAPMAC */ + tOCT_UINT8 MAIO;/* NOSWAPMAC */ + tOCT_UINT16 HoppingListLength;/* NOSWAPMAC */ + tOCT_UINT16 ausHoppingList[cOCTVC1_GSM_HOPPING_LIST_SIZE_WORD];/* NOSWAPMAC */ + tOCT_UINT8 aPadding[350]; + +} tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_TRX_CONFIGURE_RSP + + Members: + Header + OCTVC1 Message Header + u6TrxId_u4band_u6Pad + usStatus + aPadding +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_GSM_TRX_BAND_HOPPING_TSC_MASK u6TrxId_u4band_u6Pad;/* NOSWAPMAC */ + tOCT_UINT16 usStatus;/* NOSWAPMAC */ + tOCT_UINT8 aPadding[460]; + +} tOCTVC1_GSM_MSG_TRX_CONFIGURE_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_CMD + List all precess unit + + Members: + Header + OCTVC1 Message Header + ObjectCursor + Object Cursor. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_GET ObjectCursor; + +} tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_RSP + + Members: + Header + ObjectCursor + Object Cursor. + ObjectList + List of opened voice terminations. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_GET ObjectCursor; + tOCTVC1_LIST_HANDLE_GET ObjectList; + +} tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_CMD + + Members: + Header + OCTVC1 Message Header + ObjectGet + Generic object get structure. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_GET ObjectGet; + +} tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP + + Members: + Header + OCTVC1 Message Header + ObjectGet + Generic object get structure. + ulProcessType + ulInstance + ulMasterCore + ulCoreId +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_GET ObjectGet; + tOCTVC1_GSM_PROCESS_TYPE_ENUM ulProcessType; + tOCT_UINT32 ulInstance; + tOCT_BOOL32 ulMasterCore; + tOCT_UINT32 ulCoreId; + +} tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CMD + + Members: + Header + OCTVC1 Message Header + ObjectGet + Generic object get structure. + ulResetStatsFlag + Whether or not to reset the statistics counters to zero after the current + values are returned. cOCT_TRUE: resets the statistics counters to zero after + the current values are returned. cOCT_FALSE: returns the current values but + does not reset the statistics counters. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_GET ObjectGet; + tOCT_BOOL32 ulResetStatsFlag; + +} tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_RSP + + Members: + Header + OCTVC1 Message Header + ObjectGet + Generic object get structure. + ulLastFrameIndex + . +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_GET ObjectGet; + tOCT_UINT32 ulLastFrameIndex; + +} tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_RSP; + + +/*************** INCLUDE FILES WITH DEPENDENCIES ON THIS FILE **************/ +#include "octvc1_gsm_evt.h" + +#ifdef cDO_PRAGMA_PACK_POP +#pragma pack( pop ) +#endif /* cDO_PRAGMA_PACK_POP */ +#undef cDO_PRAGMA_PACK_POP + +#endif /* __OCTVC1_GSM_API_H__ */ + diff --git a/software/include/vocallo/gsm/octvc1_gsm_api_swap.h b/software/include/vocallo/gsm/octvc1_gsm_api_swap.h new file mode 100644 index 0000000..f1f82eb --- /dev/null +++ b/software/include/vocallo/gsm/octvc1_gsm_api_swap.h @@ -0,0 +1,604 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* + +File: octvc1_gsm_api_swap.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#ifndef __OCTVC1_GSM_API_SWAP_H__ +#define __OCTVC1_GSM_API_SWAP_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************** INCLUDE FILES *******************************/ +#include "../octvc1_swap_hdrs.h" +#include "octvc1_gsm_api.h" + +/********************************* MACROS **********************************/ + + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_tSUBCHANNEL_STATUS_SWAP( _f_pParms ){ tOCTVC1_GSM_tSUBCHANNEL_STATUS * pOCTVC1_GSM_tSUBCHANNEL_STATUS = (_f_pParms); \ + ((tOCTVC1_GSM_tSUBCHANNEL_STATUS *)pOCTVC1_GSM_tSUBCHANNEL_STATUS)->usActiveUplinkSAPIMapMSW = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_tSUBCHANNEL_STATUS *)pOCTVC1_GSM_tSUBCHANNEL_STATUS)->usActiveUplinkSAPIMapMSW); \ + ((tOCTVC1_GSM_tSUBCHANNEL_STATUS *)pOCTVC1_GSM_tSUBCHANNEL_STATUS)->usActiveUplinkSAPIMapLSW = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_tSUBCHANNEL_STATUS *)pOCTVC1_GSM_tSUBCHANNEL_STATUS)->usActiveUplinkSAPIMapLSW); \ + ((tOCTVC1_GSM_tSUBCHANNEL_STATUS *)pOCTVC1_GSM_tSUBCHANNEL_STATUS)->usActiveDownlinkSAPIMapMSW = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_tSUBCHANNEL_STATUS *)pOCTVC1_GSM_tSUBCHANNEL_STATUS)->usActiveDownlinkSAPIMapMSW); \ + ((tOCTVC1_GSM_tSUBCHANNEL_STATUS *)pOCTVC1_GSM_tSUBCHANNEL_STATUS)->usActiveDownlinkSAPIMapLSW = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_tSUBCHANNEL_STATUS *)pOCTVC1_GSM_tSUBCHANNEL_STATUS)->usActiveDownlinkSAPIMapLSW); \ +} +#else +#define mOCTVC1_GSM_tSUBCHANNEL_STATUS_SWAP( pOCTVC1_GSM_tSUBCHANNEL_STATUS ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_tMEASUREMENT_INFO_SWAP( _f_pParms ){ tOCTVC1_GSM_tMEASUREMENT_INFO * pOCTVC1_GSM_tMEASUREMENT_INFO = (_f_pParms); \ + ((tOCTVC1_GSM_tMEASUREMENT_INFO *)pOCTVC1_GSM_tMEASUREMENT_INFO)->sRSSI = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_tMEASUREMENT_INFO *)pOCTVC1_GSM_tMEASUREMENT_INFO)->sRSSI); \ + ((tOCTVC1_GSM_tMEASUREMENT_INFO *)pOCTVC1_GSM_tMEASUREMENT_INFO)->sSNR = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_tMEASUREMENT_INFO *)pOCTVC1_GSM_tMEASUREMENT_INFO)->sSNR); \ + ((tOCTVC1_GSM_tMEASUREMENT_INFO *)pOCTVC1_GSM_tMEASUREMENT_INFO)->sBurstTiming = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_tMEASUREMENT_INFO *)pOCTVC1_GSM_tMEASUREMENT_INFO)->sBurstTiming); \ + ((tOCTVC1_GSM_tMEASUREMENT_INFO *)pOCTVC1_GSM_tMEASUREMENT_INFO)->usBERCount = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_tMEASUREMENT_INFO *)pOCTVC1_GSM_tMEASUREMENT_INFO)->usBERCount); \ + ((tOCTVC1_GSM_tMEASUREMENT_INFO *)pOCTVC1_GSM_tMEASUREMENT_INFO)->usBERTOtalBitCOunt = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_tMEASUREMENT_INFO *)pOCTVC1_GSM_tMEASUREMENT_INFO)->usBERTOtalBitCOunt); \ +} +#else +#define mOCTVC1_GSM_tMEASUREMENT_INFO_SWAP( pOCTVC1_GSM_tMEASUREMENT_INFO ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_TIMESLOT_STATUS_SWAP( _f_pParms ) +#else +#define mOCTVC1_GSM_TIMESLOT_STATUS_SWAP( pOCTVC1_GSM_TIMESLOT_STATUS ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD * pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD)->Header ); } \ + ((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD)->usFrameNumberMsb = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD)->usFrameNumberMsb); \ + ((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD)->usFrameNumberLsb = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD)->usFrameNumberLsb); \ +} +#else +#define mOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD_SWAP( pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_RSP_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_RSP * pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_RSP *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_RSP)->Header ); } \ + ((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_RSP *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_RSP)->usTodo = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_RSP *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_RSP)->usTodo); \ +} +#else +#define mOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_RSP_SWAP( pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD * pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD)->Header ); } \ + ((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD)->usFrameNumberMSB = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD)->usFrameNumberMSB); \ + ((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD)->usFrameNumberLSB = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD)->usFrameNumberLSB); \ + ((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD)->usDataLength = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD)->usDataLength); \ +} +#else +#define mOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD_SWAP( pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_RSP_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_RSP * pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_RSP *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_RSP)->Header ); } \ + ((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_RSP *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_RSP)->usTodo = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_RSP *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_RSP)->usTodo); \ +} +#else +#define mOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_RSP_SWAP( pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD * pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD)->Header ); } \ +} +#else +#define mOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD_SWAP( pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP * pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP)->Header ); } \ + ((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP)->usStatus = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP)->usStatus); \ +} +#else +#define mOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP_SWAP( pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CMD_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CMD * pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CMD *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CMD)->Header ); } \ +} +#else +#define mOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CMD_SWAP( pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP * pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP)->Header ); } \ + ((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP)->usStatus = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP)->usStatus); \ +} +#else +#define mOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP_SWAP( pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_TRX_STATUS_CMD_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_TRX_STATUS_CMD * pOCTVC1_GSM_MSG_TRX_STATUS_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_TRX_STATUS_CMD *)pOCTVC1_GSM_MSG_TRX_STATUS_CMD)->Header ); } \ + ((tOCTVC1_GSM_MSG_TRX_STATUS_CMD *)pOCTVC1_GSM_MSG_TRX_STATUS_CMD)->usu2Pad_u6TRXId_u8Pad = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_TRX_STATUS_CMD *)pOCTVC1_GSM_MSG_TRX_STATUS_CMD)->usu2Pad_u6TRXId_u8Pad); \ +} +#else +#define mOCTVC1_GSM_MSG_TRX_STATUS_CMD_SWAP( pOCTVC1_GSM_MSG_TRX_STATUS_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_TRX_STATUS_RSP_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_TRX_STATUS_RSP * pOCTVC1_GSM_MSG_TRX_STATUS_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_TRX_STATUS_RSP *)pOCTVC1_GSM_MSG_TRX_STATUS_RSP)->Header ); } \ + { tOCT_UINT32 jOCTVC1_GSM_MSG_TRX_STATUS_RSP; \ + for( jOCTVC1_GSM_MSG_TRX_STATUS_RSP=0; \ + jOCTVC1_GSM_MSG_TRX_STATUS_RSP<(cOCTVC1_GSM_TRX_NUM_TIMESLOTS);jOCTVC1_GSM_MSG_TRX_STATUS_RSP++ ) \ + { mOCTVC1_GSM_TIMESLOT_STATUS_SWAP( &((tOCTVC1_GSM_MSG_TRX_STATUS_RSP *)pOCTVC1_GSM_MSG_TRX_STATUS_RSP)->atStatus[jOCTVC1_GSM_MSG_TRX_STATUS_RSP] ); }} \ +} +#else +#define mOCTVC1_GSM_MSG_TRX_STATUS_RSP_SWAP( pOCTVC1_GSM_MSG_TRX_STATUS_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_CMD_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_CMD * pOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_CMD *)pOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_CMD)->Header ); } \ +} +#else +#define mOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_CMD_SWAP( pOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_RSP_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_RSP * pOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_RSP *)pOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_RSP)->Header ); } \ +} +#else +#define mOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_RSP_SWAP( pOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_TRX_RESET_CMD_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_TRX_RESET_CMD * pOCTVC1_GSM_MSG_TRX_RESET_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_TRX_RESET_CMD *)pOCTVC1_GSM_MSG_TRX_RESET_CMD)->Header ); } \ + ((tOCTVC1_GSM_MSG_TRX_RESET_CMD *)pOCTVC1_GSM_MSG_TRX_RESET_CMD)->usu2Pad_u6TRXId_u8Pad = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_TRX_RESET_CMD *)pOCTVC1_GSM_MSG_TRX_RESET_CMD)->usu2Pad_u6TRXId_u8Pad); \ +} +#else +#define mOCTVC1_GSM_MSG_TRX_RESET_CMD_SWAP( pOCTVC1_GSM_MSG_TRX_RESET_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_TRX_RESET_RSP_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_TRX_RESET_RSP * pOCTVC1_GSM_MSG_TRX_RESET_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_TRX_RESET_RSP *)pOCTVC1_GSM_MSG_TRX_RESET_RSP)->Header ); } \ + ((tOCTVC1_GSM_MSG_TRX_RESET_RSP *)pOCTVC1_GSM_MSG_TRX_RESET_RSP)->usStatus = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_TRX_RESET_RSP *)pOCTVC1_GSM_MSG_TRX_RESET_RSP)->usStatus); \ +} +#else +#define mOCTVC1_GSM_MSG_TRX_RESET_RSP_SWAP( pOCTVC1_GSM_MSG_TRX_RESET_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_CMD_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_CMD * pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_CMD *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_CMD)->Header ); } \ +} +#else +#define mOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_CMD_SWAP( pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_RSP_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_RSP * pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_RSP *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_RSP)->Header ); } \ + ((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_RSP *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_RSP)->usStatus = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_RSP *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_RSP)->usStatus); \ +} +#else +#define mOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_RSP_SWAP( pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD * pOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD *)pOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD)->Header ); } \ +} +#else +#define mOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD_SWAP( pOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP * pOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP *)pOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP)->Header ); } \ + ((tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP *)pOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP)->usStatus = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP *)pOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP)->usStatus); \ +} +#else +#define mOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP_SWAP( pOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CMD_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CMD * pOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CMD *)pOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CMD)->Header ); } \ +} +#else +#define mOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CMD_SWAP( pOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP * pOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP *)pOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP)->Header ); } \ + ((tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP *)pOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP)->usStatus = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP *)pOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP)->usStatus); \ +} +#else +#define mOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP_SWAP( pOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD * pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD)->Header ); } \ + ((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD)->usKC0 = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD)->usKC0); \ + ((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD)->usKC1 = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD)->usKC1); \ + ((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD)->usKC2 = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD)->usKC2); \ + ((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD)->usKC3 = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD)->usKC3); \ +} +#else +#define mOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD_SWAP( pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP * pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP)->Header ); } \ + ((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP)->usStatus = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP *)pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP)->usStatus); \ +} +#else +#define mOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP_SWAP( pOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_CMD_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_CMD * pOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_CMD *)pOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_CMD)->Header ); } \ +} +#else +#define mOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_CMD_SWAP( pOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_RSP_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_RSP * pOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_RSP *)pOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_RSP)->Header ); } \ +} +#else +#define mOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_RSP_SWAP( pOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_CMD_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_CMD * pOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_CMD *)pOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_CMD)->Header ); } \ +} +#else +#define mOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_CMD_SWAP( pOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_RSP_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_RSP * pOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_RSP *)pOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_RSP)->Header ); } \ +} +#else +#define mOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_RSP_SWAP( pOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_TEST_START_ETSI_CMD_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_TEST_START_ETSI_CMD * pOCTVC1_GSM_MSG_TEST_START_ETSI_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_TEST_START_ETSI_CMD *)pOCTVC1_GSM_MSG_TEST_START_ETSI_CMD)->Header ); } \ + ((tOCTVC1_GSM_MSG_TEST_START_ETSI_CMD *)pOCTVC1_GSM_MSG_TEST_START_ETSI_CMD)->usTodo = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_TEST_START_ETSI_CMD *)pOCTVC1_GSM_MSG_TEST_START_ETSI_CMD)->usTodo); \ +} +#else +#define mOCTVC1_GSM_MSG_TEST_START_ETSI_CMD_SWAP( pOCTVC1_GSM_MSG_TEST_START_ETSI_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_TEST_START_ETSI_RSP_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_TEST_START_ETSI_RSP * pOCTVC1_GSM_MSG_TEST_START_ETSI_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_TEST_START_ETSI_RSP *)pOCTVC1_GSM_MSG_TEST_START_ETSI_RSP)->Header ); } \ + ((tOCTVC1_GSM_MSG_TEST_START_ETSI_RSP *)pOCTVC1_GSM_MSG_TEST_START_ETSI_RSP)->usTodo = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_TEST_START_ETSI_RSP *)pOCTVC1_GSM_MSG_TEST_START_ETSI_RSP)->usTodo); \ +} +#else +#define mOCTVC1_GSM_MSG_TEST_START_ETSI_RSP_SWAP( pOCTVC1_GSM_MSG_TEST_START_ETSI_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_TEST_START_FCC_CMD_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_TEST_START_FCC_CMD * pOCTVC1_GSM_MSG_TEST_START_FCC_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_TEST_START_FCC_CMD *)pOCTVC1_GSM_MSG_TEST_START_FCC_CMD)->Header ); } \ + ((tOCTVC1_GSM_MSG_TEST_START_FCC_CMD *)pOCTVC1_GSM_MSG_TEST_START_FCC_CMD)->usTodo = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_TEST_START_FCC_CMD *)pOCTVC1_GSM_MSG_TEST_START_FCC_CMD)->usTodo); \ +} +#else +#define mOCTVC1_GSM_MSG_TEST_START_FCC_CMD_SWAP( pOCTVC1_GSM_MSG_TEST_START_FCC_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_TEST_START_FCC_RSP_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_TEST_START_FCC_RSP * pOCTVC1_GSM_MSG_TEST_START_FCC_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_TEST_START_FCC_RSP *)pOCTVC1_GSM_MSG_TEST_START_FCC_RSP)->Header ); } \ + ((tOCTVC1_GSM_MSG_TEST_START_FCC_RSP *)pOCTVC1_GSM_MSG_TEST_START_FCC_RSP)->usTodo = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_TEST_START_FCC_RSP *)pOCTVC1_GSM_MSG_TEST_START_FCC_RSP)->usTodo); \ +} +#else +#define mOCTVC1_GSM_MSG_TEST_START_FCC_RSP_SWAP( pOCTVC1_GSM_MSG_TEST_START_FCC_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_TEST_END_ETSI_CMD_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_TEST_END_ETSI_CMD * pOCTVC1_GSM_MSG_TEST_END_ETSI_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_TEST_END_ETSI_CMD *)pOCTVC1_GSM_MSG_TEST_END_ETSI_CMD)->Header ); } \ + ((tOCTVC1_GSM_MSG_TEST_END_ETSI_CMD *)pOCTVC1_GSM_MSG_TEST_END_ETSI_CMD)->usTodo = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_TEST_END_ETSI_CMD *)pOCTVC1_GSM_MSG_TEST_END_ETSI_CMD)->usTodo); \ +} +#else +#define mOCTVC1_GSM_MSG_TEST_END_ETSI_CMD_SWAP( pOCTVC1_GSM_MSG_TEST_END_ETSI_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_TEST_END_ETSI_RSP_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_TEST_END_ETSI_RSP * pOCTVC1_GSM_MSG_TEST_END_ETSI_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_TEST_END_ETSI_RSP *)pOCTVC1_GSM_MSG_TEST_END_ETSI_RSP)->Header ); } \ + ((tOCTVC1_GSM_MSG_TEST_END_ETSI_RSP *)pOCTVC1_GSM_MSG_TEST_END_ETSI_RSP)->usTodo = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_TEST_END_ETSI_RSP *)pOCTVC1_GSM_MSG_TEST_END_ETSI_RSP)->usTodo); \ +} +#else +#define mOCTVC1_GSM_MSG_TEST_END_ETSI_RSP_SWAP( pOCTVC1_GSM_MSG_TEST_END_ETSI_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_TEST_END_FCC_CMD_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_TEST_END_FCC_CMD * pOCTVC1_GSM_MSG_TEST_END_FCC_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_TEST_END_FCC_CMD *)pOCTVC1_GSM_MSG_TEST_END_FCC_CMD)->Header ); } \ + ((tOCTVC1_GSM_MSG_TEST_END_FCC_CMD *)pOCTVC1_GSM_MSG_TEST_END_FCC_CMD)->usTodo = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_TEST_END_FCC_CMD *)pOCTVC1_GSM_MSG_TEST_END_FCC_CMD)->usTodo); \ +} +#else +#define mOCTVC1_GSM_MSG_TEST_END_FCC_CMD_SWAP( pOCTVC1_GSM_MSG_TEST_END_FCC_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_TEST_END_FCC_RSP_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_TEST_END_FCC_RSP * pOCTVC1_GSM_MSG_TEST_END_FCC_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_TEST_END_FCC_RSP *)pOCTVC1_GSM_MSG_TEST_END_FCC_RSP)->Header ); } \ + ((tOCTVC1_GSM_MSG_TEST_END_FCC_RSP *)pOCTVC1_GSM_MSG_TEST_END_FCC_RSP)->usTodo = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_TEST_END_FCC_RSP *)pOCTVC1_GSM_MSG_TEST_END_FCC_RSP)->usTodo); \ +} +#else +#define mOCTVC1_GSM_MSG_TEST_END_FCC_RSP_SWAP( pOCTVC1_GSM_MSG_TEST_END_FCC_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD * pOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD *)pOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD)->Header ); } \ + ((tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD *)pOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD)->ulEventMask = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD *)pOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD)->ulEventMask); \ + ((tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD *)pOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD)->ulUserEventId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD *)pOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD)->ulUserEventId); \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD *)pOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD)->hEventDestObj ); } \ + ((tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD *)pOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD)->ulEventDestObjPort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD *)pOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD)->ulEventDestObjPort); \ + ((tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD *)pOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD)->ulEventDestObjFifoId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD *)pOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD)->ulEventDestObjFifoId); \ +} +#else +#define mOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD_SWAP( pOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_RSP_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_RSP * pOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_RSP *)pOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_RSP)->Header ); } \ +} +#else +#define mOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_RSP_SWAP( pOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_MODULE_INFO_EVT_CMD_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_MODULE_INFO_EVT_CMD * pOCTVC1_GSM_MSG_MODULE_INFO_EVT_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_MODULE_INFO_EVT_CMD *)pOCTVC1_GSM_MSG_MODULE_INFO_EVT_CMD)->Header ); } \ +} +#else +#define mOCTVC1_GSM_MSG_MODULE_INFO_EVT_CMD_SWAP( pOCTVC1_GSM_MSG_MODULE_INFO_EVT_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP * pOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP *)pOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP)->Header ); } \ + ((tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP *)pOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP)->ulEventMask = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP *)pOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP)->ulEventMask); \ + ((tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP *)pOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP)->ulUserEventId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP *)pOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP)->ulUserEventId); \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP *)pOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP)->hEventDestObj ); } \ + ((tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP *)pOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP)->ulEventDestObjPort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP *)pOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP)->ulEventDestObjPort); \ + ((tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP *)pOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP)->ulEventDestObjFifoId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP *)pOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP)->ulEventDestObjFifoId); \ +} +#else +#define mOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP_SWAP( pOCTVC1_GSM_MSG_MODULE_INFO_EVT_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_MODULE_INFO_CMD_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_MODULE_INFO_CMD * pOCTVC1_GSM_MSG_MODULE_INFO_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_MODULE_INFO_CMD *)pOCTVC1_GSM_MSG_MODULE_INFO_CMD)->Header ); } \ +} +#else +#define mOCTVC1_GSM_MSG_MODULE_INFO_CMD_SWAP( pOCTVC1_GSM_MSG_MODULE_INFO_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_MODULE_INFO_RSP_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_MODULE_INFO_RSP * pOCTVC1_GSM_MSG_MODULE_INFO_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_MODULE_INFO_RSP *)pOCTVC1_GSM_MSG_MODULE_INFO_RSP)->Header ); } \ + ((tOCTVC1_GSM_MSG_MODULE_INFO_RSP *)pOCTVC1_GSM_MSG_MODULE_INFO_RSP)->ulDeviceType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_MODULE_INFO_RSP *)pOCTVC1_GSM_MSG_MODULE_INFO_RSP)->ulDeviceType); \ +} +#else +#define mOCTVC1_GSM_MSG_MODULE_INFO_RSP_SWAP( pOCTVC1_GSM_MSG_MODULE_INFO_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD * pOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD *)pOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD *)pOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD)->hProcessUnit ); } \ + ((tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD *)pOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD)->ulUserEventId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD *)pOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD)->ulUserEventId); \ + ((tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD *)pOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD)->ulEventMask = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD *)pOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD)->ulEventMask); \ + ((tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD *)pOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD)->ulDebugFwdEventMask = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD *)pOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD)->ulDebugFwdEventMask); \ +} +#else +#define mOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD_SWAP( pOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_RSP_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_RSP * pOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_RSP *)pOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_RSP)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_RSP *)pOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_RSP)->hProcessUnit ); } \ +} +#else +#define mOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_RSP_SWAP( pOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_CMD_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_CMD * pOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_CMD *)pOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_CMD)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_CMD *)pOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_CMD)->hProcessUnit ); } \ +} +#else +#define mOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_CMD_SWAP( pOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP * pOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP *)pOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP)->Header ); } \ + ((tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP *)pOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP)->ulEventMask = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP *)pOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP)->ulEventMask); \ + ((tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP *)pOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP)->ulUserEventId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP *)pOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP)->ulUserEventId); \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP *)pOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP)->hEventDestObj ); } \ + ((tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP *)pOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP)->ulEventDestObjPort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP *)pOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP)->ulEventDestObjPort); \ + ((tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP *)pOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP)->ulEventDestObjFifoId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP *)pOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP)->ulEventDestObjFifoId); \ +} +#else +#define mOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP_SWAP( pOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD * pOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD *)pOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD)->Header ); } \ +} +#else +#define mOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD_SWAP( pOCTVC1_GSM_MSG_TRX_CONFIGURE_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_TRX_CONFIGURE_RSP_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_TRX_CONFIGURE_RSP * pOCTVC1_GSM_MSG_TRX_CONFIGURE_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_TRX_CONFIGURE_RSP *)pOCTVC1_GSM_MSG_TRX_CONFIGURE_RSP)->Header ); } \ +} +#else +#define mOCTVC1_GSM_MSG_TRX_CONFIGURE_RSP_SWAP( pOCTVC1_GSM_MSG_TRX_CONFIGURE_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_CMD_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_CMD * pOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_CMD *)pOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_CMD)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_GET_SWAP( &((tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_CMD *)pOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_CMD)->ObjectCursor ); } \ +} +#else +#define mOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_CMD_SWAP( pOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_RSP_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_RSP * pOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_RSP *)pOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_RSP)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_GET_SWAP( &((tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_RSP *)pOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_RSP)->ObjectCursor ); } \ + { mOCTVC1_LIST_HANDLE_GET_SWAP( &((tOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_RSP *)pOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_RSP)->ObjectList ); } \ +} +#else +#define mOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_RSP_SWAP( pOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_CMD_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_CMD * pOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_CMD *)pOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_CMD)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_GET_SWAP( &((tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_CMD *)pOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_CMD)->ObjectGet ); } \ +} +#else +#define mOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_CMD_SWAP( pOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP * pOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP *)pOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_GET_SWAP( &((tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP *)pOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP)->ObjectGet ); } \ + ((tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP *)pOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP)->ulProcessType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP *)pOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP)->ulProcessType); \ + ((tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP *)pOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP)->ulInstance = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP *)pOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP)->ulInstance); \ + ((tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP *)pOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP)->ulMasterCore = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP *)pOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP)->ulMasterCore); \ + ((tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP *)pOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP)->ulCoreId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP *)pOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP)->ulCoreId); \ +} +#else +#define mOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP_SWAP( pOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CMD_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CMD * pOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CMD *)pOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CMD)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_GET_SWAP( &((tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CMD *)pOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CMD)->ObjectGet ); } \ + ((tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CMD *)pOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CMD)->ulResetStatsFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CMD *)pOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CMD)->ulResetStatsFlag); \ +} +#else +#define mOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CMD_SWAP( pOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_RSP_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_RSP * pOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_RSP *)pOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_RSP)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_GET_SWAP( &((tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_RSP *)pOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_RSP)->ObjectGet ); } \ + ((tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_RSP *)pOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_RSP)->ulLastFrameIndex = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_RSP *)pOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_RSP)->ulLastFrameIndex); \ +} +#else +#define mOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_RSP_SWAP( pOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#ifdef __cplusplus +} + +#endif + +#endif /* __OCTVC1_GSM_API_SWAP_H__ */ diff --git a/software/include/vocallo/gsm/octvc1_gsm_default.h b/software/include/vocallo/gsm/octvc1_gsm_default.h new file mode 100644 index 0000000..0f5b031 --- /dev/null +++ b/software/include/vocallo/gsm/octvc1_gsm_default.h @@ -0,0 +1,5186 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_GSM_DEFAULT.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: Contains the event definition of the GSM API. + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Octasic_Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_GSM_DEFAULT_H__ +#define __OCTVC1_GSM_DEFAULT_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "octvc1_gsm_api.h" + +/***************************** COMMAND DEFAULT *****************************/ + +/*-------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD +----------------------------------------------------------------------------*/ +#ifdef OCTVC1_OPT_DECLARE_DEFAULTS + +const tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD buf_tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD = +{ + { /* Header */ + ((sizeof(tOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CMD)<. + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Octasic_Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_GSM_EVT_H__ +#define __OCTVC1_GSM_EVT_H__ + + +/***************************** INCLUDE FILES *******************************/ + +#include "octvc1_gsm_api.h" + +/************************ COMMON DEFINITIONS *******************************/ + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM : Process utilization type. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM tOCT_UINT32 + +#define cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_INVALID 0 +#define cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_WCDMA_SCHEDULER 1 +#define cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_L1C_APAPTATION_LAYER 2 +#define cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_ULIM_RACH 3 +#define cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_ULIM_MASTER 4 +#define cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_ULIM_RFI 5 +#define cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_ULIM_SLAVE 6 +#define cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_ULOM_MASTER 7 +#define cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_ULOM_SLAVE 8 +#define cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_DLIM_MASTER 9 +#define cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_DLIM_SLAVE 10 +#define cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_DLOM_MASTER 11 +#define cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_DLOM_SLAVE 12 +#define cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_DLIM_RFI 13 +#define cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_ETH 14 +#define cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_HSDLOM 15 +#define cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_HSDLIM 16 +#define cOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM_CTRL 17 + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_CHECKPOINT_TYPE_ENUM : +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_GSM_CHECKPOINT_TYPE_ENUM tOCT_UINT32 + +#define cOCTVC1_GSM_CHECKPOINT_TYPE_ENUM_START 0 +#define cOCTVC1_GSM_CHECKPOINT_TYPE_ENUM_END 1 + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_CHECKPOINT_STATE_ENUM : +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_GSM_CHECKPOINT_STATE_ENUM tOCT_UINT32 + +#define cOCTVC1_GSM_CHECKPOINT_STATE_ENUM_OK 0 +#define cOCTVC1_GSM_CHECKPOINT_STATE_ENUM_PROCESSING_ERROR 1 + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_SEVERITY_ENUM : +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_GSM_MSG_SEVERITY_ENUM tOCT_UINT32 + +#define cOCTVC1_GSM_MSG_SEVERITY_ENUM_INFO 10 +#define cOCTVC1_GSM_MSG_SEVERITY_ENUM_WARNING 20 +#define cOCTVC1_GSM_MSG_SEVERITY_ENUM_ERROR 30 +#define cOCTVC1_GSM_MSG_SEVERITY_ENUM_FATAL 40 + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_TRACING_TYPE_ENUM : +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_GSM_TRACING_TYPE_ENUM tOCT_UINT32 + +#define cOCTVC1_GSM_TRACING_TYPE_ENUM_DLOM_REQUEST ((tOCT_UINT32)(0x51|cOCTVC1_GSM_REQUEST_INDICATION_FLAG) ) +#define cOCTVC1_GSM_TRACING_TYPE_ENUM_DLOM_RESPONSE ((tOCT_UINT32)(0x52|cOCTVC1_GSM_RESPONSE_INDICATION_FLAG) ) +#define cOCTVC1_GSM_TRACING_TYPE_ENUM_DLIM_REQUEST ((tOCT_UINT32)(0x53|cOCTVC1_GSM_REQUEST_INDICATION_FLAG) ) +#define cOCTVC1_GSM_TRACING_TYPE_ENUM_DLIM_RESPONSE ((tOCT_UINT32)(0x54|cOCTVC1_GSM_RESPONSE_INDICATION_FLAG) ) +#define cOCTVC1_GSM_TRACING_TYPE_ENUM_ULOM_REQUEST ((tOCT_UINT32)(0x55|cOCTVC1_GSM_REQUEST_INDICATION_FLAG) ) +#define cOCTVC1_GSM_TRACING_TYPE_ENUM_ULOM_RESPONSE ((tOCT_UINT32)(0x56|cOCTVC1_GSM_RESPONSE_INDICATION_FLAG) ) +#define cOCTVC1_GSM_TRACING_TYPE_ENUM_ULIM_REQUEST ((tOCT_UINT32)(0x57|cOCTVC1_GSM_REQUEST_INDICATION_FLAG) ) +#define cOCTVC1_GSM_TRACING_TYPE_ENUM_ULIM_RESPONSE ((tOCT_UINT32)(0x58|cOCTVC1_GSM_RESPONSE_INDICATION_FLAG) ) +#define cOCTVC1_GSM_TRACING_TYPE_ENUM_ULIM_RACH_REQUEST ((tOCT_UINT32)(0x59|cOCTVC1_GSM_REQUEST_INDICATION_FLAG) ) +#define cOCTVC1_GSM_TRACING_TYPE_ENUM_ULIM_RACHM_RESPONSE ((tOCT_UINT32)(0x5A|cOCTVC1_GSM_RESPONSE_INDICATION_FLAG) ) +#define cOCTVC1_GSM_TRACING_TYPE_ENUM_ULIM_RACHP_RESPONSE ((tOCT_UINT32)(0x5B|cOCTVC1_GSM_RESPONSE_INDICATION_FLAG) ) +#define cOCTVC1_GSM_TRACING_TYPE_ENUM_SCHEDPARAMS 0x5C +#define cOCTVC1_GSM_TRACING_TYPE_ENUM_HSDLOM_REQUEST ((tOCT_UINT32)(0x5D|cOCTVC1_GSM_REQUEST_INDICATION_FLAG) ) +#define cOCTVC1_GSM_TRACING_TYPE_ENUM_HSDLOM_RESPONSE ((tOCT_UINT32)(0x5E|cOCTVC1_GSM_RESPONSE_INDICATION_FLAG) ) +#define cOCTVC1_GSM_TRACING_TYPE_ENUM_HSDLIM_REQUEST ((tOCT_UINT32)(0x5F|cOCTVC1_GSM_REQUEST_INDICATION_FLAG) ) +#define cOCTVC1_GSM_TRACING_TYPE_ENUM_HSDLIM_RESPONSE ((tOCT_UINT32)(0x60|cOCTVC1_GSM_RESPONSE_INDICATION_FLAG) ) +#define cOCTVC1_GSM_TRACING_TYPE_ENUM_NOTDEFINED 0x7F + +/***************************** NOTIFICATIONS **********************************/ +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT + + Members: + Header + byu2Pad_u6TRXId + byu5Pad_u3TN + usFrameNumberMSW + usFrameNumberLSW +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_EVENT_HEADER Header; + tOCT_UINT8 byu2Pad_u6TRXId; + tOCT_UINT8 byu5Pad_u3TN; + tOCT_UINT16 usFrameNumberMSW; + tOCT_UINT16 usFrameNumberLSW; + +} tOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT + + Members: + Header + byu2Pad_u6TRXId + byu5SAPI_u3Dir + bySubchannelNum + byu5Pad_u3TN + usFrameNumberMSW + usFrameNumberLSW + tMeasurementInfo + usDataFrameLength + ausDataFrameContents +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_EVENT_HEADER Header; + tOCT_UINT8 byu2Pad_u6TRXId; + tOCT_UINT8 byu5SAPI_u3Dir; + tOCT_UINT8 bySubchannelNum; + tOCT_UINT8 byu5Pad_u3TN; + tOCT_UINT16 usFrameNumberMSW; + tOCT_UINT16 usFrameNumberLSW; + tOCTVC1_GSM_tMEASUREMENT_INFO tMeasurementInfo; + tOCT_UINT16 usDataFrameLength; + tOCT_UINT16 ausDataFrameContents[cOCTVC1_GSM_cSDR_DATA_IND_MAX_DATA_SIZE_WORDS]; + +} tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_MODULE_TRX_RADIO_READY_EVT + + Members: + Header + byu2Pad_u6TRXId +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_EVENT_HEADER Header; + tOCT_UINT8 byu2Pad_u6TRXId; + +} tOCTVC1_GSM_MSG_MODULE_TRX_RADIO_READY_EVT; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT + + Members: + Header + byu2Pad_u6TRXId + byu3TN_u5SAPI + bySubchannelNum + byPad + usFrameNumberMSW + usFrameNumberLSW +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_EVENT_HEADER Header; + tOCT_UINT8 byu2Pad_u6TRXId; + tOCT_UINT8 byu3TN_u5SAPI; + tOCT_UINT8 bySubchannelNum; + tOCT_UINT8 byPad; + tOCT_UINT16 usFrameNumberMSW; + tOCT_UINT16 usFrameNumberLSW; + +} tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT + + Members: + Header + byu2Pad_u6TRXId + byuu3TN_u5SAPI + bySubchannelNum + byBurstType + usFrameNumberMSW + usFrameNumberLSW + tMeasurementInfo + usMessageLength + Range: [0..cOCTVC1_GSM_cSDR_RACH_IND_MAX_MESSAGE_LENGTH_WORDS] + ausMessageContents +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_EVENT_HEADER Header; + tOCT_UINT8 byu2Pad_u6TRXId; + tOCT_UINT8 byuu3TN_u5SAPI; + tOCT_UINT8 bySubchannelNum; + tOCT_UINT8 byBurstType; + tOCT_UINT16 usFrameNumberMSW; + tOCT_UINT16 usFrameNumberLSW; + tOCTVC1_GSM_tMEASUREMENT_INFO tMeasurementInfo; + tOCT_UINT16 usMessageLength; + tOCT_UINT16 ausMessageContents[cOCTVC1_GSM_cSDR_RACH_IND_MAX_MESSAGE_LENGTH_WORDS]; + +} tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_MODULE_ERROR_EVT + + Members: + Header + hProcessUnit + Handle of the object that is sending the event. + ulErrorCode +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_EVENT_HEADER Header; + tOCTVC1_HANDLE hProcessUnit; + tOCTVC1_GSM_ERR_ENUM ulErrorCode; + +} tOCTVC1_GSM_MSG_MODULE_ERROR_EVT; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT + + Members: + Header + hProcessUnit + Handle of the object that is sending the event. + ulMessageCode + ulSeverityLevel +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_EVENT_HEADER Header; + tOCTVC1_HANDLE hProcessUnit; + tOCTVC1_GSM_2G_MSG_ENUM ulMessageCode; + tOCTVC1_GSM_MSG_SEVERITY_ENUM ulSeverityLevel; + +} tOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT + + Members: + Header + OCTVC1 Event Header. + hProcessUnit + Handle of the object that is sending the event. + ulCoreId + The logical core Id, on which the data processing occurs. + ulFrameIndex + Frame index being processed. + ulSlotIndex + Slot index being processed. + ulCheckPointType + Type of checkpoint . + ulProcessUnitType + Type of data or codec processed. + ulState + The status of the actual processing + aulReserved + Reserved for future used. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_EVENT_HEADER Header; + tOCTVC1_HANDLE hProcessUnit; + tOCT_UINT32 ulCoreId; + tOCT_UINT32 ulFrameIndex; + tOCT_UINT32 ulSlotIndex; + tOCTVC1_GSM_CHECKPOINT_TYPE_ENUM ulCheckPointType; + tOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM ulProcessUnitType; + tOCTVC1_GSM_CHECKPOINT_STATE_ENUM ulState; + tOCT_UINT32 aulReserved[cOCTVC1_GSM_NB_RESERVED]; + +} tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_MODULE_TRACING_EVT + + Members: + Header + OCTVC1 Event Header. + hProcessUnit + Handle of the object that is sending the event. + ulCoreId + The logical core Id, on which the data processing occurs. + ulTraceType + The type of tracing. + ulLastTracePacket + cOCT_FALSE Indicates that more trace packet are to come. + cOCT_TRUE Indicates that the tracing is completed. + ulTraceIndex + This is the tracing packet idx. This is used when tracing are sent into muliple + packets . + ulPayloadSizeBytes + The number of valid data that can be found in abyUnparsedPayload. + abyUnparsedPayload + Ctx structure +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_EVENT_HEADER Header; + tOCTVC1_HANDLE hProcessUnit; + tOCT_UINT32 ulCoreId; + tOCTVC1_GSM_TRACING_TYPE_ENUM ulTraceType; + tOCT_BOOL32 ulLastTracePacket; + tOCT_UINT32 ulTraceIndex; + tOCT_UINT32 ulPayloadSizeBytes; + tOCT_UINT8 abyUnparsedPayload[cOCTVC1_GSM_TRACING_BUFFER_SIZE]; + +} tOCTVC1_GSM_MSG_MODULE_TRACING_EVT; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EVT + + Members: + Header + hProcessUnit + Handle of the object that is sending the event. + ulErrorCode +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_EVENT_HEADER Header; + tOCTVC1_HANDLE hProcessUnit; + tOCTVC1_GSM_ERR_ENUM ulErrorCode; + +} tOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EVT; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT + + Members: + Header + hProcessUnit + Handle of the object that is sending the event. + ulMessageCode + ulSeverityLevel +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_EVENT_HEADER Header; + tOCTVC1_HANDLE hProcessUnit; + tOCTVC1_GSM_2G_MSG_ENUM ulMessageCode; + tOCTVC1_GSM_MSG_SEVERITY_ENUM ulSeverityLevel; + +} tOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT + + Members: + Header + OCTVC1 Event Header. + hProcessUnit + Handle of the object that is sending the event. + ulCoreId + The logical core Id, on which the data processing occurs. + ulFrameIndex + Frame index being processed. + ulSlotIndex + Slot index being processed. + ulCheckPointType + Type of checkpoint . + ulProcessUnitType + Type of data or codec processed. + ulState + The status of the actual processing + aulReserved + Reserved for future used. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_EVENT_HEADER Header; + tOCTVC1_HANDLE hProcessUnit; + tOCT_UINT32 ulCoreId; + tOCT_UINT32 ulFrameIndex; + tOCT_UINT32 ulSlotIndex; + tOCTVC1_GSM_CHECKPOINT_TYPE_ENUM ulCheckPointType; + tOCTVC1_GSM_PROCESS_UNIT_TYPE_ENUM ulProcessUnitType; + tOCTVC1_GSM_CHECKPOINT_STATE_ENUM ulState; + tOCT_UINT32 aulReserved[cOCTVC1_GSM_NB_RESERVED]; + +} tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT + + Members: + Header + OCTVC1 Event Header. + hProcessUnit + Handle of the object that is sending the event. + ulCoreId + The logical core Id, on which the data processing occurs. + ulTraceType + The type of tracing. + ulPayloadSizeBytes + The number of valid data that can be found in abyUnparsedPayload. + abyUnparsedPayload + Ctx structure +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_EVENT_HEADER Header; + tOCTVC1_HANDLE hProcessUnit; + tOCT_UINT32 ulCoreId; + tOCTVC1_GSM_TRACING_TYPE_ENUM ulTraceType; + tOCT_UINT32 ulPayloadSizeBytes; + tOCT_UINT8 abyUnparsedPayload[cOCTVC1_GSM_TRACING_BUFFER_SIZE]; + +} tOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT; + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_MSG_TEST_ETSI_TEST_REPORT_EVT + + Members: + Header + usTodo +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_EVENT_HEADER Header; + tOCT_UINT16 usTodo; + +} tOCTVC1_GSM_MSG_TEST_ETSI_TEST_REPORT_EVT; + + +#endif /* __OCTVC1_GSM_EVT_H__ */ + diff --git a/software/include/vocallo/gsm/octvc1_gsm_evt_swap.h b/software/include/vocallo/gsm/octvc1_gsm_evt_swap.h new file mode 100644 index 0000000..040032e --- /dev/null +++ b/software/include/vocallo/gsm/octvc1_gsm_evt_swap.h @@ -0,0 +1,249 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* + +File: octvc1_gsm_evt_swap.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#ifndef __OCTVC1_GSM_EVT_SWAP_H__ +#define __OCTVC1_GSM_EVT_SWAP_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************** INCLUDE FILES *******************************/ +#include "../octvc1_swap_hdrs.h" +#include "octvc1_gsm_evt.h" + +/********************************* MACROS **********************************/ + + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT * pOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT *)pOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT)->Header ); } \ + ((tOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT *)pOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT)->usFrameNumberMSW = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT *)pOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT)->usFrameNumberMSW); \ + ((tOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT *)pOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT)->usFrameNumberLSW = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT *)pOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT)->usFrameNumberLSW); \ +} +#else +#define mOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT_SWAP( pOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT * pOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT *)pOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT)->Header ); } \ + ((tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT *)pOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT)->usFrameNumberMSW = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT *)pOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT)->usFrameNumberMSW); \ + ((tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT *)pOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT)->usFrameNumberLSW = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT *)pOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT)->usFrameNumberLSW); \ + { mOCTVC1_GSM_tMEASUREMENT_INFO_SWAP( &((tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT *)pOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT)->tMeasurementInfo ); } \ + ((tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT *)pOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT)->usDataFrameLength = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT *)pOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT)->usDataFrameLength); \ + { tOCT_UINT32 iOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT; \ + for( iOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT=0; \ + iOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT<(cOCTVC1_GSM_cSDR_DATA_IND_MAX_DATA_SIZE_WORDS);iOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT++ ) \ + ((tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT *)pOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT)->ausDataFrameContents[iOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT] = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT *)pOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT)->ausDataFrameContents[iOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT]);} \ +} +#else +#define mOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT_SWAP( pOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_MODULE_TRX_RADIO_READY_EVT_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_MODULE_TRX_RADIO_READY_EVT * pOCTVC1_GSM_MSG_MODULE_TRX_RADIO_READY_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_GSM_MSG_MODULE_TRX_RADIO_READY_EVT *)pOCTVC1_GSM_MSG_MODULE_TRX_RADIO_READY_EVT)->Header ); } \ +} +#else +#define mOCTVC1_GSM_MSG_MODULE_TRX_RADIO_READY_EVT_SWAP( pOCTVC1_GSM_MSG_MODULE_TRX_RADIO_READY_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT * pOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT *)pOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT)->Header ); } \ + ((tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT *)pOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT)->usFrameNumberMSW = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT *)pOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT)->usFrameNumberMSW); \ + ((tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT *)pOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT)->usFrameNumberLSW = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT *)pOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT)->usFrameNumberLSW); \ +} +#else +#define mOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT_SWAP( pOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT * pOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT *)pOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT)->Header ); } \ + ((tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT *)pOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT)->usFrameNumberMSW = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT *)pOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT)->usFrameNumberMSW); \ + ((tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT *)pOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT)->usFrameNumberLSW = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT *)pOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT)->usFrameNumberLSW); \ + { mOCTVC1_GSM_tMEASUREMENT_INFO_SWAP( &((tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT *)pOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT)->tMeasurementInfo ); } \ + ((tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT *)pOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT)->usMessageLength = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT *)pOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT)->usMessageLength); \ + { tOCT_UINT32 iOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT; \ + for( iOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT=0; \ + iOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT<(cOCTVC1_GSM_cSDR_RACH_IND_MAX_MESSAGE_LENGTH_WORDS);iOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT++ ) \ + ((tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT *)pOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT)->ausMessageContents[iOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT] = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT *)pOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT)->ausMessageContents[iOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT]);} \ +} +#else +#define mOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT_SWAP( pOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_MODULE_ERROR_EVT_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_MODULE_ERROR_EVT * pOCTVC1_GSM_MSG_MODULE_ERROR_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_GSM_MSG_MODULE_ERROR_EVT *)pOCTVC1_GSM_MSG_MODULE_ERROR_EVT)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_GSM_MSG_MODULE_ERROR_EVT *)pOCTVC1_GSM_MSG_MODULE_ERROR_EVT)->hProcessUnit ); } \ + ((tOCTVC1_GSM_MSG_MODULE_ERROR_EVT *)pOCTVC1_GSM_MSG_MODULE_ERROR_EVT)->ulErrorCode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_MODULE_ERROR_EVT *)pOCTVC1_GSM_MSG_MODULE_ERROR_EVT)->ulErrorCode); \ +} +#else +#define mOCTVC1_GSM_MSG_MODULE_ERROR_EVT_SWAP( pOCTVC1_GSM_MSG_MODULE_ERROR_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT * pOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT *)pOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT *)pOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT)->hProcessUnit ); } \ + ((tOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT *)pOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT)->ulMessageCode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT *)pOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT)->ulMessageCode); \ + ((tOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT *)pOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT)->ulSeverityLevel = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT *)pOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT)->ulSeverityLevel); \ +} +#else +#define mOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT_SWAP( pOCTVC1_GSM_MSG_MODULE_MESSAGE_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT * pOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT *)pOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT *)pOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT)->hProcessUnit ); } \ + ((tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT *)pOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT)->ulCoreId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT *)pOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT)->ulCoreId); \ + ((tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT *)pOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT)->ulFrameIndex = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT *)pOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT)->ulFrameIndex); \ + ((tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT *)pOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT)->ulSlotIndex = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT *)pOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT)->ulSlotIndex); \ + ((tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT *)pOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT)->ulCheckPointType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT *)pOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT)->ulCheckPointType); \ + ((tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT *)pOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT)->ulProcessUnitType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT *)pOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT)->ulProcessUnitType); \ + ((tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT *)pOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT)->ulState = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT *)pOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT)->ulState); \ + { tOCT_UINT32 iOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT; \ + for( iOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT=0; \ + iOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT<(cOCTVC1_GSM_NB_RESERVED);iOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT++ ) \ + ((tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT *)pOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT)->aulReserved[iOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT] = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT *)pOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT)->aulReserved[iOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT]);}\ +} +#else +#define mOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT_SWAP( pOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_MODULE_TRACING_EVT_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_MODULE_TRACING_EVT * pOCTVC1_GSM_MSG_MODULE_TRACING_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_GSM_MSG_MODULE_TRACING_EVT *)pOCTVC1_GSM_MSG_MODULE_TRACING_EVT)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_GSM_MSG_MODULE_TRACING_EVT *)pOCTVC1_GSM_MSG_MODULE_TRACING_EVT)->hProcessUnit ); } \ + ((tOCTVC1_GSM_MSG_MODULE_TRACING_EVT *)pOCTVC1_GSM_MSG_MODULE_TRACING_EVT)->ulCoreId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_MODULE_TRACING_EVT *)pOCTVC1_GSM_MSG_MODULE_TRACING_EVT)->ulCoreId); \ + ((tOCTVC1_GSM_MSG_MODULE_TRACING_EVT *)pOCTVC1_GSM_MSG_MODULE_TRACING_EVT)->ulTraceType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_MODULE_TRACING_EVT *)pOCTVC1_GSM_MSG_MODULE_TRACING_EVT)->ulTraceType); \ + ((tOCTVC1_GSM_MSG_MODULE_TRACING_EVT *)pOCTVC1_GSM_MSG_MODULE_TRACING_EVT)->ulLastTracePacket = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_MODULE_TRACING_EVT *)pOCTVC1_GSM_MSG_MODULE_TRACING_EVT)->ulLastTracePacket); \ + ((tOCTVC1_GSM_MSG_MODULE_TRACING_EVT *)pOCTVC1_GSM_MSG_MODULE_TRACING_EVT)->ulTraceIndex = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_MODULE_TRACING_EVT *)pOCTVC1_GSM_MSG_MODULE_TRACING_EVT)->ulTraceIndex); \ + ((tOCTVC1_GSM_MSG_MODULE_TRACING_EVT *)pOCTVC1_GSM_MSG_MODULE_TRACING_EVT)->ulPayloadSizeBytes = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_MODULE_TRACING_EVT *)pOCTVC1_GSM_MSG_MODULE_TRACING_EVT)->ulPayloadSizeBytes); \ +} +#else +#define mOCTVC1_GSM_MSG_MODULE_TRACING_EVT_SWAP( pOCTVC1_GSM_MSG_MODULE_TRACING_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EVT_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EVT * pOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EVT *)pOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EVT)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EVT *)pOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EVT)->hProcessUnit ); } \ + ((tOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EVT *)pOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EVT)->ulErrorCode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EVT *)pOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EVT)->ulErrorCode); \ +} +#else +#define mOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EVT_SWAP( pOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT * pOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT *)pOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT *)pOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT)->hProcessUnit ); } \ + ((tOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT *)pOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT)->ulMessageCode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT *)pOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT)->ulMessageCode); \ + ((tOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT *)pOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT)->ulSeverityLevel = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT *)pOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT)->ulSeverityLevel); \ +} +#else +#define mOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT_SWAP( pOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT * pOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT *)pOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT *)pOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT)->hProcessUnit ); } \ + ((tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT *)pOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT)->ulCoreId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT *)pOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT)->ulCoreId); \ + ((tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT *)pOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT)->ulFrameIndex = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT *)pOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT)->ulFrameIndex); \ + ((tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT *)pOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT)->ulSlotIndex = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT *)pOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT)->ulSlotIndex); \ + ((tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT *)pOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT)->ulCheckPointType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT *)pOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT)->ulCheckPointType); \ + ((tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT *)pOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT)->ulProcessUnitType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT *)pOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT)->ulProcessUnitType); \ + ((tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT *)pOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT)->ulState = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT *)pOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT)->ulState); \ + { tOCT_UINT32 iOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT; \ + for( iOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT=0; \ + iOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT<(cOCTVC1_GSM_NB_RESERVED);iOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT++ ) \ + ((tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT *)pOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT)->aulReserved[iOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT] = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT *)pOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT)->aulReserved[iOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT]);}\ +} +#else +#define mOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT_SWAP( pOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT * pOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT *)pOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT *)pOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT)->hProcessUnit ); } \ + ((tOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT *)pOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT)->ulCoreId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT *)pOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT)->ulCoreId); \ + ((tOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT *)pOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT)->ulTraceType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT *)pOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT)->ulTraceType); \ + ((tOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT *)pOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT)->ulPayloadSizeBytes = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT *)pOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT)->ulPayloadSizeBytes); \ +} +#else +#define mOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT_SWAP( pOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_GSM_MSG_TEST_ETSI_TEST_REPORT_EVT_SWAP( _f_pParms ){ tOCTVC1_GSM_MSG_TEST_ETSI_TEST_REPORT_EVT * pOCTVC1_GSM_MSG_TEST_ETSI_TEST_REPORT_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_GSM_MSG_TEST_ETSI_TEST_REPORT_EVT *)pOCTVC1_GSM_MSG_TEST_ETSI_TEST_REPORT_EVT)->Header ); } \ + ((tOCTVC1_GSM_MSG_TEST_ETSI_TEST_REPORT_EVT *)pOCTVC1_GSM_MSG_TEST_ETSI_TEST_REPORT_EVT)->usTodo = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_GSM_MSG_TEST_ETSI_TEST_REPORT_EVT *)pOCTVC1_GSM_MSG_TEST_ETSI_TEST_REPORT_EVT)->usTodo); \ +} +#else +#define mOCTVC1_GSM_MSG_TEST_ETSI_TEST_REPORT_EVT_SWAP( pOCTVC1_GSM_MSG_TEST_ETSI_TEST_REPORT_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#ifdef __cplusplus +} + +#endif + +#endif /* __OCTVC1_GSM_EVT_SWAP_H__ */ diff --git a/software/include/vocallo/gsm/octvc1_gsm_id.h b/software/include/vocallo/gsm/octvc1_gsm_id.h new file mode 100644 index 0000000..c61418b --- /dev/null +++ b/software/include/vocallo/gsm/octvc1_gsm_id.h @@ -0,0 +1,78 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_GSM_ID.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: Contains the identifiers for the GSM API. + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Octasic_Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_GSM_ID_H__ +#define __OCTVC1_GSM_ID_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "../octvc1_base.h" + +/**************************************************************************** + Command IDs + ****************************************************************************/ +#define cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CID ( ( 0x001 + cOCTVC1_GSM_CID_BASE )| cOCTVC1_MSG_NO_RESPONSE_FLAG ) +#define cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CID ( ( 0x002 + cOCTVC1_GSM_CID_BASE )| cOCTVC1_MSG_NO_RESPONSE_FLAG ) +#define cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CID ( 0x003 + cOCTVC1_GSM_CID_BASE ) +#define cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CID ( 0x004 + cOCTVC1_GSM_CID_BASE ) +#define cOCTVC1_GSM_MSG_TRX_STATUS_CID ( 0x005 + cOCTVC1_GSM_CID_BASE ) +#define cOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_CID ( 0x006 + cOCTVC1_GSM_CID_BASE ) +#define cOCTVC1_GSM_MSG_TRX_RESET_CID ( 0x008 + cOCTVC1_GSM_CID_BASE ) +#define cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_CID ( 0x009 + cOCTVC1_GSM_CID_BASE ) +#define cOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CID ( 0x00b + cOCTVC1_GSM_CID_BASE ) +#define cOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CID ( 0x00c + cOCTVC1_GSM_CID_BASE ) +#define cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CID ( 0x00d + cOCTVC1_GSM_CID_BASE ) +#define cOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_CID ( 0x00f + cOCTVC1_GSM_CID_BASE ) +#define cOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_CID ( 0x011 + cOCTVC1_GSM_CID_BASE ) +#define cOCTVC1_GSM_MSG_TEST_START_ETSI_CID ( 0x012 + cOCTVC1_GSM_CID_BASE ) +#define cOCTVC1_GSM_MSG_TEST_START_FCC_CID ( 0x013 + cOCTVC1_GSM_CID_BASE ) +#define cOCTVC1_GSM_MSG_TEST_END_ETSI_CID ( 0x014 + cOCTVC1_GSM_CID_BASE ) +#define cOCTVC1_GSM_MSG_TEST_END_FCC_CID ( 0x015 + cOCTVC1_GSM_CID_BASE ) +#define cOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CID ( 0x021 + cOCTVC1_GSM_CID_BASE ) +#define cOCTVC1_GSM_MSG_MODULE_INFO_EVT_CID ( 0x022 + cOCTVC1_GSM_CID_BASE ) +#define cOCTVC1_GSM_MSG_MODULE_INFO_CID ( 0x023 + cOCTVC1_GSM_CID_BASE ) +#define cOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CID ( 0x024 + cOCTVC1_GSM_CID_BASE ) +#define cOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_CID ( 0x025 + cOCTVC1_GSM_CID_BASE ) +#define cOCTVC1_GSM_MSG_TRX_CONFIGURE_CID ( 0x100 + cOCTVC1_GSM_CID_BASE ) +#define cOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_CID ( 0x106 + cOCTVC1_GSM_CID_BASE ) +#define cOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_CID ( 0x107 + cOCTVC1_GSM_CID_BASE ) +#define cOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CID ( 0x108 + cOCTVC1_GSM_CID_BASE ) + +#define cOCTVC1_GSM_CID_MAX (( 0x108 + 1 ) & 0xFFF) + +/**************************************************************************** + Event IDs + ****************************************************************************/ +#define cOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EID ( 0x0001 + cOCTVC1_GSM_EID_BASE ) +#define cOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EID ( 0x0002 + cOCTVC1_GSM_EID_BASE ) +#define cOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EID ( 0x0007 + cOCTVC1_GSM_EID_BASE ) +#define cOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EID ( 0x000e + cOCTVC1_GSM_EID_BASE ) +#define cOCTVC1_GSM_MSG_TEST_ETSI_TEST_REPORT_EID ( 0x0016 + cOCTVC1_GSM_EID_BASE ) +#define cOCTVC1_GSM_MSG_MODULE_TRX_RADIO_READY_EID ( 0x0017 + cOCTVC1_GSM_EID_BASE ) +#define cOCTVC1_GSM_MSG_MODULE_ERROR_EID ( 0x0021 + cOCTVC1_GSM_EID_BASE ) +#define cOCTVC1_GSM_MSG_MODULE_MESSAGE_EID ( 0x0022 + cOCTVC1_GSM_EID_BASE ) +#define cOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EID ( 0x0023 + cOCTVC1_GSM_EID_BASE ) +#define cOCTVC1_GSM_MSG_MODULE_TRACING_EID ( 0x0024 + cOCTVC1_GSM_EID_BASE ) +#define cOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EID ( 0x0025 + cOCTVC1_GSM_EID_BASE ) +#define cOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EID ( 0x0026 + cOCTVC1_GSM_EID_BASE ) +#define cOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EID ( 0x0027 + cOCTVC1_GSM_EID_BASE ) +#define cOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EID ( 0x0028 + cOCTVC1_GSM_EID_BASE ) + +#define cOCTVC1_GSM_EID_MAX (( 0x0028 + 1 ) & 0xFFFF) + + +#endif /* __OCTVC1_GSM_ID_H__ */ + diff --git a/software/include/vocallo/gsm/octvc1_gsm_rc.h b/software/include/vocallo/gsm/octvc1_gsm_rc.h new file mode 100644 index 0000000..231059a --- /dev/null +++ b/software/include/vocallo/gsm/octvc1_gsm_rc.h @@ -0,0 +1,120 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_GSM_RC.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: Contains the return codes for the GSM API. + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Octasic_Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef OCTVC1_GSM_RC_H__ +#define OCTVC1_GSM_RC_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "../octvc1_base.h" + +/***************************** DATA TYPES *******************************/ + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_ERR_ENUM : +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_GSM_ERR_ENUM tOCT_UINT32 + +#define cOCTVC1_GSM_ERR_ENUM_GENERIC_BASE 0x0100 +#define cOCTVC1_GSM_ERR_ENUM_GENERIC_INPUT_FIFO_OVERFLOW ( 0x0000 + cOCTVC1_GSM_ERR_ENUM_GENERIC_BASE ) +#define cOCTVC1_GSM_ERR_ENUM_GENERIC_INVALID_INPUT_PKT_FORMAT ( 0x0002 + cOCTVC1_GSM_ERR_ENUM_GENERIC_BASE ) +#define cOCTVC1_GSM_ERR_ENUM_GENERIC_OUTPUT_FIFO_FULL ( 0x0003 + cOCTVC1_GSM_ERR_ENUM_GENERIC_BASE ) +#define cOCTVC1_GSM_ERR_ENUM_GENERIC_INPUT_FIFO_EMPTY ( 0x0005 + cOCTVC1_GSM_ERR_ENUM_GENERIC_BASE ) + +#define cOCTVC1_GSM_ERR_ENUM_SYSTEM_BASE 0x0200 +#define cOCTVC1_GSM_ERR_ENUM_SYSTEM_BOOT_ERROR ( 0x0001 + cOCTVC1_GSM_ERR_ENUM_SYSTEM_BASE ) /* Unexpected error. */ +#define cOCTVC1_GSM_ERR_ENUM_SYSTEM_EXIT_ERROR ( 0x0001 + cOCTVC1_GSM_ERR_ENUM_SYSTEM_BASE ) /* Unexpected error. */ + +#define cOCTVC1_GSM_ERR_ENUM_DMA_BASE 0x0300 +#define cOCTVC1_GSM_ERR_ENUM_DMA_INIT_ERROR ( 0x0001 + cOCTVC1_GSM_ERR_ENUM_DMA_BASE ) +#define cOCTVC1_GSM_ERR_ENUM_DMA_MODE_ERROR ( 0x0002 + cOCTVC1_GSM_ERR_ENUM_DMA_BASE ) +#define cOCTVC1_GSM_ERR_ENUM_DMA_WRITE_ERROR ( 0x0003 + cOCTVC1_GSM_ERR_ENUM_DMA_BASE ) +#define cOCTVC1_GSM_ERR_ENUM_DMA_READ_ERROR ( 0x0004 + cOCTVC1_GSM_ERR_ENUM_DMA_BASE ) + +#define cOCTVC1_GSM_ERR_ENUM_DOWNLINK_INNER_MODEM_BASE 0x0500 +#define cOCTVC1_GSM_ERR_ENUM_DOWNLINK_INNER_MODEM_INTERNAL_ERROR ( 0x0001 + cOCTVC1_GSM_ERR_ENUM_DOWNLINK_INNER_MODEM_BASE ) /* Unexpected error. */ + +#define cOCTVC1_GSM_ERR_ENUM_DOWNLINK_OUTER_MODEM_BASE 0x0600 +#define cOCTVC1_GSM_ERR_ENUM_DOWNLINK_OUTER_MODEM_INTERNAL_ERROR ( 0x0001 + cOCTVC1_GSM_ERR_ENUM_DOWNLINK_OUTER_MODEM_BASE ) /* Unexpected error. */ + +#define cOCTVC1_GSM_ERR_ENUM_UPLINK_INNER_MODEM_BASE 0x0700 +#define cOCTVC1_GSM_ERR_ENUM_UPLINK_INNER_MODEM_INTERNAL_ERROR ( 0x0001 + cOCTVC1_GSM_ERR_ENUM_UPLINK_INNER_MODEM_BASE ) /* Unexpected error. */ + +#define cOCTVC1_GSM_ERR_ENUM_UPLINK_OUTER_MODEM_BASE 0x0800 +#define cOCTVC1_GSM_ERR_ENUM_UPLINK_OUTER_MODEM_INTERNAL_ERROR ( 0x0001 + cOCTVC1_GSM_ERR_ENUM_UPLINK_OUTER_MODEM_BASE ) /* Unexpected error. */ + +#define cOCTVC1_GSM_ERR_ENUM_RF_INTERFACE_BASE 0x0900 +#define cOCTVC1_GSM_ERR_ENUM_RF_INTERFACE_INTERNAL_ERROR ( 0x0001 + cOCTVC1_GSM_ERR_ENUM_RF_INTERFACE_BASE ) /* Unexpected error. */ + +#define cOCTVC1_GSM_ERR_ENUM_LAST 0x1000 + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_RC : Generic message and commands errors +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_GSM_RC tOCT_UINT32 + + +/*------------------------------------------------------------------------------------- + tOCTVC1_GSM_2G_MSG_ENUM : +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_GSM_2G_MSG_ENUM tOCT_UINT32 + +#define cOCTVC1_GSM_2G_MSG_ENUM_INTERNAL_ERROR 0x0001 +#define cOCTVC1_GSM_2G_MSG_ENUM_GENERIC_BASE 0x0100 +#define cOCTVC1_GSM_2G_MSG_ENUM_GENERIC_HELLO_WORLD ( 0x0000 + cOCTVC1_GSM_2G_MSG_ENUM_GENERIC_BASE ) + +#define cOCTVC1_GSM_2G_MSG_ENUM_SPECIFIC_SUBJECT_BASE 0x0200 +#define cOCTVC1_GSM_2G_MSG_ENUM_SPECIFIC_SUBJECT_HELLO_WORLD ( 0x0001 + cOCTVC1_GSM_2G_MSG_ENUM_SPECIFIC_SUBJECT_BASE ) /* Unexpected error. */ + +#define cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_BASE 0x0300 +#define cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_ULIM_READY ( 0x0001 + cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_BASE ) /* The up link inner modem is ready to process data. */ +#define cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_ULOM_READY ( 0x0002 + cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_BASE ) /* The up link outer modem is ready to process data. */ +#define cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_DLIM_READY ( 0x0003 + cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_BASE ) /* The down link inner modem is ready to process data. */ +#define cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_DLOM_READY ( 0x0004 + cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_BASE ) /* The down link outer modem is ready to process data. */ +#define cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_L1C_READY ( 0x0005 + cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_BASE ) /* The down link outer modem is ready to process data. */ +#define cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_RACH_READY ( 0x0006 + cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_BASE ) /* The down link outer modem is ready to process data. */ +#define cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_DL_RFI_READY ( 0x0007 + cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_BASE ) /* The down link radio frequency interface ready to process data. */ +#define cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_UL_RFI_READY ( 0x0008 + cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_BASE ) /* The up link radio frequency interface ready to process data. */ +#define cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_HSDLOM_READY ( 0x0009 + cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_BASE ) /* The up link radio frequency interface ready to process data. */ +#define cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_HSDLIM_READY ( 0x000A + cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_BASE ) /* The up link radio frequency interface ready to process data. */ +#define cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_MODEM_SETUP_COMPLETED ( 0x000B + cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_BASE ) /* Indicates that the modem setup is completed. */ +#define cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_CELL_SETUP_COMPLETED ( 0x000C + cOCTVC1_GSM_2G_MSG_ENUM_SYSTEM_BASE ) /* Indicate that the cell setup is completed. */ + +#define cOCTVC1_GSM_2G_MSG_ENUM_ULIM_BASE 0x0400 +#define cOCTVC1_GSM_2G_MSG_ENUM_ULIM_RACH_DETECT ( 0x0001 + cOCTVC1_GSM_2G_MSG_ENUM_ULIM_BASE ) /* Random access channel dectection. */ + +#define cOCTVC1_GSM_2G_MSG_ENUM_LAST 0x1000 + +/**************************************************************************** + GSM return codes + ****************************************************************************/ + +/**************************************************************************** + GENERIC return codes + ****************************************************************************/ +#define cOCTVC1_GSM_GENERIC_RC_BASE ( 0x0100 + cOCTVC1_GSM_RC_BASE ) + +#define cOCTVC1_GSM_RC_GENERIC_EVENT_MASK_INVALID ( 0x0000 + cOCTVC1_GSM_GENERIC_RC_BASE ) + +/**************************************************************************** + Validate return codes + ****************************************************************************/ +#define cOCTVC1_GSM_AUTO_VALIDATE_RC_BASE ( 0xF000 + cOCTVC1_GSM_RC_BASE ) + +#define cOCTVC1_GSM_RC_MODULE__INVALID_US_MESSAGE_LENGTH ( 0x1 + cOCTVC1_GSM_AUTO_VALIDATE_RC_BASE ) + +#endif /* OCTVC1_GSM_RC_H__ */ + diff --git a/software/include/vocallo/gsm/octvc1_gsm_version.h b/software/include/vocallo/gsm/octvc1_gsm_version.h new file mode 100644 index 0000000..60f25f9 --- /dev/null +++ b/software/include/vocallo/gsm/octvc1_gsm_version.h @@ -0,0 +1,39 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_GSM_VERSION.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: Contains the version of the GSM API interface. + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Octasic_Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_GSM_VERSION_H__ +#define __OCTVC1_GSM_VERSION_H__ + + +/* The version ID is separated into the following sections: + + bit[31:25]: Major version + bit[24:18]: Minor version + bit[17:11]: Bug fix version + bit[10:0]: Build number +*/ +#define cOCTVC1_GSM_VERSION_MAJOR 1 +#define cOCTVC1_GSM_VERSION_MINOR 0 +#define cOCTVC1_GSM_VERSION_MAINTENANCE 0 +#define cOCTVC1_GSM_VERSION_BUILD 0 + +#define cOCTVC1_GSM_VERSION_ID ( (cOCTVC1_GSM_VERSION_MAJOR << 25) + \ + (cOCTVC1_GSM_VERSION_MINOR << 18) + \ + (cOCTVC1_GSM_VERSION_MAINTENANCE << 11) + \ + cOCTVC1_GSM_VERSION_BUILD ) + +#endif /* __OCTVC1_GSM_VERSION_H__ */ + diff --git a/software/include/vocallo/main/octvc1_main_api.h b/software/include/vocallo/main/octvc1_main_api.h new file mode 100644 index 0000000..ffb74f3 --- /dev/null +++ b/software/include/vocallo/main/octvc1_main_api.h @@ -0,0 +1,3264 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_MAIN_API.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: Contains the definition of the MAIN API. + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_MAIN_API_H__ +#define __OCTVC1_MAIN_API_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "../../octdev_types.h" +#include "../../octdev_devices.h" +#include "../octvc1_msg.h" +#include "../octvc1_handle.h" +#include "../octvc1_fifo.h" +#include "../octvc1_buffer.h" +#include "../octvc1_eth.h" +#include "../octvc1_mac.h" +#include "../octvc1_cursor.h" +#include "../octvc1_list.h" +#include "../octvc1_log.h" + +#include "octvc1_main_id.h" +#include "octvc1_main_rc.h" + +/************************ COMMON DEFINITIONS *******************************/ + +#define cOCTVC1_MAIN_MAX_CORE_NUMBER 24 /* Maximum number of core in the chip. */ +#define cOCTVC1_MAIN_SPI_ACCESS_TRANSFER_MAX_LENGTH 16 + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_SPI_CLOCK_POLARITY_ENUM : SPI clock polarity. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_MAIN_SPI_CLOCK_POLARITY_ENUM tOCT_UINT32 + +#define cOCTVC1_MAIN_SPI_CLOCK_POLARITY_ENUM_LOW 0 +#define cOCTVC1_MAIN_SPI_CLOCK_POLARITY_ENUM_HIGH 1 + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_SPI_CLOCK_PHASE_ENUM : SPI clock phase. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_MAIN_SPI_CLOCK_PHASE_ENUM tOCT_UINT32 + +#define cOCTVC1_MAIN_SPI_CLOCK_PHASE_ENUM_CHIP_SELECT_EDGE 0 +#define cOCTVC1_MAIN_SPI_CLOCK_PHASE_ENUM_CLOCK_TRANSITION 1 + +#define cOCTVC1_MAIN_DEVICE_MAX_INFO_BYTE_SIZE 768 /* Device info buffer size, in bytes. */ +#define cOCTVC1_MAIN_USER_MAX_INFO_BYTE_SIZE 512 /* User info buffer size, in bytes. */ +#define cOCTVC1_MAIN_FILE_MAX_DATA_BYTE_SIZE 400 /* File commands (read/write) buffer size, in bytes. */ +#define cOCTVC1_MAIN_BUFFER_MAX_DATA_BYTE_SIZE 1024 +#define cOCTVC1_MAIN_TRACING_START_MAX_NUM_BUFFER 4 +#define cOCTVC1_MAIN_API_LICENSING_MAX_STRING_LENGTH 63 /* Maximum length, including trailing zero that a licensed feature or module */ + /* name can have, in bytes. */ + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_LICENSING_CURSOR + + Members: + szFeatureName + NULL terminated name of the feature. + ulGetMode + Default: cOCTVC1_OBJECT_CURSOR_ENUM_FIRST +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCT_UINT8 szFeatureName[(cOCTVC1_MAIN_API_LICENSING_MAX_STRING_LENGTH+1)]; + tOCTVC1_OBJECT_CURSOR_ENUM ulGetMode; + +} tOCTVC1_MAIN_LICENSING_CURSOR; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_API_LICENSING_FEATURE_TYPE_ENUM : Licensing feature types. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_MAIN_API_LICENSING_FEATURE_TYPE_ENUM tOCT_UINT32 + +#define cOCTVC1_MAIN_API_LICENSING_FEATURE_TYPE_ENUM_FLAG 0x1 +#define cOCTVC1_MAIN_API_LICENSING_FEATURE_TYPE_ENUM_COUNT 0x2 +#define cOCTVC1_MAIN_API_LICENSING_FEATURE_TYPE_ENUM_MIN 0x3 +#define cOCTVC1_MAIN_API_LICENSING_FEATURE_TYPE_ENUM_MAX 0x4 + +/*------------------------------------------------------------------------------------- + MAIN API configuration values +-------------------------------------------------------------------------------------*/ +#define cOCTVC1_MAIN_FIFO_POOL_ID_MGW_SYSTEM 0 +#define cOCTVC1_MAIN_FIFO_POOL_ID_MGW_ROUTER 1 +#define cOCTVC1_MAIN_FIFO_POOL_ID_MGW_VSP_VOC 4 +#define cOCTVC1_MAIN_ETH_MAX_NUM_PORT 2 +#define cOCTVC1_MAIN_OCT1010_ETH_MAX_NUM_PORT 8 +#define cOCTVC1_MAIN_USER_INFO_SIZE 0x80 + +/*------------------------------------------------------------------------------------- + MAIN API configuration default values. +-------------------------------------------------------------------------------------*/ +#define cOCTVC1_MAIN_DEFAULT_ETH_PORT_PKT_QUEUES_BYTE_SIZE 1048576 +#define cOCTVC1_MAIN_DEFAULT_ETH_PORT_ACCEPT_ALL_MAC cOCT_FALSE +#define cOCTVC1_MAIN_DEFAULT_ETH_PORT_ACCEPT_UNICAST cOCT_TRUE +#define cOCTVC1_MAIN_DEFAULT_ETH_PORT_ACCEPT_MULTICAST cOCT_TRUE +#define cOCTVC1_MAIN_DEFAULT_ETH_PORT_ACCEPT_BAD_CRC_PKT cOCT_FALSE +#define cOCTVC1_MAIN_DEFAULT_ETH_PORT_LONG_PKT_FORMAT cOCT_FALSE +#define cOCTVC1_MAIN_DEFAULT_ETH_PORT_RESTRICTED_API cOCT_FALSE +#define cOCTVC1_MAIN_DEFAULT_ETH_PORT_BROADCAST_FORWARD_PORT cOCTVC1_ETH_PORT_ID_ENUM_INVALID +#define cOCTVC1_MAIN_DEFAULT_ETH_PORT_MULTICAST_FORWARD_PORT cOCTVC1_ETH_PORT_ID_ENUM_INVALID +#define cOCTVC1_MAIN_DEFAULT_ETH_PORT_UNICAST_FORWARD_PORT cOCTVC1_ETH_PORT_ID_ENUM_INVALID +#define cOCTVC1_MAIN_DEFAULT_ETH_PORT_RX_MIRROR_FORWARD_PORT cOCTVC1_ETH_PORT_ID_ENUM_INVALID +#define cOCTVC1_MAIN_DEFAULT_ETH_PORT_ETHERNET_PQ_TCI cOCTVC1_ETH_PORT_ID_ENUM_INVALID + +/*------------------------------------------------------------------------------------- + FIFO default values. +-------------------------------------------------------------------------------------*/ +#define cOCTVC1_MAIN_DEFAULT_FIFO_SYSTEM_FIFO_BYTE_SIZE 524288 +#define cOCTVC1_MAIN_DEFAULT_FIFO_ROUTER_FIFO_BYTE_SIZE 196608 +#define cOCTVC1_MAIN_DEFAULT_FIFO_ROUTER_FIFO_LARGE_BYTE_SIZE 1048576 +#define cOCTVC1_MAIN_DEFAULT_FIFO_VSP_VOC_FIFO_BYTE_SIZE 4096 + +/*------------------------------------------------------------------------------------- + GPIO default values. +-------------------------------------------------------------------------------------*/ +#define cOCTVC1_MAIN_DEFAULT_GPIO_OUTPUT_VALUE 0x00000000 +#define cOCTVC1_MAIN_DEFAULT_GPIO_TRISTATE_HIGH 0x00000000 +#define cOCTVC1_MAIN_DEFAULT_GPIO_DIRECTION 0x00000000 + +/*------------------------------------------------------------------------------------- + DMA default values. +-------------------------------------------------------------------------------------*/ +#define cOCTVC1_MAIN_DEFAULT_DMA_TRACE_ENABLE 0 +#define cOCTVC1_MAIN_DEFAULT_DMA_TRACE_MAX_EVENT 16 +#define cOCTVC1_MAIN_DEFAULT_DMA_TRACE_LAST_EVENT cOCT_TRUE +#define cOCTVC1_MAIN_DEFAULT_DMA_TRACE_CORE_MASK 0x0000 + +/*------------------------------------------------------------------------------------- + MAIN API Object Type. +-------------------------------------------------------------------------------------*/ +#define cOCTVC1_MAIN_OBJ_TYPE_DEBUG_FORWARD (0x0001|cOCTVC1_HANDLE_BASE_OBJ_TYPE_MAIN) +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_BOOT_PROGRESS_ENUM : Control process booting progress. + Control process booting progress. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_MAIN_BOOT_PROGRESS_ENUM tOCT_UINT32 + +#define cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_DONE 0x00 +#define cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_STARTING_CONTROL 0x01 +#define cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_REMAPPING_CONTROL 0x02 +#define cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_ALLOCATING_LOCAL_MEMORY 0x03 +#define cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_VALIDATING_LICENSE 0x04 +#define cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_PARSING_CONFIG_FILE 0x05 +#define cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_INITIALIZING_CONTROL_FIFO 0x06 +#define cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_INITIALIZING_GPIO 0x07 +#define cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_INITIALIZING_MAIN_API 0x08 +#define cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_INITIALIZING_CPP_API 0x09 +#define cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_INITIALIZING_NET_API 0x0A +#define cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_INITIALIZING_VSPMP_VOC_MANAGEMENT 0x0B +#define cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_INITIALIZING_VSPMP_VID_MANAGEMENT 0x0C +#define cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_INITIALIZING_TDM_DRIVER_MEMORY 0x0D +#define cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_INITIALIZING_AF_SERVER_MEMORY 0x0E +#define cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_ALLOCATING_VSPMGR_MEMORY 0x0F +#define cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_STARTING_ROUTER 0x10 +#define cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_STARTING_SCHEDULER 0x11 +#define cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_STARTING_VSPMGR 0x12 +#define cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_INITIALIZING_VSPMP_VOC_MEMORY 0x13 +#define cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_INITIALIZING_VSPMP_VID_MEMORY 0x14 +#define cOCTVC1_MAIN_BOOT_PROGRESS_ENUM_VALIDATING_SYSTEM_CLOCK 0x15 + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_SYSLOG_MSG_ENUM : System log message. + System log message. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_MAIN_SYSLOG_MSG_ENUM tOCT_UINT32 + +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_SYSLOG_MSG_BASE 0xC0000000 + +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_BOOT_IMAGE_BASE (0x0000|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_SYSLOG_MSG_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_BOOT_IMAGE_ERROR (0x01|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_BOOT_IMAGE_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_BOOT_IMAGE_FIRMWARE_UPDATE_SUCCESSFUL (0x02|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_BOOT_IMAGE_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_BOOT_IMAGE_VALIDATION_ERROR_LOOPBACK (0x03|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_BOOT_IMAGE_BASE) + +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CFG_BASE (0x0100|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_SYSLOG_MSG_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CFG_FILE_NOT_FOUND (0x01|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CFG_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CFG_INVALID_XML_VERSION (0x02|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CFG_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CFG_MALFORMED_XML (0x03|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CFG_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CFG_NO_ETHERNET_PORTS (0x04|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CFG_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CFG_NO_UNRESTRICTED_ETHERNET_PORTS (0x05|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CFG_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CFG_INVALID_ETHERNET_PORT_INTERFACE (0x06|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CFG_BASE) + +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE (0x0200|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_SYSLOG_MSG_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_ETH_PORTS_DEFAULT (0x01|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_FATAL_VSP_COMMAND_TIMEOUT (0x02|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_FATAL_VSP_COMMAND_SEQUENCE (0x03|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_VSP_CORE_ALLOC (0x04|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_RESET (0x05|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_INIT_DONE (0x06|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE) /* Will never be returned. Reserved for internal use. */ +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_EXT_MEM_ALLOC (0x07|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_PROCESS_CREATE (0x08|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_THREAD_CREATE (0x09|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_TOO_MANY_VSP_CHANNELS (0x0A|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_ETH_QUEUE_ALLOC (0x0B|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_VSPMGR_ALLOC (0x0C|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_MAIN_ALLOC (0x0D|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_NET_ALLOC (0x0E|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_AF_ALLOC (0x0F|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_TDM_ALLOC (0x10|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_FIFO_ALLOC (0x11|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_CORE_MONITORING (0x12|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_IO_MONITORING (0x13|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_ETH_PORT_MONITORING (0x14|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_ROUTER_MONITORING (0x15|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_CORE_REMAP (0x16|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_ROUTER_RESOURCES (0x17|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_SCHED_CREATE (0x18|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_TDM_RESET (0x19|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_DIRECTORY_TREE (0x1A|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_FAILURE_RECOVERED (0x1B|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_FAILURE_CORE_DISABLED (0x1C|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_CAMERA_DRIVER_CREATE (0x1D|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_CORE_HALTED_AND_DUMPED (0x1E|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_FAILOVER_STARTED (0x1F|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_FAILOVER_SUCCESS (0x20|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_FAILOVER_ERROR (0x21|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_CTRL_BASE) + +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_FS_BASE (0x0300|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_SYSLOG_MSG_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_FS_BOOT_IMAGE_UPDATE_DONE (0x01|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_FS_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_FS_OCT1010ID_UPDATE_DONE (0x02|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_FS_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_FS_MALFORMED_TARBALL (0x03|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_FS_BASE) + +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_LOG_BASE (0x0400|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_SYSLOG_MSG_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_LOG_RESET (0x01|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_LOG_BASE) + +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_NET_BASE (0x0500|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_SYSLOG_MSG_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_NET_ARP_MODULE (0x01|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_NET_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_NET_ND_MODULE (0x02|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_NET_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_NET_RTCP_TIMER (0x03|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_NET_BASE) + +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_TDM_BASE (0x0600|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_SYSLOG_MSG_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_TDM_MAX_TSST (0x01|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_TDM_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_TDM_NO_CLOCK (0x02|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_TDM_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_TDM_UNSUPPORTED_CLOCK_SPEED_AUTO_DETECT (0x03|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_TDM_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_TDM_INVALID_MODULE_TYPE (0x04|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_TDM_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_TDM_TRI_STATE_NOT_SUPPORTED (0x05|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_TDM_BASE) + +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_LICENSING_BASE (0x0700|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_SYSLOG_MSG_BASE) +#define cOCTVC1_MAIN_SYSLOG_MSG_ENUM_LICENSING_FORMAT_ERROR (0x01|cOCTVC1_MAIN_SYSLOG_MSG_ENUM_LICENSING_BASE) + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_EVT_MASK : Event generation mask. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_MAIN_EVT_MASK tOCT_UINT32 + +#define cOCTVC1_MAIN_EVT_MASK_NONE 0 +#define cOCTVC1_MAIN_EVT_MASK_GPIO_CHANGE ((tOCT_UINT32)(1<<0) ) +#define cOCTVC1_MAIN_EVT_MASK_PHY_STATUS ((tOCT_UINT32)(1<<1) ) +#define cOCTVC1_MAIN_EVT_MASK_CORE_STATUS ((tOCT_UINT32)(1<<2) ) +#define cOCTVC1_MAIN_EVT_MASK_PROCESS_CPU_USAGE ((tOCT_UINT32)(1<<3) ) +#define cOCTVC1_MAIN_EVT_MASK_TRACING_BUFFER_FULL ((tOCT_UINT32)(1<<4) ) +#define cOCTVC1_MAIN_EVT_MASK_TRACING_STOP ((tOCT_UINT32)(1<<5) ) +#define cOCTVC1_MAIN_EVT_MASK_REDUNDANCY_SERVER_MGW_FAILOVER_DONE ((tOCT_UINT32)(1<<6) ) + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_THREAD_CPU_USAGE + + Members: + hThread + ulCpuUsagePercent +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCT_UINT32 hThread; + tOCT_UINT32 ulCpuUsagePercent; + +} tOCTVC1_MAIN_THREAD_CPU_USAGE; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_PROCESS_TYPE_ENUM : Process utilization type. + Process utilization type. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_MAIN_PROCESS_TYPE_ENUM tOCT_UINT32 + +#define cOCTVC1_MAIN_PROCESS_TYPE_ENUM_INVALID 0 +#define cOCTVC1_MAIN_PROCESS_TYPE_ENUM_CONTROL 1 +#define cOCTVC1_MAIN_PROCESS_TYPE_ENUM_TDM_DRIVER 2 +#define cOCTVC1_MAIN_PROCESS_TYPE_ENUM_ROUTER 3 +#define cOCTVC1_MAIN_PROCESS_TYPE_ENUM_SCHEDULER 4 +#define cOCTVC1_MAIN_PROCESS_TYPE_ENUM_VSPMGR 5 +#define cOCTVC1_MAIN_PROCESS_TYPE_ENUM_AF_SRV 6 +#define cOCTVC1_MAIN_PROCESS_TYPE_ENUM_CAMERA_DRIVER 7 +#define cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_SCHEDULER ((tOCT_UINT32)(1|cOCTVC1_MAIN_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_MAIN_PROCESS_TYPE_ENUM_L1C_APAPTATION_LAYER ((tOCT_UINT32)(2|cOCTVC1_MAIN_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_ULIM_RACH ((tOCT_UINT32)(3|cOCTVC1_MAIN_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_ULIM_MASTER ((tOCT_UINT32)(4|cOCTVC1_MAIN_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_ULIM_RFI ((tOCT_UINT32)(5|cOCTVC1_MAIN_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_ULIM_SLAVE ((tOCT_UINT32)(6|cOCTVC1_MAIN_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_ULOM_MASTER ((tOCT_UINT32)(7|cOCTVC1_MAIN_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_ULOM_SLAVE ((tOCT_UINT32)(8|cOCTVC1_MAIN_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_DLIM_MASTER ((tOCT_UINT32)(9|cOCTVC1_MAIN_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_DLIM_SLAVE ((tOCT_UINT32)(10|cOCTVC1_MAIN_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_DLOM_MASTER ((tOCT_UINT32)(11|cOCTVC1_MAIN_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_DLOM_SLAVE ((tOCT_UINT32)(12|cOCTVC1_MAIN_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_MAIN_PROCESS_TYPE_ENUM_RFI ((tOCT_UINT32)(13|cOCTVC1_MAIN_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_MAIN_PROCESS_TYPE_ENUM_ETH ((tOCT_UINT32)(14|cOCTVC1_MAIN_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_HSDLOM ((tOCT_UINT32)(15|cOCTVC1_MAIN_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_HSDLIM ((tOCT_UINT32)(16|cOCTVC1_MAIN_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_MAIN_PROCESS_TYPE_ENUM_3G_ULIM_SSE ((tOCT_UINT32)(18|cOCTVC1_MAIN_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_MAIN_PROCESS_TYPE_ENUM_CTRL ((tOCT_UINT32)(17|cOCTVC1_MAIN_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_MAIN_PROCESS_TYPE_ENUM_2G_SCHEDULER ((tOCT_UINT32)(19|cOCTVC1_MAIN_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_MAIN_PROCESS_TYPE_ENUM_2G_DL ((tOCT_UINT32)(20|cOCTVC1_MAIN_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_MAIN_PROCESS_TYPE_ENUM_2G_ULIM ((tOCT_UINT32)(21|cOCTVC1_MAIN_SDR_PROCESS_TYPE_FLAG) ) +#define cOCTVC1_MAIN_PROCESS_TYPE_ENUM_2G_ULOM ((tOCT_UINT32)(22|cOCTVC1_MAIN_SDR_PROCESS_TYPE_FLAG) ) + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_OPUS_CORE_STATUS_ENUM : Core Status. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_MAIN_OPUS_CORE_STATUS_ENUM tOCT_UINT32 + +#define cOCTVC1_MAIN_OPUS_CORE_STATUS_ENUM_RESET 0 +#define cOCTVC1_MAIN_OPUS_CORE_STATUS_ENUM_RUNNING 1 +#define cOCTVC1_MAIN_OPUS_CORE_STATUS_ENUM_HALT 2 +#define cOCTVC1_MAIN_OPUS_CORE_STATUS_ENUM_TRAP 3 +#define cOCTVC1_MAIN_OPUS_CORE_STATUS_ENUM_ACCESS_VIOLATION 4 +#define cOCTVC1_MAIN_OPUS_CORE_STATUS_ENUM_NOT_PRESENT 5 +#define cOCTVC1_MAIN_OPUS_CORE_STATUS_ENUM_FAILURE_DETECTED 6 + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_OCT1010_CORE_STATUS_ENUM : DEPRECATED as of OCTVOC-1.06.00-PR. Replaced by + tOCTVC1_MAIN_OPUS_CORE_STATUS_ENUM. Refer to the Main API document octvocas5001 + for further information. + Core Status. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_MAIN_OCT1010_CORE_STATUS_ENUM tOCT_UINT32 + +#define cOCTVC1_MAIN_OCT1010_CORE_STATUS_ENUM_RESET 0 +#define cOCTVC1_MAIN_OCT1010_CORE_STATUS_ENUM_RUNNING 1 +#define cOCTVC1_MAIN_OCT1010_CORE_STATUS_ENUM_HALT 2 +#define cOCTVC1_MAIN_OCT1010_CORE_STATUS_ENUM_TRAP 3 +#define cOCTVC1_MAIN_OCT1010_CORE_STATUS_ENUM_ACCESS_VIOLATION 4 + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_FAILURE_MASK : Main core failure mask. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_MAIN_FAILURE_MASK tOCT_UINT32 + +#define cOCTVC1_MAIN_FAILURE_MASK_NONE ((tOCT_UINT32)(0<<0) ) +#define cOCTVC1_MAIN_FAILURE_MASK_MEMORY ((tOCT_UINT32)(1<<0) ) + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_OPUS_CORE_STATUS + + Members: + ulCoreStatus + ulProgramCounter + ulFailureMask + ulAccessViolationAddress +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MAIN_OPUS_CORE_STATUS_ENUM ulCoreStatus; + tOCT_UINT32 ulProgramCounter; + tOCT_UINT32 ulFailureMask; + tOCT_UINT32 ulAccessViolationAddress; + +} tOCTVC1_MAIN_OPUS_CORE_STATUS; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_OCT1010_CORE_STATUS + + Members: + ulCoreStatus + ulProgramCounter + ulAccessViolationAddress +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MAIN_OCT1010_CORE_STATUS_ENUM ulCoreStatus; + tOCT_UINT32 ulProgramCounter; + tOCT_UINT32 ulAccessViolationAddress; + +} tOCTVC1_MAIN_OCT1010_CORE_STATUS; + +#define cOCTVC1_MAIN_PROCESS_IMAGE_NAME_MAX_LENGTH 63 /* Process image string length restriction. */ + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_OPUS_CORE_INFO + + Members: + hProcess + Default: cOCTVC1_HANDLE_INVALID + Process handle identifier. Value INVALID means no process running on this core. + ulPhysicalCoreId + Default: 0 + Physical core index (1..cOCTVC1_MAIN_MAX_CORE_NUMBER). Value 0 means no core is + running for this logical identifier. + ulProcessImageType + Default: cOCTVC1_MAIN_PROCESS_TYPE_ENUM_INVALID + Process Type identifier. Value INVALID means no process running on this core. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCT_UINT32 hProcess; + tOCT_UINT32 ulPhysicalCoreId; + tOCTVC1_MAIN_PROCESS_TYPE_ENUM ulProcessImageType; + +} tOCTVC1_MAIN_OPUS_CORE_INFO; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_OCT1010_CORE_INFO + + Members: + hProcess + Default: cOCTVC1_HANDLE_INVALID + Process handle identifier. Value INVALID means no process running on this core. + hThread + Default: cOCTVC1_HANDLE_INVALID + Thread handle identifier.. Value INVALID means no thread running on this core. + ulProcessImageType + Default: cOCTVC1_MAIN_PROCESS_TYPE_ENUM_INVALID + Process Type identifier. Value INVALID means no process running on this core. + szProcessImageName + Name of the process running on the core. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCT_UINT32 hProcess; + tOCT_UINT32 hThread; + tOCTVC1_MAIN_PROCESS_TYPE_ENUM ulProcessImageType; + tOCT_UINT8 szProcessImageName[(cOCTVC1_MAIN_PROCESS_IMAGE_NAME_MAX_LENGTH+1)];/* NOSWAPMAC */ + +} tOCTVC1_MAIN_OCT1010_CORE_INFO; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_TDM_STREAM_FREQ_ENUM : TDM stream frequency. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_MAIN_TDM_STREAM_FREQ_ENUM tOCT_UINT32 + +#define cOCTVC1_MAIN_TDM_STREAM_FREQ_ENUM_2MHZ 0 +#define cOCTVC1_MAIN_TDM_STREAM_FREQ_ENUM_4MHZ 1 +#define cOCTVC1_MAIN_TDM_STREAM_FREQ_ENUM_8MHZ 2 +#define cOCTVC1_MAIN_TDM_STREAM_FREQ_ENUM_16MHZ 3 +#define cOCTVC1_MAIN_TDM_STREAM_FREQ_ENUM_RESERVED 4 + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_ETH_PORT_INTERFACE_TYPE_ENUM : Ethernet port interface type. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_MAIN_ETH_PORT_INTERFACE_TYPE_ENUM tOCT_UINT32 + +#define cOCTVC1_MAIN_ETH_PORT_INTERFACE_TYPE_ENUM_INVALID 0xFFFFFFFF +#define cOCTVC1_MAIN_ETH_PORT_INTERFACE_TYPE_ENUM_SERDES0 0 +#define cOCTVC1_MAIN_ETH_PORT_INTERFACE_TYPE_ENUM_SERDES1 1 +#define cOCTVC1_MAIN_ETH_PORT_INTERFACE_TYPE_ENUM_SERDES2 2 +#define cOCTVC1_MAIN_ETH_PORT_INTERFACE_TYPE_ENUM_SERDES3 3 +#define cOCTVC1_MAIN_ETH_PORT_INTERFACE_TYPE_ENUM_ETH0 4 +#define cOCTVC1_MAIN_ETH_PORT_INTERFACE_TYPE_ENUM_ETH1 5 + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_ETH_PORT_MODE_ENUM : Ethernet port mode. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_MAIN_ETH_PORT_MODE_ENUM tOCT_UINT32 + +#define cOCTVC1_MAIN_ETH_PORT_MODE_ENUM_INVALID 0xFFFFFFFF +#define cOCTVC1_MAIN_ETH_PORT_MODE_ENUM_MII_10 0 +#define cOCTVC1_MAIN_ETH_PORT_MODE_ENUM_MII_100 1 +#define cOCTVC1_MAIN_ETH_PORT_MODE_ENUM_RMII_100 2 +#define cOCTVC1_MAIN_ETH_PORT_MODE_ENUM_GMII_1000 3 +#define cOCTVC1_MAIN_ETH_PORT_MODE_ENUM_RGMII_1000 4 +#define cOCTVC1_MAIN_ETH_PORT_MODE_ENUM_SGMII_1000 5 + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_ETH_MODE_ENUM : Ethernet port mode of operation. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_MAIN_ETH_MODE_ENUM tOCT_UINT32 + +#define cOCTVC1_MAIN_ETH_MODE_ENUM_INVALID 0xFFFFFFFF +#define cOCTVC1_MAIN_ETH_MODE_ENUM_MII 0 +#define cOCTVC1_MAIN_ETH_MODE_ENUM_RMII 1 +#define cOCTVC1_MAIN_ETH_MODE_ENUM_GMII 2 +#define cOCTVC1_MAIN_ETH_MODE_ENUM_RGMII 3 +#define cOCTVC1_MAIN_ETH_MODE_ENUM_SGMII 4 + +#define cOCTVC1_MAIN_ETH_PORT_PHY_ADDRESS_INVALID 63 /* Invalid Phy Address */ + /* This definition indicates that either no PHY is present or */ + /* that communication with the phy is not allowed. */ + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC + + Members: + ulEthPortEnableFlag + Default: cOCTVC1_DO_NOT_MODIFY + MacAddress + ulAcceptAllMacFlag + Default: cOCTVC1_DO_NOT_MODIFY + ulAcceptUnicastFlag + Default: cOCTVC1_DO_NOT_MODIFY + ulAcceptMulticastFlag + Default: cOCTVC1_DO_NOT_MODIFY + ulAcceptBadCrcPktFlag + Default: cOCTVC1_DO_NOT_MODIFY + ulAcceptLongPktFormatFlag + Default: cOCTVC1_DO_NOT_MODIFY + ulBroadcastForwardPort + Default: cOCTVC1_DO_NOT_MODIFY + ulMulticastForwardPort + Default: cOCTVC1_DO_NOT_MODIFY + ulUnicastForwardPort + Default: cOCTVC1_DO_NOT_MODIFY + ulRxMirrorForwardPort + Default: cOCTVC1_DO_NOT_MODIFY + ulRestrictedApiFlag + Default: cOCTVC1_DO_NOT_MODIFY +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCT_BOOL32 ulEthPortEnableFlag; + tOCTVC1_MAC_ADDRESS MacAddress; + tOCT_BOOL32 ulAcceptAllMacFlag; + tOCT_BOOL32 ulAcceptUnicastFlag; + tOCT_BOOL32 ulAcceptMulticastFlag; + tOCT_BOOL32 ulAcceptBadCrcPktFlag; + tOCT_BOOL32 ulAcceptLongPktFormatFlag; + tOCTVC1_ETH_PORT_ID_ENUM ulBroadcastForwardPort; + tOCTVC1_ETH_PORT_ID_ENUM ulMulticastForwardPort; + tOCTVC1_ETH_PORT_ID_ENUM ulUnicastForwardPort; + tOCTVC1_ETH_PORT_ID_ENUM ulRxMirrorForwardPort; + tOCT_BOOL32 ulRestrictedApiFlag; + +} tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC + + Members: + ulInterfaceType + ulMode + ulSpeed + ulFullDuplexFlag + ulPhyAddress + ulPktQueuesByteSize +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MAIN_ETH_PORT_INTERFACE_TYPE_ENUM ulInterfaceType; + tOCTVC1_MAIN_ETH_MODE_ENUM ulMode; + tOCT_UINT32 ulSpeed; + tOCT_BOOL32 ulFullDuplexFlag; + tOCT_UINT32 ulPhyAddress; + tOCT_UINT32 ulPktQueuesByteSize; + +} tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_ETH_PORT_STATS + + Members: + ulRxPktErrorCnt + Number of times Ethernet port detected packets with the RX_ER signal set during + reception. Note that an odd number of nibbles will also lead to this error. + NOTE: available on OCT1010 only. + ulRxOddNibbleCnt + Number of times Ethernet port detected packets with an odd number of nibbles. A + packet may have an odd number of preamble nibbles. + NOTE: available on OCT1010 only + ulRxCrcErrorCnt + Number of times the Ethernet port detected packets with an invalid Cyclic + Redundancy Check (CRC). + ulRxSfdAbsentCnt + Number of times Ethernet port detected packets without a Start Frame Delimiter + (SFD) byte. + NOTE: available on OCT1010 only + ulRxShortFrameCnt + Number of times Ethernet port detected packets that were too short. A packet + must be at least 64 bytes long (from MACs to CRC). + ulRxLongFrameCnt + Number of times Ethernet port detected packets that were too long. A packet + must be no more than 1536 bytes long (from MACs to CRC) if + ulAcceptLongPktFormatFlag = '0', and no more than 2044 bytes if + ulAcceptLongPktFormatFlag = '1'. + ulRxFalseCarrierCnt + Number of times Ethernet port detected false carrier event + NOTE: available on OCT1010 only + ulTxFalseCarrierCnt + Number of frames aborted due to no carrier or loss of carrier + NOTE: not available on OCT1010. + ulRxMemOverflowCnt + Number of times Ethernet port detected an overflow in the Rx packet flow. If an + overflow occurs, the packet is dropped and not written to the Rx external + memory packet queue. + ulRxBufferOverflowCnt + Number of times Ethernet port detected that Rx buffer has overflowed. This + should never happen. If this occurs,it means the module has halted all packet + processing in both the Rx and Tx directions. + NOTE: available on OCT1010 only + ulRxPauseFrameCnt + Number of times Ethernet port detected a PAUSE frame. + ulTxPauseFrameCnt + Number of times Ethernet port sent a PAUSE frame. + ulTxMemChecksum + Number of times Ethernet port detected a packet read from the Tx external + memory packet queue with an invalid checksum. If this occurs,it means the + module has halted all packet processing in both the Rx and Tx directions. + NOTE: available on OCT1010 only + ulTxBufferUnderflowCnt + Number of times the Ethernet port detected the Tx buffer has underflowed. + NOTE: If this occurs on OCT1010,it means the module has halted all packet + processing in both the Rx and Tx directions. + ulDefaultMacAddressUsedFlag + DEPRECATED as of OCTVOC-2.01.00-PR. + Indicate that the FPGA use the default locally administrated MAC address. '0' + indicate a MAC address as been assigned to the module and '1' indicate the + module use the FPGA default mac (02:0c:90:ff:ff:xx). + ulTxLateCollisionCnt + Number of frames aborted due to late collision error. + NOTE: not available on OCT1010. + ulTxExcessCollisionCnt + Number of frames aborted due to excessive collision errors. + NOTE: not available on OCT1010. + ulTxExcessDeferralCnt + Number of frames aborted due to excessive deferral error. + NOTE: not available on OCT1010. + ulRxAlignmentErrorCnt + Number of frames received with alignment (dribble) error. Valid only in 10/100 + mode. + NOTE: not available on OCT1010. + ulRxJabberErrorCnt + Number of giant frames received with length (including CRC) greater than 1,518 + bytes (1,522 bytes for VLAN tagged) and with CRC error. + NOTE: not available on OCT1010. + ulRxLengthErrorCnt + Number of frames received with length error (Length type field does not equal + frame size), for all frames with valid length field. + NOTE: not available on OCT1010. + ulRxOutOfRangeTypeCnt + Number of frames received with length field not equal to the valid frame size + (greater than 1,500 but less than 1,536). + NOTE: not available on OCT1010. + ulRxWatchdogErrorCnt + Number of frames dropped due to a watchdog timeout. Frames larger than 2,048 + bytes will be aborted due to the watchdog time-out. + NOTE: not available on OCT1010. + ulRxIPv4HeaderErrorCnt + Number of IPv4 datagrams received with header errors. + NOTE: not available on OCT1010. + ulRxIPv6HeaderErrorCnt + Number of IPv6 datagrams received with header errors. + NOTE: not available on OCT1010. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCT_UINT32 ulRxPktErrorCnt; + tOCT_UINT32 ulRxOddNibbleCnt; + tOCT_UINT32 ulRxCrcErrorCnt; + tOCT_UINT32 ulRxSfdAbsentCnt; + tOCT_UINT32 ulRxShortFrameCnt; + tOCT_UINT32 ulRxLongFrameCnt; + tOCT_UINT32 ulRxFalseCarrierCnt; + tOCT_UINT32 ulTxFalseCarrierCnt; + tOCT_UINT32 ulRxMemOverflowCnt; + tOCT_UINT32 ulRxBufferOverflowCnt; + tOCT_UINT32 ulRxPauseFrameCnt; + tOCT_UINT32 ulTxPauseFrameCnt; + tOCT_UINT32 ulTxMemChecksum; + tOCT_UINT32 ulTxBufferUnderflowCnt; + tOCT_BOOL32 ulDefaultMacAddressUsedFlag; + tOCT_UINT32 ulTxLateCollisionCnt; + tOCT_UINT32 ulTxExcessCollisionCnt; + tOCT_UINT32 ulTxExcessDeferralCnt; + tOCT_UINT32 ulRxAlignmentErrorCnt; + tOCT_UINT32 ulRxJabberErrorCnt; + tOCT_UINT32 ulRxLengthErrorCnt; + tOCT_UINT32 ulRxOutOfRangeTypeCnt; + tOCT_UINT32 ulRxWatchdogErrorCnt; + tOCT_UINT32 ulRxIPv4HeaderErrorCnt; + tOCT_UINT32 ulRxIPv6HeaderErrorCnt; + +} tOCTVC1_MAIN_ETH_PORT_STATS; + +#define cOCTVC1_MAIN_FILE_NAME_MAX_LENGTH 127 /* Filesystem string length restriction. */ + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR + + Members: + szFileName + NULL terminated name of the file. + ulGetMode + Default: cOCTVC1_OBJECT_CURSOR_ENUM_FIRST +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCT_UINT8 szFileName[(cOCTVC1_MAIN_FILE_NAME_MAX_LENGTH+1)]; + tOCTVC1_OBJECT_CURSOR_ENUM ulGetMode; + +} tOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_FILE_OPEN_MODE_MASK : API command/response arguments file modes. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_MAIN_FILE_OPEN_MODE_MASK tOCT_UINT32 + +#define cOCTVC1_MAIN_FILE_OPEN_MODE_MASK_READ 0x1 +#define cOCTVC1_MAIN_FILE_OPEN_MODE_MASK_WRITE 0x2 + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_LOG_ENTRY + + Members: + ulLogSeqNumber + ulLogTimestamp + ulLogReserved0 + ulLogReserved1 + achLogMsg +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCT_UINT32 ulLogSeqNumber; + tOCT_UINT32 ulLogTimestamp; + tOCT_UINT32 ulLogReserved0; + tOCT_UINT32 ulLogReserved1; + tOCT_UINT8 achLogMsg[48]; + +} tOCTVC1_MAIN_LOG_ENTRY; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_OPUS_CORE_MASK : Octasic Opus Core Mask. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_MAIN_OPUS_CORE_MASK tOCT_UINT32 + +#define cOCTVC1_MAIN_OPUS_CORE_MASK_1 ((tOCT_UINT32)(1<<1) ) +#define cOCTVC1_MAIN_OPUS_CORE_MASK_2 ((tOCT_UINT32)(1<<2) ) +#define cOCTVC1_MAIN_OPUS_CORE_MASK_3 ((tOCT_UINT32)(1<<3) ) +#define cOCTVC1_MAIN_OPUS_CORE_MASK_4 ((tOCT_UINT32)(1<<4) ) +#define cOCTVC1_MAIN_OPUS_CORE_MASK_5 ((tOCT_UINT32)(1<<5) ) +#define cOCTVC1_MAIN_OPUS_CORE_MASK_6 ((tOCT_UINT32)(1<<6) ) +#define cOCTVC1_MAIN_OPUS_CORE_MASK_7 ((tOCT_UINT32)(1<<7) ) +#define cOCTVC1_MAIN_OPUS_CORE_MASK_8 ((tOCT_UINT32)(1<<8) ) +#define cOCTVC1_MAIN_OPUS_CORE_MASK_9 ((tOCT_UINT32)(1<<9) ) +#define cOCTVC1_MAIN_OPUS_CORE_MASK_10 ((tOCT_UINT32)(1<<10) ) +#define cOCTVC1_MAIN_OPUS_CORE_MASK_11 ((tOCT_UINT32)(1<<11) ) +#define cOCTVC1_MAIN_OPUS_CORE_MASK_12 ((tOCT_UINT32)(1<<12) ) +#define cOCTVC1_MAIN_OPUS_CORE_MASK_13 ((tOCT_UINT32)(1<<13) ) +#define cOCTVC1_MAIN_OPUS_CORE_MASK_14 ((tOCT_UINT32)(1<<14) ) +#define cOCTVC1_MAIN_OPUS_CORE_MASK_15 ((tOCT_UINT32)(1<<15) ) +#define cOCTVC1_MAIN_OPUS_CORE_MASK_16 ((tOCT_UINT32)(1<<16) ) +#define cOCTVC1_MAIN_OPUS_CORE_MASK_17 ((tOCT_UINT32)(1<<17) ) +#define cOCTVC1_MAIN_OPUS_CORE_MASK_18 ((tOCT_UINT32)(1<<18) ) +#define cOCTVC1_MAIN_OPUS_CORE_MASK_19 ((tOCT_UINT32)(1<<19) ) +#define cOCTVC1_MAIN_OPUS_CORE_MASK_20 ((tOCT_UINT32)(1<<20) ) +#define cOCTVC1_MAIN_OPUS_CORE_MASK_21 ((tOCT_UINT32)(1<<21) ) +#define cOCTVC1_MAIN_OPUS_CORE_MASK_22 ((tOCT_UINT32)(1<<22) ) +#define cOCTVC1_MAIN_OPUS_CORE_MASK_23 ((tOCT_UINT32)(1<<23) ) +#define cOCTVC1_MAIN_OPUS_CORE_MASK_24 ((tOCT_UINT32)(1<<24) ) + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_OCT1010_CORE_MASK : OCT1010 Core Mask. + DEPRECATED as of OCTVOC-1.06.00-PR. Replaced by tOCTVC1_MAIN_OPUS_CORE_MASK. + Refer to the Main API document octvocas5001 for further information. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_MAIN_OCT1010_CORE_MASK tOCT_UINT32 + +#define cOCTVC1_MAIN_OCT1010_CORE_MASK_1 ((tOCT_UINT32)(1<<1) ) +#define cOCTVC1_MAIN_OCT1010_CORE_MASK_2 ((tOCT_UINT32)(1<<2) ) +#define cOCTVC1_MAIN_OCT1010_CORE_MASK_3 ((tOCT_UINT32)(1<<3) ) +#define cOCTVC1_MAIN_OCT1010_CORE_MASK_4 ((tOCT_UINT32)(1<<4) ) +#define cOCTVC1_MAIN_OCT1010_CORE_MASK_5 ((tOCT_UINT32)(1<<5) ) +#define cOCTVC1_MAIN_OCT1010_CORE_MASK_6 ((tOCT_UINT32)(1<<6) ) +#define cOCTVC1_MAIN_OCT1010_CORE_MASK_7 ((tOCT_UINT32)(1<<7) ) +#define cOCTVC1_MAIN_OCT1010_CORE_MASK_8 ((tOCT_UINT32)(1<<8) ) +#define cOCTVC1_MAIN_OCT1010_CORE_MASK_9 ((tOCT_UINT32)(1<<9) ) +#define cOCTVC1_MAIN_OCT1010_CORE_MASK_10 ((tOCT_UINT32)(1<<10) ) +#define cOCTVC1_MAIN_OCT1010_CORE_MASK_11 ((tOCT_UINT32)(1<<11) ) +#define cOCTVC1_MAIN_OCT1010_CORE_MASK_12 ((tOCT_UINT32)(1<<12) ) +#define cOCTVC1_MAIN_OCT1010_CORE_MASK_13 ((tOCT_UINT32)(1<<13) ) +#define cOCTVC1_MAIN_OCT1010_CORE_MASK_14 ((tOCT_UINT32)(1<<14) ) +#define cOCTVC1_MAIN_OCT1010_CORE_MASK_15 ((tOCT_UINT32)(1<<15) ) + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_TRACING_MODE_ENUM : Tracing mode. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_MAIN_TRACING_MODE_ENUM tOCT_UINT32 + +#define cOCTVC1_MAIN_TRACING_MODE_ENUM_NORMAL ((tOCT_UINT32)(1<<0) ) +#define cOCTVC1_MAIN_TRACING_MODE_ENUM_WRAP ((tOCT_UINT32)(1<<1) ) +#define cOCTVC1_MAIN_TRACING_MODE_ENUM_AUTO_WRAP ((tOCT_UINT32)(1<<2) ) + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_TRACING_TYPE_ENUM : Tracing data type. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_MAIN_TRACING_TYPE_ENUM tOCT_UINT32 + +#define cOCTVC1_MAIN_TRACING_TYPE_ENUM_CONTROL_ONLY 0x1 +#define cOCTVC1_MAIN_TRACING_TYPE_ENUM_HEADER 0x2 +#define cOCTVC1_MAIN_TRACING_TYPE_ENUM_ALL 0x3 + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_REDUNDANCY_SERVER_STATE_ENUM : Current state of redundancy server. + See tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_MAIN_REDUNDANCY_SERVER_STATE_ENUM tOCT_UINT32 + +#define cOCTVC1_MAIN_REDUNDANCY_SERVER_STATE_ENUM_STOPPED 0 +#define cOCTVC1_MAIN_REDUNDANCY_SERVER_STATE_ENUM_STARTED 1 +#define cOCTVC1_MAIN_REDUNDANCY_SERVER_STATE_ENUM_FAILOVER_EXECUTED 2 + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_REDUNDANCY_SERVER_FAILOVER_MGW_STATUS_ENUM : Status of the failover. Invalid means no failover requested. + See tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_MAIN_REDUNDANCY_SERVER_FAILOVER_MGW_STATUS_ENUM tOCT_UINT32 + +#define cOCTVC1_MAIN_REDUNDANCY_SERVER_FAILOVER_MGW_STATUS_ENUM_NONE 0 +#define cOCTVC1_MAIN_REDUNDANCY_SERVER_FAILOVER_MGW_STATUS_ENUM_SUCCESS 1 +#define cOCTVC1_MAIN_REDUNDANCY_SERVER_FAILOVER_MGW_STATUS_ENUM_ERROR 2 + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_LOG_TRACE_STATE_ENUM : Log Trace state. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_MAIN_LOG_TRACE_STATE_ENUM tOCT_UINT32 + +#define cOCTVC1_MAIN_LOG_TRACE_STATE_ENUM_STOP 0 +#define cOCTVC1_MAIN_LOG_TRACE_STATE_ENUM_START 1 + + + +#define cOCTVC1_MAIN_MAX_VSPMGR_THREADS 21 /* Maximum number of VSP Mgr threads that can be started by one command. */ +#define cOCTVC1_MAIN_SDR_PROCESS_TYPE_FLAG 0x0020 +#define cOCTVC1_MAIN_INVALID_TSST 0xFFFFFFFF /* MAIN API Invalid TSST definition. */ + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_FILE_CURSOR + + Members: + szFileName + NULL terminated name of the file. + ulGetMode + Default: cOCTVC1_OBJECT_CURSOR_ENUM_FIRST +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCT_UINT8 szFileName[(cOCTVC1_MAIN_FILE_NAME_MAX_LENGTH+1)]; + tOCTVC1_OBJECT_CURSOR_ENUM ulGetMode; + +} tOCTVC1_MAIN_FILE_CURSOR; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_FILE_SEEK_ENUM : File seek mode. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_MAIN_FILE_SEEK_ENUM tOCT_UINT32 + +#define cOCTVC1_MAIN_FILE_SEEK_ENUM_SET 0x0 +#define cOCTVC1_MAIN_FILE_SEEK_ENUM_CUR 0x1 +#define cOCTVC1_MAIN_FILE_SEEK_ENUM_END 0x2 + +/*------------------------------------------------------------------------------------- + MAIN API configuration values +-------------------------------------------------------------------------------------*/ +#define cOCTVC1_MAIN_FIFO_POOL_ID_MGW_SDR_PU 16 + +/*------------------------------------------------------------------------------------- + TDM frame. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_MAIN_TDM_FRAME_ACTIVE_ENUM tOCT_UINT32 + +#define cOCTVC1_MAIN_TDM_FRAME_ACTIVE_ENUM_LOW 0 +#define cOCTVC1_MAIN_TDM_FRAME_ACTIVE_ENUM_HIGH 1 + +/*------------------------------------------------------------------------------------- + TDM sample. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_MAIN_TDM_SAMPLE_ENUM tOCT_UINT32 + +#define cOCTVC1_MAIN_TDM_SAMPLE_ENUM_AT_FALLING_EDGE 0 +#define cOCTVC1_MAIN_TDM_SAMPLE_ENUM_AT_RISING_EDGE 1 + +/*------------------------------------------------------------------------------------- + TDM disabled frame: +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_MAIN_TDM_DISABLED_FRAME_SOURCE_ENUM tOCT_UINT32 + +#define cOCTVC1_MAIN_TDM_DISABLED_FRAME_SOURCE_ENUM_INTERNAL 0 /* Generate frame internally. */ +#define cOCTVC1_MAIN_TDM_DISABLED_FRAME_SOURCE_ENUM_EXTERNAL 1 /* Receive externally frame signal. */ + +/*------------------------------------------------------------------------------------- + TDM data resolution: +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_MAIN_TDM_DATA_RESOLUTION_ENUM tOCT_UINT32 + +#define cOCTVC1_MAIN_TDM_DATA_RESOLUTION_ENUM_8_BITS_PER_SAMPLE 0 /* Each sample from the TDM is 8 bits. */ +#define cOCTVC1_MAIN_TDM_DATA_RESOLUTION_ENUM_16_BITS_PER_SAMPLE 1 /* Each sample from the TDM is 16 bits. */ + +/*------------------------------------------------------------------------------------- + TDM default values. +-------------------------------------------------------------------------------------*/ +#define cOCTVC1_MAIN_DEFAULT_TDM_FRAME_POLARITY cOCTVC1_MAIN_TDM_FRAME_ACTIVE_ENUM_LOW +#define cOCTVC1_MAIN_DEFAULT_TDM_FRAME_SAMPLING_MODE cOCTVC1_MAIN_TDM_SAMPLE_ENUM_AT_RISING_EDGE +#define cOCTVC1_MAIN_DEFAULT_TDM_DATA_SAMPLING_MODE cOCTVC1_MAIN_TDM_SAMPLE_ENUM_AT_FALLING_EDGE +#define cOCTVC1_MAIN_DEFAULT_TDM_NUM_STREAM 4 +#define cOCTVC1_MAIN_DEFAULT_TDM_BUS_SPEED cOCTVC1_MAIN_TDM_STREAM_FREQ_ENUM_8MHZ +#define cOCTVC1_MAIN_DEFAULT_TDM_DISABLED_FRAME_SOURCE cOCTVC1_MAIN_TDM_DISABLED_FRAME_SOURCE_ENUM_INTERNAL +#define cOCTVC1_MAIN_DEFAULT_TDM_FROM_TSST_BUFFER_SIZE_MS 70 +#define cOCTVC1_MAIN_DEFAULT_TDM_TO_TSST_BUFFER_SIZE_MS 130 +#define cOCTVC1_MAIN_DEFAULT_TDM_TO_BIT_OFFSET 0 +#define cOCTVC1_MAIN_DEFAULT_TDM_FROM_BIT_OFFSET 0 +#define cOCTVC1_MAIN_DEFAULT_TDM_DRIVER_ENABLE cOCT_TRUE +#define cOCTVC1_MAIN_DEFAULT_TDM_OUTPUT_ENABLE cOCT_TRUE +#define cOCTVC1_MAIN_DEFAULT_TDM_DATA_RESOLUTION cOCTVC1_MAIN_TDM_DATA_RESOLUTION_ENUM_8_BITS_PER_SAMPLE + +/*------------------------------------------------------------------------------------- + Generic default values. +-------------------------------------------------------------------------------------*/ +#define cOCTVC1_MAIN_DEFAULT_SCHED_VSP_ENABLE cOCT_FALSE +#define cOCTVC1_MAIN_DEFAULT_ADAPTIVE_FILTER_ENABLE cOCT_FALSE + +/***************************** METHODS *************************************/ +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_CMD + + Members: + Header + OCTVC1 Message Header + hForward + Debug Forward Object Handle +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hForward; + +} tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_RSP + + Members: + Header + OCTVC1 Message Header + hForward + Debug Forward Object Handle +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hForward; + +} tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_CMD + + Members: + Header + OCTVC1 Message Header + ObjectGet + Generic object get structure. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_GET ObjectGet; + +} tOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_RSP + + Members: + Header + OCTVC1 Message Header + ObjectGet + Generic object get structure. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_GET ObjectGet; + +} tOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_DEVICE_RESET_CMD + NOTE: This command is only valid as of OCTVOC-1.06.00-PR. Be aware that older + versions will return an error (invalid command ID) when this command is + received. + Older versions (pre OCTVOC-1.06.00-PR) must be reset using the + cOCTVC1_MAIN_MSG_OCT1010_RESET_CID command. + + Members: + Header + OCTVC1 Message Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + +} tOCTVC1_MAIN_MSG_DEVICE_RESET_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_DEVICE_RESET_RSP + + Members: + Header + OCTVC1 Message Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + +} tOCTVC1_MAIN_MSG_DEVICE_RESET_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_DEVICE_INFO_CMD + + Members: + Header + OCTVC1 Message Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + +} tOCTVC1_MAIN_MSG_DEVICE_INFO_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_DEVICE_INFO_RSP + + Members: + Header + OCTVC1 Message Header + ulDeviceType + Octasic Device type + abyDeviceInfo + abyUserInfo +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTDEV_DEVICES_TYPE_ENUM ulDeviceType; + tOCT_UINT8 abyDeviceInfo[cOCTVC1_MAIN_DEVICE_MAX_INFO_BYTE_SIZE]; + tOCT_UINT8 abyUserInfo[cOCTVC1_MAIN_USER_MAX_INFO_BYTE_SIZE]; + +} tOCTVC1_MAIN_MSG_DEVICE_INFO_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_CMD + + Members: + Header + OCTVC1 Message Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + +} tOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_RSP + + Members: + Header + OCTVC1 Message Header + aCoreStatus +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_MAIN_OPUS_CORE_STATUS aCoreStatus[cOCTVC1_MAIN_MAX_CORE_NUMBER]; + +} tOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_CMD + + Members: + Header + OCTVC1 Message Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + +} tOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_RSP + + Members: + Header + OCTVC1 Message Header + aCoreInfo +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_MAIN_OPUS_CORE_INFO aCoreInfo[cOCTVC1_MAIN_MAX_CORE_NUMBER]; + +} tOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD + This command starts the redundancy server within the Vocallo MGW. It transforms + an active MGW to a backup MGW (by default, a MGW boots in active mode). + Multiple redundant MGWs can be added to and removed from this server. + Note that once a redundancy server is started, all resources necessary for + VSPMP VOC, VPSMP VID, NET and CPP are disabled and reused for redundancy. + Hence, all commands from these APIs are ignored if transmitted directly to the + server. + + Members: + Header + OCTVC1 Message Header + ulMaxNumServerMgw + Range: [1..] + Default: 2 + Number of redundant MGWs supported by this server. + Cannot be higher then the ulMaxNumSystemMgw returned by + cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_CID. + ulForceApiResourceCleanUpFlag + Default: cOCT_FALSE + If set to cOCT_TRUE, will force the execution of a + cOCTVC1_MAIN_MSG_MODULE_CLEANUP_API_RESOURCE_CID on the active MGW, with the + ulMainBufferFlag, ulVspMpPlaylistFlag, ulVspMpUserToneFlag, + ulMainDebugForwardFlag and ulCppForwardObjFlag flags set to cOCT_FALSE. + If set to cOCT_FALSE, the cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CID will + fail if there are any opened object on the acitve MGW, except for + ulMainNumBufferOpened, ulVspMpNumPlaylistOpened, ulVspMpNumUserToneOpened or + ulCppNumForwardObjOpened from the cOCTVC1_MAIN_MSG_MODULE_GET_API_RESOURCE_CID. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 ulMaxNumServerMgw; + tOCT_BOOL32 ulForceApiResourceCleanUpFlag; + +} tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_RSP + + Members: + Header + OCTVC1 Message Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + +} tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_STOP_CMD + This command stops the redundancy server within the backup Vocallo MGW. + Note: this command will remove all redundant MGWs in the redundancy server. + Once the redundancy server stopped, all resources necessary for VSPMP VOC, + VPSMP VID, NET and CPP are re-enabled. + + Members: + Header + OCTVC1 Message Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + +} tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_STOP_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_STOP_RSP + + Members: + Header + OCTVC1 Message Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + +} tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_STOP_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_CMD + This command retrieves the current redundancy server configuration parameters. + + Members: + Header + OCTVC1 Message Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + +} tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP + + Members: + Header + OCTVC1 Message Header + ulMaxNumSystemMgw + Maximum number of redundant MGW supported by this system. + This indicates the maximum value of the ulServerMaxMgwCnt in the + cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CID. + ulMaxNumServerMgw + Maximum number of redundant MGW supported by this server. + Value of the ulServerMaxMgwCnt used the + cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CID, 0 if the redundancy server is not + started. + ulMgwCnt + Current number of redundant MGW added in this server, 0 if the redundancy + server is not started. + State + Current state of redundancy server. + hFailoverMgw + Redundant MGW identifier used for failover. + Set to cOCTVC1_HANDLE_INVALID if no failover performed. + In other words, set to cOCTVC1_HANDLE_INVALID when FailoverStatus is INVALID + FailoverStatus + Status of the failover. Invalid means no failover requested. + ulFailoverReturnCode + First cOCTVC1_RC that occured while executing the failover. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 ulMaxNumSystemMgw; + tOCT_UINT32 ulMaxNumServerMgw; + tOCT_UINT32 ulMgwCnt; + tOCTVC1_MAIN_REDUNDANCY_SERVER_STATE_ENUM State; + tOCTVC1_HANDLE_OBJECT hFailoverMgw; + tOCTVC1_MAIN_REDUNDANCY_SERVER_FAILOVER_MGW_STATUS_ENUM FailoverStatus; + tOCT_UINT32 ulFailoverReturnCode; + +} tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CMD + This command adds a redundant MGW to the server. + The response returns hMgw, the identifier for the redundant MGW. This + identifier corresponds to the Destination FIFO Identifier described in the the + Vocallo API Messaging Interface [2]. + In the Vocallo Packets Transport API Library [9] implementation, the + Destination FIFO Identifier corresponds to the + tOCTVC1_PKT_API_SESS_OPEN_PARMS.ulControlProcessFifoId. + Every API command transmitted to the redundant MGW must have its Destination + FIFO Identifier set to the value of hMgw returned in the response. + + Members: + Header + OCTVC1 Message Header + hMgw + Default: cOCTVC1_HANDLE_INVALID + Redundant MGW identifier and control FIFO identifier (ulControlProcessFifoId in + the tOCTVC1_PKT_API_SESS_OPEN_PARMS) used to reach the redundancy API session. + To allocate an auto-assigned Redundant MGW identifier, set this field to + cOCTVC1_HANDLE_INVALID. + To force an Redundant MGW identifier, set this field to an unused value between + 1 and ulServerMaxMgwCnt inclusively. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE_OBJECT hMgw; + +} tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_RSP + + Members: + Header + OCTVC1 Message Header + hMgw + Redundant MGW identifier and control FIFO identifier (ulControlProcessFifoId) + used to reach the redundant MGW. + An API command must be sent to this FIFO ID in order to affect the redundant + MGW maintained by this session. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE_OBJECT hMgw; + +} tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CMD + This command removes a redundant MGW. The redundant MGW’s resources are freed. + + Members: + Header + OCTVC1 Message Header + hMgw + Default: cOCTVC1_HANDLE_INVALID + Redundant MGW identifier and control FIFO identifier used to reach the + redundant MGW. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE_OBJECT hMgw; + +} tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_RSP + + Members: + Header + OCTVC1 Message Header + hMgw + Redundant MGW identifier and control FIFO identifier used to reach the + redundant MGW. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE_OBJECT hMgw; + +} tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_CMD + This command returns the list of added redundant MGWs. + + Members: + Header + OCTVC1 Message Header + ObjectCursor + Object cursor +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_OBJECT_GET ObjectCursor; + +} tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_RSP + + Members: + Header + OCTVC1 Message Header + ObjectCursor + Object cursor + ObjectList + Object List structure. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_OBJECT_GET ObjectCursor; + tOCTVC1_LIST_HANDLE_OBJECT_GET ObjectList; + +} tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_CMD + This command retrieves the redundant MGW configuration parameters. + + Members: + Header + OCTVC1 Message Header + hMgw + Redundant MGW identifier and control FIFO identifier used to reach the + redundant MGW. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE_OBJECT hMgw; + +} tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP + + Members: + Header + OCTVC1 Message Header + hMgw + Redundant MGW identifier and control FIFO identifier used to reach the + redundant MGW. + FailoverStatus + Status of the failover for Redundant MGW. Invalid means no failover requested. + ulFailoverReturnCode + First cOCTVC1_RC that occured while executing the failover. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE_OBJECT hMgw; + tOCTVC1_MAIN_REDUNDANCY_SERVER_FAILOVER_MGW_STATUS_ENUM FailoverStatus; + tOCT_UINT32 ulFailoverReturnCode; + +} tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_FILE_OPEN_CMD + + Members: + Header + OCTVC1 Message Header + szFileName + Null-Terminated file name string. + ulAccessMode + Default: cOCTVC1_MAIN_FILE_OPEN_MODE_MASK_READ +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT8 szFileName[(cOCTVC1_MAIN_FILE_NAME_MAX_LENGTH+1)]; + tOCTVC1_MAIN_FILE_OPEN_MODE_MASK ulAccessMode; + +} tOCTVC1_MAIN_MSG_FILE_OPEN_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_FILE_OPEN_RSP + + Members: + Header + OCTVC1 Message Header + hFile +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE_OBJECT hFile; + +} tOCTVC1_MAIN_MSG_FILE_OPEN_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_FILE_CLOSE_CMD + + Members: + Header + OCTVC1 Message Header + hFile + Default: cOCTVC1_HANDLE_INVALID +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE_OBJECT hFile; + +} tOCTVC1_MAIN_MSG_FILE_CLOSE_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_FILE_CLOSE_RSP + + Members: + Header + OCTVC1 Message Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + +} tOCTVC1_MAIN_MSG_FILE_CLOSE_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_CMD + + Members: + Header + OCTVC1 Message Header + szFileName + Null-Terminated file name string. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT8 szFileName[(cOCTVC1_MAIN_FILE_NAME_MAX_LENGTH+1)]; + +} tOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_RSP + + Members: + Header + OCTVC1 Message Header + szFileName + Null-Terminated file name string. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT8 szFileName[(cOCTVC1_MAIN_FILE_NAME_MAX_LENGTH+1)]; + +} tOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_FILE_WRITE_CMD + + Members: + Header + OCTVC1 Message Header + hFile + Default: cOCTVC1_HANDLE_INVALID + ulNumByteToWrite + Default: 1 + abyData +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE_OBJECT hFile; + tOCT_UINT32 ulNumByteToWrite; + tOCT_UINT8 abyData[cOCTVC1_MAIN_FILE_MAX_DATA_BYTE_SIZE]; + +} tOCTVC1_MAIN_MSG_FILE_WRITE_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_FILE_WRITE_RSP + + Members: + Header + OCTVC1 Message Header + ulNumByteWritten +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 ulNumByteWritten; + +} tOCTVC1_MAIN_MSG_FILE_WRITE_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_FILE_READ_CMD + + Members: + Header + OCTVC1 Message Header + hFile + Default: cOCTVC1_HANDLE_INVALID + ulMaxNumByteToRead + Default: cOCTVC1_MAIN_FILE_MAX_DATA_BYTE_SIZE +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE_OBJECT hFile; + tOCT_UINT32 ulMaxNumByteToRead; + +} tOCTVC1_MAIN_MSG_FILE_READ_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_FILE_READ_RSP + + Members: + Header + OCTVC1 Message Header + ulNumByteRead + abyData +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 ulNumByteRead; + tOCT_UINT8 abyData[cOCTVC1_MAIN_FILE_MAX_DATA_BYTE_SIZE]; + +} tOCTVC1_MAIN_MSG_FILE_READ_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_FILE_INFO_CMD + + Members: + Header + OCTVC1 Message Header + hFile + Default: cOCTVC1_HANDLE_INVALID +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE_OBJECT hFile; + +} tOCTVC1_MAIN_MSG_FILE_INFO_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_FILE_INFO_RSP + + Members: + Header + OCTVC1 Message Header + hFile + szFileName + Null-Terminated file name string. + ulAccessMode +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE_OBJECT hFile; + tOCT_UINT8 szFileName[(cOCTVC1_MAIN_FILE_NAME_MAX_LENGTH+1)]; + tOCTVC1_MAIN_FILE_OPEN_MODE_MASK ulAccessMode; + +} tOCTVC1_MAIN_MSG_FILE_INFO_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_FILE_LIST_CMD + List the cmd that are monitored + + Members: + Header + OCTVC1 Message Header + ObjectCursor + Object cursor +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_OBJECT_GET ObjectCursor; + +} tOCTVC1_MAIN_MSG_FILE_LIST_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_FILE_LIST_RSP + + Members: + Header + OCTVC1 Message Header + ObjectCursor + Object cursor + ObjectList + Object List structure. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_OBJECT_GET ObjectCursor; + tOCTVC1_LIST_HANDLE_OBJECT_GET ObjectList; + +} tOCTVC1_MAIN_MSG_FILE_LIST_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_CMD + + Members: + Header + OCTVC1 Message Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + +} tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_RSP + + Members: + Header + OCTVC1 Message Header + ulMaxFileEntry +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 ulMaxFileEntry; + +} tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_CMD + + Members: + Header + OCTVC1 Message Header + ObjectGet +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR ObjectGet; + +} tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_RSP + + Members: + Header + OCTVC1 Message Header + ObjectGet + ulAccessMode +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR ObjectGet; + tOCTVC1_MAIN_FILE_OPEN_MODE_MASK ulAccessMode; + +} tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_CMD + + Members: + Header + OCTVC1 Message Header + ulGetNewestFlag + Default: cOCT_TRUE +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_BOOL32 ulGetNewestFlag; + +} tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP + + Members: + Header + OCTVC1 Message Header + ulNumLogEntry + aLogEntry +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 ulNumLogEntry; + tOCTVC1_MAIN_LOG_ENTRY aLogEntry[5]; + +} tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_LOG_ERASE_CMD + + Members: + Header + OCTVC1 Message Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + +} tOCTVC1_MAIN_MSG_LOG_ERASE_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_LOG_ERASE_RSP + + Members: + Header + OCTVC1 Message Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + +} tOCTVC1_MAIN_MSG_LOG_ERASE_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_LICENSING_INFO_CMD + + Members: + Header + OCTVC1 Message Header + ObjectGet + Generic object get structure. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_MAIN_LICENSING_CURSOR ObjectGet; + +} tOCTVC1_MAIN_MSG_LICENSING_INFO_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP + + Members: + Header + OCTVC1 Message Header + ObjectGet + Generic object get structure. + ulFeatureType + ulManagedFlag + Whether the feature is managed by the licensing module or not. If set to + cOCT_TRUE, + the licensing module is responsible for enforcing the specified feature usage. + If set to cOCT_FALSE, the process(es) using the feature is responsible for + implementing + its own enforcement. + ulLicenseValue + Interpretation depends on feature type specified in ulFeatureType parameter: + FLAG: 0 or 1, whether the feature is allowed or not. + COUNT: Maximum number of times the feature can be used. + MIN: Absolute minimum value allowed for this feature. + MAX: Absolute maximum value allowed for this feature. + ulCurrentCount + If feature is of type "COUNT" and is "MANAGED" by the licensing server + (parameter fManaged + set to cOCT_TRUE), this value will indicate the current usage of the feature. + Otherwise + this field will be set to 0. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_MAIN_LICENSING_CURSOR ObjectGet; + tOCTVC1_MAIN_API_LICENSING_FEATURE_TYPE_ENUM ulFeatureType; + tOCT_BOOL32 ulManagedFlag; + tOCT_UINT32 ulLicenseValue; + tOCT_UINT32 ulCurrentCount; + +} tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_OCT1010_RESET_CMD + DEPRECATED as of OCTVOC-1.06.00-PR. Replaced by + cOCTVC1_MAIN_MSG_DEVICE_RESET_CID. Refer to the Main API document octvocas5001 + for further information. + + Members: + Header + OCTVC1 Message Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + +} tOCTVC1_MAIN_MSG_OCT1010_RESET_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_OCT1010_RESET_RSP + + Members: + Header + OCTVC1 Message Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + +} tOCTVC1_MAIN_MSG_OCT1010_RESET_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_OCT1010_INFO_CMD + + Members: + Header + OCTVC1 Message Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + +} tOCTVC1_MAIN_MSG_OCT1010_INFO_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP + + Members: + Header + OCTVC1 Message Header + ulOCT1010VersionId + szOCT1010Version + ulSerialNumber + ulProjectNumber + aOCT1010MacAddress + ulOCT1010IDVersionId + szOCT1010IDVersion + ulTdmNumStream + ulTdmStreamFrequency + aMacAddress + aulUserInfo +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 ulOCT1010VersionId; + tOCT_UINT8 szOCT1010Version[24]; + tOCT_UINT32 ulSerialNumber; + tOCT_UINT32 ulProjectNumber; + tOCTVC1_MAC_ADDRESS aOCT1010MacAddress[cOCTVC1_MAIN_OCT1010_ETH_MAX_NUM_PORT]; + tOCT_UINT32 ulOCT1010IDVersionId; + tOCT_UINT8 szOCT1010IDVersion[24]; + tOCT_UINT32 ulTdmNumStream; + tOCTVC1_MAIN_TDM_STREAM_FREQ_ENUM ulTdmStreamFrequency; + tOCTVC1_MAC_ADDRESS aMacAddress[cOCTVC1_MAIN_ETH_MAX_NUM_PORT]; + tOCT_UINT32 aulUserInfo[cOCTVC1_MAIN_USER_INFO_SIZE];/* NOSWAPMAC */ + +} tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_ETH_STATS_CMD + + Members: + Header + OCTVC1 Message Header + ulResetStatsFlag + Default: cOCT_FALSE + Statistics counters will be reset to zero after the current values are returned. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_BOOL32 ulResetStatsFlag; + +} tOCTVC1_MAIN_MSG_ETH_STATS_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_ETH_STATS_RSP + + Members: + Header + OCTVC1 Message Header + aStats +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_MAIN_ETH_PORT_STATS aStats[cOCTVC1_MAIN_ETH_MAX_NUM_PORT]; + +} tOCTVC1_MAIN_MSG_ETH_STATS_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_CMD + + Members: + Header + OCTVC1 Message Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + +} tOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP + + Members: + Header + OCTVC1 Message Header + aDynamic + aStatic +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC aDynamic[cOCTVC1_MAIN_ETH_MAX_NUM_PORT]; + tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC aStatic[cOCTVC1_MAIN_ETH_MAX_NUM_PORT]; + +} tOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CMD + + Members: + Header + OCTVC1 Message Header + aDynamic +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC aDynamic[cOCTVC1_MAIN_ETH_MAX_NUM_PORT]; + +} tOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_RSP + + Members: + Header + OCTVC1 Message Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + +} tOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_REGISTER_READ_CMD + + Members: + Header + OCTVC1 Message Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + +} tOCTVC1_MAIN_MSG_REGISTER_READ_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_REGISTER_READ_RSP + + Members: + Header + OCTVC1 Message Header + ulTdmTimestampReg + TDM Timestamp register. + ulNanoSecondCounterReg + NanoSecond timer register. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 ulTdmTimestampReg; + tOCT_UINT32 ulNanoSecondCounterReg; + +} tOCTVC1_MAIN_MSG_REGISTER_READ_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_CMD + + Members: + Header + OCTVC1 Message Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + +} tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP + + Members: + Header + OCTVC1 Message Header + ulOct1010IdType + OCT1010ID type value. + szOct1010IdType + OCT1010ID type, in string format ("octfxxx"). + ulTdmOutputEnableSupportFlag + Whether enabling and disabling the TDM output of the OCT1010ID is supported. + ulTdmOutputEnableDeviceFlag + Whether the TDM output of the OCT1010ID is currently active. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 ulOct1010IdType; + tOCT_INT8 szOct1010IdType[16]; + tOCT_BOOL32 ulTdmOutputEnableSupportFlag; + tOCT_BOOL32 ulTdmOutputEnableDeviceFlag; + +} tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_CMD + DEPRECATED as of OCTVOC-1.06.00-PR. Replaced by + cOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_CID. Refer to the Main API document + octvocas5001 for further information. + + Members: + Header + OCTVC1 Message Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + +} tOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_RSP + + Members: + Header + OCTVC1 Message Header + aCoreStatus +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_MAIN_OCT1010_CORE_STATUS aCoreStatus[cOCTDEV_DEVICES_OCT1010_MAX_CORE_NUMBER]; + +} tOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_CMD + DEPRECATED as of OCTVOC-1.06.00-PR. Replaced by + cOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_CID. Refer to the Main API document + octvocas5001 for further information. + + Members: + Header + OCTVC1 Message Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + +} tOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_RSP + + Members: + Header + OCTVC1 Message Header + aCoreInfo +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_MAIN_OCT1010_CORE_INFO aCoreInfo[cOCTDEV_DEVICES_OCT1010_MAX_CORE_NUMBER]; + +} tOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD + + Members: + Header + OCTVC1 Message Header + ulBank + ulDirection + ulTriStateHigh +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 ulBank; + tOCT_UINT32 ulDirection; + tOCT_UINT32 ulTriStateHigh; + +} tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_RSP + + Members: + Header + OCTVC1 Message Header + ulBank +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 ulBank; + +} tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_GPIO_READ_BANK_CMD + + Members: + Header + OCTVC1 Message Header + ulBank +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 ulBank; + +} tOCTVC1_MAIN_MSG_GPIO_READ_BANK_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_GPIO_READ_BANK_RSP + + Members: + Header + OCTVC1 Message Header + ulBank + ulValue +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 ulBank; + tOCT_UINT32 ulValue; + +} tOCTVC1_MAIN_MSG_GPIO_READ_BANK_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CMD + + Members: + Header + OCTVC1 Message Header + ulBank + ulValue +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 ulBank; + tOCT_UINT32 ulValue; + +} tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_RSP + + Members: + Header + OCTVC1 Message Header + ulBank +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 ulBank; + +} tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD + + Members: + Header + OCTVC1 Message Header + ulChipSelectPin + Default: 0x00000000 + ulClockPin + Default: 0x00000000 + ulDataOutPin + Default: 0x00000000 + ulDataInPin + Default: 0x00000000 + ulDivider + Default: 0x3E + ulSlaveSelectId + Default: 0 + ulClockFrequency + Default: 1000000 + ulClockPolarity + Default: cOCTVC1_MAIN_SPI_CLOCK_POLARITY_ENUM_HIGH + ulClockPhase + Default: cOCTVC1_MAIN_SPI_CLOCK_PHASE_ENUM_CLOCK_TRANSITION + ulReadByteCnt + Default: 0 + ulWriteByteCnt + Default: 0 + aulWriteData +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 ulChipSelectPin; + tOCT_UINT32 ulClockPin; + tOCT_UINT32 ulDataOutPin; + tOCT_UINT32 ulDataInPin; + tOCT_UINT32 ulDivider; + tOCT_UINT32 ulSlaveSelectId; + tOCT_UINT32 ulClockFrequency; + tOCTVC1_MAIN_SPI_CLOCK_POLARITY_ENUM ulClockPolarity; + tOCTVC1_MAIN_SPI_CLOCK_PHASE_ENUM ulClockPhase; + tOCT_UINT32 ulReadByteCnt; + tOCT_UINT32 ulWriteByteCnt; + tOCT_UINT32 aulWriteData[cOCTVC1_MAIN_SPI_ACCESS_TRANSFER_MAX_LENGTH]; + +} tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_SPI_ACCESS_RSP + + Members: + Header + OCTVC1 Message Header + aulReadData +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 aulReadData[cOCTVC1_MAIN_SPI_ACCESS_TRANSFER_MAX_LENGTH]; + +} tOCTVC1_MAIN_MSG_SPI_ACCESS_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_PROCESS_LIST_CMD + + Members: + Header + OCTVC1 Message Header + ObjectCursor + Object cursor +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_OBJECT_GET ObjectCursor; + +} tOCTVC1_MAIN_MSG_PROCESS_LIST_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_PROCESS_LIST_RSP + + Members: + Header + OCTVC1 Message Header + ObjectCursor + Object cursor + ObjectList + Object List structure. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_OBJECT_GET ObjectCursor; + tOCTVC1_LIST_HANDLE_OBJECT_GET ObjectList; + +} tOCTVC1_MAIN_MSG_PROCESS_LIST_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_PROCESS_INFO_CMD + + Members: + Header + OCTVC1 Message Header + hProcess + Default: cOCTVC1_HANDLE_INVALID + Process handle identifier. Typically retrieved using the + cOCTVC1_MAIN_MSG_DEVICE_INFO_CID command. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 hProcess; + +} tOCTVC1_MAIN_MSG_PROCESS_INFO_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_PROCESS_INFO_RSP + + Members: + Header + OCTVC1 Message Header + hProcess + szProcessImageName + Name of the process. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 hProcess; + tOCT_UINT8 szProcessImageName[(cOCTVC1_MAIN_PROCESS_IMAGE_NAME_MAX_LENGTH+1)];/* NOSWAPMAC */ + +} tOCTVC1_MAIN_MSG_PROCESS_INFO_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_MDIO_READ_PHY_CMD + + Members: + Header + OCTVC1 Message Header + ulPhyAddress + ulRegisterAddress +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 ulPhyAddress; + tOCT_UINT32 ulRegisterAddress; + +} tOCTVC1_MAIN_MSG_MDIO_READ_PHY_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_MDIO_READ_PHY_RSP + + Members: + Header + OCTVC1 Message Header + ulPhyAddress + ulReadData +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 ulPhyAddress; + tOCT_UINT32 ulReadData; + +} tOCTVC1_MAIN_MSG_MDIO_READ_PHY_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD + + Members: + Header + OCTVC1 Message Header + ulPhyAddress + ulRegisterAddress + ulWriteData +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 ulPhyAddress; + tOCT_UINT32 ulRegisterAddress; + tOCT_UINT32 ulWriteData; + +} tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_RSP + + Members: + Header + OCTVC1 Message Header + ulPhyAddress +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 ulPhyAddress; + +} tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD + + Members: + Header + OCTVC1 Message Header + ulEventMask + ulUserEventId + hEventDestObj + Destination Object handle + ulEventDestObjPort + Destination packet port to bind. + ulEventDestObjFifoId + Destination object FIFO ID. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_MAIN_EVT_MASK ulEventMask; + tOCT_UINT32 ulUserEventId; + tOCTVC1_HANDLE hEventDestObj; + tOCT_UINT32 ulEventDestObjPort; + tOCT_UINT32 ulEventDestObjFifoId; + +} tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_RSP + + Members: + Header + OCTVC1 Message Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + +} tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CMD + + Members: + Header + OCTVC1 Message Header + ulBank + ulMonitor +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 ulBank; + tOCT_UINT32 ulMonitor; + +} tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_RSP + + Members: + Header + OCTVC1 Message Header + ulBank +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 ulBank; + +} tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD + + Members: + Header + OCTVC1 Message Header + aulPhyAddress +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 aulPhyAddress[2]; + +} tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_RSP + + Members: + Header + OCTVC1 Message Header + aulPhyAddress +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 aulPhyAddress[2]; + +} tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD + + Members: + Header + OCTVC1 Message Header + hProcess + Default: 1 + ulAlarmThresholdHighPercent + ulAlarmThresholdLowPercent +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 hProcess; + tOCT_UINT32 ulAlarmThresholdHighPercent; + tOCT_UINT32 ulAlarmThresholdLowPercent; + +} tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_RSP + + Members: + Header + OCTVC1 Message Header + hProcess + ulProcessImageType + Process Type identifier. Value INVALID means no process running on this core. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 hProcess; + tOCTVC1_MAIN_PROCESS_TYPE_ENUM ulProcessImageType; + +} tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CMD + + Members: + Header + OCTVC1 Message Header + hProcess + Default: 1 +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 hProcess; + +} tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP + + Members: + Header + OCTVC1 Message Header + hProcess + ulProcessImageType + Process Type identifier. Value INVALID means no process running on this core. + ulAlarmThresholdHighPercent + Current threshold value configured to monitor High increasing CPU usage. + ulAlarmThresholdLowPercent + Current threshold value configured to monitor Low decreasing CPU usage. + ulProcessCpuUsagePercent + Current Process CPU usage value, expressed as a percentage. + ulProcessCpuUsageMinPercent + Minimal Process CPU usage value, since last + cOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CID command. + ulProcessCpuUsageMaxPercent + Minimal Process CPU usage value, since last + cOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CID command. + ulNumThread + Number of active threads, which also represents the number of cores allocated + to this process. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 hProcess; + tOCTVC1_MAIN_PROCESS_TYPE_ENUM ulProcessImageType; + tOCT_UINT32 ulAlarmThresholdHighPercent; + tOCT_UINT32 ulAlarmThresholdLowPercent; + tOCT_UINT32 ulProcessCpuUsagePercent; + tOCT_UINT32 ulProcessCpuUsageMinPercent; + tOCT_UINT32 ulProcessCpuUsageMaxPercent; + tOCT_UINT32 ulNumThread; + +} tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD + + Members: + Header + OCTVC1 Message Header + ulFormat + Default: cOCTVC1_BUFFER_FORMAT_ENUM_UNKNOWN + Format of the content to be stored in the buffer. + ulByteLength + Range: [..] + Default: 8192 + Size, in bytes, requested for the new buffer. Depending on the buffer format, a + different minimum length may be used. + szBufferName + Array of bytes containing the name of the new buffer. + The buffer name can be up to cOCTVC1_MAIN_FILE_NAME_MAX_LENGTH characters long, + excluding the terminating NULL character. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_BUFFER_FORMAT_ENUM ulFormat; + tOCT_UINT32 ulByteLength; + tOCT_UINT8 szBufferName[(cOCTVC1_MAIN_FILE_NAME_MAX_LENGTH+1)]; + +} tOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_BUFFER_OPEN_RSP + + Members: + Header + OCTVC1 Message Header + hBuffer + Unique Object Identifier. + ulAllocatedByteLength + Range: [..] + Size, in bytes, allocated for the new buffer. + The size may have been rounded up in order to make sure it is a multiple of 16 + bytes. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE_OBJECT hBuffer; + tOCT_UINT32 ulAllocatedByteLength; + +} tOCTVC1_MAIN_MSG_BUFFER_OPEN_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_CMD + + Members: + Header + OCTVC1 Message Header + szBufferName + Array of bytes containing the name of the buffer. + The buffer name can be up to cOCTVC1_MAIN_FILE_NAME_MAX_LENGTH characters long, + excluding the terminating NULL character. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT8 szBufferName[(cOCTVC1_MAIN_FILE_NAME_MAX_LENGTH+1)]; + +} tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP + + Members: + Header + OCTVC1 Message Header + hBuffer + Unique Object Identifier. + ulFormat + Format of the content to be stored in the buffer. + szBufferName + Array of bytes containing the name of the buffer. + The buffer name can be up to cOCTVC1_MAIN_FILE_NAME_MAX_LENGTH characters long, + excluding the terminating NULL character. + ulUsedByteLength + Size, in bytes, of the information containeds in the buffer. + ulAllocatedByteLength + Size, in bytes, allocated for the buffer. + ulDependencyCount + Number of resources currently using this buffer. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE_OBJECT hBuffer; + tOCTVC1_BUFFER_FORMAT_ENUM ulFormat; + tOCT_UINT8 szBufferName[(cOCTVC1_MAIN_FILE_NAME_MAX_LENGTH+1)]; + tOCT_UINT32 ulUsedByteLength; + tOCT_UINT32 ulAllocatedByteLength; + tOCT_UINT32 ulDependencyCount; + +} tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_BUFFER_CLOSE_CMD + + Members: + Header + OCTVC1 Message Header + hBuffer + Default: cOCTVC1_HANDLE_INVALID + Unique Object Identifier. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE_OBJECT hBuffer; + +} tOCTVC1_MAIN_MSG_BUFFER_CLOSE_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_BUFFER_CLOSE_RSP + + Members: + Header + OCTVC1 Message Header + hBuffer + Unique Object Identifier. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE_OBJECT hBuffer; + +} tOCTVC1_MAIN_MSG_BUFFER_CLOSE_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_BUFFER_INFO_CMD + + Members: + Header + OCTVC1 Message Header + hBuffer + Default: cOCTVC1_HANDLE_INVALID + Unique Object Identifier. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE_OBJECT hBuffer; + +} tOCTVC1_MAIN_MSG_BUFFER_INFO_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP + + Members: + Header + OCTVC1 Message Header + hBuffer + Unique Object Identifier. + ulFormat + Format of the content to be stored in the buffer. + szBufferName + Array of bytes containing the name of the buffer. + The buffer name can be up to cOCTVC1_MAIN_FILE_NAME_MAX_LENGTH characters long, + excluding the terminating NULL character. + ulUsedByteLength + Size, in bytes, of the information containeds in the buffer. + ulAllocatedByteLength + Size, in bytes, allocated for the buffer. + ulDependencyCount + Number of resources currently using this buffer. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE_OBJECT hBuffer; + tOCTVC1_BUFFER_FORMAT_ENUM ulFormat; + tOCT_UINT8 szBufferName[(cOCTVC1_MAIN_FILE_NAME_MAX_LENGTH+1)]; + tOCT_UINT32 ulUsedByteLength; + tOCT_UINT32 ulAllocatedByteLength; + tOCT_UINT32 ulDependencyCount; + +} tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_BUFFER_LIST_CMD + + Members: + Header + OCTVC1 Message Header + ObjectCursor + Object cursor +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_OBJECT_GET ObjectCursor; + +} tOCTVC1_MAIN_MSG_BUFFER_LIST_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_BUFFER_LIST_RSP + + Members: + Header + OCTVC1 Message Header + ObjectCursor + Object cursor + ObjectList + Object List structure. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_OBJECT_GET ObjectCursor; + tOCTVC1_LIST_HANDLE_OBJECT_GET ObjectList; + +} tOCTVC1_MAIN_MSG_BUFFER_LIST_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD + + Members: + Header + OCTVC1 Message Header + hBuffer + Default: cOCTVC1_HANDLE_INVALID + Unique Object Identifier. + ulFormat + Default: cOCTVC1_DO_NOT_MODIFY + Format of the content to be stored in the buffer. + ulUsedByteSize + Default: cOCTVC1_DO_NOT_MODIFY + Size, in bytes, of the information contained in the buffer. + Setting this parameter to zero resets the content of the buffer. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE_OBJECT hBuffer; + tOCTVC1_BUFFER_FORMAT_ENUM ulFormat; + tOCT_UINT32 ulUsedByteSize; + +} tOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_BUFFER_MODIFY_RSP + + Members: + Header + OCTVC1 Message Header + hBuffer + Unique Object Identifier. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE_OBJECT hBuffer; + +} tOCTVC1_MAIN_MSG_BUFFER_MODIFY_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD + + Members: + Header + OCTVC1 Message Header + hBuffer + Default: cOCTVC1_HANDLE_INVALID + Unique Object Identifier. + ulWriteByteLength + Range: [..] + Default: 0 + Number of bytes in abyWriteData to write to the buffer. + The length must be a multiple of 16 bytes. + ulWriteByteOffset + Range: [..] + Default: 0 + Offset within the buffer where abyWriteData must be written. + The offset must be a multiple of 16 bytes. + abyWriteData + Array of bytes containing the data to write to the buffer. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE_OBJECT hBuffer; + tOCT_UINT32 ulWriteByteLength; + tOCT_UINT32 ulWriteByteOffset; + tOCT_UINT8 abyWriteData[cOCTVC1_MAIN_BUFFER_MAX_DATA_BYTE_SIZE]; + +} tOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_BUFFER_WRITE_RSP + + Members: + Header + OCTVC1 Message Header + hBuffer + Unique Object Identifier. + ulNumByteWritten + Number of bytes successfully written to the buffer. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE_OBJECT hBuffer; + tOCT_UINT32 ulNumByteWritten; + +} tOCTVC1_MAIN_MSG_BUFFER_WRITE_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_BUFFER_READ_CMD + + Members: + Header + OCTVC1 Message Header + hBuffer + Default: cOCTVC1_HANDLE_INVALID + Unique Object Identifier. + ulMaxReadByteLength + Range: [..] + Default: cOCTVC1_MAIN_BUFFER_MAX_DATA_BYTE_SIZE + Maximum number of bytes to read from the buffer. + The length must be a multiple of 16 bytes. + ulReadByteOffset + Range: [..] + Default: 0 + Offset within the buffer where the first byte to read is located. + The offset must be a multiple of 16 bytes. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE_OBJECT hBuffer; + tOCT_UINT32 ulMaxReadByteLength; + tOCT_UINT32 ulReadByteOffset; + +} tOCTVC1_MAIN_MSG_BUFFER_READ_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_BUFFER_READ_RSP + + Members: + Header + OCTVC1 Message Header + hBuffer + Unique Object Identifier. + ulDoneFlag + This flag indicates if the end of the buffer has been reached. + cOCT_TRUE: No more data can be read from the buffer, the end of the buffer has + been reached. + cOCT_FALSE: More data can be read from the buffer. + ulNumByteRead + Number of bytes successfully read from the buffer. + abyData + Array of bytes containing the data read from the buffer. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE_OBJECT hBuffer; + tOCT_BOOL32 ulDoneFlag; + tOCT_UINT32 ulNumByteRead; + tOCT_UINT8 abyData[cOCTVC1_MAIN_BUFFER_MAX_DATA_BYTE_SIZE]; + +} tOCTVC1_MAIN_MSG_BUFFER_READ_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD + + Members: + Header + OCTVC1 Message Header + ulTracingMode + Default: cOCTVC1_MAIN_TRACING_MODE_ENUM_NORMAL + Tracing mode to use. + ulTracingType + Default: cOCTVC1_MAIN_TRACING_TYPE_ENUM_ALL + Type of payload to trace. + ulNumBuffer + Default: 1 + Number of buffer identifier provide for the tracing mechanism. + aBufferId + Array of unique Object Identifier. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_MAIN_TRACING_MODE_ENUM ulTracingMode; + tOCTVC1_MAIN_TRACING_TYPE_ENUM ulTracingType; + tOCT_UINT32 ulNumBuffer; + tOCTVC1_HANDLE_OBJECT aBufferId[cOCTVC1_MAIN_TRACING_START_MAX_NUM_BUFFER]; + +} tOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_MODULE_START_TRACING_RSP + + Members: + Header + OCTVC1 Message Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + +} tOCTVC1_MAIN_MSG_MODULE_START_TRACING_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_MODULE_STOP_TRACING_CMD + + Members: + Header + OCTVC1 Message Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + +} tOCTVC1_MAIN_MSG_MODULE_STOP_TRACING_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_MODULE_STOP_TRACING_RSP + + Members: + Header + OCTVC1 Message Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + +} tOCTVC1_MAIN_MSG_MODULE_STOP_TRACING_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD + + Members: + Header + OCTVC1 Message Header + hDestObj + Destination Object handle + ulDestObjPort + Destination packet port to bind. + ulDestObjFifoId + Default: cOCTVC1_FIFO_ID_INVALID + Destination object FIFO ID. + DestMacAddress + Mac Address of the Vocallo port of the destination object + SrcMacAddress + Mac Address of the Vocallo port of the source object, only effective if + the destination Mac Address is not equal to 0 +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hDestObj; + tOCT_UINT32 ulDestObjPort; + tOCT_UINT32 ulDestObjFifoId; + tOCTVC1_MAC_ADDRESS DestMacAddress; + tOCTVC1_MAC_ADDRESS SrcMacAddress; + +} tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_RSP + + Members: + Header + OCTVC1 Message Header + hForward + Debug Forward Object Handle + ulFifoId + Fifo ID used to reach the Debug Forward object. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hForward; + tOCT_UINT32 ulFifoId; + +} tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_CMD + + Members: + Header + OCTVC1 Message Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + +} tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP + + Members: + Header + OCTVC1 Message Header + ulEventMask + ulUserEventId + hEventDestObj + Destination Object handle + ulEventDestObjPort + Destination packet port to bind. + ulEventDestObjFifoId + Destination object FIFO ID. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_MAIN_EVT_MASK ulEventMask; + tOCT_UINT32 ulUserEventId; + tOCTVC1_HANDLE hEventDestObj; + tOCT_UINT32 ulEventDestObjPort; + tOCT_UINT32 ulEventDestObjFifoId; + +} tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CMD + This command initiates a failover on one of the redundant MGWs. + During a failover, MGW resource contexts and control FIFOs are destroyed. + The backup MGW sends an event once the failover is completed to inform the host + of the result of the failover. Once failover done, the backup MGW becomes an + active MGW. + + Members: + Header + OCTVC1 Message Header + hMgw + Default: cOCTVC1_HANDLE_INVALID + Redundant MGW identifier and control FIFO identifier used to reach the + redundant MGW. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE_OBJECT hMgw; + +} tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_RSP + + Members: + Header + OCTVC1 Message Header + hMgw + Default: cOCTVC1_HANDLE_INVALID + Redundant MGW identifier and control FIFO identifier used to reach the + redundant MGW. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE_OBJECT hMgw; + +} tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_OCT1010_STATS_CMD + + Members: + Header + OCTVC1 Message Header + ulResetStatsFlag + Default: cOCT_FALSE + Statistics counters will be reset to zero after the current values are returned. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_BOOL32 ulResetStatsFlag; + +} tOCTVC1_MAIN_MSG_OCT1010_STATS_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_OCT1010_STATS_RSP + + Members: + Header + OCTVC1 Message Header + ulOCT1010MonitorNumber + OCT1010 monitoring value. + ulTdmCpyOutOfBandwidthCnt + Number of time TDM out of bandwidth ROL is detected. TDM out of bandwidth ROL + is detected when mclk frequency is too slow to transfer all available data from + H100 SYNC fifos to TDMCPY module. + ulTdmTxTimeslotPtrOutOfSyncCnt + Number of time TDM pointer desynchronisation has occurred on the TDM bus. + ulTdmTimestampIncrementErrorCnt + Number of time a problem has occurred with the OCT1010 Timestamp Increment + command. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 ulOCT1010MonitorNumber; + tOCT_UINT32 ulTdmCpyOutOfBandwidthCnt; + tOCT_UINT32 ulTdmTxTimeslotPtrOutOfSyncCnt; + tOCT_UINT32 ulTdmTimestampIncrementErrorCnt; + +} tOCTVC1_MAIN_MSG_OCT1010_STATS_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_OCT2200_STATS_CMD + + Members: + Header + OCTVC1 Message Header + ulResetStatsFlag + Default: cOCT_FALSE + Statistics counters will be reset to zero after the current values are returned. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_BOOL32 ulResetStatsFlag; + +} tOCTVC1_MAIN_MSG_OCT2200_STATS_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_OCT2200_STATS_RSP + + Members: + Header + OCTVC1 Message Header + ulOCT2200MonitorNumber + OCT1010 monitoring value. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_UINT32 ulOCT2200MonitorNumber; + +} tOCTVC1_MAIN_MSG_OCT2200_STATS_RSP; + + +/*************** INCLUDE FILES WITH DEPENDENCIES ON THIS FILE **************/ +#include "octvc1_main_evt.h" + +#ifdef cDO_PRAGMA_PACK_POP +#pragma pack( pop ) +#endif /* cDO_PRAGMA_PACK_POP */ +#undef cDO_PRAGMA_PACK_POP + +#endif /* __OCTVC1_MAIN_API_H__ */ + diff --git a/software/include/vocallo/main/octvc1_main_api_swap.h b/software/include/vocallo/main/octvc1_main_api_swap.h new file mode 100644 index 0000000..81e79c7 --- /dev/null +++ b/software/include/vocallo/main/octvc1_main_api_swap.h @@ -0,0 +1,1628 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* + +File: octvc1_main_api_swap.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#ifndef __OCTVC1_MAIN_API_SWAP_H__ +#define __OCTVC1_MAIN_API_SWAP_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************** INCLUDE FILES *******************************/ +#include "../octvc1_swap_hdrs.h" +#include "octvc1_main_api.h" + +/********************************* MACROS **********************************/ + + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_LICENSING_CURSOR_SWAP( _f_pParms ){ tOCTVC1_MAIN_LICENSING_CURSOR * pOCTVC1_MAIN_LICENSING_CURSOR = (_f_pParms); \ + ((tOCTVC1_MAIN_LICENSING_CURSOR *)pOCTVC1_MAIN_LICENSING_CURSOR)->ulGetMode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_LICENSING_CURSOR *)pOCTVC1_MAIN_LICENSING_CURSOR)->ulGetMode); \ +} +#else +#define mOCTVC1_MAIN_LICENSING_CURSOR_SWAP( pOCTVC1_MAIN_LICENSING_CURSOR ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_THREAD_CPU_USAGE_SWAP( _f_pParms ){ tOCTVC1_MAIN_THREAD_CPU_USAGE * pOCTVC1_MAIN_THREAD_CPU_USAGE = (_f_pParms); \ + ((tOCTVC1_MAIN_THREAD_CPU_USAGE *)pOCTVC1_MAIN_THREAD_CPU_USAGE)->hThread = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_THREAD_CPU_USAGE *)pOCTVC1_MAIN_THREAD_CPU_USAGE)->hThread); \ + ((tOCTVC1_MAIN_THREAD_CPU_USAGE *)pOCTVC1_MAIN_THREAD_CPU_USAGE)->ulCpuUsagePercent = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_THREAD_CPU_USAGE *)pOCTVC1_MAIN_THREAD_CPU_USAGE)->ulCpuUsagePercent); \ +} +#else +#define mOCTVC1_MAIN_THREAD_CPU_USAGE_SWAP( pOCTVC1_MAIN_THREAD_CPU_USAGE ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_OPUS_CORE_STATUS_SWAP( _f_pParms ){ tOCTVC1_MAIN_OPUS_CORE_STATUS * pOCTVC1_MAIN_OPUS_CORE_STATUS = (_f_pParms); \ + ((tOCTVC1_MAIN_OPUS_CORE_STATUS *)pOCTVC1_MAIN_OPUS_CORE_STATUS)->ulCoreStatus = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_OPUS_CORE_STATUS *)pOCTVC1_MAIN_OPUS_CORE_STATUS)->ulCoreStatus); \ + ((tOCTVC1_MAIN_OPUS_CORE_STATUS *)pOCTVC1_MAIN_OPUS_CORE_STATUS)->ulProgramCounter = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_OPUS_CORE_STATUS *)pOCTVC1_MAIN_OPUS_CORE_STATUS)->ulProgramCounter); \ + ((tOCTVC1_MAIN_OPUS_CORE_STATUS *)pOCTVC1_MAIN_OPUS_CORE_STATUS)->ulFailureMask = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_OPUS_CORE_STATUS *)pOCTVC1_MAIN_OPUS_CORE_STATUS)->ulFailureMask); \ + ((tOCTVC1_MAIN_OPUS_CORE_STATUS *)pOCTVC1_MAIN_OPUS_CORE_STATUS)->ulAccessViolationAddress = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_OPUS_CORE_STATUS *)pOCTVC1_MAIN_OPUS_CORE_STATUS)->ulAccessViolationAddress); \ +} +#else +#define mOCTVC1_MAIN_OPUS_CORE_STATUS_SWAP( pOCTVC1_MAIN_OPUS_CORE_STATUS ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_OCT1010_CORE_STATUS_SWAP( _f_pParms ){ tOCTVC1_MAIN_OCT1010_CORE_STATUS * pOCTVC1_MAIN_OCT1010_CORE_STATUS = (_f_pParms); \ + ((tOCTVC1_MAIN_OCT1010_CORE_STATUS *)pOCTVC1_MAIN_OCT1010_CORE_STATUS)->ulCoreStatus = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_OCT1010_CORE_STATUS *)pOCTVC1_MAIN_OCT1010_CORE_STATUS)->ulCoreStatus); \ + ((tOCTVC1_MAIN_OCT1010_CORE_STATUS *)pOCTVC1_MAIN_OCT1010_CORE_STATUS)->ulProgramCounter = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_OCT1010_CORE_STATUS *)pOCTVC1_MAIN_OCT1010_CORE_STATUS)->ulProgramCounter); \ + ((tOCTVC1_MAIN_OCT1010_CORE_STATUS *)pOCTVC1_MAIN_OCT1010_CORE_STATUS)->ulAccessViolationAddress = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_OCT1010_CORE_STATUS *)pOCTVC1_MAIN_OCT1010_CORE_STATUS)->ulAccessViolationAddress); \ +} +#else +#define mOCTVC1_MAIN_OCT1010_CORE_STATUS_SWAP( pOCTVC1_MAIN_OCT1010_CORE_STATUS ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_OPUS_CORE_INFO_SWAP( _f_pParms ){ tOCTVC1_MAIN_OPUS_CORE_INFO * pOCTVC1_MAIN_OPUS_CORE_INFO = (_f_pParms); \ + ((tOCTVC1_MAIN_OPUS_CORE_INFO *)pOCTVC1_MAIN_OPUS_CORE_INFO)->hProcess = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_OPUS_CORE_INFO *)pOCTVC1_MAIN_OPUS_CORE_INFO)->hProcess); \ + ((tOCTVC1_MAIN_OPUS_CORE_INFO *)pOCTVC1_MAIN_OPUS_CORE_INFO)->ulPhysicalCoreId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_OPUS_CORE_INFO *)pOCTVC1_MAIN_OPUS_CORE_INFO)->ulPhysicalCoreId); \ + ((tOCTVC1_MAIN_OPUS_CORE_INFO *)pOCTVC1_MAIN_OPUS_CORE_INFO)->ulProcessImageType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_OPUS_CORE_INFO *)pOCTVC1_MAIN_OPUS_CORE_INFO)->ulProcessImageType); \ +} +#else +#define mOCTVC1_MAIN_OPUS_CORE_INFO_SWAP( pOCTVC1_MAIN_OPUS_CORE_INFO ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_OCT1010_CORE_INFO_SWAP( _f_pParms ){ tOCTVC1_MAIN_OCT1010_CORE_INFO * pOCTVC1_MAIN_OCT1010_CORE_INFO = (_f_pParms); \ + ((tOCTVC1_MAIN_OCT1010_CORE_INFO *)pOCTVC1_MAIN_OCT1010_CORE_INFO)->hProcess = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_OCT1010_CORE_INFO *)pOCTVC1_MAIN_OCT1010_CORE_INFO)->hProcess); \ + ((tOCTVC1_MAIN_OCT1010_CORE_INFO *)pOCTVC1_MAIN_OCT1010_CORE_INFO)->hThread = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_OCT1010_CORE_INFO *)pOCTVC1_MAIN_OCT1010_CORE_INFO)->hThread); \ + ((tOCTVC1_MAIN_OCT1010_CORE_INFO *)pOCTVC1_MAIN_OCT1010_CORE_INFO)->ulProcessImageType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_OCT1010_CORE_INFO *)pOCTVC1_MAIN_OCT1010_CORE_INFO)->ulProcessImageType); \ +} +#else +#define mOCTVC1_MAIN_OCT1010_CORE_INFO_SWAP( pOCTVC1_MAIN_OCT1010_CORE_INFO ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC_SWAP( _f_pParms ){ tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC * pOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC = (_f_pParms); \ + ((tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC *)pOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC)->ulEthPortEnableFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC *)pOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC)->ulEthPortEnableFlag); \ + ((tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC *)pOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC)->ulAcceptAllMacFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC *)pOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC)->ulAcceptAllMacFlag); \ + ((tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC *)pOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC)->ulAcceptUnicastFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC *)pOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC)->ulAcceptUnicastFlag); \ + ((tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC *)pOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC)->ulAcceptMulticastFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC *)pOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC)->ulAcceptMulticastFlag); \ + ((tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC *)pOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC)->ulAcceptBadCrcPktFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC *)pOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC)->ulAcceptBadCrcPktFlag); \ + ((tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC *)pOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC)->ulAcceptLongPktFormatFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC *)pOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC)->ulAcceptLongPktFormatFlag); \ + ((tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC *)pOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC)->ulBroadcastForwardPort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC *)pOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC)->ulBroadcastForwardPort); \ + ((tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC *)pOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC)->ulMulticastForwardPort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC *)pOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC)->ulMulticastForwardPort); \ + ((tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC *)pOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC)->ulUnicastForwardPort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC *)pOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC)->ulUnicastForwardPort); \ + ((tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC *)pOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC)->ulRxMirrorForwardPort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC *)pOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC)->ulRxMirrorForwardPort); \ + ((tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC *)pOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC)->ulRestrictedApiFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC *)pOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC)->ulRestrictedApiFlag); \ +} +#else +#define mOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC_SWAP( pOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC_SWAP( _f_pParms ){ tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC * pOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC = (_f_pParms); \ + ((tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC *)pOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC)->ulInterfaceType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC *)pOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC)->ulInterfaceType); \ + ((tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC *)pOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC)->ulMode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC *)pOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC)->ulMode); \ + ((tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC *)pOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC)->ulSpeed = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC *)pOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC)->ulSpeed); \ + ((tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC *)pOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC)->ulFullDuplexFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC *)pOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC)->ulFullDuplexFlag); \ + ((tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC *)pOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC)->ulPhyAddress = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC *)pOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC)->ulPhyAddress); \ + ((tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC *)pOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC)->ulPktQueuesByteSize = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC *)pOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC)->ulPktQueuesByteSize); \ +} +#else +#define mOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC_SWAP( pOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_ETH_PORT_STATS_SWAP( _f_pParms ){ tOCTVC1_MAIN_ETH_PORT_STATS * pOCTVC1_MAIN_ETH_PORT_STATS = (_f_pParms); \ + ((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulRxPktErrorCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulRxPktErrorCnt); \ + ((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulRxOddNibbleCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulRxOddNibbleCnt); \ + ((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulRxCrcErrorCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulRxCrcErrorCnt); \ + ((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulRxSfdAbsentCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulRxSfdAbsentCnt); \ + ((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulRxShortFrameCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulRxShortFrameCnt); \ + ((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulRxLongFrameCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulRxLongFrameCnt); \ + ((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulRxFalseCarrierCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulRxFalseCarrierCnt); \ + ((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulTxFalseCarrierCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulTxFalseCarrierCnt); \ + ((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulRxMemOverflowCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulRxMemOverflowCnt); \ + ((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulRxBufferOverflowCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulRxBufferOverflowCnt); \ + ((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulRxPauseFrameCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulRxPauseFrameCnt); \ + ((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulTxPauseFrameCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulTxPauseFrameCnt); \ + ((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulTxMemChecksum = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulTxMemChecksum); \ + ((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulTxBufferUnderflowCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulTxBufferUnderflowCnt); \ + ((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulDefaultMacAddressUsedFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulDefaultMacAddressUsedFlag); \ + ((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulTxLateCollisionCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulTxLateCollisionCnt); \ + ((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulTxExcessCollisionCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulTxExcessCollisionCnt); \ + ((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulTxExcessDeferralCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulTxExcessDeferralCnt); \ + ((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulRxAlignmentErrorCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulRxAlignmentErrorCnt); \ + ((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulRxJabberErrorCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulRxJabberErrorCnt); \ + ((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulRxLengthErrorCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulRxLengthErrorCnt); \ + ((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulRxOutOfRangeTypeCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulRxOutOfRangeTypeCnt); \ + ((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulRxWatchdogErrorCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulRxWatchdogErrorCnt); \ + ((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulRxIPv4HeaderErrorCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulRxIPv4HeaderErrorCnt); \ + ((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulRxIPv6HeaderErrorCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_ETH_PORT_STATS *)pOCTVC1_MAIN_ETH_PORT_STATS)->ulRxIPv6HeaderErrorCnt); \ +} +#else +#define mOCTVC1_MAIN_ETH_PORT_STATS_SWAP( pOCTVC1_MAIN_ETH_PORT_STATS ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR_SWAP( _f_pParms ){ tOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR * pOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR = (_f_pParms); \ + ((tOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR *)pOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR)->ulGetMode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR *)pOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR)->ulGetMode); \ +} +#else +#define mOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR_SWAP( pOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_LOG_ENTRY_SWAP( _f_pParms ){ tOCTVC1_MAIN_LOG_ENTRY * pOCTVC1_MAIN_LOG_ENTRY = (_f_pParms); \ + ((tOCTVC1_MAIN_LOG_ENTRY *)pOCTVC1_MAIN_LOG_ENTRY)->ulLogSeqNumber = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_LOG_ENTRY *)pOCTVC1_MAIN_LOG_ENTRY)->ulLogSeqNumber); \ + ((tOCTVC1_MAIN_LOG_ENTRY *)pOCTVC1_MAIN_LOG_ENTRY)->ulLogTimestamp = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_LOG_ENTRY *)pOCTVC1_MAIN_LOG_ENTRY)->ulLogTimestamp); \ + ((tOCTVC1_MAIN_LOG_ENTRY *)pOCTVC1_MAIN_LOG_ENTRY)->ulLogReserved0 = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_LOG_ENTRY *)pOCTVC1_MAIN_LOG_ENTRY)->ulLogReserved0); \ + ((tOCTVC1_MAIN_LOG_ENTRY *)pOCTVC1_MAIN_LOG_ENTRY)->ulLogReserved1 = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_LOG_ENTRY *)pOCTVC1_MAIN_LOG_ENTRY)->ulLogReserved1); \ +} +#else +#define mOCTVC1_MAIN_LOG_ENTRY_SWAP( pOCTVC1_MAIN_LOG_ENTRY ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_FILE_CURSOR_SWAP( _f_pParms ){ tOCTVC1_MAIN_FILE_CURSOR * pOCTVC1_MAIN_FILE_CURSOR = (_f_pParms); \ + ((tOCTVC1_MAIN_FILE_CURSOR *)pOCTVC1_MAIN_FILE_CURSOR)->ulGetMode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_FILE_CURSOR *)pOCTVC1_MAIN_FILE_CURSOR)->ulGetMode); \ +} +#else +#define mOCTVC1_MAIN_FILE_CURSOR_SWAP( pOCTVC1_MAIN_FILE_CURSOR ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_CMD * pOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_CMD *)pOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_CMD)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_CMD *)pOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_CMD)->hForward ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_CMD_SWAP( pOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_RSP * pOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_RSP *)pOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_RSP)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_RSP *)pOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_RSP)->hForward ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_RSP_SWAP( pOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_CMD * pOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_CMD *)pOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_CMD)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_GET_SWAP( &((tOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_CMD *)pOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_CMD)->ObjectGet ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_CMD_SWAP( pOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_RSP * pOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_RSP *)pOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_RSP)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_GET_SWAP( &((tOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_RSP *)pOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_RSP)->ObjectGet ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_RSP_SWAP( pOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_DEVICE_RESET_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_DEVICE_RESET_CMD * pOCTVC1_MAIN_MSG_DEVICE_RESET_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_DEVICE_RESET_CMD *)pOCTVC1_MAIN_MSG_DEVICE_RESET_CMD)->Header ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_DEVICE_RESET_CMD_SWAP( pOCTVC1_MAIN_MSG_DEVICE_RESET_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_DEVICE_RESET_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_DEVICE_RESET_RSP * pOCTVC1_MAIN_MSG_DEVICE_RESET_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_DEVICE_RESET_RSP *)pOCTVC1_MAIN_MSG_DEVICE_RESET_RSP)->Header ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_DEVICE_RESET_RSP_SWAP( pOCTVC1_MAIN_MSG_DEVICE_RESET_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_DEVICE_INFO_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_DEVICE_INFO_CMD * pOCTVC1_MAIN_MSG_DEVICE_INFO_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_DEVICE_INFO_CMD *)pOCTVC1_MAIN_MSG_DEVICE_INFO_CMD)->Header ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_DEVICE_INFO_CMD_SWAP( pOCTVC1_MAIN_MSG_DEVICE_INFO_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_DEVICE_INFO_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_DEVICE_INFO_RSP * pOCTVC1_MAIN_MSG_DEVICE_INFO_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_DEVICE_INFO_RSP *)pOCTVC1_MAIN_MSG_DEVICE_INFO_RSP)->Header ); } \ + ((tOCTVC1_MAIN_MSG_DEVICE_INFO_RSP *)pOCTVC1_MAIN_MSG_DEVICE_INFO_RSP)->ulDeviceType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_DEVICE_INFO_RSP *)pOCTVC1_MAIN_MSG_DEVICE_INFO_RSP)->ulDeviceType); \ +} +#else +#define mOCTVC1_MAIN_MSG_DEVICE_INFO_RSP_SWAP( pOCTVC1_MAIN_MSG_DEVICE_INFO_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_CMD * pOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_CMD *)pOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_CMD)->Header ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_CMD_SWAP( pOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_RSP * pOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_RSP *)pOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_RSP)->Header ); } \ + { tOCT_UINT32 jOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_RSP; \ + for( jOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_RSP=0; \ + jOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_RSP<(cOCTVC1_MAIN_MAX_CORE_NUMBER);jOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_RSP++ ) \ + { mOCTVC1_MAIN_OPUS_CORE_STATUS_SWAP( &((tOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_RSP *)pOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_RSP)->aCoreStatus[jOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_RSP] ); }} \ +} +#else +#define mOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_RSP_SWAP( pOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_CMD * pOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_CMD *)pOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_CMD)->Header ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_CMD_SWAP( pOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_RSP * pOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_RSP *)pOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_RSP)->Header ); } \ + { tOCT_UINT32 jOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_RSP; \ + for( jOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_RSP=0; \ + jOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_RSP<(cOCTVC1_MAIN_MAX_CORE_NUMBER);jOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_RSP++ ) \ + { mOCTVC1_MAIN_OPUS_CORE_INFO_SWAP( &((tOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_RSP *)pOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_RSP)->aCoreInfo[jOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_RSP] ); }} \ +} +#else +#define mOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_RSP_SWAP( pOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD * pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD)->Header ); } \ + ((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD)->ulMaxNumServerMgw = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD)->ulMaxNumServerMgw); \ + ((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD)->ulForceApiResourceCleanUpFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD)->ulForceApiResourceCleanUpFlag); \ +} +#else +#define mOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD_SWAP( pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_RSP * pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_RSP)->Header ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_RSP_SWAP( pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_STOP_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_STOP_CMD * pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_STOP_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_STOP_CMD *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_STOP_CMD)->Header ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_STOP_CMD_SWAP( pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_STOP_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_STOP_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_STOP_RSP * pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_STOP_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_STOP_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_STOP_RSP)->Header ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_STOP_RSP_SWAP( pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_STOP_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_CMD * pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_CMD *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_CMD)->Header ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_CMD_SWAP( pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP * pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP)->Header ); } \ + ((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP)->ulMaxNumSystemMgw = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP)->ulMaxNumSystemMgw); \ + ((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP)->ulMaxNumServerMgw = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP)->ulMaxNumServerMgw); \ + ((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP)->ulMgwCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP)->ulMgwCnt); \ + ((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP)->State = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP)->State); \ + ((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP)->hFailoverMgw = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP)->hFailoverMgw); \ + ((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP)->FailoverStatus = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP)->FailoverStatus); \ + ((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP)->ulFailoverReturnCode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP)->ulFailoverReturnCode); \ +} +#else +#define mOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP_SWAP( pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CMD * pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CMD *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CMD)->Header ); } \ + ((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CMD *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CMD)->hMgw = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CMD *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CMD)->hMgw); \ +} +#else +#define mOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CMD_SWAP( pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_RSP * pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_RSP)->Header ); } \ + ((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_RSP)->hMgw = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_RSP)->hMgw); \ +} +#else +#define mOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_RSP_SWAP( pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CMD * pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CMD *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CMD)->Header ); } \ + ((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CMD *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CMD)->hMgw = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CMD *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CMD)->hMgw); \ +} +#else +#define mOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CMD_SWAP( pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_RSP * pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_RSP)->Header ); } \ + ((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_RSP)->hMgw = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_RSP)->hMgw); \ +} +#else +#define mOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_RSP_SWAP( pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_CMD * pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_CMD *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_CMD)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_OBJECT_GET_SWAP( &((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_CMD *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_CMD)->ObjectCursor ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_CMD_SWAP( pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_RSP * pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_RSP)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_OBJECT_GET_SWAP( &((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_RSP)->ObjectCursor ); } \ + { mOCTVC1_LIST_HANDLE_OBJECT_GET_SWAP( &((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_RSP)->ObjectList ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_RSP_SWAP( pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_CMD * pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_CMD *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_CMD)->Header ); } \ + ((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_CMD *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_CMD)->hMgw = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_CMD *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_CMD)->hMgw); \ +} +#else +#define mOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_CMD_SWAP( pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP * pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP)->Header ); } \ + ((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP)->hMgw = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP)->hMgw); \ + ((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP)->FailoverStatus = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP)->FailoverStatus); \ + ((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP)->ulFailoverReturnCode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP)->ulFailoverReturnCode); \ +} +#else +#define mOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP_SWAP( pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_FILE_OPEN_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_FILE_OPEN_CMD * pOCTVC1_MAIN_MSG_FILE_OPEN_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_FILE_OPEN_CMD *)pOCTVC1_MAIN_MSG_FILE_OPEN_CMD)->Header ); } \ + ((tOCTVC1_MAIN_MSG_FILE_OPEN_CMD *)pOCTVC1_MAIN_MSG_FILE_OPEN_CMD)->ulAccessMode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_FILE_OPEN_CMD *)pOCTVC1_MAIN_MSG_FILE_OPEN_CMD)->ulAccessMode); \ +} +#else +#define mOCTVC1_MAIN_MSG_FILE_OPEN_CMD_SWAP( pOCTVC1_MAIN_MSG_FILE_OPEN_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_FILE_OPEN_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_FILE_OPEN_RSP * pOCTVC1_MAIN_MSG_FILE_OPEN_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_FILE_OPEN_RSP *)pOCTVC1_MAIN_MSG_FILE_OPEN_RSP)->Header ); } \ + ((tOCTVC1_MAIN_MSG_FILE_OPEN_RSP *)pOCTVC1_MAIN_MSG_FILE_OPEN_RSP)->hFile = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_FILE_OPEN_RSP *)pOCTVC1_MAIN_MSG_FILE_OPEN_RSP)->hFile); \ +} +#else +#define mOCTVC1_MAIN_MSG_FILE_OPEN_RSP_SWAP( pOCTVC1_MAIN_MSG_FILE_OPEN_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_FILE_CLOSE_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_FILE_CLOSE_CMD * pOCTVC1_MAIN_MSG_FILE_CLOSE_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_FILE_CLOSE_CMD *)pOCTVC1_MAIN_MSG_FILE_CLOSE_CMD)->Header ); } \ + ((tOCTVC1_MAIN_MSG_FILE_CLOSE_CMD *)pOCTVC1_MAIN_MSG_FILE_CLOSE_CMD)->hFile = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_FILE_CLOSE_CMD *)pOCTVC1_MAIN_MSG_FILE_CLOSE_CMD)->hFile); \ +} +#else +#define mOCTVC1_MAIN_MSG_FILE_CLOSE_CMD_SWAP( pOCTVC1_MAIN_MSG_FILE_CLOSE_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_FILE_CLOSE_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_FILE_CLOSE_RSP * pOCTVC1_MAIN_MSG_FILE_CLOSE_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_FILE_CLOSE_RSP *)pOCTVC1_MAIN_MSG_FILE_CLOSE_RSP)->Header ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_FILE_CLOSE_RSP_SWAP( pOCTVC1_MAIN_MSG_FILE_CLOSE_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_CMD * pOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_CMD *)pOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_CMD)->Header ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_CMD_SWAP( pOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_RSP * pOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_RSP *)pOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_RSP)->Header ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_RSP_SWAP( pOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_FILE_WRITE_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_FILE_WRITE_CMD * pOCTVC1_MAIN_MSG_FILE_WRITE_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_FILE_WRITE_CMD *)pOCTVC1_MAIN_MSG_FILE_WRITE_CMD)->Header ); } \ + ((tOCTVC1_MAIN_MSG_FILE_WRITE_CMD *)pOCTVC1_MAIN_MSG_FILE_WRITE_CMD)->hFile = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_FILE_WRITE_CMD *)pOCTVC1_MAIN_MSG_FILE_WRITE_CMD)->hFile); \ + ((tOCTVC1_MAIN_MSG_FILE_WRITE_CMD *)pOCTVC1_MAIN_MSG_FILE_WRITE_CMD)->ulNumByteToWrite = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_FILE_WRITE_CMD *)pOCTVC1_MAIN_MSG_FILE_WRITE_CMD)->ulNumByteToWrite); \ +} +#else +#define mOCTVC1_MAIN_MSG_FILE_WRITE_CMD_SWAP( pOCTVC1_MAIN_MSG_FILE_WRITE_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_FILE_WRITE_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_FILE_WRITE_RSP * pOCTVC1_MAIN_MSG_FILE_WRITE_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_FILE_WRITE_RSP *)pOCTVC1_MAIN_MSG_FILE_WRITE_RSP)->Header ); } \ + ((tOCTVC1_MAIN_MSG_FILE_WRITE_RSP *)pOCTVC1_MAIN_MSG_FILE_WRITE_RSP)->ulNumByteWritten = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_FILE_WRITE_RSP *)pOCTVC1_MAIN_MSG_FILE_WRITE_RSP)->ulNumByteWritten); \ +} +#else +#define mOCTVC1_MAIN_MSG_FILE_WRITE_RSP_SWAP( pOCTVC1_MAIN_MSG_FILE_WRITE_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_FILE_READ_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_FILE_READ_CMD * pOCTVC1_MAIN_MSG_FILE_READ_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_FILE_READ_CMD *)pOCTVC1_MAIN_MSG_FILE_READ_CMD)->Header ); } \ + ((tOCTVC1_MAIN_MSG_FILE_READ_CMD *)pOCTVC1_MAIN_MSG_FILE_READ_CMD)->hFile = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_FILE_READ_CMD *)pOCTVC1_MAIN_MSG_FILE_READ_CMD)->hFile); \ + ((tOCTVC1_MAIN_MSG_FILE_READ_CMD *)pOCTVC1_MAIN_MSG_FILE_READ_CMD)->ulMaxNumByteToRead = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_FILE_READ_CMD *)pOCTVC1_MAIN_MSG_FILE_READ_CMD)->ulMaxNumByteToRead); \ +} +#else +#define mOCTVC1_MAIN_MSG_FILE_READ_CMD_SWAP( pOCTVC1_MAIN_MSG_FILE_READ_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_FILE_READ_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_FILE_READ_RSP * pOCTVC1_MAIN_MSG_FILE_READ_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_FILE_READ_RSP *)pOCTVC1_MAIN_MSG_FILE_READ_RSP)->Header ); } \ + ((tOCTVC1_MAIN_MSG_FILE_READ_RSP *)pOCTVC1_MAIN_MSG_FILE_READ_RSP)->ulNumByteRead = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_FILE_READ_RSP *)pOCTVC1_MAIN_MSG_FILE_READ_RSP)->ulNumByteRead); \ +} +#else +#define mOCTVC1_MAIN_MSG_FILE_READ_RSP_SWAP( pOCTVC1_MAIN_MSG_FILE_READ_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_FILE_INFO_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_FILE_INFO_CMD * pOCTVC1_MAIN_MSG_FILE_INFO_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_FILE_INFO_CMD *)pOCTVC1_MAIN_MSG_FILE_INFO_CMD)->Header ); } \ + ((tOCTVC1_MAIN_MSG_FILE_INFO_CMD *)pOCTVC1_MAIN_MSG_FILE_INFO_CMD)->hFile = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_FILE_INFO_CMD *)pOCTVC1_MAIN_MSG_FILE_INFO_CMD)->hFile); \ +} +#else +#define mOCTVC1_MAIN_MSG_FILE_INFO_CMD_SWAP( pOCTVC1_MAIN_MSG_FILE_INFO_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_FILE_INFO_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_FILE_INFO_RSP * pOCTVC1_MAIN_MSG_FILE_INFO_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_FILE_INFO_RSP *)pOCTVC1_MAIN_MSG_FILE_INFO_RSP)->Header ); } \ + ((tOCTVC1_MAIN_MSG_FILE_INFO_RSP *)pOCTVC1_MAIN_MSG_FILE_INFO_RSP)->hFile = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_FILE_INFO_RSP *)pOCTVC1_MAIN_MSG_FILE_INFO_RSP)->hFile); \ + ((tOCTVC1_MAIN_MSG_FILE_INFO_RSP *)pOCTVC1_MAIN_MSG_FILE_INFO_RSP)->ulAccessMode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_FILE_INFO_RSP *)pOCTVC1_MAIN_MSG_FILE_INFO_RSP)->ulAccessMode); \ +} +#else +#define mOCTVC1_MAIN_MSG_FILE_INFO_RSP_SWAP( pOCTVC1_MAIN_MSG_FILE_INFO_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_FILE_LIST_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_FILE_LIST_CMD * pOCTVC1_MAIN_MSG_FILE_LIST_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_FILE_LIST_CMD *)pOCTVC1_MAIN_MSG_FILE_LIST_CMD)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_OBJECT_GET_SWAP( &((tOCTVC1_MAIN_MSG_FILE_LIST_CMD *)pOCTVC1_MAIN_MSG_FILE_LIST_CMD)->ObjectCursor ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_FILE_LIST_CMD_SWAP( pOCTVC1_MAIN_MSG_FILE_LIST_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_FILE_LIST_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_FILE_LIST_RSP * pOCTVC1_MAIN_MSG_FILE_LIST_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_FILE_LIST_RSP *)pOCTVC1_MAIN_MSG_FILE_LIST_RSP)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_OBJECT_GET_SWAP( &((tOCTVC1_MAIN_MSG_FILE_LIST_RSP *)pOCTVC1_MAIN_MSG_FILE_LIST_RSP)->ObjectCursor ); } \ + { mOCTVC1_LIST_HANDLE_OBJECT_GET_SWAP( &((tOCTVC1_MAIN_MSG_FILE_LIST_RSP *)pOCTVC1_MAIN_MSG_FILE_LIST_RSP)->ObjectList ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_FILE_LIST_RSP_SWAP( pOCTVC1_MAIN_MSG_FILE_LIST_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_CMD * pOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_CMD *)pOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_CMD)->Header ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_CMD_SWAP( pOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_RSP * pOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_RSP *)pOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_RSP)->Header ); } \ + ((tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_RSP *)pOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_RSP)->ulMaxFileEntry = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_RSP *)pOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_RSP)->ulMaxFileEntry); \ +} +#else +#define mOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_RSP_SWAP( pOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_CMD * pOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_CMD *)pOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_CMD)->Header ); } \ + { mOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR_SWAP( &((tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_CMD *)pOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_CMD)->ObjectGet ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_CMD_SWAP( pOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_RSP * pOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_RSP *)pOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_RSP)->Header ); } \ + { mOCTVC1_MAIN_FILE_SYSTEM_FILE_CURSOR_SWAP( &((tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_RSP *)pOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_RSP)->ObjectGet ); } \ + ((tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_RSP *)pOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_RSP)->ulAccessMode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_RSP *)pOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_RSP)->ulAccessMode); \ +} +#else +#define mOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_RSP_SWAP( pOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_LOG_READ_ENTRY_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_CMD * pOCTVC1_MAIN_MSG_LOG_READ_ENTRY_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_CMD *)pOCTVC1_MAIN_MSG_LOG_READ_ENTRY_CMD)->Header ); } \ + ((tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_CMD *)pOCTVC1_MAIN_MSG_LOG_READ_ENTRY_CMD)->ulGetNewestFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_CMD *)pOCTVC1_MAIN_MSG_LOG_READ_ENTRY_CMD)->ulGetNewestFlag); \ +} +#else +#define mOCTVC1_MAIN_MSG_LOG_READ_ENTRY_CMD_SWAP( pOCTVC1_MAIN_MSG_LOG_READ_ENTRY_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP * pOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP *)pOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP)->Header ); } \ + ((tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP *)pOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP)->ulNumLogEntry = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP *)pOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP)->ulNumLogEntry); \ + { tOCT_UINT32 jOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP; \ + for( jOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP=0; \ + jOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP<(5);jOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP++ ) \ + { mOCTVC1_MAIN_LOG_ENTRY_SWAP( &((tOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP *)pOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP)->aLogEntry[jOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP] ); }} \ +} +#else +#define mOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP_SWAP( pOCTVC1_MAIN_MSG_LOG_READ_ENTRY_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_LOG_ERASE_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_LOG_ERASE_CMD * pOCTVC1_MAIN_MSG_LOG_ERASE_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_LOG_ERASE_CMD *)pOCTVC1_MAIN_MSG_LOG_ERASE_CMD)->Header ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_LOG_ERASE_CMD_SWAP( pOCTVC1_MAIN_MSG_LOG_ERASE_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_LOG_ERASE_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_LOG_ERASE_RSP * pOCTVC1_MAIN_MSG_LOG_ERASE_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_LOG_ERASE_RSP *)pOCTVC1_MAIN_MSG_LOG_ERASE_RSP)->Header ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_LOG_ERASE_RSP_SWAP( pOCTVC1_MAIN_MSG_LOG_ERASE_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_LICENSING_INFO_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_LICENSING_INFO_CMD * pOCTVC1_MAIN_MSG_LICENSING_INFO_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_LICENSING_INFO_CMD *)pOCTVC1_MAIN_MSG_LICENSING_INFO_CMD)->Header ); } \ + { mOCTVC1_MAIN_LICENSING_CURSOR_SWAP( &((tOCTVC1_MAIN_MSG_LICENSING_INFO_CMD *)pOCTVC1_MAIN_MSG_LICENSING_INFO_CMD)->ObjectGet ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_LICENSING_INFO_CMD_SWAP( pOCTVC1_MAIN_MSG_LICENSING_INFO_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_LICENSING_INFO_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP * pOCTVC1_MAIN_MSG_LICENSING_INFO_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP *)pOCTVC1_MAIN_MSG_LICENSING_INFO_RSP)->Header ); } \ + { mOCTVC1_MAIN_LICENSING_CURSOR_SWAP( &((tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP *)pOCTVC1_MAIN_MSG_LICENSING_INFO_RSP)->ObjectGet ); } \ + ((tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP *)pOCTVC1_MAIN_MSG_LICENSING_INFO_RSP)->ulFeatureType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP *)pOCTVC1_MAIN_MSG_LICENSING_INFO_RSP)->ulFeatureType); \ + ((tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP *)pOCTVC1_MAIN_MSG_LICENSING_INFO_RSP)->ulManagedFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP *)pOCTVC1_MAIN_MSG_LICENSING_INFO_RSP)->ulManagedFlag); \ + ((tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP *)pOCTVC1_MAIN_MSG_LICENSING_INFO_RSP)->ulLicenseValue = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP *)pOCTVC1_MAIN_MSG_LICENSING_INFO_RSP)->ulLicenseValue); \ + ((tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP *)pOCTVC1_MAIN_MSG_LICENSING_INFO_RSP)->ulCurrentCount = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_LICENSING_INFO_RSP *)pOCTVC1_MAIN_MSG_LICENSING_INFO_RSP)->ulCurrentCount); \ +} +#else +#define mOCTVC1_MAIN_MSG_LICENSING_INFO_RSP_SWAP( pOCTVC1_MAIN_MSG_LICENSING_INFO_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_OCT1010_RESET_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_OCT1010_RESET_CMD * pOCTVC1_MAIN_MSG_OCT1010_RESET_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_OCT1010_RESET_CMD *)pOCTVC1_MAIN_MSG_OCT1010_RESET_CMD)->Header ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_OCT1010_RESET_CMD_SWAP( pOCTVC1_MAIN_MSG_OCT1010_RESET_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_OCT1010_RESET_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_OCT1010_RESET_RSP * pOCTVC1_MAIN_MSG_OCT1010_RESET_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_OCT1010_RESET_RSP *)pOCTVC1_MAIN_MSG_OCT1010_RESET_RSP)->Header ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_OCT1010_RESET_RSP_SWAP( pOCTVC1_MAIN_MSG_OCT1010_RESET_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_OCT1010_INFO_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_OCT1010_INFO_CMD * pOCTVC1_MAIN_MSG_OCT1010_INFO_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_OCT1010_INFO_CMD *)pOCTVC1_MAIN_MSG_OCT1010_INFO_CMD)->Header ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_OCT1010_INFO_CMD_SWAP( pOCTVC1_MAIN_MSG_OCT1010_INFO_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_OCT1010_INFO_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP * pOCTVC1_MAIN_MSG_OCT1010_INFO_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP *)pOCTVC1_MAIN_MSG_OCT1010_INFO_RSP)->Header ); } \ + ((tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP *)pOCTVC1_MAIN_MSG_OCT1010_INFO_RSP)->ulOCT1010VersionId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP *)pOCTVC1_MAIN_MSG_OCT1010_INFO_RSP)->ulOCT1010VersionId); \ + ((tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP *)pOCTVC1_MAIN_MSG_OCT1010_INFO_RSP)->ulSerialNumber = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP *)pOCTVC1_MAIN_MSG_OCT1010_INFO_RSP)->ulSerialNumber); \ + ((tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP *)pOCTVC1_MAIN_MSG_OCT1010_INFO_RSP)->ulProjectNumber = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP *)pOCTVC1_MAIN_MSG_OCT1010_INFO_RSP)->ulProjectNumber); \ + ((tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP *)pOCTVC1_MAIN_MSG_OCT1010_INFO_RSP)->ulOCT1010IDVersionId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP *)pOCTVC1_MAIN_MSG_OCT1010_INFO_RSP)->ulOCT1010IDVersionId); \ + ((tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP *)pOCTVC1_MAIN_MSG_OCT1010_INFO_RSP)->ulTdmNumStream = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP *)pOCTVC1_MAIN_MSG_OCT1010_INFO_RSP)->ulTdmNumStream); \ + ((tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP *)pOCTVC1_MAIN_MSG_OCT1010_INFO_RSP)->ulTdmStreamFrequency = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_OCT1010_INFO_RSP *)pOCTVC1_MAIN_MSG_OCT1010_INFO_RSP)->ulTdmStreamFrequency); \ +} +#else +#define mOCTVC1_MAIN_MSG_OCT1010_INFO_RSP_SWAP( pOCTVC1_MAIN_MSG_OCT1010_INFO_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_ETH_STATS_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_ETH_STATS_CMD * pOCTVC1_MAIN_MSG_ETH_STATS_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_ETH_STATS_CMD *)pOCTVC1_MAIN_MSG_ETH_STATS_CMD)->Header ); } \ + ((tOCTVC1_MAIN_MSG_ETH_STATS_CMD *)pOCTVC1_MAIN_MSG_ETH_STATS_CMD)->ulResetStatsFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_ETH_STATS_CMD *)pOCTVC1_MAIN_MSG_ETH_STATS_CMD)->ulResetStatsFlag); \ +} +#else +#define mOCTVC1_MAIN_MSG_ETH_STATS_CMD_SWAP( pOCTVC1_MAIN_MSG_ETH_STATS_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_ETH_STATS_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_ETH_STATS_RSP * pOCTVC1_MAIN_MSG_ETH_STATS_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_ETH_STATS_RSP *)pOCTVC1_MAIN_MSG_ETH_STATS_RSP)->Header ); } \ + { tOCT_UINT32 jOCTVC1_MAIN_MSG_ETH_STATS_RSP; \ + for( jOCTVC1_MAIN_MSG_ETH_STATS_RSP=0; \ + jOCTVC1_MAIN_MSG_ETH_STATS_RSP<(cOCTVC1_MAIN_ETH_MAX_NUM_PORT);jOCTVC1_MAIN_MSG_ETH_STATS_RSP++ ) \ + { mOCTVC1_MAIN_ETH_PORT_STATS_SWAP( &((tOCTVC1_MAIN_MSG_ETH_STATS_RSP *)pOCTVC1_MAIN_MSG_ETH_STATS_RSP)->aStats[jOCTVC1_MAIN_MSG_ETH_STATS_RSP] ); }} \ +} +#else +#define mOCTVC1_MAIN_MSG_ETH_STATS_RSP_SWAP( pOCTVC1_MAIN_MSG_ETH_STATS_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_CMD * pOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_CMD *)pOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_CMD)->Header ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_CMD_SWAP( pOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP * pOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP *)pOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP)->Header ); } \ + { tOCT_UINT32 jOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP; \ + for( jOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP=0; \ + jOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP<(cOCTVC1_MAIN_ETH_MAX_NUM_PORT);jOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP++ ) \ + { mOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC_SWAP( &((tOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP *)pOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP)->aDynamic[jOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP] ); }} \ + { tOCT_UINT32 jOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP; \ + for( jOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP=0; \ + jOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP<(cOCTVC1_MAIN_ETH_MAX_NUM_PORT);jOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP++ ) \ + { mOCTVC1_MAIN_ETH_PORT_CONFIG_STATIC_SWAP( &((tOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP *)pOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP)->aStatic[jOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP] ); }} \ +} +#else +#define mOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP_SWAP( pOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CMD * pOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CMD *)pOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CMD)->Header ); } \ + { tOCT_UINT32 jOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CMD; \ + for( jOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CMD=0; \ + jOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CMD<(cOCTVC1_MAIN_ETH_MAX_NUM_PORT);jOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CMD++ ) \ + { mOCTVC1_MAIN_ETH_PORT_CONFIG_DYNAMIC_SWAP( &((tOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CMD *)pOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CMD)->aDynamic[jOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CMD] ); }} \ +} +#else +#define mOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CMD_SWAP( pOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_RSP * pOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_RSP *)pOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_RSP)->Header ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_RSP_SWAP( pOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_REGISTER_READ_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_REGISTER_READ_CMD * pOCTVC1_MAIN_MSG_REGISTER_READ_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_REGISTER_READ_CMD *)pOCTVC1_MAIN_MSG_REGISTER_READ_CMD)->Header ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_REGISTER_READ_CMD_SWAP( pOCTVC1_MAIN_MSG_REGISTER_READ_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_REGISTER_READ_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_REGISTER_READ_RSP * pOCTVC1_MAIN_MSG_REGISTER_READ_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_REGISTER_READ_RSP *)pOCTVC1_MAIN_MSG_REGISTER_READ_RSP)->Header ); } \ + ((tOCTVC1_MAIN_MSG_REGISTER_READ_RSP *)pOCTVC1_MAIN_MSG_REGISTER_READ_RSP)->ulTdmTimestampReg = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_REGISTER_READ_RSP *)pOCTVC1_MAIN_MSG_REGISTER_READ_RSP)->ulTdmTimestampReg); \ + ((tOCTVC1_MAIN_MSG_REGISTER_READ_RSP *)pOCTVC1_MAIN_MSG_REGISTER_READ_RSP)->ulNanoSecondCounterReg = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_REGISTER_READ_RSP *)pOCTVC1_MAIN_MSG_REGISTER_READ_RSP)->ulNanoSecondCounterReg); \ +} +#else +#define mOCTVC1_MAIN_MSG_REGISTER_READ_RSP_SWAP( pOCTVC1_MAIN_MSG_REGISTER_READ_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_CMD * pOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_CMD *)pOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_CMD)->Header ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_CMD_SWAP( pOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP * pOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP *)pOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP)->Header ); } \ + ((tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP *)pOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP)->ulOct1010IdType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP *)pOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP)->ulOct1010IdType); \ + ((tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP *)pOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP)->ulTdmOutputEnableSupportFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP *)pOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP)->ulTdmOutputEnableSupportFlag); \ + ((tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP *)pOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP)->ulTdmOutputEnableDeviceFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP *)pOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP)->ulTdmOutputEnableDeviceFlag); \ +} +#else +#define mOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP_SWAP( pOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_CMD * pOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_CMD *)pOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_CMD)->Header ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_CMD_SWAP( pOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_RSP * pOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_RSP *)pOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_RSP)->Header ); } \ + { tOCT_UINT32 jOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_RSP; \ + for( jOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_RSP=0; \ + jOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_RSP<(cOCTDEV_DEVICES_OCT1010_MAX_CORE_NUMBER);jOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_RSP++ ) \ + { mOCTVC1_MAIN_OCT1010_CORE_STATUS_SWAP( &((tOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_RSP *)pOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_RSP)->aCoreStatus[jOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_RSP] ); }} \ +} +#else +#define mOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_RSP_SWAP( pOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_CMD * pOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_CMD *)pOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_CMD)->Header ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_CMD_SWAP( pOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_RSP * pOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_RSP *)pOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_RSP)->Header ); } \ + { tOCT_UINT32 jOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_RSP; \ + for( jOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_RSP=0; \ + jOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_RSP<(cOCTDEV_DEVICES_OCT1010_MAX_CORE_NUMBER);jOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_RSP++ ) \ + { mOCTVC1_MAIN_OCT1010_CORE_INFO_SWAP( &((tOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_RSP *)pOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_RSP)->aCoreInfo[jOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_RSP] ); }} \ +} +#else +#define mOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_RSP_SWAP( pOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD * pOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD *)pOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD)->Header ); } \ + ((tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD *)pOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD)->ulBank = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD *)pOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD)->ulBank); \ + ((tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD *)pOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD)->ulDirection = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD *)pOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD)->ulDirection); \ + ((tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD *)pOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD)->ulTriStateHigh = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD *)pOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD)->ulTriStateHigh); \ +} +#else +#define mOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD_SWAP( pOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_RSP * pOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_RSP *)pOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_RSP)->Header ); } \ + ((tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_RSP *)pOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_RSP)->ulBank = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_RSP *)pOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_RSP)->ulBank); \ +} +#else +#define mOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_RSP_SWAP( pOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_GPIO_READ_BANK_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_GPIO_READ_BANK_CMD * pOCTVC1_MAIN_MSG_GPIO_READ_BANK_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_GPIO_READ_BANK_CMD *)pOCTVC1_MAIN_MSG_GPIO_READ_BANK_CMD)->Header ); } \ + ((tOCTVC1_MAIN_MSG_GPIO_READ_BANK_CMD *)pOCTVC1_MAIN_MSG_GPIO_READ_BANK_CMD)->ulBank = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_GPIO_READ_BANK_CMD *)pOCTVC1_MAIN_MSG_GPIO_READ_BANK_CMD)->ulBank); \ +} +#else +#define mOCTVC1_MAIN_MSG_GPIO_READ_BANK_CMD_SWAP( pOCTVC1_MAIN_MSG_GPIO_READ_BANK_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_GPIO_READ_BANK_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_GPIO_READ_BANK_RSP * pOCTVC1_MAIN_MSG_GPIO_READ_BANK_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_GPIO_READ_BANK_RSP *)pOCTVC1_MAIN_MSG_GPIO_READ_BANK_RSP)->Header ); } \ + ((tOCTVC1_MAIN_MSG_GPIO_READ_BANK_RSP *)pOCTVC1_MAIN_MSG_GPIO_READ_BANK_RSP)->ulBank = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_GPIO_READ_BANK_RSP *)pOCTVC1_MAIN_MSG_GPIO_READ_BANK_RSP)->ulBank); \ + ((tOCTVC1_MAIN_MSG_GPIO_READ_BANK_RSP *)pOCTVC1_MAIN_MSG_GPIO_READ_BANK_RSP)->ulValue = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_GPIO_READ_BANK_RSP *)pOCTVC1_MAIN_MSG_GPIO_READ_BANK_RSP)->ulValue); \ +} +#else +#define mOCTVC1_MAIN_MSG_GPIO_READ_BANK_RSP_SWAP( pOCTVC1_MAIN_MSG_GPIO_READ_BANK_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CMD * pOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CMD *)pOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CMD)->Header ); } \ + ((tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CMD *)pOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CMD)->ulBank = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CMD *)pOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CMD)->ulBank); \ + ((tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CMD *)pOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CMD)->ulValue = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CMD *)pOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CMD)->ulValue); \ +} +#else +#define mOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CMD_SWAP( pOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_RSP * pOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_RSP *)pOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_RSP)->Header ); } \ + ((tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_RSP *)pOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_RSP)->ulBank = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_RSP *)pOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_RSP)->ulBank); \ +} +#else +#define mOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_RSP_SWAP( pOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_SPI_ACCESS_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD * pOCTVC1_MAIN_MSG_SPI_ACCESS_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD *)pOCTVC1_MAIN_MSG_SPI_ACCESS_CMD)->Header ); } \ + ((tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD *)pOCTVC1_MAIN_MSG_SPI_ACCESS_CMD)->ulChipSelectPin = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD *)pOCTVC1_MAIN_MSG_SPI_ACCESS_CMD)->ulChipSelectPin); \ + ((tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD *)pOCTVC1_MAIN_MSG_SPI_ACCESS_CMD)->ulClockPin = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD *)pOCTVC1_MAIN_MSG_SPI_ACCESS_CMD)->ulClockPin); \ + ((tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD *)pOCTVC1_MAIN_MSG_SPI_ACCESS_CMD)->ulDataOutPin = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD *)pOCTVC1_MAIN_MSG_SPI_ACCESS_CMD)->ulDataOutPin); \ + ((tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD *)pOCTVC1_MAIN_MSG_SPI_ACCESS_CMD)->ulDataInPin = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD *)pOCTVC1_MAIN_MSG_SPI_ACCESS_CMD)->ulDataInPin); \ + ((tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD *)pOCTVC1_MAIN_MSG_SPI_ACCESS_CMD)->ulDivider = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD *)pOCTVC1_MAIN_MSG_SPI_ACCESS_CMD)->ulDivider); \ + ((tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD *)pOCTVC1_MAIN_MSG_SPI_ACCESS_CMD)->ulSlaveSelectId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD *)pOCTVC1_MAIN_MSG_SPI_ACCESS_CMD)->ulSlaveSelectId); \ + ((tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD *)pOCTVC1_MAIN_MSG_SPI_ACCESS_CMD)->ulClockFrequency = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD *)pOCTVC1_MAIN_MSG_SPI_ACCESS_CMD)->ulClockFrequency); \ + ((tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD *)pOCTVC1_MAIN_MSG_SPI_ACCESS_CMD)->ulClockPolarity = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD *)pOCTVC1_MAIN_MSG_SPI_ACCESS_CMD)->ulClockPolarity); \ + ((tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD *)pOCTVC1_MAIN_MSG_SPI_ACCESS_CMD)->ulClockPhase = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD *)pOCTVC1_MAIN_MSG_SPI_ACCESS_CMD)->ulClockPhase); \ + ((tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD *)pOCTVC1_MAIN_MSG_SPI_ACCESS_CMD)->ulReadByteCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD *)pOCTVC1_MAIN_MSG_SPI_ACCESS_CMD)->ulReadByteCnt); \ + ((tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD *)pOCTVC1_MAIN_MSG_SPI_ACCESS_CMD)->ulWriteByteCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD *)pOCTVC1_MAIN_MSG_SPI_ACCESS_CMD)->ulWriteByteCnt); \ + { tOCT_UINT32 iOCTVC1_MAIN_MSG_SPI_ACCESS_CMD; \ + for( iOCTVC1_MAIN_MSG_SPI_ACCESS_CMD=0; \ + iOCTVC1_MAIN_MSG_SPI_ACCESS_CMD<(cOCTVC1_MAIN_SPI_ACCESS_TRANSFER_MAX_LENGTH);iOCTVC1_MAIN_MSG_SPI_ACCESS_CMD++ ) \ + ((tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD *)pOCTVC1_MAIN_MSG_SPI_ACCESS_CMD)->aulWriteData[iOCTVC1_MAIN_MSG_SPI_ACCESS_CMD] = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_SPI_ACCESS_CMD *)pOCTVC1_MAIN_MSG_SPI_ACCESS_CMD)->aulWriteData[iOCTVC1_MAIN_MSG_SPI_ACCESS_CMD]);}\ +} +#else +#define mOCTVC1_MAIN_MSG_SPI_ACCESS_CMD_SWAP( pOCTVC1_MAIN_MSG_SPI_ACCESS_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_SPI_ACCESS_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_SPI_ACCESS_RSP * pOCTVC1_MAIN_MSG_SPI_ACCESS_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_SPI_ACCESS_RSP *)pOCTVC1_MAIN_MSG_SPI_ACCESS_RSP)->Header ); } \ + { tOCT_UINT32 iOCTVC1_MAIN_MSG_SPI_ACCESS_RSP; \ + for( iOCTVC1_MAIN_MSG_SPI_ACCESS_RSP=0; \ + iOCTVC1_MAIN_MSG_SPI_ACCESS_RSP<(cOCTVC1_MAIN_SPI_ACCESS_TRANSFER_MAX_LENGTH);iOCTVC1_MAIN_MSG_SPI_ACCESS_RSP++ ) \ + ((tOCTVC1_MAIN_MSG_SPI_ACCESS_RSP *)pOCTVC1_MAIN_MSG_SPI_ACCESS_RSP)->aulReadData[iOCTVC1_MAIN_MSG_SPI_ACCESS_RSP] = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_SPI_ACCESS_RSP *)pOCTVC1_MAIN_MSG_SPI_ACCESS_RSP)->aulReadData[iOCTVC1_MAIN_MSG_SPI_ACCESS_RSP]);}\ +} +#else +#define mOCTVC1_MAIN_MSG_SPI_ACCESS_RSP_SWAP( pOCTVC1_MAIN_MSG_SPI_ACCESS_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_PROCESS_LIST_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_PROCESS_LIST_CMD * pOCTVC1_MAIN_MSG_PROCESS_LIST_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_PROCESS_LIST_CMD *)pOCTVC1_MAIN_MSG_PROCESS_LIST_CMD)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_OBJECT_GET_SWAP( &((tOCTVC1_MAIN_MSG_PROCESS_LIST_CMD *)pOCTVC1_MAIN_MSG_PROCESS_LIST_CMD)->ObjectCursor ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_PROCESS_LIST_CMD_SWAP( pOCTVC1_MAIN_MSG_PROCESS_LIST_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_PROCESS_LIST_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_PROCESS_LIST_RSP * pOCTVC1_MAIN_MSG_PROCESS_LIST_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_PROCESS_LIST_RSP *)pOCTVC1_MAIN_MSG_PROCESS_LIST_RSP)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_OBJECT_GET_SWAP( &((tOCTVC1_MAIN_MSG_PROCESS_LIST_RSP *)pOCTVC1_MAIN_MSG_PROCESS_LIST_RSP)->ObjectCursor ); } \ + { mOCTVC1_LIST_HANDLE_OBJECT_GET_SWAP( &((tOCTVC1_MAIN_MSG_PROCESS_LIST_RSP *)pOCTVC1_MAIN_MSG_PROCESS_LIST_RSP)->ObjectList ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_PROCESS_LIST_RSP_SWAP( pOCTVC1_MAIN_MSG_PROCESS_LIST_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_PROCESS_INFO_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_PROCESS_INFO_CMD * pOCTVC1_MAIN_MSG_PROCESS_INFO_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_PROCESS_INFO_CMD *)pOCTVC1_MAIN_MSG_PROCESS_INFO_CMD)->Header ); } \ + ((tOCTVC1_MAIN_MSG_PROCESS_INFO_CMD *)pOCTVC1_MAIN_MSG_PROCESS_INFO_CMD)->hProcess = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_PROCESS_INFO_CMD *)pOCTVC1_MAIN_MSG_PROCESS_INFO_CMD)->hProcess); \ +} +#else +#define mOCTVC1_MAIN_MSG_PROCESS_INFO_CMD_SWAP( pOCTVC1_MAIN_MSG_PROCESS_INFO_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_PROCESS_INFO_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_PROCESS_INFO_RSP * pOCTVC1_MAIN_MSG_PROCESS_INFO_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_PROCESS_INFO_RSP *)pOCTVC1_MAIN_MSG_PROCESS_INFO_RSP)->Header ); } \ + ((tOCTVC1_MAIN_MSG_PROCESS_INFO_RSP *)pOCTVC1_MAIN_MSG_PROCESS_INFO_RSP)->hProcess = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_PROCESS_INFO_RSP *)pOCTVC1_MAIN_MSG_PROCESS_INFO_RSP)->hProcess); \ +} +#else +#define mOCTVC1_MAIN_MSG_PROCESS_INFO_RSP_SWAP( pOCTVC1_MAIN_MSG_PROCESS_INFO_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_MDIO_READ_PHY_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_MDIO_READ_PHY_CMD * pOCTVC1_MAIN_MSG_MDIO_READ_PHY_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_MDIO_READ_PHY_CMD *)pOCTVC1_MAIN_MSG_MDIO_READ_PHY_CMD)->Header ); } \ + ((tOCTVC1_MAIN_MSG_MDIO_READ_PHY_CMD *)pOCTVC1_MAIN_MSG_MDIO_READ_PHY_CMD)->ulPhyAddress = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_MDIO_READ_PHY_CMD *)pOCTVC1_MAIN_MSG_MDIO_READ_PHY_CMD)->ulPhyAddress); \ + ((tOCTVC1_MAIN_MSG_MDIO_READ_PHY_CMD *)pOCTVC1_MAIN_MSG_MDIO_READ_PHY_CMD)->ulRegisterAddress = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_MDIO_READ_PHY_CMD *)pOCTVC1_MAIN_MSG_MDIO_READ_PHY_CMD)->ulRegisterAddress); \ +} +#else +#define mOCTVC1_MAIN_MSG_MDIO_READ_PHY_CMD_SWAP( pOCTVC1_MAIN_MSG_MDIO_READ_PHY_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_MDIO_READ_PHY_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_MDIO_READ_PHY_RSP * pOCTVC1_MAIN_MSG_MDIO_READ_PHY_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_MDIO_READ_PHY_RSP *)pOCTVC1_MAIN_MSG_MDIO_READ_PHY_RSP)->Header ); } \ + ((tOCTVC1_MAIN_MSG_MDIO_READ_PHY_RSP *)pOCTVC1_MAIN_MSG_MDIO_READ_PHY_RSP)->ulPhyAddress = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_MDIO_READ_PHY_RSP *)pOCTVC1_MAIN_MSG_MDIO_READ_PHY_RSP)->ulPhyAddress); \ + ((tOCTVC1_MAIN_MSG_MDIO_READ_PHY_RSP *)pOCTVC1_MAIN_MSG_MDIO_READ_PHY_RSP)->ulReadData = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_MDIO_READ_PHY_RSP *)pOCTVC1_MAIN_MSG_MDIO_READ_PHY_RSP)->ulReadData); \ +} +#else +#define mOCTVC1_MAIN_MSG_MDIO_READ_PHY_RSP_SWAP( pOCTVC1_MAIN_MSG_MDIO_READ_PHY_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD * pOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD *)pOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD)->Header ); } \ + ((tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD *)pOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD)->ulPhyAddress = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD *)pOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD)->ulPhyAddress); \ + ((tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD *)pOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD)->ulRegisterAddress = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD *)pOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD)->ulRegisterAddress); \ + ((tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD *)pOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD)->ulWriteData = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD *)pOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD)->ulWriteData); \ +} +#else +#define mOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD_SWAP( pOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_RSP * pOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_RSP *)pOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_RSP)->Header ); } \ + ((tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_RSP *)pOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_RSP)->ulPhyAddress = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_RSP *)pOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_RSP)->ulPhyAddress); \ +} +#else +#define mOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_RSP_SWAP( pOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD * pOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD *)pOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD)->Header ); } \ + ((tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD *)pOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD)->ulEventMask = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD *)pOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD)->ulEventMask); \ + ((tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD *)pOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD)->ulUserEventId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD *)pOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD)->ulUserEventId); \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD *)pOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD)->hEventDestObj ); } \ + ((tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD *)pOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD)->ulEventDestObjPort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD *)pOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD)->ulEventDestObjPort); \ + ((tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD *)pOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD)->ulEventDestObjFifoId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD *)pOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD)->ulEventDestObjFifoId); \ +} +#else +#define mOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD_SWAP( pOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_RSP * pOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_RSP *)pOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_RSP)->Header ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_RSP_SWAP( pOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CMD * pOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CMD *)pOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CMD)->Header ); } \ + ((tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CMD *)pOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CMD)->ulBank = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CMD *)pOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CMD)->ulBank); \ + ((tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CMD *)pOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CMD)->ulMonitor = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CMD *)pOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CMD)->ulMonitor); \ +} +#else +#define mOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CMD_SWAP( pOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_RSP * pOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_RSP *)pOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_RSP)->Header ); } \ + ((tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_RSP *)pOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_RSP)->ulBank = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_RSP *)pOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_RSP)->ulBank); \ +} +#else +#define mOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_RSP_SWAP( pOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD * pOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD *)pOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD)->Header ); } \ + { tOCT_UINT32 iOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD; \ + for( iOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD=0; \ + iOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD<(2);iOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD++ ) \ + ((tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD *)pOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD)->aulPhyAddress[iOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD] = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD *)pOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD)->aulPhyAddress[iOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD]);}\ +} +#else +#define mOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD_SWAP( pOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_RSP * pOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_RSP *)pOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_RSP)->Header ); } \ + { tOCT_UINT32 iOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_RSP; \ + for( iOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_RSP=0; \ + iOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_RSP<(2);iOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_RSP++ ) \ + ((tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_RSP *)pOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_RSP)->aulPhyAddress[iOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_RSP] = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_RSP *)pOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_RSP)->aulPhyAddress[iOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_RSP]);}\ +} +#else +#define mOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_RSP_SWAP( pOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD * pOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD *)pOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD)->Header ); } \ + ((tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD *)pOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD)->hProcess = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD *)pOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD)->hProcess); \ + ((tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD *)pOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD)->ulAlarmThresholdHighPercent = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD *)pOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD)->ulAlarmThresholdHighPercent); \ + ((tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD *)pOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD)->ulAlarmThresholdLowPercent = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD *)pOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD)->ulAlarmThresholdLowPercent); \ +} +#else +#define mOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD_SWAP( pOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_RSP * pOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_RSP *)pOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_RSP)->Header ); } \ + ((tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_RSP *)pOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_RSP)->hProcess = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_RSP *)pOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_RSP)->hProcess); \ + ((tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_RSP *)pOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_RSP)->ulProcessImageType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_RSP *)pOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_RSP)->ulProcessImageType); \ +} +#else +#define mOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_RSP_SWAP( pOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CMD * pOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CMD *)pOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CMD)->Header ); } \ + ((tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CMD *)pOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CMD)->hProcess = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CMD *)pOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CMD)->hProcess); \ +} +#else +#define mOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CMD_SWAP( pOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP * pOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP *)pOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP)->Header ); } \ + ((tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP *)pOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP)->hProcess = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP *)pOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP)->hProcess); \ + ((tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP *)pOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP)->ulProcessImageType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP *)pOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP)->ulProcessImageType); \ + ((tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP *)pOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP)->ulAlarmThresholdHighPercent = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP *)pOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP)->ulAlarmThresholdHighPercent); \ + ((tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP *)pOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP)->ulAlarmThresholdLowPercent = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP *)pOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP)->ulAlarmThresholdLowPercent); \ + ((tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP *)pOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP)->ulProcessCpuUsagePercent = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP *)pOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP)->ulProcessCpuUsagePercent); \ + ((tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP *)pOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP)->ulProcessCpuUsageMinPercent = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP *)pOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP)->ulProcessCpuUsageMinPercent); \ + ((tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP *)pOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP)->ulProcessCpuUsageMaxPercent = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP *)pOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP)->ulProcessCpuUsageMaxPercent); \ + ((tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP *)pOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP)->ulNumThread = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP *)pOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP)->ulNumThread); \ +} +#else +#define mOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP_SWAP( pOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD * pOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD *)pOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD)->Header ); } \ + ((tOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD *)pOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD)->ulFormat = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD *)pOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD)->ulFormat); \ + ((tOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD *)pOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD)->ulByteLength = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD *)pOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD)->ulByteLength); \ +} +#else +#define mOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD_SWAP( pOCTVC1_MAIN_MSG_BUFFER_OPEN_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_BUFFER_OPEN_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_BUFFER_OPEN_RSP * pOCTVC1_MAIN_MSG_BUFFER_OPEN_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_BUFFER_OPEN_RSP *)pOCTVC1_MAIN_MSG_BUFFER_OPEN_RSP)->Header ); } \ + ((tOCTVC1_MAIN_MSG_BUFFER_OPEN_RSP *)pOCTVC1_MAIN_MSG_BUFFER_OPEN_RSP)->hBuffer = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_BUFFER_OPEN_RSP *)pOCTVC1_MAIN_MSG_BUFFER_OPEN_RSP)->hBuffer); \ + ((tOCTVC1_MAIN_MSG_BUFFER_OPEN_RSP *)pOCTVC1_MAIN_MSG_BUFFER_OPEN_RSP)->ulAllocatedByteLength = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_BUFFER_OPEN_RSP *)pOCTVC1_MAIN_MSG_BUFFER_OPEN_RSP)->ulAllocatedByteLength); \ +} +#else +#define mOCTVC1_MAIN_MSG_BUFFER_OPEN_RSP_SWAP( pOCTVC1_MAIN_MSG_BUFFER_OPEN_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_CMD * pOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_CMD *)pOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_CMD)->Header ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_CMD_SWAP( pOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP * pOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP *)pOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP)->Header ); } \ + ((tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP *)pOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP)->hBuffer = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP *)pOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP)->hBuffer); \ + ((tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP *)pOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP)->ulFormat = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP *)pOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP)->ulFormat); \ + ((tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP *)pOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP)->ulUsedByteLength = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP *)pOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP)->ulUsedByteLength); \ + ((tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP *)pOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP)->ulAllocatedByteLength = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP *)pOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP)->ulAllocatedByteLength); \ + ((tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP *)pOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP)->ulDependencyCount = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP *)pOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP)->ulDependencyCount); \ +} +#else +#define mOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP_SWAP( pOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_BUFFER_CLOSE_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_BUFFER_CLOSE_CMD * pOCTVC1_MAIN_MSG_BUFFER_CLOSE_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_BUFFER_CLOSE_CMD *)pOCTVC1_MAIN_MSG_BUFFER_CLOSE_CMD)->Header ); } \ + ((tOCTVC1_MAIN_MSG_BUFFER_CLOSE_CMD *)pOCTVC1_MAIN_MSG_BUFFER_CLOSE_CMD)->hBuffer = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_BUFFER_CLOSE_CMD *)pOCTVC1_MAIN_MSG_BUFFER_CLOSE_CMD)->hBuffer); \ +} +#else +#define mOCTVC1_MAIN_MSG_BUFFER_CLOSE_CMD_SWAP( pOCTVC1_MAIN_MSG_BUFFER_CLOSE_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_BUFFER_CLOSE_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_BUFFER_CLOSE_RSP * pOCTVC1_MAIN_MSG_BUFFER_CLOSE_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_BUFFER_CLOSE_RSP *)pOCTVC1_MAIN_MSG_BUFFER_CLOSE_RSP)->Header ); } \ + ((tOCTVC1_MAIN_MSG_BUFFER_CLOSE_RSP *)pOCTVC1_MAIN_MSG_BUFFER_CLOSE_RSP)->hBuffer = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_BUFFER_CLOSE_RSP *)pOCTVC1_MAIN_MSG_BUFFER_CLOSE_RSP)->hBuffer); \ +} +#else +#define mOCTVC1_MAIN_MSG_BUFFER_CLOSE_RSP_SWAP( pOCTVC1_MAIN_MSG_BUFFER_CLOSE_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_BUFFER_INFO_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_BUFFER_INFO_CMD * pOCTVC1_MAIN_MSG_BUFFER_INFO_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_BUFFER_INFO_CMD *)pOCTVC1_MAIN_MSG_BUFFER_INFO_CMD)->Header ); } \ + ((tOCTVC1_MAIN_MSG_BUFFER_INFO_CMD *)pOCTVC1_MAIN_MSG_BUFFER_INFO_CMD)->hBuffer = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_BUFFER_INFO_CMD *)pOCTVC1_MAIN_MSG_BUFFER_INFO_CMD)->hBuffer); \ +} +#else +#define mOCTVC1_MAIN_MSG_BUFFER_INFO_CMD_SWAP( pOCTVC1_MAIN_MSG_BUFFER_INFO_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_BUFFER_INFO_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP * pOCTVC1_MAIN_MSG_BUFFER_INFO_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP *)pOCTVC1_MAIN_MSG_BUFFER_INFO_RSP)->Header ); } \ + ((tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP *)pOCTVC1_MAIN_MSG_BUFFER_INFO_RSP)->hBuffer = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP *)pOCTVC1_MAIN_MSG_BUFFER_INFO_RSP)->hBuffer); \ + ((tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP *)pOCTVC1_MAIN_MSG_BUFFER_INFO_RSP)->ulFormat = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP *)pOCTVC1_MAIN_MSG_BUFFER_INFO_RSP)->ulFormat); \ + ((tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP *)pOCTVC1_MAIN_MSG_BUFFER_INFO_RSP)->ulUsedByteLength = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP *)pOCTVC1_MAIN_MSG_BUFFER_INFO_RSP)->ulUsedByteLength); \ + ((tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP *)pOCTVC1_MAIN_MSG_BUFFER_INFO_RSP)->ulAllocatedByteLength = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP *)pOCTVC1_MAIN_MSG_BUFFER_INFO_RSP)->ulAllocatedByteLength); \ + ((tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP *)pOCTVC1_MAIN_MSG_BUFFER_INFO_RSP)->ulDependencyCount = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_BUFFER_INFO_RSP *)pOCTVC1_MAIN_MSG_BUFFER_INFO_RSP)->ulDependencyCount); \ +} +#else +#define mOCTVC1_MAIN_MSG_BUFFER_INFO_RSP_SWAP( pOCTVC1_MAIN_MSG_BUFFER_INFO_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_BUFFER_LIST_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_BUFFER_LIST_CMD * pOCTVC1_MAIN_MSG_BUFFER_LIST_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_BUFFER_LIST_CMD *)pOCTVC1_MAIN_MSG_BUFFER_LIST_CMD)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_OBJECT_GET_SWAP( &((tOCTVC1_MAIN_MSG_BUFFER_LIST_CMD *)pOCTVC1_MAIN_MSG_BUFFER_LIST_CMD)->ObjectCursor ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_BUFFER_LIST_CMD_SWAP( pOCTVC1_MAIN_MSG_BUFFER_LIST_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_BUFFER_LIST_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_BUFFER_LIST_RSP * pOCTVC1_MAIN_MSG_BUFFER_LIST_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_BUFFER_LIST_RSP *)pOCTVC1_MAIN_MSG_BUFFER_LIST_RSP)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_OBJECT_GET_SWAP( &((tOCTVC1_MAIN_MSG_BUFFER_LIST_RSP *)pOCTVC1_MAIN_MSG_BUFFER_LIST_RSP)->ObjectCursor ); } \ + { mOCTVC1_LIST_HANDLE_OBJECT_GET_SWAP( &((tOCTVC1_MAIN_MSG_BUFFER_LIST_RSP *)pOCTVC1_MAIN_MSG_BUFFER_LIST_RSP)->ObjectList ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_BUFFER_LIST_RSP_SWAP( pOCTVC1_MAIN_MSG_BUFFER_LIST_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD * pOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD *)pOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD)->Header ); } \ + ((tOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD *)pOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD)->hBuffer = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD *)pOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD)->hBuffer); \ + ((tOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD *)pOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD)->ulFormat = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD *)pOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD)->ulFormat); \ + ((tOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD *)pOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD)->ulUsedByteSize = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD *)pOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD)->ulUsedByteSize); \ +} +#else +#define mOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD_SWAP( pOCTVC1_MAIN_MSG_BUFFER_MODIFY_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_BUFFER_MODIFY_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_BUFFER_MODIFY_RSP * pOCTVC1_MAIN_MSG_BUFFER_MODIFY_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_BUFFER_MODIFY_RSP *)pOCTVC1_MAIN_MSG_BUFFER_MODIFY_RSP)->Header ); } \ + ((tOCTVC1_MAIN_MSG_BUFFER_MODIFY_RSP *)pOCTVC1_MAIN_MSG_BUFFER_MODIFY_RSP)->hBuffer = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_BUFFER_MODIFY_RSP *)pOCTVC1_MAIN_MSG_BUFFER_MODIFY_RSP)->hBuffer); \ +} +#else +#define mOCTVC1_MAIN_MSG_BUFFER_MODIFY_RSP_SWAP( pOCTVC1_MAIN_MSG_BUFFER_MODIFY_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD * pOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD *)pOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD)->Header ); } \ + ((tOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD *)pOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD)->hBuffer = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD *)pOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD)->hBuffer); \ + ((tOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD *)pOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD)->ulWriteByteLength = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD *)pOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD)->ulWriteByteLength); \ + ((tOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD *)pOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD)->ulWriteByteOffset = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD *)pOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD)->ulWriteByteOffset); \ +} +#else +#define mOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD_SWAP( pOCTVC1_MAIN_MSG_BUFFER_WRITE_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_BUFFER_WRITE_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_BUFFER_WRITE_RSP * pOCTVC1_MAIN_MSG_BUFFER_WRITE_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_BUFFER_WRITE_RSP *)pOCTVC1_MAIN_MSG_BUFFER_WRITE_RSP)->Header ); } \ + ((tOCTVC1_MAIN_MSG_BUFFER_WRITE_RSP *)pOCTVC1_MAIN_MSG_BUFFER_WRITE_RSP)->hBuffer = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_BUFFER_WRITE_RSP *)pOCTVC1_MAIN_MSG_BUFFER_WRITE_RSP)->hBuffer); \ + ((tOCTVC1_MAIN_MSG_BUFFER_WRITE_RSP *)pOCTVC1_MAIN_MSG_BUFFER_WRITE_RSP)->ulNumByteWritten = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_BUFFER_WRITE_RSP *)pOCTVC1_MAIN_MSG_BUFFER_WRITE_RSP)->ulNumByteWritten); \ +} +#else +#define mOCTVC1_MAIN_MSG_BUFFER_WRITE_RSP_SWAP( pOCTVC1_MAIN_MSG_BUFFER_WRITE_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_BUFFER_READ_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_BUFFER_READ_CMD * pOCTVC1_MAIN_MSG_BUFFER_READ_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_BUFFER_READ_CMD *)pOCTVC1_MAIN_MSG_BUFFER_READ_CMD)->Header ); } \ + ((tOCTVC1_MAIN_MSG_BUFFER_READ_CMD *)pOCTVC1_MAIN_MSG_BUFFER_READ_CMD)->hBuffer = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_BUFFER_READ_CMD *)pOCTVC1_MAIN_MSG_BUFFER_READ_CMD)->hBuffer); \ + ((tOCTVC1_MAIN_MSG_BUFFER_READ_CMD *)pOCTVC1_MAIN_MSG_BUFFER_READ_CMD)->ulMaxReadByteLength = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_BUFFER_READ_CMD *)pOCTVC1_MAIN_MSG_BUFFER_READ_CMD)->ulMaxReadByteLength); \ + ((tOCTVC1_MAIN_MSG_BUFFER_READ_CMD *)pOCTVC1_MAIN_MSG_BUFFER_READ_CMD)->ulReadByteOffset = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_BUFFER_READ_CMD *)pOCTVC1_MAIN_MSG_BUFFER_READ_CMD)->ulReadByteOffset); \ +} +#else +#define mOCTVC1_MAIN_MSG_BUFFER_READ_CMD_SWAP( pOCTVC1_MAIN_MSG_BUFFER_READ_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_BUFFER_READ_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_BUFFER_READ_RSP * pOCTVC1_MAIN_MSG_BUFFER_READ_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_BUFFER_READ_RSP *)pOCTVC1_MAIN_MSG_BUFFER_READ_RSP)->Header ); } \ + ((tOCTVC1_MAIN_MSG_BUFFER_READ_RSP *)pOCTVC1_MAIN_MSG_BUFFER_READ_RSP)->hBuffer = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_BUFFER_READ_RSP *)pOCTVC1_MAIN_MSG_BUFFER_READ_RSP)->hBuffer); \ + ((tOCTVC1_MAIN_MSG_BUFFER_READ_RSP *)pOCTVC1_MAIN_MSG_BUFFER_READ_RSP)->ulDoneFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_BUFFER_READ_RSP *)pOCTVC1_MAIN_MSG_BUFFER_READ_RSP)->ulDoneFlag); \ + ((tOCTVC1_MAIN_MSG_BUFFER_READ_RSP *)pOCTVC1_MAIN_MSG_BUFFER_READ_RSP)->ulNumByteRead = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_BUFFER_READ_RSP *)pOCTVC1_MAIN_MSG_BUFFER_READ_RSP)->ulNumByteRead); \ +} +#else +#define mOCTVC1_MAIN_MSG_BUFFER_READ_RSP_SWAP( pOCTVC1_MAIN_MSG_BUFFER_READ_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD * pOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD *)pOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD)->Header ); } \ + ((tOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD *)pOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD)->ulTracingMode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD *)pOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD)->ulTracingMode); \ + ((tOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD *)pOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD)->ulTracingType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD *)pOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD)->ulTracingType); \ + ((tOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD *)pOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD)->ulNumBuffer = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD *)pOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD)->ulNumBuffer); \ + { tOCT_UINT32 iOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD; \ + for( iOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD=0; \ + iOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD<(cOCTVC1_MAIN_TRACING_START_MAX_NUM_BUFFER);iOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD++ ) \ + ((tOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD *)pOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD)->aBufferId[iOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD] = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD *)pOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD)->aBufferId[iOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD]);}\ +} +#else +#define mOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD_SWAP( pOCTVC1_MAIN_MSG_MODULE_START_TRACING_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_MODULE_START_TRACING_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_MODULE_START_TRACING_RSP * pOCTVC1_MAIN_MSG_MODULE_START_TRACING_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_MODULE_START_TRACING_RSP *)pOCTVC1_MAIN_MSG_MODULE_START_TRACING_RSP)->Header ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_MODULE_START_TRACING_RSP_SWAP( pOCTVC1_MAIN_MSG_MODULE_START_TRACING_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_MODULE_STOP_TRACING_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_MODULE_STOP_TRACING_CMD * pOCTVC1_MAIN_MSG_MODULE_STOP_TRACING_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_MODULE_STOP_TRACING_CMD *)pOCTVC1_MAIN_MSG_MODULE_STOP_TRACING_CMD)->Header ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_MODULE_STOP_TRACING_CMD_SWAP( pOCTVC1_MAIN_MSG_MODULE_STOP_TRACING_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_MODULE_STOP_TRACING_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_MODULE_STOP_TRACING_RSP * pOCTVC1_MAIN_MSG_MODULE_STOP_TRACING_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_MODULE_STOP_TRACING_RSP *)pOCTVC1_MAIN_MSG_MODULE_STOP_TRACING_RSP)->Header ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_MODULE_STOP_TRACING_RSP_SWAP( pOCTVC1_MAIN_MSG_MODULE_STOP_TRACING_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD * pOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD *)pOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD *)pOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD)->hDestObj ); } \ + ((tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD *)pOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD)->ulDestObjPort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD *)pOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD)->ulDestObjPort); \ + ((tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD *)pOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD)->ulDestObjFifoId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD *)pOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD)->ulDestObjFifoId); \ +} +#else +#define mOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD_SWAP( pOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_RSP * pOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_RSP *)pOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_RSP)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_RSP *)pOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_RSP)->hForward ); } \ + ((tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_RSP *)pOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_RSP)->ulFifoId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_RSP *)pOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_RSP)->ulFifoId); \ +} +#else +#define mOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_RSP_SWAP( pOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_MODULE_INFO_EVT_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_CMD * pOCTVC1_MAIN_MSG_MODULE_INFO_EVT_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_CMD *)pOCTVC1_MAIN_MSG_MODULE_INFO_EVT_CMD)->Header ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_MODULE_INFO_EVT_CMD_SWAP( pOCTVC1_MAIN_MSG_MODULE_INFO_EVT_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP * pOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP *)pOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP)->Header ); } \ + ((tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP *)pOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP)->ulEventMask = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP *)pOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP)->ulEventMask); \ + ((tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP *)pOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP)->ulUserEventId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP *)pOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP)->ulUserEventId); \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP *)pOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP)->hEventDestObj ); } \ + ((tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP *)pOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP)->ulEventDestObjPort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP *)pOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP)->ulEventDestObjPort); \ + ((tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP *)pOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP)->ulEventDestObjFifoId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP *)pOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP)->ulEventDestObjFifoId); \ +} +#else +#define mOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP_SWAP( pOCTVC1_MAIN_MSG_MODULE_INFO_EVT_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CMD * pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CMD *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CMD)->Header ); } \ + ((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CMD *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CMD)->hMgw = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CMD *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CMD)->hMgw); \ +} +#else +#define mOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CMD_SWAP( pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_RSP * pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_RSP)->Header ); } \ + ((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_RSP)->hMgw = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_RSP *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_RSP)->hMgw); \ +} +#else +#define mOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_RSP_SWAP( pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_OCT1010_STATS_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_OCT1010_STATS_CMD * pOCTVC1_MAIN_MSG_OCT1010_STATS_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_OCT1010_STATS_CMD *)pOCTVC1_MAIN_MSG_OCT1010_STATS_CMD)->Header ); } \ + ((tOCTVC1_MAIN_MSG_OCT1010_STATS_CMD *)pOCTVC1_MAIN_MSG_OCT1010_STATS_CMD)->ulResetStatsFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_OCT1010_STATS_CMD *)pOCTVC1_MAIN_MSG_OCT1010_STATS_CMD)->ulResetStatsFlag); \ +} +#else +#define mOCTVC1_MAIN_MSG_OCT1010_STATS_CMD_SWAP( pOCTVC1_MAIN_MSG_OCT1010_STATS_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_OCT1010_STATS_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_OCT1010_STATS_RSP * pOCTVC1_MAIN_MSG_OCT1010_STATS_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_OCT1010_STATS_RSP *)pOCTVC1_MAIN_MSG_OCT1010_STATS_RSP)->Header ); } \ + ((tOCTVC1_MAIN_MSG_OCT1010_STATS_RSP *)pOCTVC1_MAIN_MSG_OCT1010_STATS_RSP)->ulOCT1010MonitorNumber = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_OCT1010_STATS_RSP *)pOCTVC1_MAIN_MSG_OCT1010_STATS_RSP)->ulOCT1010MonitorNumber); \ + ((tOCTVC1_MAIN_MSG_OCT1010_STATS_RSP *)pOCTVC1_MAIN_MSG_OCT1010_STATS_RSP)->ulTdmCpyOutOfBandwidthCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_OCT1010_STATS_RSP *)pOCTVC1_MAIN_MSG_OCT1010_STATS_RSP)->ulTdmCpyOutOfBandwidthCnt); \ + ((tOCTVC1_MAIN_MSG_OCT1010_STATS_RSP *)pOCTVC1_MAIN_MSG_OCT1010_STATS_RSP)->ulTdmTxTimeslotPtrOutOfSyncCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_OCT1010_STATS_RSP *)pOCTVC1_MAIN_MSG_OCT1010_STATS_RSP)->ulTdmTxTimeslotPtrOutOfSyncCnt); \ + ((tOCTVC1_MAIN_MSG_OCT1010_STATS_RSP *)pOCTVC1_MAIN_MSG_OCT1010_STATS_RSP)->ulTdmTimestampIncrementErrorCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_OCT1010_STATS_RSP *)pOCTVC1_MAIN_MSG_OCT1010_STATS_RSP)->ulTdmTimestampIncrementErrorCnt); \ +} +#else +#define mOCTVC1_MAIN_MSG_OCT1010_STATS_RSP_SWAP( pOCTVC1_MAIN_MSG_OCT1010_STATS_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_OCT2200_STATS_CMD_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_OCT2200_STATS_CMD * pOCTVC1_MAIN_MSG_OCT2200_STATS_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_OCT2200_STATS_CMD *)pOCTVC1_MAIN_MSG_OCT2200_STATS_CMD)->Header ); } \ + ((tOCTVC1_MAIN_MSG_OCT2200_STATS_CMD *)pOCTVC1_MAIN_MSG_OCT2200_STATS_CMD)->ulResetStatsFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_OCT2200_STATS_CMD *)pOCTVC1_MAIN_MSG_OCT2200_STATS_CMD)->ulResetStatsFlag); \ +} +#else +#define mOCTVC1_MAIN_MSG_OCT2200_STATS_CMD_SWAP( pOCTVC1_MAIN_MSG_OCT2200_STATS_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_OCT2200_STATS_RSP_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_OCT2200_STATS_RSP * pOCTVC1_MAIN_MSG_OCT2200_STATS_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_OCT2200_STATS_RSP *)pOCTVC1_MAIN_MSG_OCT2200_STATS_RSP)->Header ); } \ + ((tOCTVC1_MAIN_MSG_OCT2200_STATS_RSP *)pOCTVC1_MAIN_MSG_OCT2200_STATS_RSP)->ulOCT2200MonitorNumber = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_OCT2200_STATS_RSP *)pOCTVC1_MAIN_MSG_OCT2200_STATS_RSP)->ulOCT2200MonitorNumber); \ +} +#else +#define mOCTVC1_MAIN_MSG_OCT2200_STATS_RSP_SWAP( pOCTVC1_MAIN_MSG_OCT2200_STATS_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#ifdef __cplusplus +} + +#endif + +#endif /* __OCTVC1_MAIN_API_SWAP_H__ */ diff --git a/software/include/vocallo/main/octvc1_main_default.h b/software/include/vocallo/main/octvc1_main_default.h new file mode 100644 index 0000000..c0ca214 --- /dev/null +++ b/software/include/vocallo/main/octvc1_main_default.h @@ -0,0 +1,2144 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_MAIN_DEFAULT.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: Contains the event definition of the MAIN API. + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Octasic_Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_MAIN_DEFAULT_H__ +#define __OCTVC1_MAIN_DEFAULT_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "octvc1_main_api.h" + +/***************************** COMMAND DEFAULT *****************************/ + +/*-------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_CMD +----------------------------------------------------------------------------*/ +#ifdef OCTVC1_OPT_DECLARE_DEFAULTS + +const tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_CMD buf_tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_CMD = +{ + { /* Header */ + ((sizeof(tOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_CMD)<. + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Octasic_Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_MAIN_EVT_H__ +#define __OCTVC1_MAIN_EVT_H__ + + +/***************************** INCLUDE FILES *******************************/ + +#include "octvc1_main_api.h" + +/************************ COMMON DEFINITIONS *******************************/ + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_EVT_PHY_MASK : Phy Events. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_MAIN_EVT_PHY_MASK tOCT_UINT32 + +#define cOCTVC1_MAIN_EVT_PHY_MASK_UP ((tOCT_UINT32)(1<<0) ) +#define cOCTVC1_MAIN_EVT_PHY_MASK_DOWN ((tOCT_UINT32)(1<<1) ) + +/***************************** NOTIFICATIONS **********************************/ +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_MODULE_TRACING_BUFFER_FULL_EVT + + Members: + Header + BufferId +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_EVENT_HEADER Header; + tOCTVC1_HANDLE_OBJECT BufferId; + +} tOCTVC1_MAIN_MSG_MODULE_TRACING_BUFFER_FULL_EVT; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_MODULE_TRACING_STOP_EVT + + Members: + Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_EVENT_HEADER Header; + +} tOCTVC1_MAIN_MSG_MODULE_TRACING_STOP_EVT; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EVT + + Members: + Header + ulCoreUseMask + One-hot vector indicating which cores are used. + ulCoreHaltMask + One-hot vector indicating which cores are halted. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_EVENT_HEADER Header; + tOCTVC1_MAIN_OPUS_CORE_MASK ulCoreUseMask; + tOCTVC1_MAIN_OPUS_CORE_MASK ulCoreHaltMask; + +} tOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EVT; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EVT + + Members: + Header + ulBank + GPIO bank on which the change was detected. + ulPortValue + Current value of each GPIO pin (including output and non-monitored pins ). +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_EVENT_HEADER Header; + tOCT_UINT32 ulBank; + tOCT_UINT32 ulPortValue; + +} tOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EVT; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EVT + + Members: + Header + ulPhyAddress + Address, on the MDIO bus, of the monitored PHY for which a + status change was detected. + ulEvents + Bit mask of the events reported. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_EVENT_HEADER Header; + tOCT_UINT32 ulPhyAddress; + tOCTVC1_MAIN_EVT_PHY_MASK ulEvents; + +} tOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EVT; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT + + Members: + Header + hProcess + ulProcessImageType + Process Type identifier. Value INVALID means no process running on this core. + ulProcessCpuUsagePercent + ulNumThread +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_EVENT_HEADER Header; + tOCT_UINT32 hProcess; + tOCTVC1_MAIN_PROCESS_TYPE_ENUM ulProcessImageType; + tOCT_UINT32 ulProcessCpuUsagePercent; + tOCT_UINT32 ulNumThread; + +} tOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT; + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT + + Members: + Header + hMgw + Redundant MGW identifier and control FIFO identifier used to reach the + redundant MGW. + ulDurationMs + Failover duration in milliseconds. + FailoverStatus + Status of the failover. + ulFailoverReturnCode + First cOCTVC1_RC that occured while executing the failover. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_EVENT_HEADER Header; + tOCTVC1_HANDLE_OBJECT hMgw; + tOCT_UINT32 ulDurationMs; + tOCTVC1_MAIN_REDUNDANCY_SERVER_FAILOVER_MGW_STATUS_ENUM FailoverStatus; + tOCT_UINT32 ulFailoverReturnCode; + +} tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT; + + +#endif /* __OCTVC1_MAIN_EVT_H__ */ + diff --git a/software/include/vocallo/main/octvc1_main_evt_swap.h b/software/include/vocallo/main/octvc1_main_evt_swap.h new file mode 100644 index 0000000..7f87e48 --- /dev/null +++ b/software/include/vocallo/main/octvc1_main_evt_swap.h @@ -0,0 +1,119 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* + +File: octvc1_main_evt_swap.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#ifndef __OCTVC1_MAIN_EVT_SWAP_H__ +#define __OCTVC1_MAIN_EVT_SWAP_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************** INCLUDE FILES *******************************/ +#include "../octvc1_swap_hdrs.h" +#include "octvc1_main_evt.h" + +/********************************* MACROS **********************************/ + + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_MODULE_TRACING_BUFFER_FULL_EVT_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_MODULE_TRACING_BUFFER_FULL_EVT * pOCTVC1_MAIN_MSG_MODULE_TRACING_BUFFER_FULL_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_MODULE_TRACING_BUFFER_FULL_EVT *)pOCTVC1_MAIN_MSG_MODULE_TRACING_BUFFER_FULL_EVT)->Header ); } \ + ((tOCTVC1_MAIN_MSG_MODULE_TRACING_BUFFER_FULL_EVT *)pOCTVC1_MAIN_MSG_MODULE_TRACING_BUFFER_FULL_EVT)->BufferId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_MODULE_TRACING_BUFFER_FULL_EVT *)pOCTVC1_MAIN_MSG_MODULE_TRACING_BUFFER_FULL_EVT)->BufferId); \ +} +#else +#define mOCTVC1_MAIN_MSG_MODULE_TRACING_BUFFER_FULL_EVT_SWAP( pOCTVC1_MAIN_MSG_MODULE_TRACING_BUFFER_FULL_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_MODULE_TRACING_STOP_EVT_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_MODULE_TRACING_STOP_EVT * pOCTVC1_MAIN_MSG_MODULE_TRACING_STOP_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_MODULE_TRACING_STOP_EVT *)pOCTVC1_MAIN_MSG_MODULE_TRACING_STOP_EVT)->Header ); } \ +} +#else +#define mOCTVC1_MAIN_MSG_MODULE_TRACING_STOP_EVT_SWAP( pOCTVC1_MAIN_MSG_MODULE_TRACING_STOP_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EVT_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EVT * pOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EVT *)pOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EVT)->Header ); } \ + ((tOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EVT *)pOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EVT)->ulCoreUseMask = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EVT *)pOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EVT)->ulCoreUseMask); \ + ((tOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EVT *)pOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EVT)->ulCoreHaltMask = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EVT *)pOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EVT)->ulCoreHaltMask); \ +} +#else +#define mOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EVT_SWAP( pOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EVT_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EVT * pOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EVT *)pOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EVT)->Header ); } \ + ((tOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EVT *)pOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EVT)->ulBank = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EVT *)pOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EVT)->ulBank); \ + ((tOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EVT *)pOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EVT)->ulPortValue = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EVT *)pOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EVT)->ulPortValue); \ +} +#else +#define mOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EVT_SWAP( pOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EVT_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EVT * pOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EVT *)pOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EVT)->Header ); } \ + ((tOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EVT *)pOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EVT)->ulPhyAddress = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EVT *)pOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EVT)->ulPhyAddress); \ + ((tOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EVT *)pOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EVT)->ulEvents = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EVT *)pOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EVT)->ulEvents); \ +} +#else +#define mOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EVT_SWAP( pOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT * pOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT *)pOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT)->Header ); } \ + ((tOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT *)pOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT)->hProcess = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT *)pOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT)->hProcess); \ + ((tOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT *)pOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT)->ulProcessImageType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT *)pOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT)->ulProcessImageType); \ + ((tOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT *)pOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT)->ulProcessCpuUsagePercent = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT *)pOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT)->ulProcessCpuUsagePercent); \ + ((tOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT *)pOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT)->ulNumThread = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT *)pOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT)->ulNumThread); \ +} +#else +#define mOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT_SWAP( pOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT_SWAP( _f_pParms ){ tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT * pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT)->Header ); } \ + ((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT)->hMgw = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT)->hMgw); \ + ((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT)->ulDurationMs = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT)->ulDurationMs); \ + ((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT)->FailoverStatus = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT)->FailoverStatus); \ + ((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT)->ulFailoverReturnCode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT *)pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT)->ulFailoverReturnCode); \ +} +#else +#define mOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT_SWAP( pOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#ifdef __cplusplus +} + +#endif + +#endif /* __OCTVC1_MAIN_EVT_SWAP_H__ */ diff --git a/software/include/vocallo/main/octvc1_main_id.h b/software/include/vocallo/main/octvc1_main_id.h new file mode 100644 index 0000000..ad27f62 --- /dev/null +++ b/software/include/vocallo/main/octvc1_main_id.h @@ -0,0 +1,107 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_MAIN_ID.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: Contains the identifiers for the MAIN API. + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Octasic_Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_MAIN_ID_H__ +#define __OCTVC1_MAIN_ID_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "../octvc1_base.h" + +/**************************************************************************** + Command IDs + ****************************************************************************/ +#define cOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_CID ( 0x002 + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_CID ( 0x003 + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_DEVICE_RESET_CID ( ( 0x004 + cOCTVC1_MAIN_CID_BASE )| cOCTVC1_MSG_NO_RESPONSE_FLAG ) +#define cOCTVC1_MAIN_MSG_DEVICE_INFO_CID ( 0x005 + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_CID ( 0x006 + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_CID ( 0x007 + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CID ( 0x008 + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_STOP_CID ( 0x009 + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_CID ( 0x00A + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CID ( ( 0x00B + cOCTVC1_MAIN_CID_BASE )| cOCTVC1_MSG_LONG_PROCESSING_FLAG ) +#define cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CID ( 0x00C + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_CID ( 0x00D + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_CID ( 0x00E + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_FILE_OPEN_CID ( ( 0x00F + cOCTVC1_MAIN_CID_BASE )| cOCTVC1_MSG_LONG_PROCESSING_FLAG ) +#define cOCTVC1_MAIN_MSG_FILE_CLOSE_CID ( ( 0x010 + cOCTVC1_MAIN_CID_BASE )| cOCTVC1_MSG_LONG_PROCESSING_FLAG ) +#define cOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_CID ( ( 0x011 + cOCTVC1_MAIN_CID_BASE )| cOCTVC1_MSG_LONG_PROCESSING_FLAG ) +#define cOCTVC1_MAIN_MSG_FILE_WRITE_CID ( ( 0x012 + cOCTVC1_MAIN_CID_BASE )| cOCTVC1_MSG_LONG_PROCESSING_FLAG ) +#define cOCTVC1_MAIN_MSG_FILE_READ_CID ( 0x013 + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_FILE_INFO_CID ( 0x014 + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_FILE_LIST_CID ( 0x015 + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_CID ( 0x016 + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_CID ( 0x017 + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_LOG_READ_ENTRY_CID ( 0x018 + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_LOG_ERASE_CID ( ( 0x019 + cOCTVC1_MAIN_CID_BASE )| cOCTVC1_MSG_LONG_PROCESSING_FLAG ) +#define cOCTVC1_MAIN_MSG_LICENSING_INFO_CID ( 0x01A + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_OCT1010_RESET_CID ( ( 0x01C + cOCTVC1_MAIN_CID_BASE )| cOCTVC1_MSG_NO_RESPONSE_FLAG ) +#define cOCTVC1_MAIN_MSG_OCT1010_INFO_CID ( 0x01D + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_ETH_STATS_CID ( 0x01E + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_CID ( 0x01F + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CID ( 0x020 + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_REGISTER_READ_CID ( 0x021 + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_CID ( 0x023 + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_CID ( 0x024 + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_CID ( 0x025 + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CID ( 0x026 + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_GPIO_READ_BANK_CID ( 0x027 + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CID ( 0x028 + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_SPI_ACCESS_CID ( 0x029 + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_PROCESS_LIST_CID ( 0x02A + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_PROCESS_INFO_CID ( 0x02B + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_MDIO_READ_PHY_CID ( 0x02C + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CID ( 0x02D + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CID ( 0x02E + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CID ( 0x02F + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CID ( 0x030 + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CID ( 0x031 + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CID ( 0x032 + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_BUFFER_OPEN_CID ( 0x033 + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_CID ( 0x034 + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_BUFFER_CLOSE_CID ( 0x035 + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_BUFFER_INFO_CID ( 0x036 + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_BUFFER_LIST_CID ( 0x037 + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_BUFFER_MODIFY_CID ( 0x038 + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_BUFFER_WRITE_CID ( 0x039 + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_BUFFER_READ_CID ( 0x03A + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_MODULE_START_TRACING_CID ( 0x03B + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_MODULE_STOP_TRACING_CID ( 0x03C + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CID ( 0x03D + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_MODULE_INFO_EVT_CID ( 0x03E + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CID ( 0x04A + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_OCT1010_STATS_CID ( 0x148 + cOCTVC1_MAIN_CID_BASE ) +#define cOCTVC1_MAIN_MSG_OCT2200_STATS_CID ( 0x14E + cOCTVC1_MAIN_CID_BASE ) + +#define cOCTVC1_MAIN_CID_MAX (( 0x14E + 1 ) & 0xFFF) + +/**************************************************************************** + Event IDs + ****************************************************************************/ +#define cOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EID ( 0x0001 + cOCTVC1_MAIN_EID_BASE ) +#define cOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EID ( 0x0002 + cOCTVC1_MAIN_EID_BASE ) +#define cOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EID ( 0x0003 + cOCTVC1_MAIN_EID_BASE ) +#define cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EID ( 0x0005 + cOCTVC1_MAIN_EID_BASE ) +#define cOCTVC1_MAIN_MSG_MODULE_TRACING_BUFFER_FULL_EID ( 0x0006 + cOCTVC1_MAIN_EID_BASE ) +#define cOCTVC1_MAIN_MSG_MODULE_TRACING_STOP_EID ( 0x0007 + cOCTVC1_MAIN_EID_BASE ) +#define cOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EID ( 0x0008 + cOCTVC1_MAIN_EID_BASE ) + +#define cOCTVC1_MAIN_EID_MAX (( 0x0009 + 1 ) & 0xFFFF) + + +#endif /* __OCTVC1_MAIN_ID_H__ */ + diff --git a/software/include/vocallo/main/octvc1_main_rc.h b/software/include/vocallo/main/octvc1_main_rc.h new file mode 100644 index 0000000..834c330 --- /dev/null +++ b/software/include/vocallo/main/octvc1_main_rc.h @@ -0,0 +1,178 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_MAIN_RC.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: Contains the return codes for the MAIN API. + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Octasic_Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef OCTVC1_MAIN_RC_H__ +#define OCTVC1_MAIN_RC_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "../octvc1_base.h" +#include "../octvc1_generic_rc.h" + +/**************************************************************************** + MAIN return codes + ****************************************************************************/ +#define cOCTVC1_MAIN_RC_PROCESS_IMAGE_LOAD_FILE_NOT_FOUND ( 0x0000 + cOCTVC1_MAIN_RC_BASE ) +#define cOCTVC1_MAIN_RC_CORE_NOT_FOUND ( 0x0004 + cOCTVC1_MAIN_RC_BASE ) +#define cOCTVC1_MAIN_RC_EVENT_MASK_INVALID ( 0x0005 + cOCTVC1_MAIN_RC_BASE ) +#define cOCTVC1_MAIN_RC_ETH_PORT_RESTRICTED_API_DENIED ( 0x0006 + cOCTVC1_MAIN_RC_BASE ) +#define cOCTVC1_MAIN_RC_PROCESS_NOT_FOUND ( 0x0007 + cOCTVC1_MAIN_RC_BASE ) +#define cOCTVC1_MAIN_RC_TDM_BUFFER_TX_TSST_INVALID ( 0x0001 + cOCTVC1_MAIN_RC_BASE ) +#define cOCTVC1_MAIN_RC_TDM_MODIFY_STATUS_INVALID ( 0x0009 + cOCTVC1_MAIN_RC_BASE ) + +/**************************************************************************** + FILE return codes + ****************************************************************************/ +#define cOCTVC1_MAIN_FILE_RC_BASE ( 0x0200 + cOCTVC1_MAIN_RC_BASE ) + +#define cOCTVC1_MAIN_RC_FILE_OPEN ( 0x0002 + cOCTVC1_MAIN_FILE_RC_BASE ) +#define cOCTVC1_MAIN_RC_FILE_HANDLE ( 0x0004 + cOCTVC1_MAIN_FILE_RC_BASE ) +#define cOCTVC1_MAIN_RC_FILE_INVALID_ACCESS_RIGHTS ( 0x0005 + cOCTVC1_MAIN_FILE_RC_BASE ) +#define cOCTVC1_MAIN_RC_FILE_WRITE ( 0x0006 + cOCTVC1_MAIN_FILE_RC_BASE ) +#define cOCTVC1_MAIN_RC_FILE_SEEK_UNKOWN_ORIGIN ( 0x0008 + cOCTVC1_MAIN_FILE_RC_BASE ) +#define cOCTVC1_MAIN_RC_FILE_SEEK_INVALID_OFFSET ( 0x0009 + cOCTVC1_MAIN_FILE_RC_BASE ) +#define cOCTVC1_MAIN_RC_FILE_SEEK ( 0x000A + cOCTVC1_MAIN_FILE_RC_BASE ) +#define cOCTVC1_MAIN_RC_FILE_NOT_FOUND ( 0x000C + cOCTVC1_MAIN_FILE_RC_BASE ) +#define cOCTVC1_MAIN_RC_FILE_MAX_READ_BYTE_SIZE ( 0x000D + cOCTVC1_MAIN_FILE_RC_BASE ) +#define cOCTVC1_MAIN_RC_FILE_MAX_WRITE_BYTE_SIZE ( 0x000E + cOCTVC1_MAIN_FILE_RC_BASE ) +#define cOCTVC1_MAIN_RC_FILE_NAME ( 0x000F + cOCTVC1_MAIN_FILE_RC_BASE ) +#define cOCTVC1_MAIN_RC_FILE_ALREADY_OPENED ( 0x0010 + cOCTVC1_MAIN_FILE_RC_BASE ) +#define cOCTVC1_MAIN_RC_FILE_BUSY ( 0x0011 + cOCTVC1_MAIN_FILE_RC_BASE ) +#define cOCTVC1_MAIN_RC_FILE_ALREADY_CLOSED ( 0x0012 + cOCTVC1_MAIN_FILE_RC_BASE ) +#define cOCTVC1_MAIN_RC_FILE_NOT_OPEN ( 0x0013 + cOCTVC1_MAIN_FILE_RC_BASE ) +#define cOCTVC1_MAIN_RC_FILE_FLASH_CMD_NOT_AVAILABLE ( 0x0014 + cOCTVC1_MAIN_FILE_RC_BASE ) +#define cOCTVC1_MAIN_RC_FILE_GET_MODE_INVALID ( 0x0015 + cOCTVC1_MAIN_FILE_RC_BASE ) +#define cOCTVC1_MAIN_RC_FILE_OCT1010ID_EXT_MEM ( 0x0016 + cOCTVC1_MAIN_FILE_RC_BASE ) +#define cOCTVC1_MAIN_RC_FILE_OCT1010ID_CHECKSUM ( 0x0017 + cOCTVC1_MAIN_FILE_RC_BASE ) +#define cOCTVC1_MAIN_RC_FILE_OCT1010ID_FILE_SIZE ( 0x0018 + cOCTVC1_MAIN_FILE_RC_BASE ) +#define cOCTVC1_MAIN_RC_FILE_OCT1010ID_TYPE ( 0x0019 + cOCTVC1_MAIN_FILE_RC_BASE ) +#define cOCTVC1_MAIN_RC_FILE_ACCESS_DENIED ( 0x001A + cOCTVC1_MAIN_FILE_RC_BASE ) + +/**************************************************************************** + FILE_SYSTEM return codes + ****************************************************************************/ +#define cOCTVC1_MAIN_FILE_SYSTEM_RC_BASE ( 0x0300 + cOCTVC1_MAIN_RC_BASE ) + +#define cOCTVC1_MAIN_RC_FILE_SYSTEM_INFO ( 0x0002 + cOCTVC1_MAIN_FILE_SYSTEM_RC_BASE ) +#define cOCTVC1_MAIN_RC_FILE_SYSTEM_INFO_NO_MORE_FILE ( 0x0004 + cOCTVC1_MAIN_FILE_SYSTEM_RC_BASE ) + +/**************************************************************************** + GPIO return codes + ****************************************************************************/ +#define cOCTVC1_MAIN_GPIO_RC_BASE ( 0x0400 + cOCTVC1_MAIN_RC_BASE ) + +#define cOCTVC1_MAIN_RC_GPIO_BANK_INVALID ( 0x0000 + cOCTVC1_MAIN_GPIO_RC_BASE ) + +/**************************************************************************** + FLASH return codes + ****************************************************************************/ +#define cOCTVC1_MAIN_FLASH_RC_BASE ( 0x0500 + cOCTVC1_MAIN_RC_BASE ) + +#define cOCTVC1_MAIN_RC_FLASH_INVALID_ADDRESS ( 0x0000 + cOCTVC1_MAIN_FLASH_RC_BASE ) +#define cOCTVC1_MAIN_RC_FLASH_ACCESS_OUT_OF_RANGE ( 0x0001 + cOCTVC1_MAIN_FLASH_RC_BASE ) +#define cOCTVC1_MAIN_RC_FLASH_APP_SPACE ( 0x0002 + cOCTVC1_MAIN_FLASH_RC_BASE ) +#define cOCTVC1_MAIN_RC_FLASH_NOT_PRESENT ( 0x0003 + cOCTVC1_MAIN_FLASH_RC_BASE ) +#define cOCTVC1_MAIN_RC_FLASH_TYPE_UNKNOWN ( 0x0004 + cOCTVC1_MAIN_FLASH_RC_BASE ) +#define cOCTVC1_MAIN_RC_FLASH_ERROR ( 0x0005 + cOCTVC1_MAIN_FLASH_RC_BASE ) + +/**************************************************************************** + SPI return codes + ****************************************************************************/ +#define cOCTVC1_MAIN_SPI_RC_BASE ( 0x0600 + cOCTVC1_MAIN_RC_BASE ) + +#define cOCTVC1_MAIN_RC_SPI_CHIP_SELECT_INVALID ( 0x0000 + cOCTVC1_MAIN_SPI_RC_BASE ) +#define cOCTVC1_MAIN_RC_SPI_CLOCK_FREQUENCY_INVALID ( 0x0001 + cOCTVC1_MAIN_SPI_RC_BASE ) +#define cOCTVC1_MAIN_RC_SPI_CLOCK_POLARITY_INVALID ( 0x0002 + cOCTVC1_MAIN_SPI_RC_BASE ) +#define cOCTVC1_MAIN_RC_SPI_CLOCK_PHASE_INVALID ( 0x0003 + cOCTVC1_MAIN_SPI_RC_BASE ) +#define cOCTVC1_MAIN_RC_SPI_TRANSFER_SIZE_INVALID ( 0x0004 + cOCTVC1_MAIN_SPI_RC_BASE ) + +/**************************************************************************** + CPU_USAGE return codes + ****************************************************************************/ +#define cOCTVC1_MAIN_CPU_USAGE_RC_BASE ( 0x0A00 + cOCTVC1_MAIN_RC_BASE ) + +#define cOCTVC1_MAIN_RC_CPU_USAGE_HANDLE_INVALID ( 0x0000 + cOCTVC1_MAIN_CPU_USAGE_RC_BASE ) +#define cOCTVC1_MAIN_RC_CPU_USAGE_THRESHOLD_INVALID ( 0x0001 + cOCTVC1_MAIN_CPU_USAGE_RC_BASE ) +#define cOCTVC1_MAIN_RC_CPU_USAGE_NOT_ACCESSIBLE ( 0x0002 + cOCTVC1_MAIN_CPU_USAGE_RC_BASE ) + +/**************************************************************************** + DMA_TRACE return codes + ****************************************************************************/ +#define cOCTVC1_MAIN_DMA_TRACE_RC_BASE ( 0x0B00 + cOCTVC1_MAIN_RC_BASE ) + +#define cOCTVC1_MAIN_RC_DMA_TRACE_PARAMETER_INVALID ( 0x0000 + cOCTVC1_MAIN_DMA_TRACE_RC_BASE ) +#define cOCTVC1_MAIN_RC_DMA_TRACE_OCTSYS_FUNC_ERROR ( 0x0001 + cOCTVC1_MAIN_DMA_TRACE_RC_BASE ) +#define cOCTVC1_MAIN_RC_DMA_TRACE_PASSWORD_ERROR ( 0x0002 + cOCTVC1_MAIN_DMA_TRACE_RC_BASE ) +#define cOCTVC1_MAIN_RC_DMA_TRACE_ENGINE_STATE ( 0x0003 + cOCTVC1_MAIN_DMA_TRACE_RC_BASE ) + +/**************************************************************************** + BUFFER return codes + ****************************************************************************/ +#define cOCTVC1_MAIN_BUFFER_RC_BASE ( 0x0C00 + cOCTVC1_MAIN_RC_BASE ) + +#define cOCTVC1_MAIN_RC_BUFFER_FORMAT ( 0x0000 + cOCTVC1_MAIN_BUFFER_RC_BASE ) +#define cOCTVC1_MAIN_RC_BUFFER_MAX_REACHED ( 0x0001 + cOCTVC1_MAIN_BUFFER_RC_BASE ) +#define cOCTVC1_MAIN_RC_BUFFER_FILE_NOT_FOUND ( 0x0002 + cOCTVC1_MAIN_BUFFER_RC_BASE ) +#define cOCTVC1_MAIN_RC_BUFFER_READ ( 0x0003 + cOCTVC1_MAIN_BUFFER_RC_BASE ) +#define cOCTVC1_MAIN_RC_BUFFER_WRITE_LENGTH ( 0x0004 + cOCTVC1_MAIN_BUFFER_RC_BASE ) +#define cOCTVC1_MAIN_RC_BUFFER_WRITE_OFFSET ( 0x0005 + cOCTVC1_MAIN_BUFFER_RC_BASE ) +#define cOCTVC1_MAIN_RC_BUFFER_MODIFY ( 0x0006 + cOCTVC1_MAIN_BUFFER_RC_BASE ) +#define cOCTVC1_MAIN_RC_BUFFER_LOCK ( 0x0007 + cOCTVC1_MAIN_BUFFER_RC_BASE ) +#define cOCTVC1_MAIN_RC_BUFFER_INTERNAL_ERROR ( 0x0008 + cOCTVC1_MAIN_BUFFER_RC_BASE ) + +/**************************************************************************** + TRACING return codes + ****************************************************************************/ +#define cOCTVC1_MAIN_TRACING_RC_BASE ( 0x0D00 + cOCTVC1_MAIN_RC_BASE ) + +#define cOCTVC1_MAIN_RC_TRACING_MODE ( 0x0000 + cOCTVC1_MAIN_TRACING_RC_BASE ) +#define cOCTVC1_MAIN_RC_TRACING_TYPE ( 0x0001 + cOCTVC1_MAIN_TRACING_RC_BASE ) +#define cOCTVC1_MAIN_RC_TRACING_NUM_BUFFER ( 0x0002 + cOCTVC1_MAIN_TRACING_RC_BASE ) +#define cOCTVC1_MAIN_RC_TRACING_BUFFER_SIZE ( 0x0003 + cOCTVC1_MAIN_TRACING_RC_BASE ) +#define cOCTVC1_MAIN_RC_TRACING_ALREADY_ACTIVE ( 0x0004 + cOCTVC1_MAIN_TRACING_RC_BASE ) + +/**************************************************************************** + DEBUG_FORWARD return codes + ****************************************************************************/ +#define cOCTVC1_MAIN_DEBUG_FORWARD_RC_BASE ( 0x0E00 + cOCTVC1_MAIN_RC_BASE ) + +#define cOCTVC1_MAIN_RC_DEBUG_FORWARD_ALREADY_OPENED ( 0x0000 + cOCTVC1_MAIN_DEBUG_FORWARD_RC_BASE ) +#define cOCTVC1_MAIN_RC_DEBUG_FORWARD_SOURCE_MAC_ADDRESS ( 0x0001 + cOCTVC1_MAIN_DEBUG_FORWARD_RC_BASE ) + +/**************************************************************************** + REDUNDANCY_SERVER return codes + ****************************************************************************/ +#define cOCTVC1_MAIN_REDUNDANCY_SERVER_RC_BASE ( 0x0F00 + cOCTVC1_MAIN_RC_BASE ) + +#define cOCTVC1_MAIN_RC_REDUNDANCY_SERVER_ALREADY_STARTED ( 0x0000 + cOCTVC1_MAIN_REDUNDANCY_SERVER_RC_BASE ) +#define cOCTVC1_MAIN_RC_REDUNDANCY_SERVER_NOT_STARTED ( 0x0001 + cOCTVC1_MAIN_REDUNDANCY_SERVER_RC_BASE ) +#define cOCTVC1_MAIN_RC_REDUNDANCY_SERVER_INVALID_REDUNDANT_MGW_CNT ( 0x0002 + cOCTVC1_MAIN_REDUNDANCY_SERVER_RC_BASE ) +#define cOCTVC1_MAIN_RC_REDUNDANCY_SERVER_API_RESOURCE_OPENED_ON_ACTIVE_MGW ( 0x0003 + cOCTVC1_MAIN_REDUNDANCY_SERVER_RC_BASE ) +#define cOCTVC1_MAIN_RC_REDUNDANCY_SERVER_MGW_MAX_REACHED ( 0x0004 + cOCTVC1_MAIN_REDUNDANCY_SERVER_RC_BASE ) +#define cOCTVC1_MAIN_RC_REDUNDANCY_SERVER_INVALID_MGW_HANDLE ( 0x0005 + cOCTVC1_MAIN_REDUNDANCY_SERVER_RC_BASE ) +#define cOCTVC1_MAIN_RC_REDUNDANCY_SERVER_INTERNAL_ERROR ( 0x0006 + cOCTVC1_MAIN_REDUNDANCY_SERVER_RC_BASE ) +#define cOCTVC1_MAIN_RC_REDUNDANCY_SERVER_UNSUPPORTED_API_CMD ( 0x0007 + cOCTVC1_MAIN_REDUNDANCY_SERVER_RC_BASE ) +#define cOCTVC1_MAIN_RC_REDUNDANCY_SERVER_FAILOVER_ALREADY_EXECUTED ( 0x0008 + cOCTVC1_MAIN_REDUNDANCY_SERVER_RC_BASE ) + +/**************************************************************************** + Validate return codes + ****************************************************************************/ +#define cOCTVC1_MAIN_AUTO_VALIDATE_RC_BASE ( 0xF000 + cOCTVC1_MAIN_RC_BASE ) + +#define cOCTVC1_MAIN_RC_BUFFER_OPEN_INVALID_ALLOCATED_BYTE_LENGTH ( 0x1 + cOCTVC1_MAIN_AUTO_VALIDATE_RC_BASE ) + +#endif /* OCTVC1_MAIN_RC_H__ */ + diff --git a/software/include/vocallo/main/octvc1_main_version.h b/software/include/vocallo/main/octvc1_main_version.h new file mode 100644 index 0000000..c7fbff1 --- /dev/null +++ b/software/include/vocallo/main/octvc1_main_version.h @@ -0,0 +1,39 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_MAIN_VERSION.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: Contains the version of the MAIN API interface. + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Octasic_Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_MAIN_VERSION_H__ +#define __OCTVC1_MAIN_VERSION_H__ + + +/* The version ID is separated into the following sections: + + bit[31:25]: Major version + bit[24:18]: Minor version + bit[17:11]: Bug fix version + bit[10:0]: Build number +*/ +#define cOCTVC1_MAIN_VERSION_MAJOR 1 +#define cOCTVC1_MAIN_VERSION_MINOR 0 +#define cOCTVC1_MAIN_VERSION_MAINTENANCE 0 +#define cOCTVC1_MAIN_VERSION_BUILD 0 + +#define cOCTVC1_MAIN_VERSION_ID ( (cOCTVC1_MAIN_VERSION_MAJOR << 25) + \ + (cOCTVC1_MAIN_VERSION_MINOR << 18) + \ + (cOCTVC1_MAIN_VERSION_MAINTENANCE << 11) + \ + cOCTVC1_MAIN_VERSION_BUILD ) + +#endif /* __OCTVC1_MAIN_VERSION_H__ */ + diff --git a/software/include/vocallo/net/octvc1_net_api.h b/software/include/vocallo/net/octvc1_net_api.h new file mode 100644 index 0000000..5495026 --- /dev/null +++ b/software/include/vocallo/net/octvc1_net_api.h @@ -0,0 +1,3233 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_NET_API.h + +$Octasic_Copyright: $ + +Description: Contains the definition of the NET API. + +$Octasic_Confidentiality: $ + +$Octasic_Release: $ + +$Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_NET_API_H__ +#define __OCTVC1_NET_API_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "../../octdev_types.h" +#include "../octvc1_msg.h" +#include "../octvc1_handle.h" +#include "../octvc1_cursor.h" +#include "../octvc1_ip.h" +#include "../octvc1_udp.h" +#include "../octvc1_mac.h" +#include "../octvc1_fifo.h" +#include "../octvocnet_pkt.h" + +#include "octvc1_net_id.h" +#include "octvc1_net_rc.h" + +/************************ COMMON DEFINITIONS *******************************/ + +#define cOCTVC1_NET_MEMBER_ID_INVALID 0 /* Invalid RTP Member ID definition. */ +#define cOCTVC1_NET_MAX_RTP_PROFILE_ENTRY 8 /* RTP profile table size. */ +#define cOCTVC1_NET_ETH_LINK_MAX_CACHE_ENTRY 16 /* Ethernet cache entry definitions. */ +#define cOCTVC1_NET_ICMP_PING_MAX_PAYLOAD_LENGTH 32 /* ICMP PING definitions. */ + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_RTP_PROFILE_MODIFY_ENUM : +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_RTP_PROFILE_MODIFY_ENUM tOCT_UINT32 + +#define cOCTVC1_NET_RTP_PROFILE_MODIFY_ENUM_RTP_PAYLOAD_TYPE 0 +#define cOCTVC1_NET_RTP_PROFILE_MODIFY_ENUM_PKT_ENCODING_TYPE 1 + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_ENUM : +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_ENUM tOCT_UINT32 + +#define cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_ENUM_NONE 0 +#define cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_ENUM_TENTATIVE 1 +#define cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_ENUM_VALID 2 +#define cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_ENUM_INVALID 3 + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM : +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM tOCT_UINT32 + +#define cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_IPV4_DAD_PASSED 0 +#define cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_IPV4_DAD_FAILED 1 +#define cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_IPV6_DAD_PASSED 2 +#define cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_IPV6_DAD_FAILED 3 +#define cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_IPV6_AUTO_CONFIG_PREFIX_FOUND 4 +#define cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_IPV6_PREFIX_PREFER_EXPIRED 5 +#define cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_IPV6_PREFIX_VALID_EXPIRED 6 +#define cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_IPV6_ROUTER_ADVERTISEMENT 7 +#define cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_IPV6_PREFIX_USER_REMOVED 8 +#define cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_IPV6_PREFIX_USER_ADDED 9 +#define cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_DHCPV4_LEASE_EXPIRED 10 +#define cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_DHCPV4_RENEW_REQUEST_SENT 11 +#define cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_DHCPV4_REBIND_REQUEST_SENT 12 +#define cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_DHCPV4_OFFER_REQUEST_SENT 13 +#define cOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_CHANGE_CAUSE_ENUM_DHCPV4_ADDR_LEASED 14 + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_LOCAL_HOST_ADDR_DUPLICATE_SOURCE_ENUM : +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_LOCAL_HOST_ADDR_DUPLICATE_SOURCE_ENUM tOCT_UINT32 + +#define cOCTVC1_NET_LOCAL_HOST_ADDR_DUPLICATE_SOURCE_ENUM_ARP_PROBE 0 +#define cOCTVC1_NET_LOCAL_HOST_ADDR_DUPLICATE_SOURCE_ENUM_ARP_REQUEST 1 +#define cOCTVC1_NET_LOCAL_HOST_ADDR_DUPLICATE_SOURCE_ENUM_ARP_REPLY 2 +#define cOCTVC1_NET_LOCAL_HOST_ADDR_DUPLICATE_SOURCE_ENUM_GARP_REQUEST 3 +#define cOCTVC1_NET_LOCAL_HOST_ADDR_DUPLICATE_SOURCE_ENUM_GARP_REPLY 4 +#define cOCTVC1_NET_LOCAL_HOST_ADDR_DUPLICATE_SOURCE_ENUM_NEIGHBOR_ADVERTISEMENT 5 + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_ICMP_ENUM : +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_ICMP_ENUM tOCT_UINT32 + +#define cOCTVC1_NET_ICMP_ENUM_OK 0 +#define cOCTVC1_NET_ICMP_ENUM_NO_REPLY 1 +#define cOCTVC1_NET_ICMP_ENUM_DEST_UNREACHABLE 2 +#define cOCTVC1_NET_ICMP_ENUM_TIME_EXCEEDED 3 +#define cOCTVC1_NET_ICMP_ENUM_UNKNOWN_ERROR 4 + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_LOCAL_HOST_EVT_MASK : +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_LOCAL_HOST_EVT_MASK tOCT_UINT32 + +#define cOCTVC1_NET_LOCAL_HOST_EVT_MASK_NONE 0x00000000 +#define cOCTVC1_NET_LOCAL_HOST_EVT_MASK_ICMP_DEST_UNREACHABLE 0x00000001 +#define cOCTVC1_NET_LOCAL_HOST_EVT_MASK_ICMP_TIME_EXCEEDED 0x00000002 +#define cOCTVC1_NET_LOCAL_HOST_EVT_MASK_ICMP_UNKNOWN_ERROR 0x00000004 +#define cOCTVC1_NET_LOCAL_HOST_EVT_MASK_ICMP_REDIRECT 0x00000008 +#define cOCTVC1_NET_LOCAL_HOST_EVT_MASK_ADDR_STATUS_CHANGE 0x00000010 +#define cOCTVC1_NET_LOCAL_HOST_EVT_MASK_ADDR_DUPLICATE_FOUND 0x00000020 + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_LINK_EVT_MASK : +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_LINK_EVT_MASK tOCT_UINT32 + +#define cOCTVC1_NET_LINK_EVT_MASK_NONE 0x00000000 +#define cOCTVC1_NET_LINK_EVT_MASK_GATEWAY_STATUS_CHANGE 0x00000001 + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_LINK_GATEWAY_STATUS_ENUM : +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_LINK_GATEWAY_STATUS_ENUM tOCT_UINT32 + +#define cOCTVC1_NET_LINK_GATEWAY_STATUS_ENUM_TENTATIVE 0 +#define cOCTVC1_NET_LINK_GATEWAY_STATUS_ENUM_REACHABLE 1 +#define cOCTVC1_NET_LINK_GATEWAY_STATUS_ENUM_UNREACHABLE 2 + +#define cOCTVC1_NET_INFINITE 0xFFFFFFFF /* Infinite amout of time definition. */ +#define cOCTVC1_NET_MAX_LOCAL_HOST 8 /* Local IP host definitions. */ +#define cOCTVC1_NET_LINK_MAX_GATEWAY 8 /* Link gateway definitions. */ +#define cOCTVC1_NET_LINK_MAX_IPV6_PREFIX 8 /* Neighbor Discovery prefix definitions. */ +#define cOCTVC1_NET_LINK_MAX_IPV4_DHCP 2 /* Maximum number of concurrent DHCP requests. */ +#define cOCTVC1_NET_MAX_PING_INFO 8 /* Maximum number of pending ping requests. */ +#define cOCTVC1_NET_MAX_CNAME_LENGTH 255 /* Maximum byte length of a CNAME. */ +#define cOCTVC1_NET_MAX_RTCP_REPORTS 2 /* Maximum number of Receiver and Sender reports per API response. */ +#define cOCTVC1_NET_UDP_PORT_INVALID cOCTVC1_UDP_PORT_INVALID /* Invalid UDP port specification. */ +#define cOCTVC1_NET_ETHERNET_PQ_TCI_INVALID 0xFFFFFFFF /* Invalid Ethernet PQ TCI definition. */ + +/*------------------------------------------------------------------------------------- + SRTP values. +-------------------------------------------------------------------------------------*/ + +#define cOCTVC1_NET_MAX_SRTP_MASTER_KEY_BYTE_SIZE 32 +#define cOCTVC1_NET_MAX_SRTP_MASTER_SALT_KEY_BYTE_SIZE 16 +#define cOCTVC1_NET_MAX_SRTP_SESSION_CRYPTO_KEY_BYTE_SIZE 32 +#define cOCTVC1_NET_MAX_SRTP_SESSION_SALT_KEY_BYTE_SIZE 16 +#define cOCTVC1_NET_MAX_SRTP_SESSION_AUTH_KEY_BYTE_SIZE 64 +#define cOCTVC1_NET_MAX_SRTP_MKI_VALUE_BYTE_SIZE 4 +#define cOCTVC1_NET_MAX_SRTP_KEY_LIST_NUM 4 + +/*------------------------------------------------------------------------------------- + NET API configuration default values. +-------------------------------------------------------------------------------------*/ +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_RTP_EVT_MASK : RTP Session Event mask definitions. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_RTP_EVT_MASK tOCT_UINT32 + +#define cOCTVC1_NET_RTP_EVT_MASK_NONE 0x00000000 +#define cOCTVC1_NET_RTP_EVT_MASK_RX_ALARM 0x00000001 +#define cOCTVC1_NET_RTP_EVT_MASK_TX_STATE_CHANGE 0x00000002 +#define cOCTVC1_NET_RTP_EVT_MASK_REMOTE_AUTO_DETECT 0x00000004 +#define cOCTVC1_NET_RTP_EVT_MASK_ALL 0xFFFFFFFF + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_RX_PKT_FILTER_ENUM : Packet filter applied to IP packets received for this member once a valid + remote member +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_RX_PKT_FILTER_ENUM tOCT_UINT32 + +#define cOCTVC1_NET_RX_PKT_FILTER_ENUM_NONE 0 +#define cOCTVC1_NET_RX_PKT_FILTER_ENUM_SRCIPUDP 1 +#define cOCTVC1_NET_RX_PKT_FILTER_ENUM_SSRC 2 +#define cOCTVC1_NET_RX_PKT_FILTER_ENUM_SRCIPUDP_SSRC 3 + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_RTCP_EVT_MASK : RTCP Event mask definitions. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_RTCP_EVT_MASK tOCT_UINT32 + +#define cOCTVC1_NET_RTCP_EVT_MASK_NONE 0x00000000 +#define cOCTVC1_NET_RTCP_EVT_MASK_PKT_ERROR 0x00000001 +#define cOCTVC1_NET_RTCP_EVT_MASK_PKT_COMPOUND 0x00000002 +#define cOCTVC1_NET_RTCP_EVT_MASK_PKT_TYPE_SR 0x00000004 +#define cOCTVC1_NET_RTCP_EVT_MASK_PKT_TYPE_RR 0x00000008 +#define cOCTVC1_NET_RTCP_EVT_MASK_PKT_TYPE_SDES 0x00000010 +#define cOCTVC1_NET_RTCP_EVT_MASK_PKT_TYPE_BYE 0x00000020 +#define cOCTVC1_NET_RTCP_EVT_MASK_PKT_TYPE_APP 0x00000040 +#define cOCTVC1_NET_RTCP_EVT_MASK_PKT_TYPE_FEEDBACK_MSG 0x00000080 +#define cOCTVC1_NET_RTCP_EVT_MASK_PKT_TYPE_UNKNOWN 0x00000100 +#define cOCTVC1_NET_RTCP_EVT_MASK_SSRC_CHANGE_LOCAL 0x00000200 +#define cOCTVC1_NET_RTCP_EVT_MASK_SSRC_CHANGE_REMOTE 0x00000400 +#define cOCTVC1_NET_RTCP_EVT_MASK_REMOTE_MEMBER_DETECTED 0x00000800 +#define cOCTVC1_NET_RTCP_EVT_MASK_ALL 0xFFFFFFFF + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_SRTP_EVT_MASK : SRTP Event mask definitions. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_SRTP_EVT_MASK tOCT_UINT32 + +#define cOCTVC1_NET_SRTP_EVT_MASK_NONE 0x00000000 +#define cOCTVC1_NET_SRTP_EVT_MASK_MASTER_RE_KEY_THRESHOLD_REACHED 0x00000001 +#define cOCTVC1_NET_SRTP_EVT_MASK_MASTER_KEY_EXPIRED 0x00000002 +#define cOCTVC1_NET_SRTP_EVT_MASK_MASTER_KEY_CHANGE_DETECTED 0x00000004 +#define cOCTVC1_NET_SRTP_EVT_MASK_REPLAY_ATTACK_DETECTED 0x00000008 +#define cOCTVC1_NET_SRTP_EVT_MASK_UNAUTH_PKT_DETECTED 0x00000010 +#define cOCTVC1_NET_SRTP_EVT_MASK_UNKNOWN_MKI_RECEIVED 0x00000020 +#define cOCTVC1_NET_SRTP_EVT_MASK_SESSION_SSRC_VIOLATION 0x00000040 +#define cOCTVC1_NET_SRTP_EVT_MASK_ALL 0xFFFFFFFF + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_RTP_FORCED_PARAMETER_MASK : Force RTP parameter mask. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_RTP_FORCED_PARAMETER_MASK tOCT_UINT32 + +#define cOCTVC1_NET_RTP_FORCED_PARAMETER_MASK_NONE 0x00000000 +#define cOCTVC1_NET_RTP_FORCED_PARAMETER_MASK_SSRC 0x00000001 +#define cOCTVC1_NET_RTP_FORCED_PARAMETER_MASK_INITIAL_SEQ_NUMBER 0x00000002 + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_RTCP_PKT_TYPE_ENUM : RTCP Packet Type definitions. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_RTCP_PKT_TYPE_ENUM tOCT_UINT32 + +#define cOCTVC1_NET_RTCP_PKT_TYPE_ENUM_COMPOUND 1 +#define cOCTVC1_NET_RTCP_PKT_TYPE_ENUM_COMPOUND_WITH_ERROR 2 +#define cOCTVC1_NET_RTCP_PKT_TYPE_ENUM_RR 3 +#define cOCTVC1_NET_RTCP_PKT_TYPE_ENUM_SR 4 +#define cOCTVC1_NET_RTCP_PKT_TYPE_ENUM_SDES 5 +#define cOCTVC1_NET_RTCP_PKT_TYPE_ENUM_BYE 6 +#define cOCTVC1_NET_RTCP_PKT_TYPE_ENUM_APP 7 +#define cOCTVC1_NET_RTCP_PKT_TYPE_ENUM_FEEDBACK_MSG 8 +#define cOCTVC1_NET_RTCP_PKT_TYPE_ENUM_UNKNOWN 9 + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_RTP_SENDER_STATE_ENUM : RTP Member Sender State. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_RTP_SENDER_STATE_ENUM tOCT_UINT32 + +#define cOCTVC1_NET_RTP_SENDER_STATE_ENUM_PENDING 0 +#define cOCTVC1_NET_RTP_SENDER_STATE_ENUM_INACTIVE 1 +#define cOCTVC1_NET_RTP_SENDER_STATE_ENUM_ACTIVE 2 +#define cOCTVC1_NET_RTP_SENDER_STATE_ENUM_UNRESOLVED 3 +#define cOCTVC1_NET_RTP_SENDER_STATE_ENUM_PAUSED 4 + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_OPERATION_MODE_ENUM : RTP Member Operation Mode. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_OPERATION_MODE_ENUM tOCT_UINT32 + +#define cOCTVC1_NET_OPERATION_MODE_ENUM_ENDPOINT 0 +#define cOCTVC1_NET_OPERATION_MODE_ENUM_RTP_ONLY 1 +#define cOCTVC1_NET_OPERATION_MODE_ENUM_FULL_TRANSLATOR 2 +#define cOCTVC1_NET_OPERATION_MODE_ENUM_HALF_TRANSLATOR 3 +#define cOCTVC1_NET_OPERATION_MODE_ENUM_RECOVER_NTP_FROM_RTP_TS 4 + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_RTP_MEMBER_CONN_STATE_ENUM : Connection state of a RTP Member. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_RTP_MEMBER_CONN_STATE_ENUM tOCT_UINT32 + +#define cOCTVC1_NET_RTP_MEMBER_CONN_STATE_ENUM_DISCONNECTED 0 +#define cOCTVC1_NET_RTP_MEMBER_CONN_STATE_ENUM_CONNECTED 1 + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_RX_ALARM_MASK : RX Alarm Conditions. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_RX_ALARM_MASK tOCT_UINT32 + +#define cOCTVC1_NET_RX_ALARM_MASK_NONE 0x00000000 +#define cOCTVC1_NET_RX_ALARM_MASK_THRESH_FRACTION_LOST 0x00000001 +#define cOCTVC1_NET_RX_ALARM_MASK_THRESH_JITTER 0x00000002 +#define cOCTVC1_NET_RX_ALARM_MASK_THRESH_RTT 0x00000004 +#define cOCTVC1_NET_RX_ALARM_MASK_THRESH_CUMUL_PKT_LOST 0x00000008 + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_SRTP_STREAM_TYPE_ENUM : SRTP Stream Type +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_SRTP_STREAM_TYPE_ENUM tOCT_UINT32 + +#define cOCTVC1_NET_SRTP_STREAM_TYPE_ENUM_SENDER 0 +#define cOCTVC1_NET_SRTP_STREAM_TYPE_ENUM_RECEIVER 1 + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_SRTP_STREAM_KEY_CHANGE_REASON_ENUM : SRTP Stream key change reasons +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_SRTP_STREAM_KEY_CHANGE_REASON_ENUM tOCT_UINT32 + +#define cOCTVC1_NET_SRTP_STREAM_KEY_CHANGE_REASON_ENUM_MKI 0 +#define cOCTVC1_NET_SRTP_STREAM_KEY_CHANGE_REASON_ENUM_FROM_TO 1 + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_SRTP_CRYPTO_TRANSFORM_ENUM : Cryptographic Transform type +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_SRTP_CRYPTO_TRANSFORM_ENUM tOCT_UINT32 + +#define cOCTVC1_NET_SRTP_CRYPTO_TRANSFORM_ENUM_NULL 0 +#define cOCTVC1_NET_SRTP_CRYPTO_TRANSFORM_ENUM_AES_CM 1 +#define cOCTVC1_NET_SRTP_CRYPTO_TRANSFORM_ENUM_AES_F8 2 + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_SRTP_AUTH_TRANSFORM_ENUM : Authentication Transfer type +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_SRTP_AUTH_TRANSFORM_ENUM tOCT_UINT32 + +#define cOCTVC1_NET_SRTP_AUTH_TRANSFORM_ENUM_NULL 0 +#define cOCTVC1_NET_SRTP_AUTH_TRANSFORM_ENUM_HMAC_SHA1 1 + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_SRTP_STREAM_STATE_ENUM : SRTP Stream state +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_SRTP_STREAM_STATE_ENUM tOCT_UINT32 + +#define cOCTVC1_NET_SRTP_STREAM_STATE_ENUM_INVALID 0 +#define cOCTVC1_NET_SRTP_STREAM_STATE_ENUM_INACTIVE 1 +#define cOCTVC1_NET_SRTP_STREAM_STATE_ENUM_ACTIVE 2 +#define cOCTVC1_NET_SRTP_STREAM_STATE_ENUM_ERROR 3 + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_SRTP_KEY_STATE_ENUM : SRTP Key state +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_SRTP_KEY_STATE_ENUM tOCT_UINT32 + +#define cOCTVC1_NET_SRTP_KEY_STATE_ENUM_INVALID 0 +#define cOCTVC1_NET_SRTP_KEY_STATE_ENUM_INACTIVE 1 +#define cOCTVC1_NET_SRTP_KEY_STATE_ENUM_ACTIVE 2 +#define cOCTVC1_NET_SRTP_KEY_STATE_ENUM_ACTIVE_THRESHOLD_REACH 3 +#define cOCTVC1_NET_SRTP_KEY_STATE_ENUM_EXPIRE 4 + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_SRTP_KEY_BIT_SIZE_ENUM : SRTP Key Byte Size +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_SRTP_KEY_BIT_SIZE_ENUM tOCT_UINT32 + +#define cOCTVC1_NET_SRTP_KEY_BIT_SIZE_ENUM_128 128 +#define cOCTVC1_NET_SRTP_KEY_BIT_SIZE_ENUM_192 192 +#define cOCTVC1_NET_SRTP_KEY_BIT_SIZE_ENUM_256 256 + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_SRTP_SALT_KEY_BIT_SIZE_ENUM : SRTP Salt Key Byte Size +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_SRTP_SALT_KEY_BIT_SIZE_ENUM tOCT_UINT32 + +#define cOCTVC1_NET_SRTP_SALT_KEY_BIT_SIZE_ENUM_0 0 +#define cOCTVC1_NET_SRTP_SALT_KEY_BIT_SIZE_ENUM_112 112 + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_SRTP_SERVICE_MASK : SRTP Service +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_SRTP_SERVICE_MASK tOCT_UINT32 + +#define cOCTVC1_NET_SRTP_SERVICE_MASK_NONE 0x00000000 +#define cOCTVC1_NET_SRTP_SERVICE_MASK_CONFIDENTIALITY 0x00000001 +#define cOCTVC1_NET_SRTP_SERVICE_MASK_AUTHENTICATION 0x00000002 + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK : Session RTP Member Modify Mask. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK tOCT_UINT32 + +#define cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_NONE 0 +#define cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_REMOTE_RTP ((tOCT_UINT32)(1<<0) ) +#define cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_REMOTE_RTCP ((tOCT_UINT32)(1<<1) ) +#define cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_REMOTE_T38 ((tOCT_UINT32)(1<<2) ) +#define cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_REMOTE_CNAME ((tOCT_UINT32)(1<<3) ) +#define cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_SRTP_STREAM_CONFIG_SENDER ((tOCT_UINT32)(1<<4) ) +#define cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_SRTP_KEY_ENTRY_SENDER ((tOCT_UINT32)(1<<5) ) +#define cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_SRTP_STREAM_CONFIG_RECEIVER ((tOCT_UINT32)(1<<6) ) +#define cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_SRTP_KEY_ENTRY_RECEIVER ((tOCT_UINT32)(1<<7) ) +#define cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_LOCAL_RTP ((tOCT_UINT32)(1<<8) ) +#define cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_LOCAL_RTCP ((tOCT_UINT32)(1<<9) ) +#define cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_LOCAL_T38 ((tOCT_UINT32)(1<<10) ) +#define cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_ALL 0xFFFFFFFF + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_VIDEO_RTCP_FB_MSG_MASK : Session RTCP Member feedback Mask. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_VIDEO_RTCP_FB_MSG_MASK tOCT_UINT32 + +#define cOCTVC1_NET_VIDEO_RTCP_FB_MSG_MASK_NONE 0x00000000 +#define cOCTVC1_NET_VIDEO_RTCP_FB_MSG_MASK_PLI 0x00000001 +#define cOCTVC1_NET_VIDEO_RTCP_FB_MSG_MASK_FIR 0x00000002 +#define cOCTVC1_NET_VIDEO_RTCP_FB_MSG_MASK_ALL 0xFFFFFFFF + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_ETHERTYPE_ENCODING_ENUM : Ethernet Encoding Types +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_ETHERTYPE_ENCODING_ENUM tOCT_UINT32 + +#define cOCTVC1_NET_ETHERTYPE_ENCODING_ENUM_ETH_II 0 + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_RTP_MEMBER_STREAM_IDX_ENUM : Tramport index of the various RTP member data streams. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_RTP_MEMBER_STREAM_IDX_ENUM tOCT_UINT32 + +#define cOCTVC1_NET_RTP_MEMBER_STREAM_IDX_ENUM_RTP 0 +#define cOCTVC1_NET_RTP_MEMBER_STREAM_IDX_ENUM_RTCP 1 +#define cOCTVC1_NET_RTP_MEMBER_STREAM_IDX_ENUM_T38_UDPTL 2 + +#define cOCTVC1_NET_RTP_MEMBER_MAX_STREAM 3 +#define cOCTVC1_NET_MAX_VLAN_TAG 4 + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK : Modify mask. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK tOCT_UINT32 + +#define cOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK_NONE 0x00000000 +#define cOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK_STREAM_RTP 0x00000001 +#define cOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK_STREAM_RTCP 0x00000002 +#define cOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK_STREAM_T38_UDPTL 0x00000004 +#define cOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK_CNAME_LOCAL 0x00000008 +#define cOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK_CNAME_REMOTE 0x00000010 +#define cOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK_ALL 0x0000001F + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_CUSTOM_MEMBER_STREAM_MODIFY_MASK : RRP member transport modify mask. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_CUSTOM_MEMBER_STREAM_MODIFY_MASK tOCT_UINT32 + +#define cOCTVC1_NET_CUSTOM_MEMBER_STREAM_MODIFY_MASK_NONE 0x00000000 +#define cOCTVC1_NET_CUSTOM_MEMBER_STREAM_MODIFY_MASK_TX_PKT_ENABLE_FLAG 0x00000001 +#define cOCTVC1_NET_CUSTOM_MEMBER_STREAM_MODIFY_MASK_RX_PKT_FILTER 0x00000002 +#define cOCTVC1_NET_CUSTOM_MEMBER_STREAM_MODIFY_MASK_PKT_HEADER 0x00000004 +#define cOCTVC1_NET_CUSTOM_MEMBER_STREAM_MODIFY_MASK_ALL 0x00000007 + +/*------------------------------------------------------------------------------------- + NET API Object Type. +-------------------------------------------------------------------------------------*/ + +#define cOCTVC1_NET_OBJ_TYPE_LOCAL_HOST (0x0001|cOCTVC1_HANDLE_BASE_OBJ_TYPE_NET) +#define cOCTVC1_NET_OBJ_TYPE_RTP_SESSION (0x0003|cOCTVC1_HANDLE_BASE_OBJ_TYPE_NET) +#define cOCTVC1_NET_OBJ_TYPE_ETH_LINK (0x0004|cOCTVC1_HANDLE_BASE_OBJ_TYPE_NET) +#define cOCTVC1_NET_OBJ_TYPE_CUSTOM_LOCAL_HOST (0x0005|cOCTVC1_HANDLE_BASE_OBJ_TYPE_NET) + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_IP_CURSOR + + Members: + hLink + IpAddress + ulGetMode + Default: cOCTVC1_OBJECT_CURSOR_ENUM_FIRST +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_HANDLE hLink; + tOCTVC1_IP_ADDRESS IpAddress; + tOCTVC1_OBJECT_CURSOR_ENUM ulGetMode; + +} tOCTVC1_NET_IP_CURSOR; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_RTP_PROFILE_ENTRY + + Members: + ulRtpPayloadType + ulPktEncodingType +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCT_UINT32 ulRtpPayloadType; + tOCTVOCNET_PKT_D_TYPE_ENUM ulPktEncodingType; + +} tOCTVC1_NET_RTP_PROFILE_ENTRY; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_RTP_PROFILE_MODIFY_ENTRY + + Members: + ulModifyType + Entry +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_NET_RTP_PROFILE_MODIFY_ENUM ulModifyType; + tOCTVC1_NET_RTP_PROFILE_ENTRY Entry; + +} tOCTVC1_NET_RTP_PROFILE_MODIFY_ENTRY; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_SRTP_KEY_ENTRY + + Members: + ulMasterKeyBitSize + Default: cOCTVC1_NET_SRTP_KEY_BIT_SIZE_ENUM_128 + Size in bits of the master key array. + abyMasterKey + Master Key. The number of significant bytes is defined by ulMasterKeyBitSize. + ulMasterSaltBitSize + Default: cOCTVC1_NET_SRTP_SALT_KEY_BIT_SIZE_ENUM_112 + Size in bits of the master key array. + abyMasterSalt + The Master Salt Key. The number of significant bytes is defined by + ulMasterSaltBitSize. + ulKeyDerivationRateLog2 + Range: [0..24] + The Key derivation rate expressed as a power of 2 number (derivation rate = + 2^ulKeyDerivationRateLog2). The key derivation is configured to periodically + refresh the session keys, which limits the amount of ciphertext produced by a + fixed key available for an adversary to cryptanalyze. + aulRtpMasterKeyMaxLifeTime + Values: 0 ... 2^48 - 1 Sets the maximum key lifetime( number of RTP packets + allowed to be encrypted / decrypted using this key ). Zero means maximum (2^48 + packets). aulRtpMasterKeyMaxLifeTime[0] = bits 47:32, + aulRtpMasterKeyMaxLifeTime[1] = bits 31:0.. + aulRtpMasterKeyFromLifeTime + Values: 0 ... 2^48 - 1 Sets the master key "From" lifetime. The "From, To" + lifetimes are used to indicate the range of packets indexes for which this key + is valid. Index wrap around is supported. As a result, "From" may be set to a + higher value than "To". The following is an example with RTP packets: "From" = + 0x7FFFFFFFFFFF and "To" = 1. This key is valid for packets with index + 0x7FFFFFFFFFFF, 0 and 1. aulRtpMasterKeyFromLifeTime[0] = bits 47:32, + aulRtpMasterKeyFromLifeTime[1] = bits 31:0 + aulRtpMasterKeyToLifeTime + Values: 0 ... 2^48 - 1 Sets the master key "To" lifetime. The "From, To" + lifetimes are used to indicate the range of packets index where this key is + valid. Index wrap around is supported. As a result, "From" may be set to a + higher value than "To". aulRtpMasterKeyToLifeTime[0] = bits 47:32, + aulRtpMasterKeyToLifeTime[1] = bits 31:0 + aulRtpReKeyEventThreshold + Values: 0 ... 2^48 - 1 When the internal RTP packet count is greater or equal + than the aulRtpReKeyEventThreshold, a rekey event is generated. When such an + event is detected, the aulRtpReKeyEventThreshold is cleared in order to disable + the mechanism. The value zero is used to disable the mechanism. + aulRtpReKeyEventThreshold[0] = bits 47:32, aulRtpReKeyEventThreshold[1] = bits + 31:0 + ulRtcpMasterKeyMaxLifeTime + Range: [0..0x7FFFFFFF] + Sets the maximum key lifetime( number of RTCP packets allowed to be encrypted / + decrypted using this key ). Zero means maximum (2^31 packets). After reaching + the maximum lifetime, the packets are discarded. + ulRtcpMasterKeyFromLifeTime + Range: [0..0x7FFFFFFF] + Sets the master key "From" lifetime. The "From, To" lifetimes are used to + indicate the range of RTCP packets indexes for which this key is valid. Index + wrap around is supported. As a result, "From" may be set to a higher value than + "To". The following is an example with RTCP packets: "From" = 0x7FFFFFFF and + "To" = 1. This key is valid for packets with index 0x7FFFFFFF, 0 and 1. + ulRtcpMasterKeyToLifeTime + Range: [0..0x7FFFFFFF] + Sets the master key "To" lifetime. The "From, To" lifetimes are used to + indicate the range of RTCP packets index where this key is valid. Index wrap + around is supported. As a result, "From" may be set to a higher value than "To". + ulRtcpReKeyEventThreshold + Range: [0..0x7FFFFFFF] + When the internal RTCP packet count is greater that or equal to the + ulRtcpReKeyEventThreshold, a rekey event is generated. When such an event is + detected, the ulRtcpReKeyEventThreshold is cleared in order to disable the + mechanism. The value zero is used to disable the mechanism. + abyMkiValue + This method is used to assign a Master Key Identifier (MKI) to the current key. + The purpose of MKI is to identify the master key to be used in the current + context to protect or unprotect a packet. When enabled, MKI is used in addition + to the "From, To" lifetime for key retrieval. For incoming packets (decryption + path), the received MKI is compared to the MKI of configured keys. It must + match for the key to be retrieved. For the outgoing packets (encryption path), + the MKI information from the configured key is used to fill the MKI field in + the packet to transmit. The MKI Size, is set in the cryptographic context, and + is the same for all configured key. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_NET_SRTP_KEY_BIT_SIZE_ENUM ulMasterKeyBitSize; + tOCT_UINT8 abyMasterKey[cOCTVC1_NET_MAX_SRTP_MASTER_KEY_BYTE_SIZE]; + tOCTVC1_NET_SRTP_SALT_KEY_BIT_SIZE_ENUM ulMasterSaltBitSize; + tOCT_UINT8 abyMasterSalt[cOCTVC1_NET_MAX_SRTP_MASTER_SALT_KEY_BYTE_SIZE]; + tOCT_UINT32 ulKeyDerivationRateLog2; + tOCT_UINT32 aulRtpMasterKeyMaxLifeTime[2]; + tOCT_UINT32 aulRtpMasterKeyFromLifeTime[2]; + tOCT_UINT32 aulRtpMasterKeyToLifeTime[2]; + tOCT_UINT32 aulRtpReKeyEventThreshold[2]; + tOCT_UINT32 ulRtcpMasterKeyMaxLifeTime; + tOCT_UINT32 ulRtcpMasterKeyFromLifeTime; + tOCT_UINT32 ulRtcpMasterKeyToLifeTime; + tOCT_UINT32 ulRtcpReKeyEventThreshold; + tOCT_UINT8 abyMkiValue[cOCTVC1_NET_MAX_SRTP_MKI_VALUE_BYTE_SIZE]; + +} tOCTVC1_NET_SRTP_KEY_ENTRY; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_SRTP_STREAM_CONFIG + + Members: + ulCryptoTransform + Default: cOCTVC1_NET_SRTP_CRYPTO_TRANSFORM_ENUM_AES_CM + Sets the cryptographic transform for this context. This transform is used for + packets encryption and decryption. If set to NULL, no encryption is made + ulAuthTransform + Default: cOCTVC1_NET_SRTP_AUTH_TRANSFORM_ENUM_HMAC_SHA1 + Sets the authentication transform mode for RTP ans RTCP in this context. This + transform is used to authenticate packets or to verify packets authentication. + Notes: When authentication is used (not NULL), the replay protection is + automatically enabled on the decryption context. + ulAuthTagBitSize + Range: [0..160] + Default: 80 + Sets the authentication tag length. For RTP, the authentication is + automatically computed when an authentication transform is selected (not NULL), + for RTCP authentication is always computed. The authentication is appended to + outgoing packets or verified for incoming packets. Recommended value is 32 bits + for voice and 80 bits for other. When set to zero, no message authentication. + ulMkiByteSize + Range: [0..4] + Size in bytes of the master key identifier value for all configured key. When + set to zero, MKI feature is disable. + ulSessionCryptoKeyBitSize + Default: cOCTVC1_NET_SRTP_KEY_BIT_SIZE_ENUM_128 + Sets the session cryptographic key size in bits.The session cryptographic key + is automatically derived by using the master key and master salt key when + protecting packets + ulSessionSaltKeyBitSize + Range: [0..112] + Default: 112 + Sets the session salt key size in bits. The session salt key is automatically + derived by using the master key and master salt key when protecting packets. + ulSessionAuthKeyBitSize + Range: [0..512] + Default: 128 + Sets the session authentication key size in bits. The session authentication + key is automatically derived by using the master key and master salt key when + protecting packets. + ulInitialRoc + ulSrtpServiceMask + Default: cOCTVC1_NET_SRTP_SERVICE_MASK_NONE + Sets security services use for RTP. Note that replay protection is + automatically enable when authentication is enable with non-null transform. + ulSrtcpServiceMask + Default: cOCTVC1_NET_SRTP_SERVICE_MASK_NONE + Sets security services use for RTCP. Note that replay protection is + automatically enable when authentication is enable with non-null transform. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_NET_SRTP_CRYPTO_TRANSFORM_ENUM ulCryptoTransform; + tOCTVC1_NET_SRTP_AUTH_TRANSFORM_ENUM ulAuthTransform; + tOCT_UINT32 ulAuthTagBitSize; + tOCT_UINT32 ulMkiByteSize; + tOCTVC1_NET_SRTP_KEY_BIT_SIZE_ENUM ulSessionCryptoKeyBitSize; + tOCT_UINT32 ulSessionSaltKeyBitSize; + tOCT_UINT32 ulSessionAuthKeyBitSize; + tOCT_UINT32 ulInitialRoc; + tOCTVC1_NET_SRTP_SERVICE_MASK ulSrtpServiceMask; + tOCTVC1_NET_SRTP_SERVICE_MASK ulSrtcpServiceMask; + +} tOCTVC1_NET_SRTP_STREAM_CONFIG; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_SRTP_KEY_STATS + + Members: + ulKeyState + aulSrtpPacketCnt + Values: 48-bit counter value. Number of SRTP packet sent with this Key Entry. + ulSrtcpPacketCnt + Number of SRTCP packet sent with this Key Entry. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_NET_SRTP_KEY_STATE_ENUM ulKeyState; + tOCT_UINT32 aulSrtpPacketCnt[2]; + tOCT_UINT32 ulSrtcpPacketCnt; + +} tOCTVC1_NET_SRTP_KEY_STATS; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_SRTP_STREAM_STATS + + Members: + ulSrtpState + ulSsrc + RTP SSRC associate with this SRTP Stream. + ulLastRoc + Last ROC (Roll over conter of RTP sequences). Number of SRTP packet sent with + this Key Entry. + ulLastSeq + Last RTP Sequence Number sent or received. Number of SRTP packet sent with this + Key Entry. + ulLastSrtcpIndex + Last SRTCP index sent or received. Number of SRTCP packet sent with this Key + Entry. + aulTotalSrtpPktCnt + Values: 64-bit counter value. Total of SRTP packet sent or received by this + SRTP Stream. + aulTotalSrtcpPktCnt + Values: 64-bit counter value. Total of SRTCP packet sent or received by this + SRTP Stream. + ulUnAuthPktCnt + Values: 16-bit counter value Total of SRTP/SRTCP unauthaurized packets sent or + received by this SRTP Stream. + ulReplayPktCnt + Values: 16-bit counter value Total of Replay SRTP/SRTCP packets detected by + this SRTP Stream. Only valid for SRTP Receiver Stream. + ulReKeyCnt + Values: 8-bit counter value Total of Master Re-Key with MKI method or From,To + method. + ulActiveKeyIdx + Idx of the active key. + ulSrtpKeyNum + Number of key stats in aSrtpKeyStats. + aSrtpKeyStats + SRTP Steam Key statistics. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_NET_SRTP_STREAM_STATE_ENUM ulSrtpState; + tOCT_UINT32 ulSsrc; + tOCT_UINT32 ulLastRoc; + tOCT_UINT32 ulLastSeq; + tOCT_UINT32 ulLastSrtcpIndex; + tOCT_UINT32 aulTotalSrtpPktCnt[2]; + tOCT_UINT32 aulTotalSrtcpPktCnt[2]; + tOCT_UINT32 ulUnAuthPktCnt; + tOCT_UINT32 ulReplayPktCnt; + tOCT_UINT32 ulReKeyCnt; + tOCT_UINT32 ulActiveKeyIdx; + tOCT_UINT32 ulSrtpKeyNum; + tOCTVC1_NET_SRTP_KEY_STATS aSrtpKeyStats[4]; + +} tOCTVC1_NET_SRTP_STREAM_STATS; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_CONFIG_STATIC + + Members: + ulMaxRtpMember + ulMaxRtpSession + ulMaxLocalIpHost +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCT_UINT32 ulMaxRtpMember; + tOCT_UINT32 ulMaxRtpSession; + tOCT_UINT32 ulMaxLocalIpHost; + +} tOCTVC1_NET_CONFIG_STATIC; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_RTP_MEMBER_CONN_INFO + + Members: + ulConnectionState + Connection state of the RTP Member: + cOCTVC1_NET_RTP_MEMBER_CONN_STATE_DISCONNECTED: The member is not connected to + an other member + cOCTVC1_NET_RTP_MEMBER_CONN_STATE_CONNECTED: The member is connected to an + other member. + hConnectedRtpSession + RTP Session handle of the connected RTP Member. + Significant only if ulConnectionState is set to + cOCTVC1_NET_RTP_MEMBER_CONN_STATE_CONNECTED. + ulConnectedMemberId + Member identifier of the connected RTP Member. + Significant only if ulConnectionState is set to + cOCTVC1_NET_RTP_MEMBER_CONN_STATE_CONNECTED. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_NET_RTP_MEMBER_CONN_STATE_ENUM ulConnectionState; + tOCTVC1_HANDLE hConnectedRtpSession; + tOCT_UINT32 ulConnectedMemberId; + +} tOCTVC1_NET_RTP_MEMBER_CONN_INFO; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_RTCP_SENDER_STATS + + Members: + aulSentPktCnt + aulSentByteCnt + aulNtpTimestamp + ulRtpTimestamp + ulSenderSsrc + ulSenderStartTime + ulSenderReportCnt + ulSenderState + ulLastSenderReportTime + ulSsrcChangeCnt +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCT_UINT32 aulSentPktCnt[2]; + tOCT_UINT32 aulSentByteCnt[2]; + tOCT_UINT32 aulNtpTimestamp[2]; + tOCT_UINT32 ulRtpTimestamp; + tOCT_UINT32 ulSenderSsrc; + tOCT_UINT32 ulSenderStartTime; + tOCT_UINT32 ulSenderReportCnt; + tOCTVC1_NET_RTP_SENDER_STATE_ENUM ulSenderState; + tOCT_UINT32 ulLastSenderReportTime; + tOCT_UINT32 ulSsrcChangeCnt; + +} tOCTVC1_NET_RTCP_SENDER_STATS; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_RTCP_RECEIVER_STATS + + Members: + ulHighestSeqNumber + ulCumulativeLostCnt + ulFractionLost + ulInterArrivalJitter + ulMaxFractionLost + ulMaxInterArrivalJitter + ulAverageFractionLost + ulAverageInterArrivalJitter + ulReceiverStartTime + ulReceiverReportCnt + ulLastReceiverReportTime + ulRemoteSenderSsrc + ulAlarmRxThreshold + ulAlarmRxThresholdCnt +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCT_UINT32 ulHighestSeqNumber; + tOCT_UINT32 ulCumulativeLostCnt; + tOCT_UINT32 ulFractionLost; + tOCT_UINT32 ulInterArrivalJitter; + tOCT_UINT32 ulMaxFractionLost; + tOCT_UINT32 ulMaxInterArrivalJitter; + tOCT_UINT32 ulAverageFractionLost; + tOCT_UINT32 ulAverageInterArrivalJitter; + tOCT_UINT32 ulReceiverStartTime; + tOCT_UINT32 ulReceiverReportCnt; + tOCT_UINT32 ulLastReceiverReportTime; + tOCT_UINT32 ulRemoteSenderSsrc; + tOCTVC1_NET_RX_ALARM_MASK ulAlarmRxThreshold; + tOCT_UINT32 ulAlarmRxThresholdCnt; + +} tOCTVC1_NET_RTCP_RECEIVER_STATS; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_VLAN_TAG + + Members: + ulPriority + Range: [0..7] + Default: 5 + ulVlanId + Range: [0..4095] + Default: 0 +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCT_UINT32 ulPriority; + tOCT_UINT32 ulVlanId; + +} tOCTVC1_NET_VLAN_TAG; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_HEADER_INFO_ETHERNET + + Members: + ulEthertypeEncoding + Default: cOCTVC1_NET_ETHERTYPE_ENCODING_ENUM_ETH_II + Ethertype encoding used to create the transmission header. + ulEthertype + Range: [0..0xFFFF] + Default: 0x0800 + LocalMacAddress + RemoteMacAddress +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_NET_ETHERTYPE_ENCODING_ENUM ulEthertypeEncoding; + tOCT_UINT32 ulEthertype; + tOCTVC1_MAC_ADDRESS LocalMacAddress; + tOCTVC1_MAC_ADDRESS RemoteMacAddress; + +} tOCTVC1_NET_HEADER_INFO_ETHERNET; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_HEADER_INFO_VLAN + + Members: + ulNumVlanTag + Range: [0..cOCTVC1_NET_MAX_VLAN_TAG] + Default: 0 + Number of Vlan TAGs present in the header. The tag inserted right after the + Ethernet header must be located at index 0 of aVlanTag while the one at the + highest index is located right before the transport header. + aVlanTag + Array containing the VLAN TAG to present in the header for this member. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCT_UINT32 ulNumVlanTag; + tOCTVC1_NET_VLAN_TAG aVlanTag[cOCTVC1_NET_MAX_VLAN_TAG]; + +} tOCTVC1_NET_HEADER_INFO_VLAN; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_HEADER_INFO_IP + + Members: + ulIpVersion + Default: cOCTVC1_IP_VERSION_ENUM_4 + ulTypeOfService + Range: [0..255] + Default: 0 + ###CPP### (See ulTypeOfService) Specifies the IPv4 Type of Service parameter + inserted in the IP header of packets transmitted by this member. + ulTimeToLive + Range: [1..255] + Default: 127 + ###CPP### (See ulTimeToLive) Specifies the IP V4 Time to Live Parameter + inserted in the IP header of packets transmitted by this member. + ulIpv6FlowLabel + Range: [0..1048575] + Default: 0 + Value for FlowLabel field of IPv6 packets. + LocalIpAddress + RemoteIpAddress +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_IP_VERSION_ENUM ulIpVersion; + tOCT_UINT32 ulTypeOfService; + tOCT_UINT32 ulTimeToLive; + tOCT_UINT32 ulIpv6FlowLabel; + tOCTVC1_IP_ADDRESS LocalIpAddress; + tOCTVC1_IP_ADDRESS RemoteIpAddress; + +} tOCTVC1_NET_HEADER_INFO_IP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_HEADER_INFO_UDP + + Members: + ulLocalUdpPort + Range: [0x0000..0xFFFF] + Default: 0x0000 + ulRemoteUdpPort + Range: [0x0000..0xFFFF] + Default: 0x0000 +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCT_UINT32 ulLocalUdpPort; + tOCT_UINT32 ulRemoteUdpPort; + +} tOCTVC1_NET_HEADER_INFO_UDP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_HEADER_IPUDP + + Members: + Ethernet + Vlan + Ip + Udp +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_NET_HEADER_INFO_ETHERNET Ethernet; + tOCTVC1_NET_HEADER_INFO_VLAN Vlan; + tOCTVC1_NET_HEADER_INFO_IP Ip; + tOCTVC1_NET_HEADER_INFO_UDP Udp; + +} tOCTVC1_NET_HEADER_IPUDP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_CACHE_ENTRY_CURSOR + + Members: + hLink + Vlan + IpAddress + ulGetMode + Default: cOCTVC1_OBJECT_CURSOR_ENUM_FIRST +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_HANDLE hLink; + tOCTVC1_NET_HEADER_INFO_VLAN Vlan; + tOCTVC1_IP_ADDRESS IpAddress; + tOCTVC1_OBJECT_CURSOR_ENUM ulGetMode; + +} tOCTVC1_NET_CACHE_ENTRY_CURSOR; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_ETH_LINK_CACHE_ENTRY + + Members: + hLink + Vlan + IpAddress + MacAddress + ulStaticFlag + ulReachableFlag +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_HANDLE hLink; + tOCTVC1_NET_HEADER_INFO_VLAN Vlan; + tOCTVC1_IP_ADDRESS IpAddress; + tOCTVC1_MAC_ADDRESS MacAddress; + tOCT_BOOL32 ulStaticFlag; + tOCT_BOOL32 ulReachableFlag; + +} tOCTVC1_NET_ETH_LINK_CACHE_ENTRY; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_LINK_GATEWAY_INFO + + Members: + IpAddress + ulLifetimeSec +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_IP_ADDRESS IpAddress; + tOCT_UINT32 ulLifetimeSec; + +} tOCTVC1_NET_LINK_GATEWAY_INFO; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_LINK_IPV6_PREFIX + + Members: + IpAddress + ulBitLength +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_IP_ADDRESS IpAddress; + tOCT_UINT32 ulBitLength; + +} tOCTVC1_NET_LINK_IPV6_PREFIX; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_LINK_IPV6_PREFIX_INFO + + Members: + IPv6Prefix + ulOnLinkFlag + ulAddrAutoConfigFlag + ulValidLifetimeSec + Default: cOCTVC1_NET_INFINITE + ulPreferredLifetimeSec + Default: cOCTVC1_NET_INFINITE +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_NET_LINK_IPV6_PREFIX IPv6Prefix; + tOCT_BOOL32 ulOnLinkFlag; + tOCT_BOOL32 ulAddrAutoConfigFlag; + tOCT_UINT32 ulValidLifetimeSec; + tOCT_UINT32 ulPreferredLifetimeSec; + +} tOCTVC1_NET_LINK_IPV6_PREFIX_INFO; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_IPV6_PREFIX_CURSOR + + Members: + hLink + IPv6Prefix + ulGetMode + Default: cOCTVC1_OBJECT_CURSOR_ENUM_FIRST +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_HANDLE hLink; + tOCTVC1_NET_LINK_IPV6_PREFIX IPv6Prefix; + tOCTVC1_OBJECT_CURSOR_ENUM ulGetMode; + +} tOCTVC1_NET_IPV6_PREFIX_CURSOR; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_IPV4_ADDR_AUTOCONFIG_MODE_ENUM : +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_IPV4_ADDR_AUTOCONFIG_MODE_ENUM tOCT_UINT32 + +#define cOCTVC1_NET_IPV4_ADDR_AUTOCONFIG_MODE_ENUM_DHCP 0 +#define cOCTVC1_NET_IPV4_ADDR_AUTOCONFIG_MODE_ENUM_DISABLED 2 + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_IPV6_ADDR_AUTOCONFIG_MODE_ENUM : +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_NET_IPV6_ADDR_AUTOCONFIG_MODE_ENUM tOCT_UINT32 + +#define cOCTVC1_NET_IPV6_ADDR_AUTOCONFIG_MODE_ENUM_STATELESS 0 +#define cOCTVC1_NET_IPV6_ADDR_AUTOCONFIG_MODE_ENUM_STATEFUL 1 +#define cOCTVC1_NET_IPV6_ADDR_AUTOCONFIG_MODE_ENUM_DISABLED 2 + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_ETH_LINK_CONFIG_IPV4 + + Members: + ulEnableFlag + Default: cOCT_TRUE + When set to cOCT_TRUE, support for IPv4 is enabled on the Link. + ulAddrAutoconfigMode + Default: cOCTVC1_NET_IPV4_ADDR_AUTOCONFIG_MODE_ENUM_DISABLED + This parameter controls the address auto configuration on this Link. + - cOCTVC1_NET_IPV4_ADDR_AUTOCONFIG_MODE_ENUM_DHCP: API communicates with an + IPv4 address leasing server using DHCPv4 and creates host on the link based on + the information retrieved from the address server. + - cOCTVC1-NET_ADDR_AUTOCONFIG_MODE_ENUM_DISABLED: In this mode, the API does + not perform address auto configuration on the Link. + ulNDPBaseReachableTimeMs + Default: 30000 + Base time, in millisecond, since the last valid confirmation that the path to + the Neighbor was functioning properly before changing the state of that + Neighbor cache entry from REACHABLE to STALE or DELAY. + This value is used to create the internal ReachableTIme value by multiplying + the base time with a random modificator between 0.5 and 1.5. + ulARPRefreshTimeMs + Default: 5000 + Time, in millisecond, since the last attempt to resolve the link-layer address + of a remote IP address was attempted or between the generation of GARP packets. + ulARPReplyTimeMs + Default: 500 + Time, in millisecond, between retransmission of ARP Requests if no associated + ARP Replies are received. + ulARPUnusedTimeMs + Default: 60000 + Time, in millisecond, that an unused ARP cache entry is allowed to remain in + the cache before being purged. Setting this parameter to 0 disables the removal + of unused entries. + ulARPReqCreateCnt + Default: 3 + Number ARP Request allowed while resolving the address of a newly created ARP + cache entry. These packets are always transmitted using the broadcast MAC + address. + ulARPReqRefreshCnt + Default: 3 + Number of ARP Request packets allowed while refreshing an ARP entry. These + packets are always transmitted using the currently cached link-layer address. + ulARPReqRefreshBroadcastCnt + Default: 0 + Number of ARP Request packets allowed while refreshing an ARP entry. These + packets are always transmitted using the broadcast MAC address. + Broadcast ARP Requests are always transmitted after ARP Request using the + currently cached link-layer address. + ulARPReqDupAddrCnt + Range: [0..15] + Default: 0 + Number of ARP Probes to send either at host opening or on demand using the + cOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CID command. Please refer to RFC + 5227 for more details. + ulGARPRequestCnt + Default: 0 + Number of GARP Request packets sent when a Local Host is open or modified. + These packets are always transmitted using the broadcast MAC address. + GARP is disabled when this parameter is set to 0. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCT_BOOL32 ulEnableFlag; + tOCTVC1_NET_IPV4_ADDR_AUTOCONFIG_MODE_ENUM ulAddrAutoconfigMode; + tOCT_UINT32 ulNDPBaseReachableTimeMs; + tOCT_UINT32 ulARPRefreshTimeMs; + tOCT_UINT32 ulARPReplyTimeMs; + tOCT_UINT32 ulARPUnusedTimeMs; + tOCT_UINT32 ulARPReqCreateCnt; + tOCT_UINT32 ulARPReqRefreshCnt; + tOCT_UINT32 ulARPReqRefreshBroadcastCnt; + tOCT_UINT32 ulARPReqDupAddrCnt; + tOCT_UINT32 ulGARPRequestCnt; + +} tOCTVC1_NET_ETH_LINK_CONFIG_IPV4; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_ETH_LINK_CONFIG_IPV6 + + Members: + ulEnableFlag + Default: cOCT_FALSE + When set to cOCT_TRUE, support for IPv6 is enabled on the Link. + ulCreateLoopbackEntryFlag + Default: cOCT_FALSE + When set to cOCT_TRUE, an IPv6 Loopback (addresse ::1) routing entry is created + on the Link. + ulAddrAutoconfigMode + Default: cOCTVC1_NET_IPV6_ADDR_AUTOCONFIG_MODE_ENUM_DISABLED + This parameter controls the address auto configuration on this Link. + - cOCTVC1_NET_IPV6_ADDR_AUTOCONFIG_MODE_ENUM_STATELESS: API attempts to create + IPv6 host on the Link based on the Link’s EUI64 Interface Identifier and the + prefix provided by ND Router Advertisements. For more information, please refer + to RFC 4862. This mode is not supported in the current implementation. + - cOCTVC1_NET_IPV6_ADDR_AUTOCONFIG_MODE_ENUM_STATEFUL: API communicates with an + IPv6 address leasing server using DHCPv6 and creates host on the link based on + the information retrieved from the address server. This mode is not supported + in the current implementation. + - cOCTVC1_NET_IPV6_ADDR_AUTOCONFIG_MODE_ENUM_DISABLED: API does not perform + address auto configuration on the Link. + ulNDPBaseReachableTimeMs + Default: 30000 + Base time, in millisecond, since the last valid confirmation that the path to + the Neighbor was functioning properly before changing the state of that + Neighbor cache entry from REACHABLE to STALE or DELAY. + This value is used to create the internal ReachableTIme value by multiplying + the base time with a random modificator between 0.5 and 1.5. + ulNDPRetransTimeMs + Default: 1000 + Time, in millisecond, between retransmission of Neighbor Solicitation messages + when resolving an address or while probing the reachability of a Neighbor. + ulNDPUnusedTimeMs + Default: 60000 + Time, in millisecond, that an unused Neighbor cache entry is allowed to remain + in the cache before being purged. Setting this parameter to 0 disables the + removal of unused entries. + ulNDPSolicitCreateCnt + Default: 3 + Number of Neighbor Solicitation messages allowed while resolving the address of + a newly created cache entry. These messages are always sent to the + solicited-node multicast address of the destination. + ulNDPSolicitDupAddrCnt + Default: 1 + Number of Neighbor Solicitation messages allowed while performing duplicate + address detection. + ulNDPSolicitProbeCnt + Default: 3 + Number of Neighbor Solicitation messages allowed while probing a Neighbor. + These messages use the currently cached link-layer address and are sent to the + Unicast address of the Neighbor. + ulNDPSolicitProbeMulticastCnt + Default: 0 + Number of Neighbor Solicitation messages allowed while probing a Neighbor. + These messages are always sent to the solicited-node multicast address of the + destination. + Multicast probe messages are always transmitted after Unicast probe messages. + ulNDPSolicitRouterCnt + Default: 3 + Number of Router Solicitation messages allowed after the creation of the link. + The link will send less than ulNDPSolicitRouterCnt router solicitations if a + router advertisement + is received. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCT_BOOL32 ulEnableFlag; + tOCT_BOOL32 ulCreateLoopbackEntryFlag; + tOCTVC1_NET_IPV6_ADDR_AUTOCONFIG_MODE_ENUM ulAddrAutoconfigMode; + tOCT_UINT32 ulNDPBaseReachableTimeMs; + tOCT_UINT32 ulNDPRetransTimeMs; + tOCT_UINT32 ulNDPUnusedTimeMs; + tOCT_UINT32 ulNDPSolicitCreateCnt; + tOCT_UINT32 ulNDPSolicitDupAddrCnt; + tOCT_UINT32 ulNDPSolicitProbeCnt; + tOCT_UINT32 ulNDPSolicitProbeMulticastCnt; + tOCT_UINT32 ulNDPSolicitRouterCnt; + +} tOCTVC1_NET_ETH_LINK_CONFIG_IPV6; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ + + Members: + ulEnableFlag + Default: cOCT_FALSE + When set to cOCT_TRUE, 802.1 encapsulation is enabled on this Link. The API + adds an 802.1pQ header to all packets transmitted through this Link. + ulDefaultUserPriority + Default: 0 + Default Priority inserted in packets transmitted through this Link. This value + is inserted in the TCI bits [15:13] of the 802.1 header. + ulVlanId + Default: 0 + 802.1 Virtual LAN Identifier for this Link. This value is inserted in the TCI + bits [11:0] of the 802.1 header. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCT_BOOL32 ulEnableFlag; + tOCT_UINT32 ulDefaultUserPriority; + tOCT_UINT32 ulVlanId; + +} tOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_EUI64_INTERFACE_ID + + Members: + ausInterfaceId + IEEE EUI-64 Interface Identifier created from the link-layer address of the + Link’s physical interface address. + The 16 most significant bits of the identifier are stored in ausInterfaceId[0] + while the 16 least significant bits are store in ausInterfaceId[3]. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCT_UINT16 ausInterfaceId[4]; + +} tOCTVC1_NET_EUI64_INTERFACE_ID; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM + + Members: + ulEnableFlag + Default: cOCT_FALSE + Enable flag used to control the allocation of routing resources for this + stream. Should be set to cOCT_FALSE if not required. + ulTxPktEnableFlag + Default: cOCT_FALSE + Enable flag used to control packets transmission by this stream. Must only be + set to cOCT_TRUE if all required header fields are provided in "Header". + ulRxPktFilter + Default: cOCTVC1_NET_RX_PKT_FILTER_ENUM_NONE + Header +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCT_BOOL32 ulEnableFlag; + tOCT_BOOL32 ulTxPktEnableFlag; + tOCTVC1_NET_RX_PKT_FILTER_ENUM ulRxPktFilter; + tOCTVC1_NET_HEADER_IPUDP Header; + +} tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_MODIFY + + Members: + ulModifyMask + Default: 0 + Modify +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_NET_CUSTOM_MEMBER_STREAM_MODIFY_MASK ulModifyMask; + tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM Modify; + +} tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_MODIFY; + +/***************************** METHODS *************************************/ +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_CMD + + Members: + Header + OCTVC1 Message Header + hRtpSession +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hRtpSession; + +} tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_RSP + + Members: + Header + OCTVC1 Message Header + hRtpSession +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hRtpSession; + +} tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_INFO_CMD + + Members: + Header + OCTVC1 Message Header + ObjectGet + Generic object get structure. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_GET ObjectGet; + +} tOCTVC1_NET_MSG_RTP_SESSION_INFO_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP + + Members: + Header + OCTVC1 Message Header + ObjectGet + Generic object get structure. + hLocalHost + ulFifoId + ulRtpEventMask + ulRtcpEventMask + ulSrtpEventMask + ulUserEventId + ulInitialOperationMode + ulSenderMaxPendingTimeSec + ulSenderMaxInactiveTimeSec + ulRtcpEnableFlag + ulRtpSessionBandwidth + ulHighFractionLost + ulHighCumulativePacketLost + ulHighJitter + ulHighRoundTripTime + ulLowFractionLost + ulLowJitter + ulLowRoundTripTime + hEventDestObj + ulEventDestObjPort + ulEventDestObjFifoId +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_GET ObjectGet; + tOCTVC1_HANDLE hLocalHost; + tOCT_UINT32 ulFifoId; + tOCTVC1_NET_RTP_EVT_MASK ulRtpEventMask; + tOCTVC1_NET_RTCP_EVT_MASK ulRtcpEventMask; + tOCTVC1_NET_SRTP_EVT_MASK ulSrtpEventMask; + tOCT_UINT32 ulUserEventId; + tOCTVC1_NET_OPERATION_MODE_ENUM ulInitialOperationMode; + tOCT_UINT32 ulSenderMaxPendingTimeSec; + tOCT_UINT32 ulSenderMaxInactiveTimeSec; + tOCT_BOOL32 ulRtcpEnableFlag; + tOCT_UINT32 ulRtpSessionBandwidth; + tOCT_UINT32 ulHighFractionLost; + tOCT_UINT32 ulHighCumulativePacketLost; + tOCT_UINT32 ulHighJitter; + tOCT_UINT32 ulHighRoundTripTime; + tOCT_UINT32 ulLowFractionLost; + tOCT_UINT32 ulLowJitter; + tOCT_UINT32 ulLowRoundTripTime; + tOCTVC1_HANDLE hEventDestObj; + tOCT_UINT32 ulEventDestObjPort; + tOCT_UINT32 ulEventDestObjFifoId; + +} tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CMD + + Members: + Header + OCTVC1 Message Header + hRtpSession + ulTxRtcpPauseFlag +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hRtpSession; + tOCT_BOOL32 ulTxRtcpPauseFlag; + +} tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_RSP + + Members: + Header + OCTVC1 Message Header + hRtpSession +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hRtpSession; + +} tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD + + Members: + Header + OCTVC1 Message Header + hRtpSession + ulHighFractionLost + ulHighCumulativePacketLost + ulHighJitter + ulHighRoundTripTime + ulLowFractionLost + ulLowJitter + ulLowRoundTripTime +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hRtpSession; + tOCT_UINT32 ulHighFractionLost; + tOCT_UINT32 ulHighCumulativePacketLost; + tOCT_UINT32 ulHighJitter; + tOCT_UINT32 ulHighRoundTripTime; + tOCT_UINT32 ulLowFractionLost; + tOCT_UINT32 ulLowJitter; + tOCT_UINT32 ulLowRoundTripTime; + +} tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_RSP + + Members: + Header + OCTVC1 Message Header + hRtpSession +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hRtpSession; + +} tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD + + Members: + Header + OCTVC1 Message Header + hRtpSession + hTerm + ulRxPktFilter + Default: cOCTVC1_NET_RX_PKT_FILTER_ENUM_SRCIPUDP_SSRC + Packet filter applied to IP packets received for this member once a valid + remote member + ulLocalUdpPortRtp + Range: [0..65535] + Default: cOCTVC1_UDP_PORT_INVALID + Local RTP UDP port. This value must not be the same as ulLocalUdpPortT38 or + ulLocalUdpPortRtcp, and must not be used by another session. + ulLocalUdpPortRtcp + Range: [0..65535] + Default: cOCTVC1_UDP_PORT_INVALID + Local RTCP UDP port. This value must not be the same as ulLocalUdpPortRtp or + ulLocalUdpPortT38, and must not be used by another session. + ulLocalUdpPortT38 + Default: cOCTVC1_UDP_PORT_INVALID + Local T38 UDP port. This value must not be the same as ulLocalUdpPortRtp or + ulLocalUdpPortRtcp, and must not be used by another session. + ulLocalCnameLength + Range: [0..255] + Specifies the length of the local RTCP Canonical Name. The Canonical Name is + not NULL-terminated. + achLocalCname + Specifies the local canonical name to be used for RTCP reports. The user + application must specify a non-zero length string. The name is encoded + according to the UTF-2 encoding specified in Annex F of ISO standard 10646. + US-ASCII is a subset of this encoding and requires no additional encoding. The + name is not null terminated. The size of this field is aligned on a 32-bit + boundary. Characters beyond the 255th characters are ignored. + ulLocalForcedRtpParmMask + Default: cOCTVC1_NET_RTP_FORCED_PARAMETER_MASK_NONE + This mask is used for RTP parameters that can be automatically set by + Media-Gateway or force by User. + ulLocalForcedSsrc + RTP SSRC value for the connection, , when + cOCTVC1_NET_RTP_FORCED_PARAMETER_MASK_SSRC bit is set in + ulLocalForcedRtpParmMask. + ulLocalForcedInitialSeqNumber + 16-bit value. Initial Local Sequence Number, when + cOCTVC1_NET_RTP_FORCED_PARAMETER_MASK_INITIAL_SEQ_NUMBER bit is set in + ulLocalForcedRtpParmMask. For SRTP, it is recommended for the initial sequence + number to be smaller or equal to 2^15. Note this parameter is only used when + ulValidRemoteFlag toggle from cOCT_FALSE to cOCT_TRUE. + ulRemoteAutoDetectFlag + Flag used to activate or deactivate the remote UDP address auto-detection + mechanism. + RemoteUdpAddressRtp + IP address and UDP port of remote device that sends and receives RTP packets. + RemoteUdpAddressRtcp + IP address and UDP port of remote device that sends and receives RTCP packets. + When the IP address is set to all-zeros, then the IP address for RTCP packet is + automatically set to RemoteIpAddressRtp. + RemoteUdpAddressT38 + IP address and UDP port of remote device that sends and receives T38 packets. + When the IP address is set to all-zeros, then the IP address for RTCP packet is + automatically set to RemoteIpAddressRtp. + ulRemoteCnameLength + Range: [0..255] + Specifies the length of the remote RTCP Canonical Name. The Canonical Name is + not NULL-terminated. + achRemoteCname + RTP Canonical Name associated with the remote source. The name is encoded + according to the UTF-2 encoding specified in Annex F of ISO standard 10646. + US-ASCII is a subset of this encoding and requires no additional encoding. The + name is not null terminated.The size of this field is aligned on a 32-bit + boundary. Characters beyond the 255th characters are ignored. + ulRemoteForcedRtpParmMask + Default: cOCTVC1_NET_RTP_FORCED_PARAMETER_MASK_NONE + This mask is used for RTP parameters that can be automatically set by + Media-Gateway or force by User. + ulRemoteForcedSsrc + RTP SSRC value for the connection, , when + cOCTVC1_NET_RTP_FORCED_PARAMETER_MASK_SSRC bit is set in + ulLocalForcedRtpParmMask. + ulRemoteForcedInitialSeqNumber + 16-bit value. Inital Remote Sequence Number, when + cOCTVC1_NET_RTP_FORCED_PARAMETER_MASK_INITIAL_SEQ_NUMBER bit is set in + ulLocalForcedRtpParmMask. For SRTP, it is recommended for the initial sequence + number to be smaller or equal to 2^15. Note this parameter is only used when + ulValidRemoteFlag toggle from cOCT_FALSE to cOCT_TRUE. + ulIpv4TimeToLive + Range: [1..255] + Default: 127 + ###CPP### (See ulTimeToLive) Specifies the IP V4 Time to Live Parameter + inserted in the IP header of packets transmitted by this member. + ulIpv4TypeOfService + Range: [0..255] + ###CPP### (See ulTypeOfService) Specifies the IP V4 Type of Service parameter + inserted in the IP header of packets transmitted by this member. + ulIpv6HopLimit + Range: [1..255] + Value for HopLimit field of IPv6 packets. + ulIpv6FlowLabel + Range: [0..1048575] + Value for FlowLabel field of IPv6 packets. + ulIpv6TrafficClass + Range: [0..255] + Value for TrafficClass field of IPv6 packets. + ulNumProfEntry + Range: [0..8] + Number of profile entries included in aRtpProfEntry. + aRtpProfEntry + Array containing the mapping between the RTP Payload types and the Vocallo + encoding types supported by this Member. + SenderSrtp + SRTP/SRTCP configuration of sender direction. + SenderSrtpKey + SRTP/SRTCP first active key configuration for local sender. + ReceiverSrtp + SRTP/SRTCP configuration of remote sender direction. Note, only valid if + ulValidRemoteFlag set to cOCT_TRUE. + ReceiverSrtpKey + SRTP/SRTCP first active key configuration for remote sender. Note, only valid + if ulValidRemoteFlag set to cOCT_TRUE. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hRtpSession; + tOCTVC1_HANDLE hTerm; + tOCTVC1_NET_RX_PKT_FILTER_ENUM ulRxPktFilter; + tOCT_UINT32 ulLocalUdpPortRtp; + tOCT_UINT32 ulLocalUdpPortRtcp; + tOCT_UINT32 ulLocalUdpPortT38; + tOCT_UINT32 ulLocalCnameLength; + tOCT_UINT8 achLocalCname[(cOCTVC1_NET_MAX_CNAME_LENGTH+1)]; + tOCTVC1_NET_RTP_FORCED_PARAMETER_MASK ulLocalForcedRtpParmMask; + tOCT_UINT32 ulLocalForcedSsrc; + tOCT_UINT32 ulLocalForcedInitialSeqNumber; + tOCT_BOOL32 ulRemoteAutoDetectFlag; + tOCTVC1_UDP_ADDRESS RemoteUdpAddressRtp; + tOCTVC1_UDP_ADDRESS RemoteUdpAddressRtcp; + tOCTVC1_UDP_ADDRESS RemoteUdpAddressT38; + tOCT_UINT32 ulRemoteCnameLength; + tOCT_UINT8 achRemoteCname[(cOCTVC1_NET_MAX_CNAME_LENGTH+1)]; + tOCTVC1_NET_RTP_FORCED_PARAMETER_MASK ulRemoteForcedRtpParmMask; + tOCT_UINT32 ulRemoteForcedSsrc; + tOCT_UINT32 ulRemoteForcedInitialSeqNumber; + tOCT_UINT32 ulIpv4TimeToLive; + tOCT_UINT32 ulIpv4TypeOfService; + tOCT_UINT32 ulIpv6HopLimit; + tOCT_UINT32 ulIpv6FlowLabel; + tOCT_UINT32 ulIpv6TrafficClass; + tOCT_UINT32 ulNumProfEntry; + tOCTVC1_NET_RTP_PROFILE_ENTRY aRtpProfEntry[cOCTVC1_NET_MAX_RTP_PROFILE_ENTRY]; + tOCTVC1_NET_SRTP_STREAM_CONFIG SenderSrtp; + tOCTVC1_NET_SRTP_KEY_ENTRY SenderSrtpKey; + tOCTVC1_NET_SRTP_STREAM_CONFIG ReceiverSrtp; + tOCTVC1_NET_SRTP_KEY_ENTRY ReceiverSrtpKey; + +} tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP + + Members: + Header + OCTVC1 Message Header + hRtpSession + ulLocalMemberId + ulLocalSsrc + Local Ssrc (automatic or forced) + ulLocalInitialSeqNumber + Local Ssrc (automatic or forced) +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hRtpSession; + tOCTVC1_SUB_OBJECT_ID ulLocalMemberId; + tOCT_UINT32 ulLocalSsrc; + tOCT_UINT32 ulLocalInitialSeqNumber; + +} tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_CMD + + Members: + Header + OCTVC1 Message Header + hRtpSession + ulLocalMemberId +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hRtpSession; + tOCTVC1_SUB_OBJECT_ID ulLocalMemberId; + +} tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_RSP + + Members: + Header + OCTVC1 Message Header + hRtpSession + ulLocalMemberId +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hRtpSession; + tOCTVC1_SUB_OBJECT_ID ulLocalMemberId; + +} tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_CMD + + Members: + Header + OCTVC1 Message Header + SubObjectIdGet + Sub-Object Id get structure. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID SubObjectIdGet; + +} tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP + + Members: + Header + OCTVC1 Message Header + SubObjectIdGet + Sub-Object Id get structure. + ulOperationMode + ulTxRtpPauseFlag + ulTxRtcpPauseFlag + hTerm + hDestObj + ulDestObjPort + ulRxPktFilter + ulDestObjFifoId + ulLocalUdpPortRtp + Default: cOCTVC1_UDP_PORT_INVALID + ulLocalUdpPortRtcp + Default: cOCTVC1_UDP_PORT_INVALID + ulLocalUdpPortT38 + Default: cOCTVC1_UDP_PORT_INVALID + ulLocalCnameLength + achLocalCname + ulRemoteAutoDetectFlag + ulValidRemoteFlag + RemoteUdpAddressRtp + RemoteUdpAddressRtcp + RemoteUdpAddressT38 + ulRemoteCnameLength + achRemoteCname + ulIpv4TimeToLive + ulIpv4TypeOfService + ulIpv6HopLimit + ulIpv6FlowLabel + ulIpv6TrafficClass + ulNumProfEntry + aRtpProfEntry + RtpMemberConnInfo + Contains connection information about the RTP Member. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID SubObjectIdGet; + tOCTVC1_NET_OPERATION_MODE_ENUM ulOperationMode; + tOCT_BOOL32 ulTxRtpPauseFlag; + tOCT_BOOL32 ulTxRtcpPauseFlag; + tOCTVC1_HANDLE hTerm; + tOCTVC1_HANDLE hDestObj; + tOCT_UINT32 ulDestObjPort; + tOCTVC1_NET_RX_PKT_FILTER_ENUM ulRxPktFilter; + tOCT_UINT32 ulDestObjFifoId; + tOCT_UINT32 ulLocalUdpPortRtp; + tOCT_UINT32 ulLocalUdpPortRtcp; + tOCT_UINT32 ulLocalUdpPortT38; + tOCT_UINT32 ulLocalCnameLength; + tOCT_UINT8 achLocalCname[(cOCTVC1_NET_MAX_CNAME_LENGTH+1)]; + tOCT_BOOL32 ulRemoteAutoDetectFlag; + tOCT_BOOL32 ulValidRemoteFlag; + tOCTVC1_UDP_ADDRESS RemoteUdpAddressRtp; + tOCTVC1_UDP_ADDRESS RemoteUdpAddressRtcp; + tOCTVC1_UDP_ADDRESS RemoteUdpAddressT38; + tOCT_UINT32 ulRemoteCnameLength; + tOCT_UINT8 achRemoteCname[(cOCTVC1_NET_MAX_CNAME_LENGTH+1)]; + tOCT_UINT32 ulIpv4TimeToLive; + tOCT_UINT32 ulIpv4TypeOfService; + tOCT_UINT32 ulIpv6HopLimit; + tOCT_UINT32 ulIpv6FlowLabel; + tOCT_UINT32 ulIpv6TrafficClass; + tOCT_UINT32 ulNumProfEntry; + tOCTVC1_NET_RTP_PROFILE_ENTRY aRtpProfEntry[cOCTVC1_NET_MAX_RTP_PROFILE_ENTRY]; + tOCTVC1_NET_RTP_MEMBER_CONN_INFO RtpMemberConnInfo; + +} tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD + + Members: + Header + OCTVC1 Message Header + hRtpSession + ulLocalMemberId + ulTxRtpPauseFlag +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hRtpSession; + tOCTVC1_SUB_OBJECT_ID ulLocalMemberId; + tOCT_BOOL32 ulTxRtpPauseFlag; + +} tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_RSP + + Members: + Header + OCTVC1 Message Header + hRtpSession + ulLocalMemberId +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hRtpSession; + tOCTVC1_SUB_OBJECT_ID ulLocalMemberId; + +} tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD + + Members: + Header + OCTVC1 Message Header + hRtpSession + ulLocalMemberId + ulModifyMask + Default: cOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK_NONE + Specify which parameter must be modified. + ulRemoteAutoDetectFlag + ulLocalUdpPortRtp + Range: [0..65535] + Default: cOCTVC1_UDP_PORT_INVALID + Local RTP UDP port. This value must not be the same as ulLocalUdpPortT38 or + ulLocalUdpPortRtcp, and must not be used by another session. + ulLocalUdpPortRtcp + Range: [0..65535] + Default: cOCTVC1_UDP_PORT_INVALID + Local RTCP UDP port. This value must not be the same as ulLocalUdpPortRtp or + ulLocalUdpPortT38, and must not be used by another session. + ulLocalUdpPortT38 + Default: cOCTVC1_UDP_PORT_INVALID + Local T38 UDP port. This value must not be the same as ulLocalUdpPortRtp or + ulLocalUdpPortRtcp, and must not be used by another session. + RemoteUdpAddressRtp + RemoteUdpAddressRtcp + RemoteUdpAddressT38 + ulRemoteCnameLength + Default: 0 + achRemoteCname + ulRemoteForcedRtpParmMask + Default: cOCTVC1_NET_RTP_FORCED_PARAMETER_MASK_NONE + This mask is used for RTP parameters that can be automatically set by + Media-Gateway or force by User + ulRemoteForcedSsrc + RTP SSRC value for the connection, , when + cOCTVC1_NET_RTP_FORCED_PARAMETER_MASK_SSRC bit is set in ulRtpParmForcedMask. + ulRemoteForcedInitialSeqNumber + Range: [..0xFFFF] + Inital Remote Sequence Number, when + cOCTVC1_NET_RTP_FORCED_PARAMETER_MASK_INITIAL_SEQ_NUMBER bit is set in + ulRtpParmForcedMask. For SRTP, it's recommanded that initial sequence number be + smaller or egals to 2^15. Note this parameter is only used when + ulValidRemoteFlag toggle from cOCT_FALSE to cOCT_TRUE. + SenderSrtp + SRTP/SRTCP configuration of SRTP sender. + SenderSrtpKey + SRTP/SRTCP active key configuration for SRTP sender. + ReceiverSrtp + SRTP/SRTCP configuration of SRTP sender. + ReceiverSrtpKey + SRTP/SRTCP active key configuration for SRTP sender. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hRtpSession; + tOCTVC1_SUB_OBJECT_ID ulLocalMemberId; + tOCTVC1_NET_RTP_SESSION_MODIFY_MEMBER_MASK ulModifyMask; + tOCT_BOOL32 ulRemoteAutoDetectFlag; + tOCT_UINT32 ulLocalUdpPortRtp; + tOCT_UINT32 ulLocalUdpPortRtcp; + tOCT_UINT32 ulLocalUdpPortT38; + tOCTVC1_UDP_ADDRESS RemoteUdpAddressRtp; + tOCTVC1_UDP_ADDRESS RemoteUdpAddressRtcp; + tOCTVC1_UDP_ADDRESS RemoteUdpAddressT38; + tOCT_UINT32 ulRemoteCnameLength; + tOCT_UINT8 achRemoteCname[(cOCTVC1_NET_MAX_CNAME_LENGTH+1)]; + tOCTVC1_NET_RTP_FORCED_PARAMETER_MASK ulRemoteForcedRtpParmMask; + tOCT_UINT32 ulRemoteForcedSsrc; + tOCT_UINT32 ulRemoteForcedInitialSeqNumber; + tOCTVC1_NET_SRTP_STREAM_CONFIG SenderSrtp; + tOCTVC1_NET_SRTP_KEY_ENTRY SenderSrtpKey; + tOCTVC1_NET_SRTP_STREAM_CONFIG ReceiverSrtp; + tOCTVC1_NET_SRTP_KEY_ENTRY ReceiverSrtpKey; + +} tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RSP + + Members: + Header + OCTVC1 Message Header + hRtpSession + ulLocalMemberId +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hRtpSession; + tOCTVC1_SUB_OBJECT_ID ulLocalMemberId; + +} tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD + + Members: + Header + OCTVC1 Message Header + ulForceFlag + Default: cOCT_FALSE + What to do when one or both members are already connected. + cOCT_TRUE: The connected members are disconnected and a new connection is + established between the ones specified by the command. + cOCT_FALSE: The command is rejected if one of the members is already connected. + ulRecoverNtpFromRtpTsFlag + Default: cOCT_FALSE + cOCT_TRUE: In translator mode, Rtcp report will be generated at each normal + RTCP interval + cOCT_FALSE: In translator mode, Rtcp will be generated upon reception of an + RTCP report at the associated RTP member. + hRtpSession + Default: cOCTVC1_HANDLE_INVALID + RTP Session handle of the RTP Member to connect. + ulLocalMemberId + Default: 0 + Identifier associated to the RTP member to connect. + hRtpSessionAssociated + Default: cOCTVC1_HANDLE_INVALID + RTP Session handle of the RTP Member to connect to. + ulLocalMemberIdAssociated + Default: 0 + Identifier associated to the RTP member to connect to. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCT_BOOL32 ulForceFlag; + tOCT_BOOL32 ulRecoverNtpFromRtpTsFlag; + tOCTVC1_HANDLE hRtpSession; + tOCTVC1_SUB_OBJECT_ID ulLocalMemberId; + tOCTVC1_HANDLE hRtpSessionAssociated; + tOCTVC1_SUB_OBJECT_ID ulLocalMemberIdAssociated; + +} tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP + + Members: + Header + OCTVC1 Message Header + hRtpSession + RTP Session handle of the RTP Member to connect. + ulLocalMemberId + Identifier associated to the RTP member to connect. + RtpMemberPrevConnInfo + Contains connection information about the RTP Member before the command was + received. + hRtpSessionAssociated + RTP Session handle of the RTP Member to connect to. + ulLocalMemberIdAssociated + Identifier associated to the RTP member to connect to. + RtpMemberPrevConnInfoAssociated + Contains connection information about the RTP Member before the command was + received. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hRtpSession; + tOCTVC1_SUB_OBJECT_ID ulLocalMemberId; + tOCTVC1_NET_RTP_MEMBER_CONN_INFO RtpMemberPrevConnInfo; + tOCTVC1_HANDLE hRtpSessionAssociated; + tOCTVC1_SUB_OBJECT_ID ulLocalMemberIdAssociated; + tOCTVC1_NET_RTP_MEMBER_CONN_INFO RtpMemberPrevConnInfoAssociated; + +} tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_CMD + + Members: + Header + OCTVC1 Message Header + hRtpSession + Default: cOCTVC1_HANDLE_INVALID + RTP Session handle of the RTP Member to disconnect. + ulLocalMemberId + Default: 0 + Identifier associated of the member to disconnect. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hRtpSession; + tOCTVC1_SUB_OBJECT_ID ulLocalMemberId; + +} tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP + + Members: + Header + OCTVC1 Message Header + hRtpSession + RTP Session handle of the RTP Member. + ulLocalMemberId + Identifier associated of the member. + RtpMemberPrevConnInfo + Contains connection information about the RTP Member before the command was + received. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hRtpSession; + tOCTVC1_SUB_OBJECT_ID ulLocalMemberId; + tOCTVC1_NET_RTP_MEMBER_CONN_INFO RtpMemberPrevConnInfo; + +} tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_CMD + + Members: + Header + OCTVC1 Message Header + SubObjectIdGet + Sub-Object Id get structure. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID SubObjectIdGet; + +} tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP + + Members: + Header + OCTVC1 Message Header + SubObjectIdGet + Sub-Object Id get structure. + ulRemoteMemberId + aulReceivedPktCnt + aulReceivedByteCnt + SenderStats + ReceiverStats +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID SubObjectIdGet; + tOCT_UINT32 ulRemoteMemberId; + tOCT_UINT32 aulReceivedPktCnt[2]; + tOCT_UINT32 aulReceivedByteCnt[2]; + tOCTVC1_NET_RTCP_SENDER_STATS SenderStats; + tOCTVC1_NET_RTCP_RECEIVER_STATS ReceiverStats; + +} tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_CMD + + Members: + Header + OCTVC1 Message Header + SubObjectIdGet + Sub-Object Id get structure. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID SubObjectIdGet; + +} tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP + + Members: + Header + OCTVC1 Message Header + SubObjectIdGet + Sub-Object Id get structure. + ulRoundTripTime + ulMaxRoundTripTime + ulAverageRoundTripTime + SenderStats + ReceiverStats +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID SubObjectIdGet; + tOCT_UINT32 ulRoundTripTime; + tOCT_UINT32 ulMaxRoundTripTime; + tOCT_UINT32 ulAverageRoundTripTime; + tOCTVC1_NET_RTCP_SENDER_STATS SenderStats; + tOCTVC1_NET_RTCP_RECEIVER_STATS ReceiverStats; + +} tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_STATS_CMD + + Members: + Header + OCTVC1 Message Header + ObjectGet + Generic object get structure. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_GET ObjectGet; + +} tOCTVC1_NET_MSG_RTP_SESSION_STATS_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP + + Members: + Header + OCTVC1 Message Header + ObjectGet + Generic object get structure. + ulNumMember + ulNumSender + ulSessionStartTime + ulRxByePktCnt + ulRxSenderJoinCnt + ulRxMemberJoinCnt + ulErrCollisionCnt + ulErrLoopCnt + ulErrRtcpPktInvalidCnt +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_GET ObjectGet; + tOCT_UINT32 ulNumMember; + tOCT_UINT32 ulNumSender; + tOCT_UINT32 ulSessionStartTime; + tOCT_UINT32 ulRxByePktCnt; + tOCT_UINT32 ulRxSenderJoinCnt; + tOCT_UINT32 ulRxMemberJoinCnt; + tOCT_UINT32 ulErrCollisionCnt; + tOCT_UINT32 ulErrLoopCnt; + tOCT_UINT32 ulErrRtcpPktInvalidCnt; + +} tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD + + Members: + Header + OCTVC1 Message Header + hRtpSession + Default: cOCTVC1_HANDLE_INVALID + ulLocalMemberId + ulSenderSrtpKeyActiveIdx + Default: cOCTVC1_DO_NOT_MODIFY + Index of the Active Sender SRTP key. Range:0..ulSenderSrtpKeyNum-1 + ulSenderSrtpKeyNum + Range: [1..4] + Default: cOCTVC1_DO_NOT_MODIFY + aSenderSrtpKeyList + Local sender key list. The number of key in the list is define in + ulLocalSenderKeyNum. Note, the new list replace older one. + ulReceiverSrtpKeyActiveIdx + Default: cOCTVC1_DO_NOT_MODIFY + Index of the Active Receiver SRTP key. Values: 0..ulReceiverSrtpKeyNum-1 + ulReceiverSrtpKeyNum + Range: [1..4] + Default: cOCTVC1_DO_NOT_MODIFY + Number of Key included in aReceiverSrtpKeyList. Value of cOCTVC1_DO_NOT_MODIFY + means not modify the remote key list. Note, the new list replace older one. + aReceiverSrtpKeyList + Default: cOCTVC1_DO_NOT_MODIFY + Local sender key list. The number of key in the list is define in + ulRemoteSenderKeyNum. Note, the new list replace older one. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hRtpSession; + tOCTVC1_SUB_OBJECT_ID ulLocalMemberId; + tOCT_UINT32 ulSenderSrtpKeyActiveIdx; + tOCT_UINT32 ulSenderSrtpKeyNum; + tOCTVC1_NET_SRTP_KEY_ENTRY aSenderSrtpKeyList[cOCTVC1_NET_MAX_SRTP_KEY_LIST_NUM]; + tOCT_UINT32 ulReceiverSrtpKeyActiveIdx; + tOCT_UINT32 ulReceiverSrtpKeyNum; + tOCTVC1_NET_SRTP_KEY_ENTRY aReceiverSrtpKeyList[cOCTVC1_NET_MAX_SRTP_KEY_LIST_NUM]; + +} tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_RSP + + Members: + Header + OCTVC1 Message Header + hRtpSession + ulLocalMemberId +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hRtpSession; + tOCTVC1_SUB_OBJECT_ID ulLocalMemberId; + +} tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_CMD + + Members: + Header + OCTVC1 Message Header + SubObjectIdGet + Sub-Object Id get structure. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID SubObjectIdGet; + +} tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP + + Members: + Header + OCTVC1 Message Header + SubObjectIdGet + Sub-Object Id get structure. + SenderSrtp + ulSenderSrtpKeyActiveIdx + ulSenderSrtpKeyNum + aSenderSrtpKeyList + ReceiverSrtp + ulReceiverSrtpKeyActiveIdx + ulReceiverSrtpKeyNum + aReceiverSrtpKeyList +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID SubObjectIdGet; + tOCTVC1_NET_SRTP_STREAM_CONFIG SenderSrtp; + tOCT_UINT32 ulSenderSrtpKeyActiveIdx; + tOCT_UINT32 ulSenderSrtpKeyNum; + tOCTVC1_NET_SRTP_KEY_ENTRY aSenderSrtpKeyList[cOCTVC1_NET_MAX_SRTP_KEY_LIST_NUM]; + tOCTVC1_NET_SRTP_STREAM_CONFIG ReceiverSrtp; + tOCT_UINT32 ulReceiverSrtpKeyActiveIdx; + tOCT_UINT32 ulReceiverSrtpKeyNum; + tOCTVC1_NET_SRTP_KEY_ENTRY aReceiverSrtpKeyList[cOCTVC1_NET_MAX_SRTP_KEY_LIST_NUM]; + +} tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_CMD + + Members: + Header + OCTVC1 Message Header + SubObjectIdGet + Sub-Object Id get structure. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID SubObjectIdGet; + +} tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_RSP + + Members: + Header + OCTVC1 Message Header + SubObjectIdGet + Sub-Object Id get structure. + SenderSrtpStats + ReceiverSrtpStats +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID SubObjectIdGet; + tOCTVC1_NET_SRTP_STREAM_STATS SenderSrtpStats; + tOCTVC1_NET_SRTP_STREAM_STATS ReceiverSrtpStats; + +} tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD + + Members: + Header + OCTVC1 Message Header + hRtpSession + ulLocalMemberId + ulNumEntry + aEntry +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hRtpSession; + tOCTVC1_SUB_OBJECT_ID ulLocalMemberId; + tOCT_UINT32 ulNumEntry; + tOCTVC1_NET_RTP_PROFILE_MODIFY_ENTRY aEntry[cOCTVC1_NET_MAX_RTP_PROFILE_ENTRY]; + +} tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_RSP + + Members: + Header + OCTVC1 Message Header + hRtpSession + ulLocalMemberId +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hRtpSession; + tOCTVC1_SUB_OBJECT_ID ulLocalMemberId; + +} tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD + + Members: + Header + OCTVC1 Message Header + IpAddress + IP address of the Local Host. This is the IP address used by the host to send + and receive IP packets. + See ulAddrAutoConfigFlag to determine if the parameter must be configured. + NetworkMask + IP mask of the Local Host. The IP version of the mask must match the one + defined in + IpAddress. In the case of IPv6, the mask indicates which bits from IpAddress + represent the address’s prefix. + See ulAddrAutoConfigFlag to determine if the parameter must be configured. + ulAddrAutoConfigFlag + Default: cOCT_FALSE + Whether or not to use auto-configuration to configure the host. + If set to cOCT_FALSE, use IpAddress and NetworkMask to configure the host. + If set to cOCT_TRUE, only use IpAddress.ulIpVersion and auto-configuration to + configure the host. + ulMuteOnAddrExpireFlag + Default: cOCT_TRUE + Determines what to do with terminations active on an auto-configured host whose + address has expired. + If set to cOCT_TRUE will disable all Tx termination traffic, and the host will + no longer reply + to any ICMP messages. + Setting to cOCT_FALSE does nothing to either the terminations or the host. + This parameter is used only if ulAddrAutoConfigFlag is set to cOCT_TRUE. + hLink + Handle that uniquely identifies the Link Object. + ulUserEventId + User-specified value that is included in the events packets generated by this + object. + ulEventMask + Bit mask used to configure the type of Internet Control Message Protocol (ICMP) + packet that will generate events. + ulEventThrottle + Maximum number of Host events that can be generated every second. + hEventDestObj + Event object handle inserted in packets sent on port 256. + ulEventDestObjPort + Event object Packet Port inserted in packets sent on port 256. + ulEventDestObjFifoId + Default: cOCTVC1_FIFO_ID_INVALID + Event FIFO ID inserted in packets sent on port 256. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_IP_ADDRESS IpAddress; + tOCTVC1_IP_ADDRESS NetworkMask; + tOCT_BOOL32 ulAddrAutoConfigFlag; + tOCT_BOOL32 ulMuteOnAddrExpireFlag; + tOCTVC1_HANDLE hLink; + tOCT_UINT32 ulUserEventId; + tOCTVC1_NET_LOCAL_HOST_EVT_MASK ulEventMask; + tOCT_UINT32 ulEventThrottle; + tOCTVC1_HANDLE hEventDestObj; + tOCT_UINT32 ulEventDestObjPort; + tOCT_UINT32 ulEventDestObjFifoId; + +} tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_RSP + + Members: + Header + OCTVC1 Message Header + hLocalHost + Handle that uniquely identifies the Local Host. + ulAddrStatus + Status of the IP address assigned to the Local Host. This status is determined + using Duplicate Address Detection (DAD). +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hLocalHost; + tOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_ENUM ulAddrStatus; + +} tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_CMD + + Members: + Header + OCTVC1 Message Header + hLocalHost + Handle of the Local Host. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hLocalHost; + +} tOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_RSP + + Members: + Header + OCTVC1 Message Header + hLocalHost + Handle of the Local Host. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hLocalHost; + +} tOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_LOCAL_HOST_INFO_CMD + + Members: + Header + OCTVC1 Message Header + ObjectGet + Generic object get structure. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_GET ObjectGet; + +} tOCTVC1_NET_MSG_LOCAL_HOST_INFO_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP + + Members: + Header + OCTVC1 Message Header + ObjectGet + Generic object get structure. + ulAddrAutoConfigFlag + Whether or not auto-configuration was used to configure the host. + IpAddress + IP address of the Local Host. This is the IP address used by the host to send + and + receive IP packets. + NetworkMask + IP mask of Local Host. The IP version of the mask must match the one defined in + IpAddress. In the case of IPv6, the mask indicates which bits from IpAddress + represent the address’s prefix. + hLink + Handle that uniquely identifies the Link Object. + ulAddrStatus + Status of the IP address assigned to the Local Host. This status is determined + using + Duplicate Address Detection (DAD). + ulUserEventId + User-specified value that is included in the events packets generated by this + object. + ulEventThrottle + Maximum number of Host events that can be generated every second. + ulEventMask + Bit mask used to configure the type of Internet Control Message Protocol (ICMP) + packet that will generate events. + hEventDestObj + Event object handle inserted in packets sent on port 256. + ulEventDestObjPort + Event object Packet Port inserted in packets sent on port 256. + ulEventDestObjFifoId + Event FIFO ID inserted in packets sent on port 256. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_GET ObjectGet; + tOCT_BOOL32 ulAddrAutoConfigFlag; + tOCTVC1_IP_ADDRESS IpAddress; + tOCTVC1_IP_ADDRESS NetworkMask; + tOCTVC1_HANDLE hLink; + tOCTVC1_NET_LOCAL_HOST_ADDR_STATUS_ENUM ulAddrStatus; + tOCT_UINT32 ulUserEventId; + tOCT_UINT32 ulEventThrottle; + tOCTVC1_NET_LOCAL_HOST_EVT_MASK ulEventMask; + tOCTVC1_HANDLE hEventDestObj; + tOCT_UINT32 ulEventDestObjPort; + tOCT_UINT32 ulEventDestObjFifoId; + +} tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD + + Members: + Header + OCTVC1 Message Header + hLocalHost + RemoteIpAddress + ulTimeout + Default: 2000 + ulTimeToLive + Default: 8 + ulUserEventId + ulPayloadLength + abyPayload +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hLocalHost; + tOCTVC1_IP_ADDRESS RemoteIpAddress; + tOCT_UINT32 ulTimeout; + tOCT_UINT32 ulTimeToLive; + tOCT_UINT32 ulUserEventId; + tOCT_UINT32 ulPayloadLength; + tOCT_UINT8 abyPayload[cOCTVC1_NET_ICMP_PING_MAX_PAYLOAD_LENGTH]; + +} tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_RSP + + Members: + Header + OCTVC1 Message Header + hLocalHost +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hLocalHost; + +} tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD + + Members: + Header + OCTVC1 Message Header + hLocalHost + ulProbeIntervalMs + Default: 500 + ulNumProbe + Range: [0..15] + Default: 3 +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hLocalHost; + tOCT_UINT32 ulProbeIntervalMs; + tOCT_UINT32 ulNumProbe; + +} tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_RSP + + Members: + Header + OCTVC1 Message Header + hLocalHost +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hLocalHost; + +} tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_LOCAL_HOST_STATS_CMD + + Members: + Header + OCTVC1 Message Header + ObjectGet + Generic object get structure. + ulResetStatsFlag + Reset stats flag. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_GET ObjectGet; + tOCT_BOOL32 ulResetStatsFlag; + +} tOCTVC1_NET_MSG_LOCAL_HOST_STATS_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_LOCAL_HOST_STATS_RSP + + Members: + Header + OCTVC1 Message Header + ObjectGet + Generic object get structure. + ulApiEventCnt +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_GET ObjectGet; + tOCT_UINT32 ulApiEventCnt; + +} tOCTVC1_NET_MSG_LOCAL_HOST_STATS_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_CMD + + Members: + Header + OCTVC1 Message Header + hLink + IpAddress +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hLink; + tOCTVC1_IP_ADDRESS IpAddress; + +} tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_RSP + + Members: + Header + OCTVC1 Message Header + hLink + IpAddress +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hLink; + tOCTVC1_IP_ADDRESS IpAddress; + +} tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_CMD + + Members: + Header + OCTVC1 Message Header + hLink + IpAddress +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hLink; + tOCTVC1_IP_ADDRESS IpAddress; + +} tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_RSP + + Members: + Header + OCTVC1 Message Header + hLink + IpAddress +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hLink; + tOCTVC1_IP_ADDRESS IpAddress; + +} tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_LINK_INFO_GATEWAY_CMD + + Members: + Header + OCTVC1 Message Header + GatewayGet + IP Address cursor +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_NET_IP_CURSOR GatewayGet; + +} tOCTVC1_NET_MSG_LINK_INFO_GATEWAY_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_LINK_INFO_GATEWAY_RSP + + Members: + Header + OCTVC1 Message Header + GatewayGet + IP Address cursor +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_NET_IP_CURSOR GatewayGet; + +} tOCTVC1_NET_MSG_LINK_INFO_GATEWAY_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD + + Members: + Header + OCTVC1 Message Header + hLink + IPv6Prefix + ulOnLinkFlag + ulAddrAutoConfigFlag + ulValidLifetimeSec + ulPreferredLifetimeSec +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hLink; + tOCTVC1_NET_LINK_IPV6_PREFIX IPv6Prefix; + tOCT_BOOL32 ulOnLinkFlag; + tOCT_BOOL32 ulAddrAutoConfigFlag; + tOCT_UINT32 ulValidLifetimeSec; + tOCT_UINT32 ulPreferredLifetimeSec; + +} tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_RSP + + Members: + Header + OCTVC1 Message Header + hLink + IPv6Prefix +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hLink; + tOCTVC1_NET_LINK_IPV6_PREFIX IPv6Prefix; + +} tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_CMD + + Members: + Header + OCTVC1 Message Header + hLink + IPv6Prefix +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hLink; + tOCTVC1_NET_LINK_IPV6_PREFIX IPv6Prefix; + +} tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_RSP + + Members: + Header + OCTVC1 Message Header + hLink + IPv6Prefix +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hLink; + tOCTVC1_NET_LINK_IPV6_PREFIX IPv6Prefix; + +} tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_CMD + + Members: + Header + OCTVC1 Message Header + IPv6PrefixGet + IP Address cursor +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_NET_IPV6_PREFIX_CURSOR IPv6PrefixGet; + +} tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_RSP + + Members: + Header + OCTVC1 Message Header + IPv6PrefixGet + IP Address cursor + IPv6PrefixInfo + IPv6 information structure. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_NET_IPV6_PREFIX_CURSOR IPv6PrefixGet; + tOCTVC1_NET_LINK_IPV6_PREFIX_INFO IPv6PrefixInfo; + +} tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD + + Members: + Header + OCTVC1 Message Header + hRtpSession + hTerm + aStream + Array of transport structure. Each entry contains packet headers and routing + config for one of these data streams: RTP, RTCP or T38_UDPTL. + ulLocalForcedRtpParmMask + Default: cOCTVC1_NET_RTP_FORCED_PARAMETER_MASK_NONE + This mask is used for RTP parameters that can be automatically set by + Media-Gateway or force by User. + ulLocalForcedSsrc + RTP SSRC value for the connection, , when + cOCTVC1_NET_RTP_FORCED_PARAMETER_MASK_SSRC bit is set in + ulLocalForcedRtpParmMask. + ulLocalForcedInitialSeqNumber + 16-bit value. Initial Local Sequence Number, when + cOCTVC1_NET_RTP_FORCED_PARAMETER_MASK_INITIAL_SEQ_NUMBER bit is set in + ulLocalForcedRtpParmMask. For SRTP, it is recommended for the initial sequence + number to be smaller or equal to 2^15. Note this parameter is only used when + ulValidRemoteFlag toggle from cOCT_FALSE to cOCT_TRUE. + ulNumRtpProfEntry + Default: 1 + Number of valid RTP profile entry. + aRtpProfEntry + Array of RTP profille entry. + ulLocalCnameByteLength + Default: 0 + Byte length of the local CNAME. + achLocalCname + Specifies the local canonical name to be used for RTCP reports. The user + application must specify a non-zero length string. The name is encoded + according to the UTF-2 encoding specified in Annex F of ISO standard 10646. + US-ASCII is a subset of this encoding and requires no additional encoding. The + name is not null terminated. The size of this field is aligned on a 32-bit + boundary. Characters beyond the 255th characters are ignored. + ulRemoteCnameByteLength + Default: 0 + Byte length of the remote CNAME. + achRemoteCname + RTP Canonical Name associated with the remote source. The name is encoded + according to the UTF-2 encoding specified in Annex F of ISO standard 10646. + US-ASCII is a subset of this encoding and requires no additional encoding. The + name is not null terminated.The size of this field is aligned on a 32-bit + boundary. Characters beyond the 255th characters are ignored. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hRtpSession; + tOCTVC1_HANDLE hTerm; + tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM aStream[cOCTVC1_NET_RTP_MEMBER_MAX_STREAM]; + tOCTVC1_NET_RTP_FORCED_PARAMETER_MASK ulLocalForcedRtpParmMask; + tOCT_UINT32 ulLocalForcedSsrc; + tOCT_UINT32 ulLocalForcedInitialSeqNumber; + tOCT_UINT32 ulNumRtpProfEntry; + tOCTVC1_NET_RTP_PROFILE_ENTRY aRtpProfEntry[cOCTVC1_NET_MAX_RTP_PROFILE_ENTRY]; + tOCT_UINT32 ulLocalCnameByteLength; + tOCT_UINT8 achLocalCname[(cOCTVC1_NET_MAX_CNAME_LENGTH+1)]; + tOCT_UINT32 ulRemoteCnameByteLength; + tOCT_UINT8 achRemoteCname[(cOCTVC1_NET_MAX_CNAME_LENGTH+1)]; + +} tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_RSP + + Members: + Header + OCTVC1 Message Header + hRtpSession + ulLocalMemberId +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hRtpSession; + tOCTVC1_SUB_OBJECT_ID ulLocalMemberId; + +} tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD + + Members: + Header + OCTVC1 Message Header + hRtpSession + ulLocalMemberId + ulModifyMask + Default: cOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK_NONE + Bit mask used to modify some fields of an RTP session custom member + aStream + Array of transport structure. Each entry contains packet headers and routing + config for one of these data streams: RTP, RTCP or T38_UDPTL. To modify one of + those entry, the associated bit in ulModifyMask must be set to 1 + ulLocalCnameByteLength + Default: 0 + Byte length of the local CNAME. This field is only processed if ulModifyMask is + set to cOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK_CNAME_LOCAL. + achLocalCname + Specifies the local canonical name to be used for RTCP reports. The user + application must specify a non-zero length string. The name is encoded + according to the UTF-2 encoding specified in Annex F of ISO standard 10646. + US-ASCII is a subset of this encoding and requires no additional encoding. The + name is not null terminated. The size of this field is aligned on a 32-bit + boundary. Characters beyond the 255th characters are ignored. This field is + only processed if ulModifyMask is set to + cOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK_CNAME_LOCAL. + ulRemoteCnameByteLength + Default: 0 + Byte length of the remote CNAME.This field is only processed if ulModifyMask is + set to cOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK_CNAME_REMOTE. + achRemoteCname + RTP Canonical Name associated with the remote source. The name is encoded + according to the UTF-2 encoding specified in Annex F of ISO standard 10646. + US-ASCII is a subset of this encoding and requires no additional encoding. The + name is not null terminated.The size of this field is aligned on a 32-bit + boundary. Characters beyond the 255th characters are ignored.This field is only + processed if ulModifyMask is set to + cOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK_CNAME_REMOTE. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hRtpSession; + tOCTVC1_SUB_OBJECT_ID ulLocalMemberId; + tOCTVC1_NET_CUSTOM_MEMBER_MODIFY_MASK ulModifyMask; + tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_MODIFY aStream[cOCTVC1_NET_RTP_MEMBER_MAX_STREAM]; + tOCT_UINT32 ulLocalCnameByteLength; + tOCT_UINT8 achLocalCname[(cOCTVC1_NET_MAX_CNAME_LENGTH+1)]; + tOCT_UINT32 ulRemoteCnameByteLength; + tOCT_UINT8 achRemoteCname[(cOCTVC1_NET_MAX_CNAME_LENGTH+1)]; + +} tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_RSP + + Members: + Header + OCTVC1 Message Header + hRtpSession + ulLocalMemberId +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hRtpSession; + tOCTVC1_SUB_OBJECT_ID ulLocalMemberId; + +} tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_CMD + + Members: + Header + OCTVC1 Message Header + SubObjectIdGet + Sub-Object Id get structure. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID SubObjectIdGet; + +} tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP + + Members: + Header + OCTVC1 Message Header + SubObjectIdGet + Sub-Object Id get structure. + ulOperationMode + hTerm + aStream + Array of transport structure. Each entry contains packet headers and routing + config for one of these data streams: RTP, RTCP or T38_UDPTL. + ulNumRtpProfEntry + Number of valid RTP profile entry. + aRtpProfEntry + Array of RTP profille entry. + ulLocalCnameByteLength + Byte length of the local CNAME. + achLocalCname + Specifies the local canonical name to be used for RTCP reports. The user + application must specify a non-zero length string. The name is encoded + according to the UTF-2 encoding specified in Annex F of ISO standard 10646. + US-ASCII is a subset of this encoding and requires no additional encoding. The + name is not null terminated. The size of this field is aligned on a 32-bit + boundary. Characters beyond the 255th characters are ignored. + ulRemoteCnameByteLength + Byte length of the remote CNAME. + achRemoteCname + RTP Canonical Name associated with the remote source. The name is encoded + according to the UTF-2 encoding specified in Annex F of ISO standard 10646. + US-ASCII is a subset of this encoding and requires no additional encoding. The + name is not null terminated.The size of this field is aligned on a 32-bit + boundary. Characters beyond the 255th characters are ignored. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID SubObjectIdGet; + tOCTVC1_NET_OPERATION_MODE_ENUM ulOperationMode; + tOCTVC1_HANDLE hTerm; + tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM aStream[cOCTVC1_NET_RTP_MEMBER_MAX_STREAM]; + tOCT_UINT32 ulNumRtpProfEntry; + tOCTVC1_NET_RTP_PROFILE_ENTRY aRtpProfEntry[cOCTVC1_NET_MAX_RTP_PROFILE_ENTRY]; + tOCT_UINT32 ulLocalCnameByteLength; + tOCT_UINT8 achLocalCname[(cOCTVC1_NET_MAX_CNAME_LENGTH+1)]; + tOCT_UINT32 ulRemoteCnameByteLength; + tOCT_UINT8 achRemoteCname[(cOCTVC1_NET_MAX_CNAME_LENGTH+1)]; + +} tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD + + Members: + Header + OCTVC1 Message Header + hLocalHost + ulRtpEventMask + ulRtcpEventMask + ulSrtpEventMask + Default: cOCTVC1_NET_SRTP_EVT_MASK_NONE + Bit field that contains the list of RTCP events that can be generated by this + session. + ulUserEventId + ulInitialOperationMode + Default: cOCTVC1_NET_OPERATION_MODE_ENUM_ENDPOINT + ulSenderMaxPendingTimeSec + Default: 0 + ulSenderMaxInactiveTimeSec + Default: 0 + ulRtcpEnableFlag + Default: cOCT_TRUE + ulRtcpVideoFeedbackEnableFlagMask + ulRtpSessionBandwidth + Default: 160 + ulHighFractionLost + ulHighCumulativePacketLost + ulHighJitter + ulHighRoundTripTime + ulLowFractionLost + ulLowJitter + ulLowRoundTripTime + hEventDestObj + ulEventDestObjPort + ulEventDestObjFifoId + Default: cOCTVC1_FIFO_ID_INVALID +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hLocalHost; + tOCTVC1_NET_RTP_EVT_MASK ulRtpEventMask; + tOCTVC1_NET_RTCP_EVT_MASK ulRtcpEventMask; + tOCTVC1_NET_SRTP_EVT_MASK ulSrtpEventMask; + tOCT_UINT32 ulUserEventId; + tOCTVC1_NET_OPERATION_MODE_ENUM ulInitialOperationMode; + tOCT_UINT32 ulSenderMaxPendingTimeSec; + tOCT_UINT32 ulSenderMaxInactiveTimeSec; + tOCT_BOOL32 ulRtcpEnableFlag; + tOCTVC1_NET_VIDEO_RTCP_FB_MSG_MASK ulRtcpVideoFeedbackEnableFlagMask; + tOCT_UINT32 ulRtpSessionBandwidth; + tOCT_UINT32 ulHighFractionLost; + tOCT_UINT32 ulHighCumulativePacketLost; + tOCT_UINT32 ulHighJitter; + tOCT_UINT32 ulHighRoundTripTime; + tOCT_UINT32 ulLowFractionLost; + tOCT_UINT32 ulLowJitter; + tOCT_UINT32 ulLowRoundTripTime; + tOCTVC1_HANDLE hEventDestObj; + tOCT_UINT32 ulEventDestObjPort; + tOCT_UINT32 ulEventDestObjFifoId; + +} tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD; + +/*------------------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_OPEN_RSP + + Members: + Header + OCTVC1 Message Header + hRtpSession + ulFifoId +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_MSG_HEADER Header; + tOCTVC1_HANDLE hRtpSession; + tOCT_UINT32 ulFifoId; + +} tOCTVC1_NET_MSG_RTP_SESSION_OPEN_RSP; + + +/*************** INCLUDE FILES WITH DEPENDENCIES ON THIS FILE **************/ +#include "octvc1_net_evt.h" + +#ifdef cDO_PRAGMA_PACK_POP +#pragma pack( pop ) +#endif /* cDO_PRAGMA_PACK_POP */ +#undef cDO_PRAGMA_PACK_POP + +#endif /* __OCTVC1_NET_API_H__ */ + diff --git a/software/include/vocallo/net/octvc1_net_api_swap.h b/software/include/vocallo/net/octvc1_net_api_swap.h new file mode 100644 index 0000000..527cf5f --- /dev/null +++ b/software/include/vocallo/net/octvc1_net_api_swap.h @@ -0,0 +1,1628 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* + +File: octvc1_net_api_swap.h + +$Octasic_Copyright: $ + +Description: + +$Octasic_Confidentiality: $ + +$Octasic_Release: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#ifndef __OCTVC1_NET_API_SWAP_H__ +#define __OCTVC1_NET_API_SWAP_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************** INCLUDE FILES *******************************/ +#include "../octvc1_swap_hdrs.h" +#include "octvc1_net_api.h" + +/********************************* MACROS **********************************/ + + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_IP_CURSOR_SWAP( _f_pParms ){ tOCTVC1_NET_IP_CURSOR * pOCTVC1_NET_IP_CURSOR = (_f_pParms); \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_IP_CURSOR *)pOCTVC1_NET_IP_CURSOR)->hLink ); } \ + { mOCTVC1_IP_ADDRESS_SWAP( &((tOCTVC1_NET_IP_CURSOR *)pOCTVC1_NET_IP_CURSOR)->IpAddress ); } \ + ((tOCTVC1_NET_IP_CURSOR *)pOCTVC1_NET_IP_CURSOR)->ulGetMode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_IP_CURSOR *)pOCTVC1_NET_IP_CURSOR)->ulGetMode); \ +} +#else +#define mOCTVC1_NET_IP_CURSOR_SWAP( pOCTVC1_NET_IP_CURSOR ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_RTP_PROFILE_ENTRY_SWAP( _f_pParms ){ tOCTVC1_NET_RTP_PROFILE_ENTRY * pOCTVC1_NET_RTP_PROFILE_ENTRY = (_f_pParms); \ + ((tOCTVC1_NET_RTP_PROFILE_ENTRY *)pOCTVC1_NET_RTP_PROFILE_ENTRY)->ulRtpPayloadType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_RTP_PROFILE_ENTRY *)pOCTVC1_NET_RTP_PROFILE_ENTRY)->ulRtpPayloadType); \ + ((tOCTVC1_NET_RTP_PROFILE_ENTRY *)pOCTVC1_NET_RTP_PROFILE_ENTRY)->ulPktEncodingType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_RTP_PROFILE_ENTRY *)pOCTVC1_NET_RTP_PROFILE_ENTRY)->ulPktEncodingType); \ +} +#else +#define mOCTVC1_NET_RTP_PROFILE_ENTRY_SWAP( pOCTVC1_NET_RTP_PROFILE_ENTRY ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_RTP_PROFILE_MODIFY_ENTRY_SWAP( _f_pParms ){ tOCTVC1_NET_RTP_PROFILE_MODIFY_ENTRY * pOCTVC1_NET_RTP_PROFILE_MODIFY_ENTRY = (_f_pParms); \ + ((tOCTVC1_NET_RTP_PROFILE_MODIFY_ENTRY *)pOCTVC1_NET_RTP_PROFILE_MODIFY_ENTRY)->ulModifyType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_RTP_PROFILE_MODIFY_ENTRY *)pOCTVC1_NET_RTP_PROFILE_MODIFY_ENTRY)->ulModifyType); \ + { mOCTVC1_NET_RTP_PROFILE_ENTRY_SWAP( &((tOCTVC1_NET_RTP_PROFILE_MODIFY_ENTRY *)pOCTVC1_NET_RTP_PROFILE_MODIFY_ENTRY)->Entry ); } \ +} +#else +#define mOCTVC1_NET_RTP_PROFILE_MODIFY_ENTRY_SWAP( pOCTVC1_NET_RTP_PROFILE_MODIFY_ENTRY ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_SRTP_KEY_ENTRY_SWAP( _f_pParms ){ tOCTVC1_NET_SRTP_KEY_ENTRY * pOCTVC1_NET_SRTP_KEY_ENTRY = (_f_pParms); \ + ((tOCTVC1_NET_SRTP_KEY_ENTRY *)pOCTVC1_NET_SRTP_KEY_ENTRY)->ulMasterKeyBitSize = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_KEY_ENTRY *)pOCTVC1_NET_SRTP_KEY_ENTRY)->ulMasterKeyBitSize); \ + ((tOCTVC1_NET_SRTP_KEY_ENTRY *)pOCTVC1_NET_SRTP_KEY_ENTRY)->ulMasterSaltBitSize = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_KEY_ENTRY *)pOCTVC1_NET_SRTP_KEY_ENTRY)->ulMasterSaltBitSize); \ + ((tOCTVC1_NET_SRTP_KEY_ENTRY *)pOCTVC1_NET_SRTP_KEY_ENTRY)->ulKeyDerivationRateLog2 = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_KEY_ENTRY *)pOCTVC1_NET_SRTP_KEY_ENTRY)->ulKeyDerivationRateLog2); \ + { tOCT_UINT32 iOCTVC1_NET_SRTP_KEY_ENTRY; \ + for( iOCTVC1_NET_SRTP_KEY_ENTRY=0; \ + iOCTVC1_NET_SRTP_KEY_ENTRY<(2);iOCTVC1_NET_SRTP_KEY_ENTRY++ ) \ + ((tOCTVC1_NET_SRTP_KEY_ENTRY *)pOCTVC1_NET_SRTP_KEY_ENTRY)->aulRtpMasterKeyMaxLifeTime[iOCTVC1_NET_SRTP_KEY_ENTRY] = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_KEY_ENTRY *)pOCTVC1_NET_SRTP_KEY_ENTRY)->aulRtpMasterKeyMaxLifeTime[iOCTVC1_NET_SRTP_KEY_ENTRY]);}\ + { tOCT_UINT32 iOCTVC1_NET_SRTP_KEY_ENTRY; \ + for( iOCTVC1_NET_SRTP_KEY_ENTRY=0; \ + iOCTVC1_NET_SRTP_KEY_ENTRY<(2);iOCTVC1_NET_SRTP_KEY_ENTRY++ ) \ + ((tOCTVC1_NET_SRTP_KEY_ENTRY *)pOCTVC1_NET_SRTP_KEY_ENTRY)->aulRtpMasterKeyFromLifeTime[iOCTVC1_NET_SRTP_KEY_ENTRY] = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_KEY_ENTRY *)pOCTVC1_NET_SRTP_KEY_ENTRY)->aulRtpMasterKeyFromLifeTime[iOCTVC1_NET_SRTP_KEY_ENTRY]);}\ + { tOCT_UINT32 iOCTVC1_NET_SRTP_KEY_ENTRY; \ + for( iOCTVC1_NET_SRTP_KEY_ENTRY=0; \ + iOCTVC1_NET_SRTP_KEY_ENTRY<(2);iOCTVC1_NET_SRTP_KEY_ENTRY++ ) \ + ((tOCTVC1_NET_SRTP_KEY_ENTRY *)pOCTVC1_NET_SRTP_KEY_ENTRY)->aulRtpMasterKeyToLifeTime[iOCTVC1_NET_SRTP_KEY_ENTRY] = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_KEY_ENTRY *)pOCTVC1_NET_SRTP_KEY_ENTRY)->aulRtpMasterKeyToLifeTime[iOCTVC1_NET_SRTP_KEY_ENTRY]);}\ + { tOCT_UINT32 iOCTVC1_NET_SRTP_KEY_ENTRY; \ + for( iOCTVC1_NET_SRTP_KEY_ENTRY=0; \ + iOCTVC1_NET_SRTP_KEY_ENTRY<(2);iOCTVC1_NET_SRTP_KEY_ENTRY++ ) \ + ((tOCTVC1_NET_SRTP_KEY_ENTRY *)pOCTVC1_NET_SRTP_KEY_ENTRY)->aulRtpReKeyEventThreshold[iOCTVC1_NET_SRTP_KEY_ENTRY] = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_KEY_ENTRY *)pOCTVC1_NET_SRTP_KEY_ENTRY)->aulRtpReKeyEventThreshold[iOCTVC1_NET_SRTP_KEY_ENTRY]);}\ + ((tOCTVC1_NET_SRTP_KEY_ENTRY *)pOCTVC1_NET_SRTP_KEY_ENTRY)->ulRtcpMasterKeyMaxLifeTime = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_KEY_ENTRY *)pOCTVC1_NET_SRTP_KEY_ENTRY)->ulRtcpMasterKeyMaxLifeTime); \ + ((tOCTVC1_NET_SRTP_KEY_ENTRY *)pOCTVC1_NET_SRTP_KEY_ENTRY)->ulRtcpMasterKeyFromLifeTime = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_KEY_ENTRY *)pOCTVC1_NET_SRTP_KEY_ENTRY)->ulRtcpMasterKeyFromLifeTime); \ + ((tOCTVC1_NET_SRTP_KEY_ENTRY *)pOCTVC1_NET_SRTP_KEY_ENTRY)->ulRtcpMasterKeyToLifeTime = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_KEY_ENTRY *)pOCTVC1_NET_SRTP_KEY_ENTRY)->ulRtcpMasterKeyToLifeTime); \ + ((tOCTVC1_NET_SRTP_KEY_ENTRY *)pOCTVC1_NET_SRTP_KEY_ENTRY)->ulRtcpReKeyEventThreshold = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_KEY_ENTRY *)pOCTVC1_NET_SRTP_KEY_ENTRY)->ulRtcpReKeyEventThreshold); \ +} +#else +#define mOCTVC1_NET_SRTP_KEY_ENTRY_SWAP( pOCTVC1_NET_SRTP_KEY_ENTRY ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_SRTP_STREAM_CONFIG_SWAP( _f_pParms ){ tOCTVC1_NET_SRTP_STREAM_CONFIG * pOCTVC1_NET_SRTP_STREAM_CONFIG = (_f_pParms); \ + ((tOCTVC1_NET_SRTP_STREAM_CONFIG *)pOCTVC1_NET_SRTP_STREAM_CONFIG)->ulCryptoTransform = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_STREAM_CONFIG *)pOCTVC1_NET_SRTP_STREAM_CONFIG)->ulCryptoTransform); \ + ((tOCTVC1_NET_SRTP_STREAM_CONFIG *)pOCTVC1_NET_SRTP_STREAM_CONFIG)->ulAuthTransform = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_STREAM_CONFIG *)pOCTVC1_NET_SRTP_STREAM_CONFIG)->ulAuthTransform); \ + ((tOCTVC1_NET_SRTP_STREAM_CONFIG *)pOCTVC1_NET_SRTP_STREAM_CONFIG)->ulAuthTagBitSize = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_STREAM_CONFIG *)pOCTVC1_NET_SRTP_STREAM_CONFIG)->ulAuthTagBitSize); \ + ((tOCTVC1_NET_SRTP_STREAM_CONFIG *)pOCTVC1_NET_SRTP_STREAM_CONFIG)->ulMkiByteSize = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_STREAM_CONFIG *)pOCTVC1_NET_SRTP_STREAM_CONFIG)->ulMkiByteSize); \ + ((tOCTVC1_NET_SRTP_STREAM_CONFIG *)pOCTVC1_NET_SRTP_STREAM_CONFIG)->ulSessionCryptoKeyBitSize = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_STREAM_CONFIG *)pOCTVC1_NET_SRTP_STREAM_CONFIG)->ulSessionCryptoKeyBitSize); \ + ((tOCTVC1_NET_SRTP_STREAM_CONFIG *)pOCTVC1_NET_SRTP_STREAM_CONFIG)->ulSessionSaltKeyBitSize = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_STREAM_CONFIG *)pOCTVC1_NET_SRTP_STREAM_CONFIG)->ulSessionSaltKeyBitSize); \ + ((tOCTVC1_NET_SRTP_STREAM_CONFIG *)pOCTVC1_NET_SRTP_STREAM_CONFIG)->ulSessionAuthKeyBitSize = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_STREAM_CONFIG *)pOCTVC1_NET_SRTP_STREAM_CONFIG)->ulSessionAuthKeyBitSize); \ + ((tOCTVC1_NET_SRTP_STREAM_CONFIG *)pOCTVC1_NET_SRTP_STREAM_CONFIG)->ulInitialRoc = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_STREAM_CONFIG *)pOCTVC1_NET_SRTP_STREAM_CONFIG)->ulInitialRoc); \ + ((tOCTVC1_NET_SRTP_STREAM_CONFIG *)pOCTVC1_NET_SRTP_STREAM_CONFIG)->ulSrtpServiceMask = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_STREAM_CONFIG *)pOCTVC1_NET_SRTP_STREAM_CONFIG)->ulSrtpServiceMask); \ + ((tOCTVC1_NET_SRTP_STREAM_CONFIG *)pOCTVC1_NET_SRTP_STREAM_CONFIG)->ulSrtcpServiceMask = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_STREAM_CONFIG *)pOCTVC1_NET_SRTP_STREAM_CONFIG)->ulSrtcpServiceMask); \ +} +#else +#define mOCTVC1_NET_SRTP_STREAM_CONFIG_SWAP( pOCTVC1_NET_SRTP_STREAM_CONFIG ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_SRTP_KEY_STATS_SWAP( _f_pParms ){ tOCTVC1_NET_SRTP_KEY_STATS * pOCTVC1_NET_SRTP_KEY_STATS = (_f_pParms); \ + ((tOCTVC1_NET_SRTP_KEY_STATS *)pOCTVC1_NET_SRTP_KEY_STATS)->ulKeyState = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_KEY_STATS *)pOCTVC1_NET_SRTP_KEY_STATS)->ulKeyState); \ + { tOCT_UINT32 iOCTVC1_NET_SRTP_KEY_STATS; \ + for( iOCTVC1_NET_SRTP_KEY_STATS=0; \ + iOCTVC1_NET_SRTP_KEY_STATS<(2);iOCTVC1_NET_SRTP_KEY_STATS++ ) \ + ((tOCTVC1_NET_SRTP_KEY_STATS *)pOCTVC1_NET_SRTP_KEY_STATS)->aulSrtpPacketCnt[iOCTVC1_NET_SRTP_KEY_STATS] = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_KEY_STATS *)pOCTVC1_NET_SRTP_KEY_STATS)->aulSrtpPacketCnt[iOCTVC1_NET_SRTP_KEY_STATS]);}\ + ((tOCTVC1_NET_SRTP_KEY_STATS *)pOCTVC1_NET_SRTP_KEY_STATS)->ulSrtcpPacketCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_KEY_STATS *)pOCTVC1_NET_SRTP_KEY_STATS)->ulSrtcpPacketCnt); \ +} +#else +#define mOCTVC1_NET_SRTP_KEY_STATS_SWAP( pOCTVC1_NET_SRTP_KEY_STATS ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_SRTP_STREAM_STATS_SWAP( _f_pParms ){ tOCTVC1_NET_SRTP_STREAM_STATS * pOCTVC1_NET_SRTP_STREAM_STATS = (_f_pParms); \ + ((tOCTVC1_NET_SRTP_STREAM_STATS *)pOCTVC1_NET_SRTP_STREAM_STATS)->ulSrtpState = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_STREAM_STATS *)pOCTVC1_NET_SRTP_STREAM_STATS)->ulSrtpState); \ + ((tOCTVC1_NET_SRTP_STREAM_STATS *)pOCTVC1_NET_SRTP_STREAM_STATS)->ulSsrc = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_STREAM_STATS *)pOCTVC1_NET_SRTP_STREAM_STATS)->ulSsrc); \ + ((tOCTVC1_NET_SRTP_STREAM_STATS *)pOCTVC1_NET_SRTP_STREAM_STATS)->ulLastRoc = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_STREAM_STATS *)pOCTVC1_NET_SRTP_STREAM_STATS)->ulLastRoc); \ + ((tOCTVC1_NET_SRTP_STREAM_STATS *)pOCTVC1_NET_SRTP_STREAM_STATS)->ulLastSeq = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_STREAM_STATS *)pOCTVC1_NET_SRTP_STREAM_STATS)->ulLastSeq); \ + ((tOCTVC1_NET_SRTP_STREAM_STATS *)pOCTVC1_NET_SRTP_STREAM_STATS)->ulLastSrtcpIndex = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_STREAM_STATS *)pOCTVC1_NET_SRTP_STREAM_STATS)->ulLastSrtcpIndex); \ + { tOCT_UINT32 iOCTVC1_NET_SRTP_STREAM_STATS; \ + for( iOCTVC1_NET_SRTP_STREAM_STATS=0; \ + iOCTVC1_NET_SRTP_STREAM_STATS<(2);iOCTVC1_NET_SRTP_STREAM_STATS++ ) \ + ((tOCTVC1_NET_SRTP_STREAM_STATS *)pOCTVC1_NET_SRTP_STREAM_STATS)->aulTotalSrtpPktCnt[iOCTVC1_NET_SRTP_STREAM_STATS] = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_STREAM_STATS *)pOCTVC1_NET_SRTP_STREAM_STATS)->aulTotalSrtpPktCnt[iOCTVC1_NET_SRTP_STREAM_STATS]);}\ + { tOCT_UINT32 iOCTVC1_NET_SRTP_STREAM_STATS; \ + for( iOCTVC1_NET_SRTP_STREAM_STATS=0; \ + iOCTVC1_NET_SRTP_STREAM_STATS<(2);iOCTVC1_NET_SRTP_STREAM_STATS++ ) \ + ((tOCTVC1_NET_SRTP_STREAM_STATS *)pOCTVC1_NET_SRTP_STREAM_STATS)->aulTotalSrtcpPktCnt[iOCTVC1_NET_SRTP_STREAM_STATS] = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_STREAM_STATS *)pOCTVC1_NET_SRTP_STREAM_STATS)->aulTotalSrtcpPktCnt[iOCTVC1_NET_SRTP_STREAM_STATS]);}\ + ((tOCTVC1_NET_SRTP_STREAM_STATS *)pOCTVC1_NET_SRTP_STREAM_STATS)->ulUnAuthPktCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_STREAM_STATS *)pOCTVC1_NET_SRTP_STREAM_STATS)->ulUnAuthPktCnt); \ + ((tOCTVC1_NET_SRTP_STREAM_STATS *)pOCTVC1_NET_SRTP_STREAM_STATS)->ulReplayPktCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_STREAM_STATS *)pOCTVC1_NET_SRTP_STREAM_STATS)->ulReplayPktCnt); \ + ((tOCTVC1_NET_SRTP_STREAM_STATS *)pOCTVC1_NET_SRTP_STREAM_STATS)->ulReKeyCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_STREAM_STATS *)pOCTVC1_NET_SRTP_STREAM_STATS)->ulReKeyCnt); \ + ((tOCTVC1_NET_SRTP_STREAM_STATS *)pOCTVC1_NET_SRTP_STREAM_STATS)->ulActiveKeyIdx = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_STREAM_STATS *)pOCTVC1_NET_SRTP_STREAM_STATS)->ulActiveKeyIdx); \ + ((tOCTVC1_NET_SRTP_STREAM_STATS *)pOCTVC1_NET_SRTP_STREAM_STATS)->ulSrtpKeyNum = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_SRTP_STREAM_STATS *)pOCTVC1_NET_SRTP_STREAM_STATS)->ulSrtpKeyNum); \ + { tOCT_UINT32 jOCTVC1_NET_SRTP_STREAM_STATS; \ + for( jOCTVC1_NET_SRTP_STREAM_STATS=0; \ + jOCTVC1_NET_SRTP_STREAM_STATS<(4);jOCTVC1_NET_SRTP_STREAM_STATS++ ) \ + { mOCTVC1_NET_SRTP_KEY_STATS_SWAP( &((tOCTVC1_NET_SRTP_STREAM_STATS *)pOCTVC1_NET_SRTP_STREAM_STATS)->aSrtpKeyStats[jOCTVC1_NET_SRTP_STREAM_STATS] ); }} \ +} +#else +#define mOCTVC1_NET_SRTP_STREAM_STATS_SWAP( pOCTVC1_NET_SRTP_STREAM_STATS ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_CONFIG_STATIC_SWAP( _f_pParms ){ tOCTVC1_NET_CONFIG_STATIC * pOCTVC1_NET_CONFIG_STATIC = (_f_pParms); \ + ((tOCTVC1_NET_CONFIG_STATIC *)pOCTVC1_NET_CONFIG_STATIC)->ulMaxRtpMember = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_CONFIG_STATIC *)pOCTVC1_NET_CONFIG_STATIC)->ulMaxRtpMember); \ + ((tOCTVC1_NET_CONFIG_STATIC *)pOCTVC1_NET_CONFIG_STATIC)->ulMaxRtpSession = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_CONFIG_STATIC *)pOCTVC1_NET_CONFIG_STATIC)->ulMaxRtpSession); \ + ((tOCTVC1_NET_CONFIG_STATIC *)pOCTVC1_NET_CONFIG_STATIC)->ulMaxLocalIpHost = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_CONFIG_STATIC *)pOCTVC1_NET_CONFIG_STATIC)->ulMaxLocalIpHost); \ +} +#else +#define mOCTVC1_NET_CONFIG_STATIC_SWAP( pOCTVC1_NET_CONFIG_STATIC ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_RTP_MEMBER_CONN_INFO_SWAP( _f_pParms ){ tOCTVC1_NET_RTP_MEMBER_CONN_INFO * pOCTVC1_NET_RTP_MEMBER_CONN_INFO = (_f_pParms); \ + ((tOCTVC1_NET_RTP_MEMBER_CONN_INFO *)pOCTVC1_NET_RTP_MEMBER_CONN_INFO)->ulConnectionState = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_RTP_MEMBER_CONN_INFO *)pOCTVC1_NET_RTP_MEMBER_CONN_INFO)->ulConnectionState); \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_RTP_MEMBER_CONN_INFO *)pOCTVC1_NET_RTP_MEMBER_CONN_INFO)->hConnectedRtpSession ); } \ + ((tOCTVC1_NET_RTP_MEMBER_CONN_INFO *)pOCTVC1_NET_RTP_MEMBER_CONN_INFO)->ulConnectedMemberId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_RTP_MEMBER_CONN_INFO *)pOCTVC1_NET_RTP_MEMBER_CONN_INFO)->ulConnectedMemberId); \ +} +#else +#define mOCTVC1_NET_RTP_MEMBER_CONN_INFO_SWAP( pOCTVC1_NET_RTP_MEMBER_CONN_INFO ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_RTCP_SENDER_STATS_SWAP( _f_pParms ){ tOCTVC1_NET_RTCP_SENDER_STATS * pOCTVC1_NET_RTCP_SENDER_STATS = (_f_pParms); \ + { tOCT_UINT32 iOCTVC1_NET_RTCP_SENDER_STATS; \ + for( iOCTVC1_NET_RTCP_SENDER_STATS=0; \ + iOCTVC1_NET_RTCP_SENDER_STATS<(2);iOCTVC1_NET_RTCP_SENDER_STATS++ ) \ + ((tOCTVC1_NET_RTCP_SENDER_STATS *)pOCTVC1_NET_RTCP_SENDER_STATS)->aulSentPktCnt[iOCTVC1_NET_RTCP_SENDER_STATS] = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_RTCP_SENDER_STATS *)pOCTVC1_NET_RTCP_SENDER_STATS)->aulSentPktCnt[iOCTVC1_NET_RTCP_SENDER_STATS]);}\ + { tOCT_UINT32 iOCTVC1_NET_RTCP_SENDER_STATS; \ + for( iOCTVC1_NET_RTCP_SENDER_STATS=0; \ + iOCTVC1_NET_RTCP_SENDER_STATS<(2);iOCTVC1_NET_RTCP_SENDER_STATS++ ) \ + ((tOCTVC1_NET_RTCP_SENDER_STATS *)pOCTVC1_NET_RTCP_SENDER_STATS)->aulSentByteCnt[iOCTVC1_NET_RTCP_SENDER_STATS] = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_RTCP_SENDER_STATS *)pOCTVC1_NET_RTCP_SENDER_STATS)->aulSentByteCnt[iOCTVC1_NET_RTCP_SENDER_STATS]);}\ + { tOCT_UINT32 iOCTVC1_NET_RTCP_SENDER_STATS; \ + for( iOCTVC1_NET_RTCP_SENDER_STATS=0; \ + iOCTVC1_NET_RTCP_SENDER_STATS<(2);iOCTVC1_NET_RTCP_SENDER_STATS++ ) \ + ((tOCTVC1_NET_RTCP_SENDER_STATS *)pOCTVC1_NET_RTCP_SENDER_STATS)->aulNtpTimestamp[iOCTVC1_NET_RTCP_SENDER_STATS] = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_RTCP_SENDER_STATS *)pOCTVC1_NET_RTCP_SENDER_STATS)->aulNtpTimestamp[iOCTVC1_NET_RTCP_SENDER_STATS]);}\ + ((tOCTVC1_NET_RTCP_SENDER_STATS *)pOCTVC1_NET_RTCP_SENDER_STATS)->ulRtpTimestamp = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_RTCP_SENDER_STATS *)pOCTVC1_NET_RTCP_SENDER_STATS)->ulRtpTimestamp); \ + ((tOCTVC1_NET_RTCP_SENDER_STATS *)pOCTVC1_NET_RTCP_SENDER_STATS)->ulSenderSsrc = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_RTCP_SENDER_STATS *)pOCTVC1_NET_RTCP_SENDER_STATS)->ulSenderSsrc); \ + ((tOCTVC1_NET_RTCP_SENDER_STATS *)pOCTVC1_NET_RTCP_SENDER_STATS)->ulSenderStartTime = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_RTCP_SENDER_STATS *)pOCTVC1_NET_RTCP_SENDER_STATS)->ulSenderStartTime); \ + ((tOCTVC1_NET_RTCP_SENDER_STATS *)pOCTVC1_NET_RTCP_SENDER_STATS)->ulSenderReportCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_RTCP_SENDER_STATS *)pOCTVC1_NET_RTCP_SENDER_STATS)->ulSenderReportCnt); \ + ((tOCTVC1_NET_RTCP_SENDER_STATS *)pOCTVC1_NET_RTCP_SENDER_STATS)->ulSenderState = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_RTCP_SENDER_STATS *)pOCTVC1_NET_RTCP_SENDER_STATS)->ulSenderState); \ + ((tOCTVC1_NET_RTCP_SENDER_STATS *)pOCTVC1_NET_RTCP_SENDER_STATS)->ulLastSenderReportTime = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_RTCP_SENDER_STATS *)pOCTVC1_NET_RTCP_SENDER_STATS)->ulLastSenderReportTime); \ + ((tOCTVC1_NET_RTCP_SENDER_STATS *)pOCTVC1_NET_RTCP_SENDER_STATS)->ulSsrcChangeCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_RTCP_SENDER_STATS *)pOCTVC1_NET_RTCP_SENDER_STATS)->ulSsrcChangeCnt); \ +} +#else +#define mOCTVC1_NET_RTCP_SENDER_STATS_SWAP( pOCTVC1_NET_RTCP_SENDER_STATS ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_RTCP_RECEIVER_STATS_SWAP( _f_pParms ){ tOCTVC1_NET_RTCP_RECEIVER_STATS * pOCTVC1_NET_RTCP_RECEIVER_STATS = (_f_pParms); \ + ((tOCTVC1_NET_RTCP_RECEIVER_STATS *)pOCTVC1_NET_RTCP_RECEIVER_STATS)->ulHighestSeqNumber = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_RTCP_RECEIVER_STATS *)pOCTVC1_NET_RTCP_RECEIVER_STATS)->ulHighestSeqNumber); \ + ((tOCTVC1_NET_RTCP_RECEIVER_STATS *)pOCTVC1_NET_RTCP_RECEIVER_STATS)->ulCumulativeLostCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_RTCP_RECEIVER_STATS *)pOCTVC1_NET_RTCP_RECEIVER_STATS)->ulCumulativeLostCnt); \ + ((tOCTVC1_NET_RTCP_RECEIVER_STATS *)pOCTVC1_NET_RTCP_RECEIVER_STATS)->ulFractionLost = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_RTCP_RECEIVER_STATS *)pOCTVC1_NET_RTCP_RECEIVER_STATS)->ulFractionLost); \ + ((tOCTVC1_NET_RTCP_RECEIVER_STATS *)pOCTVC1_NET_RTCP_RECEIVER_STATS)->ulInterArrivalJitter = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_RTCP_RECEIVER_STATS *)pOCTVC1_NET_RTCP_RECEIVER_STATS)->ulInterArrivalJitter); \ + ((tOCTVC1_NET_RTCP_RECEIVER_STATS *)pOCTVC1_NET_RTCP_RECEIVER_STATS)->ulMaxFractionLost = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_RTCP_RECEIVER_STATS *)pOCTVC1_NET_RTCP_RECEIVER_STATS)->ulMaxFractionLost); \ + ((tOCTVC1_NET_RTCP_RECEIVER_STATS *)pOCTVC1_NET_RTCP_RECEIVER_STATS)->ulMaxInterArrivalJitter = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_RTCP_RECEIVER_STATS *)pOCTVC1_NET_RTCP_RECEIVER_STATS)->ulMaxInterArrivalJitter); \ + ((tOCTVC1_NET_RTCP_RECEIVER_STATS *)pOCTVC1_NET_RTCP_RECEIVER_STATS)->ulAverageFractionLost = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_RTCP_RECEIVER_STATS *)pOCTVC1_NET_RTCP_RECEIVER_STATS)->ulAverageFractionLost); \ + ((tOCTVC1_NET_RTCP_RECEIVER_STATS *)pOCTVC1_NET_RTCP_RECEIVER_STATS)->ulAverageInterArrivalJitter = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_RTCP_RECEIVER_STATS *)pOCTVC1_NET_RTCP_RECEIVER_STATS)->ulAverageInterArrivalJitter); \ + ((tOCTVC1_NET_RTCP_RECEIVER_STATS *)pOCTVC1_NET_RTCP_RECEIVER_STATS)->ulReceiverStartTime = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_RTCP_RECEIVER_STATS *)pOCTVC1_NET_RTCP_RECEIVER_STATS)->ulReceiverStartTime); \ + ((tOCTVC1_NET_RTCP_RECEIVER_STATS *)pOCTVC1_NET_RTCP_RECEIVER_STATS)->ulReceiverReportCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_RTCP_RECEIVER_STATS *)pOCTVC1_NET_RTCP_RECEIVER_STATS)->ulReceiverReportCnt); \ + ((tOCTVC1_NET_RTCP_RECEIVER_STATS *)pOCTVC1_NET_RTCP_RECEIVER_STATS)->ulLastReceiverReportTime = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_RTCP_RECEIVER_STATS *)pOCTVC1_NET_RTCP_RECEIVER_STATS)->ulLastReceiverReportTime); \ + ((tOCTVC1_NET_RTCP_RECEIVER_STATS *)pOCTVC1_NET_RTCP_RECEIVER_STATS)->ulRemoteSenderSsrc = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_RTCP_RECEIVER_STATS *)pOCTVC1_NET_RTCP_RECEIVER_STATS)->ulRemoteSenderSsrc); \ + ((tOCTVC1_NET_RTCP_RECEIVER_STATS *)pOCTVC1_NET_RTCP_RECEIVER_STATS)->ulAlarmRxThreshold = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_RTCP_RECEIVER_STATS *)pOCTVC1_NET_RTCP_RECEIVER_STATS)->ulAlarmRxThreshold); \ + ((tOCTVC1_NET_RTCP_RECEIVER_STATS *)pOCTVC1_NET_RTCP_RECEIVER_STATS)->ulAlarmRxThresholdCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_RTCP_RECEIVER_STATS *)pOCTVC1_NET_RTCP_RECEIVER_STATS)->ulAlarmRxThresholdCnt); \ +} +#else +#define mOCTVC1_NET_RTCP_RECEIVER_STATS_SWAP( pOCTVC1_NET_RTCP_RECEIVER_STATS ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_VLAN_TAG_SWAP( _f_pParms ){ tOCTVC1_NET_VLAN_TAG * pOCTVC1_NET_VLAN_TAG = (_f_pParms); \ + ((tOCTVC1_NET_VLAN_TAG *)pOCTVC1_NET_VLAN_TAG)->ulPriority = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_VLAN_TAG *)pOCTVC1_NET_VLAN_TAG)->ulPriority); \ + ((tOCTVC1_NET_VLAN_TAG *)pOCTVC1_NET_VLAN_TAG)->ulVlanId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_VLAN_TAG *)pOCTVC1_NET_VLAN_TAG)->ulVlanId); \ +} +#else +#define mOCTVC1_NET_VLAN_TAG_SWAP( pOCTVC1_NET_VLAN_TAG ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_HEADER_INFO_ETHERNET_SWAP( _f_pParms ){ tOCTVC1_NET_HEADER_INFO_ETHERNET * pOCTVC1_NET_HEADER_INFO_ETHERNET = (_f_pParms); \ + ((tOCTVC1_NET_HEADER_INFO_ETHERNET *)pOCTVC1_NET_HEADER_INFO_ETHERNET)->ulEthertypeEncoding = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_HEADER_INFO_ETHERNET *)pOCTVC1_NET_HEADER_INFO_ETHERNET)->ulEthertypeEncoding); \ + ((tOCTVC1_NET_HEADER_INFO_ETHERNET *)pOCTVC1_NET_HEADER_INFO_ETHERNET)->ulEthertype = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_HEADER_INFO_ETHERNET *)pOCTVC1_NET_HEADER_INFO_ETHERNET)->ulEthertype); \ +} +#else +#define mOCTVC1_NET_HEADER_INFO_ETHERNET_SWAP( pOCTVC1_NET_HEADER_INFO_ETHERNET ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_HEADER_INFO_VLAN_SWAP( _f_pParms ){ tOCTVC1_NET_HEADER_INFO_VLAN * pOCTVC1_NET_HEADER_INFO_VLAN = (_f_pParms); \ + ((tOCTVC1_NET_HEADER_INFO_VLAN *)pOCTVC1_NET_HEADER_INFO_VLAN)->ulNumVlanTag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_HEADER_INFO_VLAN *)pOCTVC1_NET_HEADER_INFO_VLAN)->ulNumVlanTag); \ + { tOCT_UINT32 jOCTVC1_NET_HEADER_INFO_VLAN; \ + for( jOCTVC1_NET_HEADER_INFO_VLAN=0; \ + jOCTVC1_NET_HEADER_INFO_VLAN<(cOCTVC1_NET_MAX_VLAN_TAG);jOCTVC1_NET_HEADER_INFO_VLAN++ ) \ + { mOCTVC1_NET_VLAN_TAG_SWAP( &((tOCTVC1_NET_HEADER_INFO_VLAN *)pOCTVC1_NET_HEADER_INFO_VLAN)->aVlanTag[jOCTVC1_NET_HEADER_INFO_VLAN] ); }} \ +} +#else +#define mOCTVC1_NET_HEADER_INFO_VLAN_SWAP( pOCTVC1_NET_HEADER_INFO_VLAN ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_HEADER_INFO_IP_SWAP( _f_pParms ){ tOCTVC1_NET_HEADER_INFO_IP * pOCTVC1_NET_HEADER_INFO_IP = (_f_pParms); \ + ((tOCTVC1_NET_HEADER_INFO_IP *)pOCTVC1_NET_HEADER_INFO_IP)->ulIpVersion = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_HEADER_INFO_IP *)pOCTVC1_NET_HEADER_INFO_IP)->ulIpVersion); \ + ((tOCTVC1_NET_HEADER_INFO_IP *)pOCTVC1_NET_HEADER_INFO_IP)->ulTypeOfService = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_HEADER_INFO_IP *)pOCTVC1_NET_HEADER_INFO_IP)->ulTypeOfService); \ + ((tOCTVC1_NET_HEADER_INFO_IP *)pOCTVC1_NET_HEADER_INFO_IP)->ulTimeToLive = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_HEADER_INFO_IP *)pOCTVC1_NET_HEADER_INFO_IP)->ulTimeToLive); \ + ((tOCTVC1_NET_HEADER_INFO_IP *)pOCTVC1_NET_HEADER_INFO_IP)->ulIpv6FlowLabel = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_HEADER_INFO_IP *)pOCTVC1_NET_HEADER_INFO_IP)->ulIpv6FlowLabel); \ + { mOCTVC1_IP_ADDRESS_SWAP( &((tOCTVC1_NET_HEADER_INFO_IP *)pOCTVC1_NET_HEADER_INFO_IP)->LocalIpAddress ); } \ + { mOCTVC1_IP_ADDRESS_SWAP( &((tOCTVC1_NET_HEADER_INFO_IP *)pOCTVC1_NET_HEADER_INFO_IP)->RemoteIpAddress ); } \ +} +#else +#define mOCTVC1_NET_HEADER_INFO_IP_SWAP( pOCTVC1_NET_HEADER_INFO_IP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_HEADER_INFO_UDP_SWAP( _f_pParms ){ tOCTVC1_NET_HEADER_INFO_UDP * pOCTVC1_NET_HEADER_INFO_UDP = (_f_pParms); \ + ((tOCTVC1_NET_HEADER_INFO_UDP *)pOCTVC1_NET_HEADER_INFO_UDP)->ulLocalUdpPort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_HEADER_INFO_UDP *)pOCTVC1_NET_HEADER_INFO_UDP)->ulLocalUdpPort); \ + ((tOCTVC1_NET_HEADER_INFO_UDP *)pOCTVC1_NET_HEADER_INFO_UDP)->ulRemoteUdpPort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_HEADER_INFO_UDP *)pOCTVC1_NET_HEADER_INFO_UDP)->ulRemoteUdpPort); \ +} +#else +#define mOCTVC1_NET_HEADER_INFO_UDP_SWAP( pOCTVC1_NET_HEADER_INFO_UDP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_HEADER_IPUDP_SWAP( _f_pParms ){ tOCTVC1_NET_HEADER_IPUDP * pOCTVC1_NET_HEADER_IPUDP = (_f_pParms); \ + { mOCTVC1_NET_HEADER_INFO_ETHERNET_SWAP( &((tOCTVC1_NET_HEADER_IPUDP *)pOCTVC1_NET_HEADER_IPUDP)->Ethernet ); } \ + { mOCTVC1_NET_HEADER_INFO_VLAN_SWAP( &((tOCTVC1_NET_HEADER_IPUDP *)pOCTVC1_NET_HEADER_IPUDP)->Vlan ); } \ + { mOCTVC1_NET_HEADER_INFO_IP_SWAP( &((tOCTVC1_NET_HEADER_IPUDP *)pOCTVC1_NET_HEADER_IPUDP)->Ip ); } \ + { mOCTVC1_NET_HEADER_INFO_UDP_SWAP( &((tOCTVC1_NET_HEADER_IPUDP *)pOCTVC1_NET_HEADER_IPUDP)->Udp ); } \ +} +#else +#define mOCTVC1_NET_HEADER_IPUDP_SWAP( pOCTVC1_NET_HEADER_IPUDP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_CACHE_ENTRY_CURSOR_SWAP( _f_pParms ){ tOCTVC1_NET_CACHE_ENTRY_CURSOR * pOCTVC1_NET_CACHE_ENTRY_CURSOR = (_f_pParms); \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_CACHE_ENTRY_CURSOR *)pOCTVC1_NET_CACHE_ENTRY_CURSOR)->hLink ); } \ + { mOCTVC1_NET_HEADER_INFO_VLAN_SWAP( &((tOCTVC1_NET_CACHE_ENTRY_CURSOR *)pOCTVC1_NET_CACHE_ENTRY_CURSOR)->Vlan ); } \ + { mOCTVC1_IP_ADDRESS_SWAP( &((tOCTVC1_NET_CACHE_ENTRY_CURSOR *)pOCTVC1_NET_CACHE_ENTRY_CURSOR)->IpAddress ); } \ + ((tOCTVC1_NET_CACHE_ENTRY_CURSOR *)pOCTVC1_NET_CACHE_ENTRY_CURSOR)->ulGetMode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_CACHE_ENTRY_CURSOR *)pOCTVC1_NET_CACHE_ENTRY_CURSOR)->ulGetMode); \ +} +#else +#define mOCTVC1_NET_CACHE_ENTRY_CURSOR_SWAP( pOCTVC1_NET_CACHE_ENTRY_CURSOR ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_ETH_LINK_CACHE_ENTRY_SWAP( _f_pParms ){ tOCTVC1_NET_ETH_LINK_CACHE_ENTRY * pOCTVC1_NET_ETH_LINK_CACHE_ENTRY = (_f_pParms); \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_ETH_LINK_CACHE_ENTRY *)pOCTVC1_NET_ETH_LINK_CACHE_ENTRY)->hLink ); } \ + { mOCTVC1_NET_HEADER_INFO_VLAN_SWAP( &((tOCTVC1_NET_ETH_LINK_CACHE_ENTRY *)pOCTVC1_NET_ETH_LINK_CACHE_ENTRY)->Vlan ); } \ + { mOCTVC1_IP_ADDRESS_SWAP( &((tOCTVC1_NET_ETH_LINK_CACHE_ENTRY *)pOCTVC1_NET_ETH_LINK_CACHE_ENTRY)->IpAddress ); } \ + ((tOCTVC1_NET_ETH_LINK_CACHE_ENTRY *)pOCTVC1_NET_ETH_LINK_CACHE_ENTRY)->ulStaticFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_ETH_LINK_CACHE_ENTRY *)pOCTVC1_NET_ETH_LINK_CACHE_ENTRY)->ulStaticFlag); \ + ((tOCTVC1_NET_ETH_LINK_CACHE_ENTRY *)pOCTVC1_NET_ETH_LINK_CACHE_ENTRY)->ulReachableFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_ETH_LINK_CACHE_ENTRY *)pOCTVC1_NET_ETH_LINK_CACHE_ENTRY)->ulReachableFlag); \ +} +#else +#define mOCTVC1_NET_ETH_LINK_CACHE_ENTRY_SWAP( pOCTVC1_NET_ETH_LINK_CACHE_ENTRY ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_LINK_GATEWAY_INFO_SWAP( _f_pParms ){ tOCTVC1_NET_LINK_GATEWAY_INFO * pOCTVC1_NET_LINK_GATEWAY_INFO = (_f_pParms); \ + { mOCTVC1_IP_ADDRESS_SWAP( &((tOCTVC1_NET_LINK_GATEWAY_INFO *)pOCTVC1_NET_LINK_GATEWAY_INFO)->IpAddress ); } \ + ((tOCTVC1_NET_LINK_GATEWAY_INFO *)pOCTVC1_NET_LINK_GATEWAY_INFO)->ulLifetimeSec = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_LINK_GATEWAY_INFO *)pOCTVC1_NET_LINK_GATEWAY_INFO)->ulLifetimeSec); \ +} +#else +#define mOCTVC1_NET_LINK_GATEWAY_INFO_SWAP( pOCTVC1_NET_LINK_GATEWAY_INFO ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_LINK_IPV6_PREFIX_SWAP( _f_pParms ){ tOCTVC1_NET_LINK_IPV6_PREFIX * pOCTVC1_NET_LINK_IPV6_PREFIX = (_f_pParms); \ + { mOCTVC1_IP_ADDRESS_SWAP( &((tOCTVC1_NET_LINK_IPV6_PREFIX *)pOCTVC1_NET_LINK_IPV6_PREFIX)->IpAddress ); } \ + ((tOCTVC1_NET_LINK_IPV6_PREFIX *)pOCTVC1_NET_LINK_IPV6_PREFIX)->ulBitLength = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_LINK_IPV6_PREFIX *)pOCTVC1_NET_LINK_IPV6_PREFIX)->ulBitLength); \ +} +#else +#define mOCTVC1_NET_LINK_IPV6_PREFIX_SWAP( pOCTVC1_NET_LINK_IPV6_PREFIX ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_LINK_IPV6_PREFIX_INFO_SWAP( _f_pParms ){ tOCTVC1_NET_LINK_IPV6_PREFIX_INFO * pOCTVC1_NET_LINK_IPV6_PREFIX_INFO = (_f_pParms); \ + { mOCTVC1_NET_LINK_IPV6_PREFIX_SWAP( &((tOCTVC1_NET_LINK_IPV6_PREFIX_INFO *)pOCTVC1_NET_LINK_IPV6_PREFIX_INFO)->IPv6Prefix ); } \ + ((tOCTVC1_NET_LINK_IPV6_PREFIX_INFO *)pOCTVC1_NET_LINK_IPV6_PREFIX_INFO)->ulOnLinkFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_LINK_IPV6_PREFIX_INFO *)pOCTVC1_NET_LINK_IPV6_PREFIX_INFO)->ulOnLinkFlag); \ + ((tOCTVC1_NET_LINK_IPV6_PREFIX_INFO *)pOCTVC1_NET_LINK_IPV6_PREFIX_INFO)->ulAddrAutoConfigFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_LINK_IPV6_PREFIX_INFO *)pOCTVC1_NET_LINK_IPV6_PREFIX_INFO)->ulAddrAutoConfigFlag); \ + ((tOCTVC1_NET_LINK_IPV6_PREFIX_INFO *)pOCTVC1_NET_LINK_IPV6_PREFIX_INFO)->ulValidLifetimeSec = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_LINK_IPV6_PREFIX_INFO *)pOCTVC1_NET_LINK_IPV6_PREFIX_INFO)->ulValidLifetimeSec); \ + ((tOCTVC1_NET_LINK_IPV6_PREFIX_INFO *)pOCTVC1_NET_LINK_IPV6_PREFIX_INFO)->ulPreferredLifetimeSec = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_LINK_IPV6_PREFIX_INFO *)pOCTVC1_NET_LINK_IPV6_PREFIX_INFO)->ulPreferredLifetimeSec); \ +} +#else +#define mOCTVC1_NET_LINK_IPV6_PREFIX_INFO_SWAP( pOCTVC1_NET_LINK_IPV6_PREFIX_INFO ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_IPV6_PREFIX_CURSOR_SWAP( _f_pParms ){ tOCTVC1_NET_IPV6_PREFIX_CURSOR * pOCTVC1_NET_IPV6_PREFIX_CURSOR = (_f_pParms); \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_IPV6_PREFIX_CURSOR *)pOCTVC1_NET_IPV6_PREFIX_CURSOR)->hLink ); } \ + { mOCTVC1_NET_LINK_IPV6_PREFIX_SWAP( &((tOCTVC1_NET_IPV6_PREFIX_CURSOR *)pOCTVC1_NET_IPV6_PREFIX_CURSOR)->IPv6Prefix ); } \ + ((tOCTVC1_NET_IPV6_PREFIX_CURSOR *)pOCTVC1_NET_IPV6_PREFIX_CURSOR)->ulGetMode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_IPV6_PREFIX_CURSOR *)pOCTVC1_NET_IPV6_PREFIX_CURSOR)->ulGetMode); \ +} +#else +#define mOCTVC1_NET_IPV6_PREFIX_CURSOR_SWAP( pOCTVC1_NET_IPV6_PREFIX_CURSOR ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_ETH_LINK_CONFIG_IPV4_SWAP( _f_pParms ){ tOCTVC1_NET_ETH_LINK_CONFIG_IPV4 * pOCTVC1_NET_ETH_LINK_CONFIG_IPV4 = (_f_pParms); \ + ((tOCTVC1_NET_ETH_LINK_CONFIG_IPV4 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV4)->ulEnableFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_ETH_LINK_CONFIG_IPV4 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV4)->ulEnableFlag); \ + ((tOCTVC1_NET_ETH_LINK_CONFIG_IPV4 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV4)->ulAddrAutoconfigMode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_ETH_LINK_CONFIG_IPV4 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV4)->ulAddrAutoconfigMode); \ + ((tOCTVC1_NET_ETH_LINK_CONFIG_IPV4 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV4)->ulNDPBaseReachableTimeMs = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_ETH_LINK_CONFIG_IPV4 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV4)->ulNDPBaseReachableTimeMs); \ + ((tOCTVC1_NET_ETH_LINK_CONFIG_IPV4 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV4)->ulARPRefreshTimeMs = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_ETH_LINK_CONFIG_IPV4 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV4)->ulARPRefreshTimeMs); \ + ((tOCTVC1_NET_ETH_LINK_CONFIG_IPV4 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV4)->ulARPReplyTimeMs = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_ETH_LINK_CONFIG_IPV4 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV4)->ulARPReplyTimeMs); \ + ((tOCTVC1_NET_ETH_LINK_CONFIG_IPV4 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV4)->ulARPUnusedTimeMs = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_ETH_LINK_CONFIG_IPV4 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV4)->ulARPUnusedTimeMs); \ + ((tOCTVC1_NET_ETH_LINK_CONFIG_IPV4 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV4)->ulARPReqCreateCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_ETH_LINK_CONFIG_IPV4 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV4)->ulARPReqCreateCnt); \ + ((tOCTVC1_NET_ETH_LINK_CONFIG_IPV4 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV4)->ulARPReqRefreshCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_ETH_LINK_CONFIG_IPV4 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV4)->ulARPReqRefreshCnt); \ + ((tOCTVC1_NET_ETH_LINK_CONFIG_IPV4 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV4)->ulARPReqRefreshBroadcastCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_ETH_LINK_CONFIG_IPV4 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV4)->ulARPReqRefreshBroadcastCnt); \ + ((tOCTVC1_NET_ETH_LINK_CONFIG_IPV4 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV4)->ulARPReqDupAddrCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_ETH_LINK_CONFIG_IPV4 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV4)->ulARPReqDupAddrCnt); \ + ((tOCTVC1_NET_ETH_LINK_CONFIG_IPV4 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV4)->ulGARPRequestCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_ETH_LINK_CONFIG_IPV4 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV4)->ulGARPRequestCnt); \ +} +#else +#define mOCTVC1_NET_ETH_LINK_CONFIG_IPV4_SWAP( pOCTVC1_NET_ETH_LINK_CONFIG_IPV4 ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_ETH_LINK_CONFIG_IPV6_SWAP( _f_pParms ){ tOCTVC1_NET_ETH_LINK_CONFIG_IPV6 * pOCTVC1_NET_ETH_LINK_CONFIG_IPV6 = (_f_pParms); \ + ((tOCTVC1_NET_ETH_LINK_CONFIG_IPV6 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV6)->ulEnableFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_ETH_LINK_CONFIG_IPV6 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV6)->ulEnableFlag); \ + ((tOCTVC1_NET_ETH_LINK_CONFIG_IPV6 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV6)->ulCreateLoopbackEntryFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_ETH_LINK_CONFIG_IPV6 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV6)->ulCreateLoopbackEntryFlag); \ + ((tOCTVC1_NET_ETH_LINK_CONFIG_IPV6 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV6)->ulAddrAutoconfigMode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_ETH_LINK_CONFIG_IPV6 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV6)->ulAddrAutoconfigMode); \ + ((tOCTVC1_NET_ETH_LINK_CONFIG_IPV6 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV6)->ulNDPBaseReachableTimeMs = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_ETH_LINK_CONFIG_IPV6 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV6)->ulNDPBaseReachableTimeMs); \ + ((tOCTVC1_NET_ETH_LINK_CONFIG_IPV6 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV6)->ulNDPRetransTimeMs = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_ETH_LINK_CONFIG_IPV6 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV6)->ulNDPRetransTimeMs); \ + ((tOCTVC1_NET_ETH_LINK_CONFIG_IPV6 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV6)->ulNDPUnusedTimeMs = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_ETH_LINK_CONFIG_IPV6 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV6)->ulNDPUnusedTimeMs); \ + ((tOCTVC1_NET_ETH_LINK_CONFIG_IPV6 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV6)->ulNDPSolicitCreateCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_ETH_LINK_CONFIG_IPV6 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV6)->ulNDPSolicitCreateCnt); \ + ((tOCTVC1_NET_ETH_LINK_CONFIG_IPV6 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV6)->ulNDPSolicitDupAddrCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_ETH_LINK_CONFIG_IPV6 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV6)->ulNDPSolicitDupAddrCnt); \ + ((tOCTVC1_NET_ETH_LINK_CONFIG_IPV6 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV6)->ulNDPSolicitProbeCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_ETH_LINK_CONFIG_IPV6 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV6)->ulNDPSolicitProbeCnt); \ + ((tOCTVC1_NET_ETH_LINK_CONFIG_IPV6 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV6)->ulNDPSolicitProbeMulticastCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_ETH_LINK_CONFIG_IPV6 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV6)->ulNDPSolicitProbeMulticastCnt); \ + ((tOCTVC1_NET_ETH_LINK_CONFIG_IPV6 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV6)->ulNDPSolicitRouterCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_ETH_LINK_CONFIG_IPV6 *)pOCTVC1_NET_ETH_LINK_CONFIG_IPV6)->ulNDPSolicitRouterCnt); \ +} +#else +#define mOCTVC1_NET_ETH_LINK_CONFIG_IPV6_SWAP( pOCTVC1_NET_ETH_LINK_CONFIG_IPV6 ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ_SWAP( _f_pParms ){ tOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ * pOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ = (_f_pParms); \ + ((tOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ *)pOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ)->ulEnableFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ *)pOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ)->ulEnableFlag); \ + ((tOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ *)pOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ)->ulDefaultUserPriority = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ *)pOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ)->ulDefaultUserPriority); \ + ((tOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ *)pOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ)->ulVlanId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ *)pOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ)->ulVlanId); \ +} +#else +#define mOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ_SWAP( pOCTVC1_NET_ETH_LINK_CONFIG_ETH_802_1PQ ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_EUI64_INTERFACE_ID_SWAP( _f_pParms ){ tOCTVC1_NET_EUI64_INTERFACE_ID * pOCTVC1_NET_EUI64_INTERFACE_ID = (_f_pParms); \ + { tOCT_UINT32 iOCTVC1_NET_EUI64_INTERFACE_ID; \ + for( iOCTVC1_NET_EUI64_INTERFACE_ID=0; \ + iOCTVC1_NET_EUI64_INTERFACE_ID<(4);iOCTVC1_NET_EUI64_INTERFACE_ID++ ) \ + ((tOCTVC1_NET_EUI64_INTERFACE_ID *)pOCTVC1_NET_EUI64_INTERFACE_ID)->ausInterfaceId[iOCTVC1_NET_EUI64_INTERFACE_ID] = \ + mOCT_SWAP16_IF_LE(((tOCTVC1_NET_EUI64_INTERFACE_ID *)pOCTVC1_NET_EUI64_INTERFACE_ID)->ausInterfaceId[iOCTVC1_NET_EUI64_INTERFACE_ID]);} \ +} +#else +#define mOCTVC1_NET_EUI64_INTERFACE_ID_SWAP( pOCTVC1_NET_EUI64_INTERFACE_ID ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_SWAP( _f_pParms ){ tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM * pOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM = (_f_pParms); \ + ((tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM *)pOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM)->ulEnableFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM *)pOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM)->ulEnableFlag); \ + ((tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM *)pOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM)->ulTxPktEnableFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM *)pOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM)->ulTxPktEnableFlag); \ + ((tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM *)pOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM)->ulRxPktFilter = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM *)pOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM)->ulRxPktFilter); \ + { mOCTVC1_NET_HEADER_IPUDP_SWAP( &((tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM *)pOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM)->Header ); } \ +} +#else +#define mOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_SWAP( pOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_MODIFY_SWAP( _f_pParms ){ tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_MODIFY * pOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_MODIFY = (_f_pParms); \ + ((tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_MODIFY *)pOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_MODIFY)->ulModifyMask = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_MODIFY *)pOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_MODIFY)->ulModifyMask); \ + { mOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_SWAP( &((tOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_MODIFY *)pOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_MODIFY)->Modify ); } \ +} +#else +#define mOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_MODIFY_SWAP( pOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_MODIFY ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_CLOSE_CMD_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_CMD * pOCTVC1_NET_MSG_RTP_SESSION_CLOSE_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_CLOSE_CMD)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_CLOSE_CMD)->hRtpSession ); } \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_CLOSE_CMD_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_CLOSE_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_CLOSE_RSP_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_RSP * pOCTVC1_NET_MSG_RTP_SESSION_CLOSE_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_CLOSE_RSP)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_CLOSE_RSP)->hRtpSession ); } \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_CLOSE_RSP_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_CLOSE_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_INFO_CMD_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_INFO_CMD * pOCTVC1_NET_MSG_RTP_SESSION_INFO_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_INFO_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_CMD)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_GET_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_INFO_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_CMD)->ObjectGet ); } \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_INFO_CMD_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_INFO_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP * pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_GET_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ObjectGet ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->hLocalHost ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulFifoId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulFifoId); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulRtpEventMask = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulRtpEventMask); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulRtcpEventMask = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulRtcpEventMask); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulSrtpEventMask = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulSrtpEventMask); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulUserEventId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulUserEventId); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulInitialOperationMode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulInitialOperationMode); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulSenderMaxPendingTimeSec = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulSenderMaxPendingTimeSec); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulSenderMaxInactiveTimeSec = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulSenderMaxInactiveTimeSec); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulRtcpEnableFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulRtcpEnableFlag); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulRtpSessionBandwidth = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulRtpSessionBandwidth); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulHighFractionLost = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulHighFractionLost); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulHighCumulativePacketLost = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulHighCumulativePacketLost); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulHighJitter = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulHighJitter); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulHighRoundTripTime = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulHighRoundTripTime); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulLowFractionLost = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulLowFractionLost); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulLowJitter = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulLowJitter); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulLowRoundTripTime = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulLowRoundTripTime); \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->hEventDestObj ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulEventDestObjPort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulEventDestObjPort); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulEventDestObjFifoId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP)->ulEventDestObjFifoId); \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_INFO_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CMD_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CMD * pOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CMD)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CMD)->hRtpSession ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CMD)->ulTxRtcpPauseFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CMD)->ulTxRtcpPauseFlag); \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CMD_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_RSP_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_RSP * pOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_RSP)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_RSP)->hRtpSession ); } \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_RSP_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD * pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD)->hRtpSession ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD)->ulHighFractionLost = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD)->ulHighFractionLost); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD)->ulHighCumulativePacketLost = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD)->ulHighCumulativePacketLost); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD)->ulHighJitter = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD)->ulHighJitter); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD)->ulHighRoundTripTime = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD)->ulHighRoundTripTime); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD)->ulLowFractionLost = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD)->ulLowFractionLost); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD)->ulLowJitter = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD)->ulLowJitter); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD)->ulLowRoundTripTime = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD)->ulLowRoundTripTime); \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_MODIFY_RSP_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_RSP * pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_RSP)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_RSP)->hRtpSession ); } \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_MODIFY_RSP_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD * pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->hRtpSession ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->hTerm ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulRxPktFilter = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulRxPktFilter); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulLocalUdpPortRtp = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulLocalUdpPortRtp); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulLocalUdpPortRtcp = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulLocalUdpPortRtcp); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulLocalUdpPortT38 = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulLocalUdpPortT38); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulLocalCnameLength = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulLocalCnameLength); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulLocalForcedRtpParmMask = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulLocalForcedRtpParmMask); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulLocalForcedSsrc = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulLocalForcedSsrc); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulLocalForcedInitialSeqNumber = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulLocalForcedInitialSeqNumber); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulRemoteAutoDetectFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulRemoteAutoDetectFlag); \ + { mOCTVC1_UDP_ADDRESS_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->RemoteUdpAddressRtp ); } \ + { mOCTVC1_UDP_ADDRESS_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->RemoteUdpAddressRtcp ); } \ + { mOCTVC1_UDP_ADDRESS_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->RemoteUdpAddressT38 ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulRemoteCnameLength = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulRemoteCnameLength); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulRemoteForcedRtpParmMask = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulRemoteForcedRtpParmMask); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulRemoteForcedSsrc = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulRemoteForcedSsrc); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulRemoteForcedInitialSeqNumber = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulRemoteForcedInitialSeqNumber); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulIpv4TimeToLive = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulIpv4TimeToLive); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulIpv4TypeOfService = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulIpv4TypeOfService); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulIpv6HopLimit = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulIpv6HopLimit); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulIpv6FlowLabel = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulIpv6FlowLabel); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulIpv6TrafficClass = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulIpv6TrafficClass); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulNumProfEntry = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ulNumProfEntry); \ + { tOCT_UINT32 jOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD; \ + for( jOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD=0; \ + jOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD<(cOCTVC1_NET_MAX_RTP_PROFILE_ENTRY);jOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD++ ) \ + { mOCTVC1_NET_RTP_PROFILE_ENTRY_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->aRtpProfEntry[jOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD] ); }} \ + { mOCTVC1_NET_SRTP_STREAM_CONFIG_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->SenderSrtp ); } \ + { mOCTVC1_NET_SRTP_KEY_ENTRY_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->SenderSrtpKey ); } \ + { mOCTVC1_NET_SRTP_STREAM_CONFIG_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ReceiverSrtp ); } \ + { mOCTVC1_NET_SRTP_KEY_ENTRY_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD)->ReceiverSrtpKey ); } \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP * pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP)->hRtpSession ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP)->ulLocalMemberId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP)->ulLocalMemberId); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP)->ulLocalSsrc = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP)->ulLocalSsrc); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP)->ulLocalInitialSeqNumber = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP)->ulLocalInitialSeqNumber); \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_CMD_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_CMD * pOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_CMD)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_CMD)->hRtpSession ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_CMD)->ulLocalMemberId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_CMD)->ulLocalMemberId); \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_CMD_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_RSP_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_RSP * pOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_RSP)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_RSP)->hRtpSession ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_RSP)->ulLocalMemberId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_RSP)->ulLocalMemberId); \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_RSP_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_CMD_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_CMD * pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_CMD)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_CMD)->SubObjectIdGet ); } \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_CMD_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP * pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->SubObjectIdGet ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulOperationMode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulOperationMode); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulTxRtpPauseFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulTxRtpPauseFlag); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulTxRtcpPauseFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulTxRtcpPauseFlag); \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->hTerm ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->hDestObj ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulDestObjPort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulDestObjPort); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulRxPktFilter = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulRxPktFilter); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulDestObjFifoId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulDestObjFifoId); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulLocalUdpPortRtp = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulLocalUdpPortRtp); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulLocalUdpPortRtcp = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulLocalUdpPortRtcp); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulLocalUdpPortT38 = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulLocalUdpPortT38); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulLocalCnameLength = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulLocalCnameLength); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulRemoteAutoDetectFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulRemoteAutoDetectFlag); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulValidRemoteFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulValidRemoteFlag); \ + { mOCTVC1_UDP_ADDRESS_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->RemoteUdpAddressRtp ); } \ + { mOCTVC1_UDP_ADDRESS_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->RemoteUdpAddressRtcp ); } \ + { mOCTVC1_UDP_ADDRESS_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->RemoteUdpAddressT38 ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulRemoteCnameLength = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulRemoteCnameLength); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulIpv4TimeToLive = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulIpv4TimeToLive); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulIpv4TypeOfService = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulIpv4TypeOfService); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulIpv6HopLimit = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulIpv6HopLimit); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulIpv6FlowLabel = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulIpv6FlowLabel); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulIpv6TrafficClass = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulIpv6TrafficClass); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulNumProfEntry = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->ulNumProfEntry); \ + { tOCT_UINT32 jOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP; \ + for( jOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP=0; \ + jOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP<(cOCTVC1_NET_MAX_RTP_PROFILE_ENTRY);jOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP++ ) \ + { mOCTVC1_NET_RTP_PROFILE_ENTRY_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->aRtpProfEntry[jOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP] ); }} \ + { mOCTVC1_NET_RTP_MEMBER_CONN_INFO_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP)->RtpMemberConnInfo ); } \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD * pOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD)->hRtpSession ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD)->ulLocalMemberId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD)->ulLocalMemberId); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD)->ulTxRtpPauseFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD)->ulTxRtpPauseFlag); \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_RSP_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_RSP * pOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_RSP)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_RSP)->hRtpSession ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_RSP)->ulLocalMemberId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_RSP)->ulLocalMemberId); \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_RSP_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD * pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD)->hRtpSession ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD)->ulLocalMemberId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD)->ulLocalMemberId); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD)->ulModifyMask = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD)->ulModifyMask); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD)->ulRemoteAutoDetectFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD)->ulRemoteAutoDetectFlag); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD)->ulLocalUdpPortRtp = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD)->ulLocalUdpPortRtp); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD)->ulLocalUdpPortRtcp = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD)->ulLocalUdpPortRtcp); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD)->ulLocalUdpPortT38 = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD)->ulLocalUdpPortT38); \ + { mOCTVC1_UDP_ADDRESS_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD)->RemoteUdpAddressRtp ); } \ + { mOCTVC1_UDP_ADDRESS_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD)->RemoteUdpAddressRtcp ); } \ + { mOCTVC1_UDP_ADDRESS_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD)->RemoteUdpAddressT38 ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD)->ulRemoteCnameLength = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD)->ulRemoteCnameLength); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD)->ulRemoteForcedRtpParmMask = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD)->ulRemoteForcedRtpParmMask); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD)->ulRemoteForcedSsrc = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD)->ulRemoteForcedSsrc); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD)->ulRemoteForcedInitialSeqNumber = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD)->ulRemoteForcedInitialSeqNumber); \ + { mOCTVC1_NET_SRTP_STREAM_CONFIG_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD)->SenderSrtp ); } \ + { mOCTVC1_NET_SRTP_KEY_ENTRY_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD)->SenderSrtpKey ); } \ + { mOCTVC1_NET_SRTP_STREAM_CONFIG_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD)->ReceiverSrtp ); } \ + { mOCTVC1_NET_SRTP_KEY_ENTRY_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD)->ReceiverSrtpKey ); } \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RSP_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RSP * pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RSP)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RSP)->hRtpSession ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RSP)->ulLocalMemberId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RSP)->ulLocalMemberId); \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RSP_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD * pOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD)->Header ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD)->ulForceFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD)->ulForceFlag); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD)->ulRecoverNtpFromRtpTsFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD)->ulRecoverNtpFromRtpTsFlag); \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD)->hRtpSession ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD)->ulLocalMemberId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD)->ulLocalMemberId); \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD)->hRtpSessionAssociated ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD)->ulLocalMemberIdAssociated = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD)->ulLocalMemberIdAssociated); \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP * pOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP)->hRtpSession ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP)->ulLocalMemberId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP)->ulLocalMemberId); \ + { mOCTVC1_NET_RTP_MEMBER_CONN_INFO_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP)->RtpMemberPrevConnInfo ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP)->hRtpSessionAssociated ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP)->ulLocalMemberIdAssociated = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP)->ulLocalMemberIdAssociated); \ + { mOCTVC1_NET_RTP_MEMBER_CONN_INFO_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP)->RtpMemberPrevConnInfoAssociated ); } \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_CMD_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_CMD * pOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_CMD)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_CMD)->hRtpSession ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_CMD)->ulLocalMemberId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_CMD)->ulLocalMemberId); \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_CMD_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP * pOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP)->hRtpSession ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP)->ulLocalMemberId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP)->ulLocalMemberId); \ + { mOCTVC1_NET_RTP_MEMBER_CONN_INFO_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP)->RtpMemberPrevConnInfo ); } \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_CMD_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_CMD * pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_CMD)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_CMD)->SubObjectIdGet ); } \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_CMD_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP * pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP)->SubObjectIdGet ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP)->ulRemoteMemberId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP)->ulRemoteMemberId); \ + { tOCT_UINT32 iOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP; \ + for( iOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP=0; \ + iOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP<(2);iOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP++ ) \ + ((tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP)->aulReceivedPktCnt[iOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP] = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP)->aulReceivedPktCnt[iOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP]);}\ + { tOCT_UINT32 iOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP; \ + for( iOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP=0; \ + iOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP<(2);iOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP++ ) \ + ((tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP)->aulReceivedByteCnt[iOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP] = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP)->aulReceivedByteCnt[iOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP]);}\ + { mOCTVC1_NET_RTCP_SENDER_STATS_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP)->SenderStats ); } \ + { mOCTVC1_NET_RTCP_RECEIVER_STATS_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP)->ReceiverStats ); } \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_CMD_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_CMD * pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_CMD)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_CMD)->SubObjectIdGet ); } \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_CMD_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP * pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP)->SubObjectIdGet ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP)->ulRoundTripTime = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP)->ulRoundTripTime); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP)->ulMaxRoundTripTime = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP)->ulMaxRoundTripTime); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP)->ulAverageRoundTripTime = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP)->ulAverageRoundTripTime); \ + { mOCTVC1_NET_RTCP_SENDER_STATS_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP)->SenderStats ); } \ + { mOCTVC1_NET_RTCP_RECEIVER_STATS_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP)->ReceiverStats ); } \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_STATS_CMD_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_STATS_CMD * pOCTVC1_NET_MSG_RTP_SESSION_STATS_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_STATS_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_CMD)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_GET_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_STATS_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_CMD)->ObjectGet ); } \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_STATS_CMD_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_STATS_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP * pOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_GET_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP)->ObjectGet ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP)->ulNumMember = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP)->ulNumMember); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP)->ulNumSender = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP)->ulNumSender); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP)->ulSessionStartTime = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP)->ulSessionStartTime); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP)->ulRxByePktCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP)->ulRxByePktCnt); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP)->ulRxSenderJoinCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP)->ulRxSenderJoinCnt); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP)->ulRxMemberJoinCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP)->ulRxMemberJoinCnt); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP)->ulErrCollisionCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP)->ulErrCollisionCnt); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP)->ulErrLoopCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP)->ulErrLoopCnt); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP)->ulErrRtcpPktInvalidCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP)->ulErrRtcpPktInvalidCnt); \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_STATS_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD * pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD)->hRtpSession ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD)->ulLocalMemberId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD)->ulLocalMemberId); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD)->ulSenderSrtpKeyActiveIdx = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD)->ulSenderSrtpKeyActiveIdx); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD)->ulSenderSrtpKeyNum = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD)->ulSenderSrtpKeyNum); \ + { tOCT_UINT32 jOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD; \ + for( jOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD=0; \ + jOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD<(cOCTVC1_NET_MAX_SRTP_KEY_LIST_NUM);jOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD++ ) \ + { mOCTVC1_NET_SRTP_KEY_ENTRY_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD)->aSenderSrtpKeyList[jOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD] ); }} \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD)->ulReceiverSrtpKeyActiveIdx = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD)->ulReceiverSrtpKeyActiveIdx); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD)->ulReceiverSrtpKeyNum = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD)->ulReceiverSrtpKeyNum); \ + { tOCT_UINT32 jOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD; \ + for( jOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD=0; \ + jOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD<(cOCTVC1_NET_MAX_SRTP_KEY_LIST_NUM);jOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD++ ) \ + { mOCTVC1_NET_SRTP_KEY_ENTRY_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD)->aReceiverSrtpKeyList[jOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD] ); }} \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_RSP_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_RSP * pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_RSP)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_RSP)->hRtpSession ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_RSP)->ulLocalMemberId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_RSP)->ulLocalMemberId); \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_RSP_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_CMD_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_CMD * pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_CMD)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_CMD)->SubObjectIdGet ); } \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_CMD_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP * pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP)->SubObjectIdGet ); } \ + { mOCTVC1_NET_SRTP_STREAM_CONFIG_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP)->SenderSrtp ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP)->ulSenderSrtpKeyActiveIdx = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP)->ulSenderSrtpKeyActiveIdx); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP)->ulSenderSrtpKeyNum = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP)->ulSenderSrtpKeyNum); \ + { tOCT_UINT32 jOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP; \ + for( jOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP=0; \ + jOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP<(cOCTVC1_NET_MAX_SRTP_KEY_LIST_NUM);jOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP++ ) \ + { mOCTVC1_NET_SRTP_KEY_ENTRY_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP)->aSenderSrtpKeyList[jOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP] ); }} \ + { mOCTVC1_NET_SRTP_STREAM_CONFIG_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP)->ReceiverSrtp ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP)->ulReceiverSrtpKeyActiveIdx = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP)->ulReceiverSrtpKeyActiveIdx); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP)->ulReceiverSrtpKeyNum = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP)->ulReceiverSrtpKeyNum); \ + { tOCT_UINT32 jOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP; \ + for( jOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP=0; \ + jOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP<(cOCTVC1_NET_MAX_SRTP_KEY_LIST_NUM);jOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP++ ) \ + { mOCTVC1_NET_SRTP_KEY_ENTRY_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP)->aReceiverSrtpKeyList[jOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP] ); }} \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_CMD_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_CMD * pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_CMD)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_CMD)->SubObjectIdGet ); } \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_CMD_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_RSP_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_RSP * pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_RSP)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_RSP)->SubObjectIdGet ); } \ + { mOCTVC1_NET_SRTP_STREAM_STATS_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_RSP)->SenderSrtpStats ); } \ + { mOCTVC1_NET_SRTP_STREAM_STATS_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_RSP)->ReceiverSrtpStats ); } \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_RSP_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD * pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD)->hRtpSession ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD)->ulLocalMemberId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD)->ulLocalMemberId); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD)->ulNumEntry = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD)->ulNumEntry); \ + { tOCT_UINT32 jOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD; \ + for( jOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD=0; \ + jOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD<(cOCTVC1_NET_MAX_RTP_PROFILE_ENTRY);jOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD++ ) \ + { mOCTVC1_NET_RTP_PROFILE_MODIFY_ENTRY_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD)->aEntry[jOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD] ); }} \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_RSP_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_RSP * pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_RSP)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_RSP)->hRtpSession ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_RSP)->ulLocalMemberId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_RSP)->ulLocalMemberId); \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_RSP_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD * pOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD)->Header ); } \ + { mOCTVC1_IP_ADDRESS_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD)->IpAddress ); } \ + { mOCTVC1_IP_ADDRESS_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD)->NetworkMask ); } \ + ((tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD)->ulAddrAutoConfigFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD)->ulAddrAutoConfigFlag); \ + ((tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD)->ulMuteOnAddrExpireFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD)->ulMuteOnAddrExpireFlag); \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD)->hLink ); } \ + ((tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD)->ulUserEventId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD)->ulUserEventId); \ + ((tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD)->ulEventMask = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD)->ulEventMask); \ + ((tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD)->ulEventThrottle = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD)->ulEventThrottle); \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD)->hEventDestObj ); } \ + ((tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD)->ulEventDestObjPort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD)->ulEventDestObjPort); \ + ((tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD)->ulEventDestObjFifoId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD)->ulEventDestObjFifoId); \ +} +#else +#define mOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD_SWAP( pOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_LOCAL_HOST_OPEN_RSP_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_RSP * pOCTVC1_NET_MSG_LOCAL_HOST_OPEN_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_RSP *)pOCTVC1_NET_MSG_LOCAL_HOST_OPEN_RSP)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_RSP *)pOCTVC1_NET_MSG_LOCAL_HOST_OPEN_RSP)->hLocalHost ); } \ + ((tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_RSP *)pOCTVC1_NET_MSG_LOCAL_HOST_OPEN_RSP)->ulAddrStatus = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LOCAL_HOST_OPEN_RSP *)pOCTVC1_NET_MSG_LOCAL_HOST_OPEN_RSP)->ulAddrStatus); \ +} +#else +#define mOCTVC1_NET_MSG_LOCAL_HOST_OPEN_RSP_SWAP( pOCTVC1_NET_MSG_LOCAL_HOST_OPEN_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_CMD_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_CMD * pOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_CMD)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_CMD)->hLocalHost ); } \ +} +#else +#define mOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_CMD_SWAP( pOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_RSP_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_RSP * pOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_RSP *)pOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_RSP)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_RSP *)pOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_RSP)->hLocalHost ); } \ +} +#else +#define mOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_RSP_SWAP( pOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_LOCAL_HOST_INFO_CMD_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_LOCAL_HOST_INFO_CMD * pOCTVC1_NET_MSG_LOCAL_HOST_INFO_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_INFO_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_INFO_CMD)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_GET_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_INFO_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_INFO_CMD)->ObjectGet ); } \ +} +#else +#define mOCTVC1_NET_MSG_LOCAL_HOST_INFO_CMD_SWAP( pOCTVC1_NET_MSG_LOCAL_HOST_INFO_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP * pOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP *)pOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_GET_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP *)pOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP)->ObjectGet ); } \ + ((tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP *)pOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP)->ulAddrAutoConfigFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP *)pOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP)->ulAddrAutoConfigFlag); \ + { mOCTVC1_IP_ADDRESS_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP *)pOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP)->IpAddress ); } \ + { mOCTVC1_IP_ADDRESS_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP *)pOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP)->NetworkMask ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP *)pOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP)->hLink ); } \ + ((tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP *)pOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP)->ulAddrStatus = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP *)pOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP)->ulAddrStatus); \ + ((tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP *)pOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP)->ulUserEventId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP *)pOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP)->ulUserEventId); \ + ((tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP *)pOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP)->ulEventThrottle = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP *)pOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP)->ulEventThrottle); \ + ((tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP *)pOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP)->ulEventMask = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP *)pOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP)->ulEventMask); \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP *)pOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP)->hEventDestObj ); } \ + ((tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP *)pOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP)->ulEventDestObjPort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP *)pOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP)->ulEventDestObjPort); \ + ((tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP *)pOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP)->ulEventDestObjFifoId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP *)pOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP)->ulEventDestObjFifoId); \ +} +#else +#define mOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP_SWAP( pOCTVC1_NET_MSG_LOCAL_HOST_INFO_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD * pOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD)->hLocalHost ); } \ + { mOCTVC1_IP_ADDRESS_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD)->RemoteIpAddress ); } \ + ((tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD)->ulTimeout = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD)->ulTimeout); \ + ((tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD)->ulTimeToLive = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD)->ulTimeToLive); \ + ((tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD)->ulUserEventId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD)->ulUserEventId); \ + ((tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD)->ulPayloadLength = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD)->ulPayloadLength); \ +} +#else +#define mOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD_SWAP( pOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_RSP_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_RSP * pOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_RSP *)pOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_RSP)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_RSP *)pOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_RSP)->hLocalHost ); } \ +} +#else +#define mOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_RSP_SWAP( pOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD * pOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD)->hLocalHost ); } \ + ((tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD)->ulProbeIntervalMs = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD)->ulProbeIntervalMs); \ + ((tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD)->ulNumProbe = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD)->ulNumProbe); \ +} +#else +#define mOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD_SWAP( pOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_RSP_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_RSP * pOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_RSP *)pOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_RSP)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_RSP *)pOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_RSP)->hLocalHost ); } \ +} +#else +#define mOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_RSP_SWAP( pOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_LOCAL_HOST_STATS_CMD_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_LOCAL_HOST_STATS_CMD * pOCTVC1_NET_MSG_LOCAL_HOST_STATS_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_STATS_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_STATS_CMD)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_GET_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_STATS_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_STATS_CMD)->ObjectGet ); } \ + ((tOCTVC1_NET_MSG_LOCAL_HOST_STATS_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_STATS_CMD)->ulResetStatsFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LOCAL_HOST_STATS_CMD *)pOCTVC1_NET_MSG_LOCAL_HOST_STATS_CMD)->ulResetStatsFlag); \ +} +#else +#define mOCTVC1_NET_MSG_LOCAL_HOST_STATS_CMD_SWAP( pOCTVC1_NET_MSG_LOCAL_HOST_STATS_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_LOCAL_HOST_STATS_RSP_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_LOCAL_HOST_STATS_RSP * pOCTVC1_NET_MSG_LOCAL_HOST_STATS_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_STATS_RSP *)pOCTVC1_NET_MSG_LOCAL_HOST_STATS_RSP)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_GET_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_STATS_RSP *)pOCTVC1_NET_MSG_LOCAL_HOST_STATS_RSP)->ObjectGet ); } \ + ((tOCTVC1_NET_MSG_LOCAL_HOST_STATS_RSP *)pOCTVC1_NET_MSG_LOCAL_HOST_STATS_RSP)->ulApiEventCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LOCAL_HOST_STATS_RSP *)pOCTVC1_NET_MSG_LOCAL_HOST_STATS_RSP)->ulApiEventCnt); \ +} +#else +#define mOCTVC1_NET_MSG_LOCAL_HOST_STATS_RSP_SWAP( pOCTVC1_NET_MSG_LOCAL_HOST_STATS_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_LINK_ADD_GATEWAY_CMD_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_CMD * pOCTVC1_NET_MSG_LINK_ADD_GATEWAY_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_CMD *)pOCTVC1_NET_MSG_LINK_ADD_GATEWAY_CMD)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_CMD *)pOCTVC1_NET_MSG_LINK_ADD_GATEWAY_CMD)->hLink ); } \ + { mOCTVC1_IP_ADDRESS_SWAP( &((tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_CMD *)pOCTVC1_NET_MSG_LINK_ADD_GATEWAY_CMD)->IpAddress ); } \ +} +#else +#define mOCTVC1_NET_MSG_LINK_ADD_GATEWAY_CMD_SWAP( pOCTVC1_NET_MSG_LINK_ADD_GATEWAY_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_LINK_ADD_GATEWAY_RSP_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_RSP * pOCTVC1_NET_MSG_LINK_ADD_GATEWAY_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_RSP *)pOCTVC1_NET_MSG_LINK_ADD_GATEWAY_RSP)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_RSP *)pOCTVC1_NET_MSG_LINK_ADD_GATEWAY_RSP)->hLink ); } \ + { mOCTVC1_IP_ADDRESS_SWAP( &((tOCTVC1_NET_MSG_LINK_ADD_GATEWAY_RSP *)pOCTVC1_NET_MSG_LINK_ADD_GATEWAY_RSP)->IpAddress ); } \ +} +#else +#define mOCTVC1_NET_MSG_LINK_ADD_GATEWAY_RSP_SWAP( pOCTVC1_NET_MSG_LINK_ADD_GATEWAY_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_CMD_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_CMD * pOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_CMD *)pOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_CMD)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_CMD *)pOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_CMD)->hLink ); } \ + { mOCTVC1_IP_ADDRESS_SWAP( &((tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_CMD *)pOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_CMD)->IpAddress ); } \ +} +#else +#define mOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_CMD_SWAP( pOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_RSP_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_RSP * pOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_RSP *)pOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_RSP)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_RSP *)pOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_RSP)->hLink ); } \ + { mOCTVC1_IP_ADDRESS_SWAP( &((tOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_RSP *)pOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_RSP)->IpAddress ); } \ +} +#else +#define mOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_RSP_SWAP( pOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_LINK_INFO_GATEWAY_CMD_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_LINK_INFO_GATEWAY_CMD * pOCTVC1_NET_MSG_LINK_INFO_GATEWAY_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_LINK_INFO_GATEWAY_CMD *)pOCTVC1_NET_MSG_LINK_INFO_GATEWAY_CMD)->Header ); } \ + { mOCTVC1_NET_IP_CURSOR_SWAP( &((tOCTVC1_NET_MSG_LINK_INFO_GATEWAY_CMD *)pOCTVC1_NET_MSG_LINK_INFO_GATEWAY_CMD)->GatewayGet ); } \ +} +#else +#define mOCTVC1_NET_MSG_LINK_INFO_GATEWAY_CMD_SWAP( pOCTVC1_NET_MSG_LINK_INFO_GATEWAY_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_LINK_INFO_GATEWAY_RSP_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_LINK_INFO_GATEWAY_RSP * pOCTVC1_NET_MSG_LINK_INFO_GATEWAY_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_LINK_INFO_GATEWAY_RSP *)pOCTVC1_NET_MSG_LINK_INFO_GATEWAY_RSP)->Header ); } \ + { mOCTVC1_NET_IP_CURSOR_SWAP( &((tOCTVC1_NET_MSG_LINK_INFO_GATEWAY_RSP *)pOCTVC1_NET_MSG_LINK_INFO_GATEWAY_RSP)->GatewayGet ); } \ +} +#else +#define mOCTVC1_NET_MSG_LINK_INFO_GATEWAY_RSP_SWAP( pOCTVC1_NET_MSG_LINK_INFO_GATEWAY_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD * pOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD *)pOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD *)pOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD)->hLink ); } \ + { mOCTVC1_NET_LINK_IPV6_PREFIX_SWAP( &((tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD *)pOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD)->IPv6Prefix ); } \ + ((tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD *)pOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD)->ulOnLinkFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD *)pOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD)->ulOnLinkFlag); \ + ((tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD *)pOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD)->ulAddrAutoConfigFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD *)pOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD)->ulAddrAutoConfigFlag); \ + ((tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD *)pOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD)->ulValidLifetimeSec = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD *)pOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD)->ulValidLifetimeSec); \ + ((tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD *)pOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD)->ulPreferredLifetimeSec = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD *)pOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD)->ulPreferredLifetimeSec); \ +} +#else +#define mOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD_SWAP( pOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_RSP_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_RSP * pOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_RSP *)pOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_RSP)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_RSP *)pOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_RSP)->hLink ); } \ + { mOCTVC1_NET_LINK_IPV6_PREFIX_SWAP( &((tOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_RSP *)pOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_RSP)->IPv6Prefix ); } \ +} +#else +#define mOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_RSP_SWAP( pOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_CMD_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_CMD * pOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_CMD *)pOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_CMD)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_CMD *)pOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_CMD)->hLink ); } \ + { mOCTVC1_NET_LINK_IPV6_PREFIX_SWAP( &((tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_CMD *)pOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_CMD)->IPv6Prefix ); } \ +} +#else +#define mOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_CMD_SWAP( pOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_RSP_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_RSP * pOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_RSP *)pOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_RSP)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_RSP *)pOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_RSP)->hLink ); } \ + { mOCTVC1_NET_LINK_IPV6_PREFIX_SWAP( &((tOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_RSP *)pOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_RSP)->IPv6Prefix ); } \ +} +#else +#define mOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_RSP_SWAP( pOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_CMD_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_CMD * pOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_CMD *)pOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_CMD)->Header ); } \ + { mOCTVC1_NET_IPV6_PREFIX_CURSOR_SWAP( &((tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_CMD *)pOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_CMD)->IPv6PrefixGet ); } \ +} +#else +#define mOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_CMD_SWAP( pOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_RSP_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_RSP * pOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_RSP *)pOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_RSP)->Header ); } \ + { mOCTVC1_NET_IPV6_PREFIX_CURSOR_SWAP( &((tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_RSP *)pOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_RSP)->IPv6PrefixGet ); } \ + { mOCTVC1_NET_LINK_IPV6_PREFIX_INFO_SWAP( &((tOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_RSP *)pOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_RSP)->IPv6PrefixInfo ); } \ +} +#else +#define mOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_RSP_SWAP( pOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD * pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD)->hRtpSession ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD)->hTerm ); } \ + { tOCT_UINT32 jOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD; \ + for( jOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD=0; \ + jOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD<(cOCTVC1_NET_RTP_MEMBER_MAX_STREAM);jOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD++ ) \ + { mOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD)->aStream[jOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD] ); }} \ + ((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD)->ulLocalForcedRtpParmMask = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD)->ulLocalForcedRtpParmMask); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD)->ulLocalForcedSsrc = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD)->ulLocalForcedSsrc); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD)->ulLocalForcedInitialSeqNumber = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD)->ulLocalForcedInitialSeqNumber); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD)->ulNumRtpProfEntry = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD)->ulNumRtpProfEntry); \ + { tOCT_UINT32 jOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD; \ + for( jOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD=0; \ + jOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD<(cOCTVC1_NET_MAX_RTP_PROFILE_ENTRY);jOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD++ ) \ + { mOCTVC1_NET_RTP_PROFILE_ENTRY_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD)->aRtpProfEntry[jOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD] ); }} \ + ((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD)->ulLocalCnameByteLength = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD)->ulLocalCnameByteLength); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD)->ulRemoteCnameByteLength = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD)->ulRemoteCnameByteLength); \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_RSP_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_RSP * pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_RSP)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_RSP)->hRtpSession ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_RSP)->ulLocalMemberId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_RSP)->ulLocalMemberId); \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_RSP_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD * pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD)->hRtpSession ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD)->ulLocalMemberId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD)->ulLocalMemberId); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD)->ulModifyMask = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD)->ulModifyMask); \ + { tOCT_UINT32 jOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD; \ + for( jOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD=0; \ + jOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD<(cOCTVC1_NET_RTP_MEMBER_MAX_STREAM);jOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD++ ) \ + { mOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_MODIFY_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD)->aStream[jOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD] ); }} \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD)->ulLocalCnameByteLength = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD)->ulLocalCnameByteLength); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD)->ulRemoteCnameByteLength = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD)->ulRemoteCnameByteLength); \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_RSP_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_RSP * pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_RSP)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_RSP)->hRtpSession ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_RSP)->ulLocalMemberId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_RSP)->ulLocalMemberId); \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_RSP_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_CMD_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_CMD * pOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_CMD)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_CMD)->SubObjectIdGet ); } \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_CMD_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP * pOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP)->Header ); } \ + { mOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP)->SubObjectIdGet ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP)->ulOperationMode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP)->ulOperationMode); \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP)->hTerm ); } \ + { tOCT_UINT32 jOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP; \ + for( jOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP=0; \ + jOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP<(cOCTVC1_NET_RTP_MEMBER_MAX_STREAM);jOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP++ ) \ + { mOCTVC1_NET_CUSTOM_MEMBER_IPUDP_STREAM_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP)->aStream[jOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP] ); }} \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP)->ulNumRtpProfEntry = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP)->ulNumRtpProfEntry); \ + { tOCT_UINT32 jOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP; \ + for( jOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP=0; \ + jOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP<(cOCTVC1_NET_MAX_RTP_PROFILE_ENTRY);jOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP++ ) \ + { mOCTVC1_NET_RTP_PROFILE_ENTRY_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP)->aRtpProfEntry[jOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP] ); }} \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP)->ulLocalCnameByteLength = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP)->ulLocalCnameByteLength); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP)->ulRemoteCnameByteLength = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP)->ulRemoteCnameByteLength); \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD * pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->hLocalHost ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulRtpEventMask = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulRtpEventMask); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulRtcpEventMask = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulRtcpEventMask); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulSrtpEventMask = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulSrtpEventMask); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulUserEventId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulUserEventId); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulInitialOperationMode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulInitialOperationMode); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulSenderMaxPendingTimeSec = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulSenderMaxPendingTimeSec); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulSenderMaxInactiveTimeSec = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulSenderMaxInactiveTimeSec); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulRtcpEnableFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulRtcpEnableFlag); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulRtcpVideoFeedbackEnableFlagMask = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulRtcpVideoFeedbackEnableFlagMask); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulRtpSessionBandwidth = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulRtpSessionBandwidth); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulHighFractionLost = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulHighFractionLost); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulHighCumulativePacketLost = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulHighCumulativePacketLost); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulHighJitter = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulHighJitter); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulHighRoundTripTime = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulHighRoundTripTime); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulLowFractionLost = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulLowFractionLost); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulLowJitter = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulLowJitter); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulLowRoundTripTime = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulLowRoundTripTime); \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->hEventDestObj ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulEventDestObjPort = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulEventDestObjPort); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulEventDestObjFifoId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD)->ulEventDestObjFifoId); \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_OPEN_CMD ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_OPEN_RSP_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_OPEN_RSP * pOCTVC1_NET_MSG_RTP_SESSION_OPEN_RSP = (_f_pParms); \ + { mOCTVC1_MSG_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_RSP)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_RSP)->hRtpSession ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_RSP)->ulFifoId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_OPEN_RSP *)pOCTVC1_NET_MSG_RTP_SESSION_OPEN_RSP)->ulFifoId); \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_OPEN_RSP_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_OPEN_RSP ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#ifdef __cplusplus +} + +#endif + +#endif /* __OCTVC1_NET_API_SWAP_H__ */ diff --git a/software/include/vocallo/net/octvc1_net_default.h b/software/include/vocallo/net/octvc1_net_default.h new file mode 100644 index 0000000..b265928 --- /dev/null +++ b/software/include/vocallo/net/octvc1_net_default.h @@ -0,0 +1,2774 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_NET_DEFAULT.h + +$Octasic_Copyright: $ + +Description: Contains the event definition of the NET API. + +$Octasic_Confidentiality: $ + +$Octasic_Release: $ + +$Octasic_Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_NET_DEFAULT_H__ +#define __OCTVC1_NET_DEFAULT_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "octvc1_net_api.h" + +/***************************** COMMAND DEFAULT *****************************/ + +/*-------------------------------------------------------------------------- + tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_CMD +----------------------------------------------------------------------------*/ +#ifdef OCTVC1_OPT_DECLARE_DEFAULTS + +const tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_CMD buf_tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_CMD = +{ + { /* Header */ + ((sizeof(tOCTVC1_NET_MSG_RTP_SESSION_CLOSE_CMD)<Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT)->hRtpSession ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT)->ulMemberId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT)->ulMemberId); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT)->ulPktType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT)->ulPktType); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT)->ulPktByteLength = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT)->ulPktByteLength); \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT * pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT)->hRtpSession ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT)->ulMemberId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT)->ulMemberId); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT)->ulCnameLength = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT)->ulCnameLength); \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT * pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT)->hRtpSession ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT)->ulMemberId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT)->ulMemberId); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT)->ulLocalFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT)->ulLocalFlag); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT)->ulPreviousSsrc = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT)->ulPreviousSsrc); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT)->ulNewSsrc = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT)->ulNewSsrc); \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT * pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT)->hRtpSession ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT)->ulMemberId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT)->ulMemberId); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT)->ulLocalFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT)->ulLocalFlag); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT)->ulRoundTripTime = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT)->ulRoundTripTime); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT)->ulMaxRoundTripTime = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT)->ulMaxRoundTripTime); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT)->ulAverageRoundTripTime = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT)->ulAverageRoundTripTime); \ + { mOCTVC1_NET_RTCP_RECEIVER_STATS_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT)->StatsReceiver ); } \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT * pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT)->hRtpSession ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT)->ulMemberId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT)->ulMemberId); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT)->ulLocalFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT)->ulLocalFlag); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT)->ulPreviousSenderState = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT)->ulPreviousSenderState); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT)->ulNewSenderState = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT)->ulNewSenderState); \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT * pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT)->hRtpSession ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT)->ulMemberId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT)->ulMemberId); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT)->ulRemoteAddress = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT)->ulRemoteAddress); \ + { mOCTVC1_UDP_ADDRESS_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT)->RemoteUdpAddress ); } \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT * pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT)->hRtpSession ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT)->ulMemberId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT)->ulMemberId); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT)->ulSrtpStreamType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT)->ulSrtpStreamType); \ + { mOCTVC1_NET_SRTP_KEY_ENTRY_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT)->ActiveSrtpKey ); } \ + { tOCT_UINT32 iOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT; \ + for( iOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT=0; \ + iOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT<(2);iOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT++ ) \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT)->aulSrtpPacketCnt[iOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT] = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT)->aulSrtpPacketCnt[iOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT]);}\ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT)->ulSrtcpPacketCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT)->ulSrtcpPacketCnt); \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT * pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT)->hRtpSession ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT)->ulMemberId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT)->ulMemberId); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT)->ulSrtpStreamType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT)->ulSrtpStreamType); \ + { mOCTVC1_NET_SRTP_KEY_ENTRY_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT)->ActiveSrtpKey ); } \ + { tOCT_UINT32 iOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT; \ + for( iOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT=0; \ + iOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT<(2);iOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT++ ) \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT)->aulSrtpPacketCnt[iOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT] = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT)->aulSrtpPacketCnt[iOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT]);}\ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT)->ulSrtcpPacketCnt = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT)->ulSrtcpPacketCnt); \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT * pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT)->hRtpSession ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT)->ulMemberId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT)->ulMemberId); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT)->ulSrtpStreamType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT)->ulSrtpStreamType); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT)->ulKeyChangeReason = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT)->ulKeyChangeReason); \ + { mOCTVC1_NET_SRTP_KEY_ENTRY_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT)->ActiveSrtpKey ); } \ + { mOCTVC1_NET_SRTP_KEY_ENTRY_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT)->PreviousSrtpKey ); } \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT * pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT)->hRtpSession ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT)->ulMemberId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT)->ulMemberId); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT)->ulSrtpStreamType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT)->ulSrtpStreamType); \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT * pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT)->hRtpSession ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT)->ulMemberId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT)->ulMemberId); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT)->ulSrtpStreamType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT)->ulSrtpStreamType); \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT * pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT)->hRtpSession ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT)->ulMemberId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT)->ulMemberId); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT)->ulSrtpStreamType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT)->ulSrtpStreamType); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT)->ulUnknownMkiByteSize = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT)->ulUnknownMkiByteSize); \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT * pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT)->hRtpSession ); } \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT)->ulMemberId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT)->ulMemberId); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT)->ulSrtpStreamType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT)->ulSrtpStreamType); \ + ((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT)->ulSsrc = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT *)pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT)->ulSsrc); \ +} +#else +#define mOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT_SWAP( pOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT * pOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT *)pOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT *)pOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT)->hLocalHost ); } \ + { mOCTVC1_IP_ADDRESS_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT *)pOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT)->RemoteIpAddr ); } \ + ((tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT *)pOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT)->ulAlarmType = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT *)pOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT)->ulAlarmType); \ + ((tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT *)pOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT)->ulAlarmCode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT *)pOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT)->ulAlarmCode); \ + ((tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT *)pOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT)->ulPktHeaderByteLength = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT *)pOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT)->ulPktHeaderByteLength); \ +} +#else +#define mOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT_SWAP( pOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT * pOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT *)pOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT *)pOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT)->hLocalHost ); } \ + ((tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT *)pOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT)->ulRedirectCode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT *)pOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT)->ulRedirectCode); \ + { mOCTVC1_IP_ADDRESS_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT *)pOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT)->NewGatewayIpAddress ); } \ + { mOCTVC1_IP_ADDRESS_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT *)pOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT)->PrevGatewayIpAddress ); } \ + { mOCTVC1_IP_ADDRESS_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT *)pOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT)->DestinationIpAddress ); } \ +} +#else +#define mOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT_SWAP( pOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT * pOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT *)pOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT *)pOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT)->hLink ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT *)pOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT)->hLocalHost ); } \ + { mOCTVC1_IP_ADDRESS_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT *)pOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT)->IpAddress ); } \ + ((tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT *)pOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT)->ulAddrAutoConfigFlag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT *)pOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT)->ulAddrAutoConfigFlag); \ + ((tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT *)pOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT)->ulPreviousAddrStatus = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT *)pOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT)->ulPreviousAddrStatus); \ + ((tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT *)pOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT)->ulNewAddrStatus = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT *)pOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT)->ulNewAddrStatus); \ + ((tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT *)pOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT)->ulStatusChangeCause = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT *)pOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT)->ulStatusChangeCause); \ +} +#else +#define mOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT_SWAP( pOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT * pOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT *)pOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT *)pOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT)->hLocalHost ); } \ + { mOCTVC1_IP_ADDRESS_SWAP( &((tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT *)pOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT)->IpAddress ); } \ + ((tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT *)pOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT)->ulDuplicateSource = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT *)pOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT)->ulDuplicateSource); \ +} +#else +#define mOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT_SWAP( pOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT_SWAP( _f_pParms ){ tOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT * pOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT = (_f_pParms); \ + { mOCTVC1_EVENT_HEADER_SWAP( &((tOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT *)pOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT)->Header ); } \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT *)pOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT)->hEthLink ); } \ + { mOCTVC1_IP_ADDRESS_SWAP( &((tOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT *)pOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT)->IpAddress ); } \ + ((tOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT *)pOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT)->ulPreviousStatus = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT *)pOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT)->ulPreviousStatus); \ + ((tOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT *)pOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT)->ulNewStatus = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT *)pOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT)->ulNewStatus); \ +} +#else +#define mOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT_SWAP( pOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EVT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#ifdef __cplusplus +} + +#endif + +#endif /* __OCTVC1_NET_EVT_SWAP_H__ */ diff --git a/software/include/vocallo/net/octvc1_net_id.h b/software/include/vocallo/net/octvc1_net_id.h new file mode 100644 index 0000000..f063962 --- /dev/null +++ b/software/include/vocallo/net/octvc1_net_id.h @@ -0,0 +1,90 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_NET_ID.h + +$Octasic_Copyright: $ + +Description: Contains the identifiers for the NET API. + +$Octasic_Confidentiality: $ + +$Octasic_Release: $ + +$Octasic_Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_NET_ID_H__ +#define __OCTVC1_NET_ID_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "../octvc1_base.h" + +/**************************************************************************** + Command IDs + ****************************************************************************/ +#define cOCTVC1_NET_MSG_RTP_SESSION_CLOSE_CID ( 0x001 + cOCTVC1_NET_CID_BASE ) +#define cOCTVC1_NET_MSG_RTP_SESSION_INFO_CID ( 0x002 + cOCTVC1_NET_CID_BASE ) +#define cOCTVC1_NET_MSG_RTP_SESSION_PAUSE_RTCP_CID ( 0x003 + cOCTVC1_NET_CID_BASE ) +#define cOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CID ( 0x004 + cOCTVC1_NET_CID_BASE ) +#define cOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_MEMBER_CID ( 0x005 + cOCTVC1_NET_CID_BASE ) +#define cOCTVC1_NET_MSG_RTP_SESSION_DEACTIVATE_MEMBER_CID ( 0x006 + cOCTVC1_NET_CID_BASE ) +#define cOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_CID ( 0x007 + cOCTVC1_NET_CID_BASE ) +#define cOCTVC1_NET_MSG_RTP_SESSION_PAUSE_MEMBER_CID ( 0x008 + cOCTVC1_NET_CID_BASE ) +#define cOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_CID ( 0x009 + cOCTVC1_NET_CID_BASE ) +#define cOCTVC1_NET_MSG_RTP_SESSION_CONNECT_MEMBER_CID ( 0x00A + cOCTVC1_NET_CID_BASE ) +#define cOCTVC1_NET_MSG_RTP_SESSION_DISCONNECT_MEMBER_CID ( 0x00B + cOCTVC1_NET_CID_BASE ) +#define cOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_LOCAL_CID ( 0x00C + cOCTVC1_NET_CID_BASE ) +#define cOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_REMOTE_CID ( 0x00D + cOCTVC1_NET_CID_BASE ) +#define cOCTVC1_NET_MSG_RTP_SESSION_STATS_CID ( 0x00E + cOCTVC1_NET_CID_BASE ) +#define cOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_SRTP_KEY_LIST_CID ( 0x00F + cOCTVC1_NET_CID_BASE ) +#define cOCTVC1_NET_MSG_RTP_SESSION_INFO_MEMBER_SRTP_CID ( 0x010 + cOCTVC1_NET_CID_BASE ) +#define cOCTVC1_NET_MSG_RTP_SESSION_STATS_MEMBER_SRTP_CID ( 0x011 + cOCTVC1_NET_CID_BASE ) +#define cOCTVC1_NET_MSG_RTP_SESSION_MODIFY_MEMBER_RTP_PROFILE_ENTRY_CID ( 0x012 + cOCTVC1_NET_CID_BASE ) +#define cOCTVC1_NET_MSG_LOCAL_HOST_OPEN_CID ( 0x01B + cOCTVC1_NET_CID_BASE ) +#define cOCTVC1_NET_MSG_LOCAL_HOST_CLOSE_CID ( 0x01C + cOCTVC1_NET_CID_BASE ) +#define cOCTVC1_NET_MSG_LOCAL_HOST_INFO_CID ( 0x01D + cOCTVC1_NET_CID_BASE ) +#define cOCTVC1_NET_MSG_LOCAL_HOST_SEND_ICMP_PING_CID ( 0x01E + cOCTVC1_NET_CID_BASE ) +#define cOCTVC1_NET_MSG_LOCAL_HOST_START_ADDR_VALIDATE_CID ( 0x01F + cOCTVC1_NET_CID_BASE ) +#define cOCTVC1_NET_MSG_LOCAL_HOST_STATS_CID ( 0x020 + cOCTVC1_NET_CID_BASE ) +#define cOCTVC1_NET_MSG_LINK_ADD_GATEWAY_CID ( 0x028 + cOCTVC1_NET_CID_BASE ) +#define cOCTVC1_NET_MSG_LINK_REMOVE_GATEWAY_CID ( 0x029 + cOCTVC1_NET_CID_BASE ) +#define cOCTVC1_NET_MSG_LINK_INFO_GATEWAY_CID ( 0x02A + cOCTVC1_NET_CID_BASE ) +#define cOCTVC1_NET_MSG_LINK_ADD_IPV6_PREFIX_CID ( 0x02B + cOCTVC1_NET_CID_BASE ) +#define cOCTVC1_NET_MSG_LINK_REMOVE_IPV6_PREFIX_CID ( 0x02C + cOCTVC1_NET_CID_BASE ) +#define cOCTVC1_NET_MSG_LINK_INFO_IPV6_PREFIX_CID ( 0x02D + cOCTVC1_NET_CID_BASE ) +#define cOCTVC1_NET_MSG_RTP_SESSION_ACTIVATE_CUSTOM_MEMBER_IPUDP_CID ( 0x03B + cOCTVC1_NET_CID_BASE ) +#define cOCTVC1_NET_MSG_RTP_SESSION_MODIFY_CUSTOM_MEMBER_IPUDP_CID ( 0x03C + cOCTVC1_NET_CID_BASE ) +#define cOCTVC1_NET_MSG_RTP_SESSION_INFO_CUSTOM_MEMBER_IPUDP_CID ( 0x03D + cOCTVC1_NET_CID_BASE ) +#define cOCTVC1_NET_MSG_RTP_SESSION_OPEN_CID ( 0x0FF + cOCTVC1_NET_CID_BASE ) + +#define cOCTVC1_NET_CID_MAX (( 0x0FF + 1 ) & 0xFFF) + +/**************************************************************************** + Event IDs + ****************************************************************************/ +#define cOCTVC1_NET_MSG_LOCAL_HOST_ICMP_ALARM_EID ( 0x0001 + cOCTVC1_NET_EID_BASE ) +#define cOCTVC1_NET_MSG_LOCAL_HOST_ICMP_REDIRECT_EID ( 0x0002 + cOCTVC1_NET_EID_BASE ) +#define cOCTVC1_NET_MSG_LOCAL_HOST_ADDR_STATUS_CHANGE_EID ( 0x0003 + cOCTVC1_NET_EID_BASE ) +#define cOCTVC1_NET_MSG_LOCAL_HOST_ADDR_DUPLICATE_FOUND_EID ( 0x0004 + cOCTVC1_NET_EID_BASE ) +#define cOCTVC1_NET_MSG_RTP_SESSION_MEMBER_REMOTE_AUTO_DETECT_EID ( 0x0009 + cOCTVC1_NET_EID_BASE ) +#define cOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_REMOTE_DETECTED_EID ( 0x0010 + cOCTVC1_NET_EID_BASE ) +#define cOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_RECEIVER_ALARM_EID ( 0x0011 + cOCTVC1_NET_EID_BASE ) +#define cOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SSRC_CHANGE_EID ( 0x0012 + cOCTVC1_NET_EID_BASE ) +#define cOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_SENDER_STATE_CHANGE_EID ( 0x0013 + cOCTVC1_NET_EID_BASE ) +#define cOCTVC1_NET_MSG_RTP_SESSION_MEMBER_RTCP_PKT_EID ( 0x0014 + cOCTVC1_NET_EID_BASE ) +#define cOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_RE_KEY_THRESHOLD_REACHED_EID ( 0x0020 + cOCTVC1_NET_EID_BASE ) +#define cOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_EXPIRED_EID ( 0x0021 + cOCTVC1_NET_EID_BASE ) +#define cOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_MASTER_KEY_CHANGE_DETECTED_EID ( 0x0022 + cOCTVC1_NET_EID_BASE ) +#define cOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_REPLAY_ATTACK_DETECTED_EID ( 0x0023 + cOCTVC1_NET_EID_BASE ) +#define cOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNAUTH_PKT_DETECTED_EID ( 0x0024 + cOCTVC1_NET_EID_BASE ) +#define cOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_UNKNOWN_MKI_RECEIVED_EID ( 0x0025 + cOCTVC1_NET_EID_BASE ) +#define cOCTVC1_NET_MSG_RTP_SESSION_MEMBER_SRTP_SSRC_VIOLATION_DETECTED_EID ( 0x0026 + cOCTVC1_NET_EID_BASE ) +#define cOCTVC1_NET_MSG_LINK_GATEWAY_STATUS_CHANGE_EID ( 0x0040 + cOCTVC1_NET_EID_BASE ) + +#define cOCTVC1_NET_EID_MAX (( 0x0040 + 1 ) & 0xFFFF) + + +#endif /* __OCTVC1_NET_ID_H__ */ + diff --git a/software/include/vocallo/net/octvc1_net_rc.h b/software/include/vocallo/net/octvc1_net_rc.h new file mode 100644 index 0000000..6042a4f --- /dev/null +++ b/software/include/vocallo/net/octvc1_net_rc.h @@ -0,0 +1,354 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_NET_RC.h + +$Octasic_Copyright: $ + +Description: Contains the return codes for the NET API. + +$Octasic_Confidentiality: $ + +$Octasic_Release: $ + +$Octasic_Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef OCTVC1_NET_RC_H__ +#define OCTVC1_NET_RC_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "../octvc1_base.h" +#include "../octvc1_generic_rc.h" + +/**************************************************************************** + NET return codes + ****************************************************************************/ + +/**************************************************************************** + RTP_SESSION return codes + RTP Session related return code + ****************************************************************************/ +#define cOCTVC1_NET_RTP_SESSION_RC_BASE ( 0x0100 + cOCTVC1_NET_RC_BASE ) + +#define cOCTVC1_NET_RC_RTP_SESSION_INDEX ( 0x0001 + cOCTVC1_NET_RTP_SESSION_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_SESSION_RTCP_ENABLE_FLAG ( 0x0002 + cOCTVC1_NET_RTP_SESSION_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_SESSION_RTCP_DISABLED ( 0x0003 + cOCTVC1_NET_RTP_SESSION_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_SESSION_OPEN_MAX_REACHED ( 0x0004 + cOCTVC1_NET_RTP_SESSION_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_SESSION_LOW_RTT ( 0x0005 + cOCTVC1_NET_RTP_SESSION_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_SESSION_LOW_JITTER ( 0x0006 + cOCTVC1_NET_RTP_SESSION_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_SESSION_LOW_FRACTION_LOST ( 0x0007 + cOCTVC1_NET_RTP_SESSION_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_SESSION_BANDWIDTH ( 0x0008 + cOCTVC1_NET_RTP_SESSION_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_SESSION_PART_RX_ALREADY_IN_USE ( 0x0009 + cOCTVC1_NET_RTP_SESSION_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_SESSION_MEMBER_ID ( 0x000A + cOCTVC1_NET_RTP_SESSION_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_SESSION_MAX_PARTICIPANT ( 0x000B + cOCTVC1_NET_RTP_SESSION_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_SESSION_LOCAL_HOST_DAD ( 0x000C + cOCTVC1_NET_RTP_SESSION_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_SESSION_RTCP_FB_MSG_WITHOUT_RTCP ( 0x000D + cOCTVC1_NET_RTP_SESSION_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_SESSION_OPERATION_MODE ( 0x000E + cOCTVC1_NET_RTP_SESSION_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_SESSION_REMOTE_IP_INVALID ( 0x000F + cOCTVC1_NET_RTP_SESSION_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_SESSION_MAX_PENDING_TIME ( 0x0010 + cOCTVC1_NET_RTP_SESSION_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_SESSION_MAX_INACTIVE_TIME ( 0x0011 + cOCTVC1_NET_RTP_SESSION_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_SESSION_LOCAL_HOST_ADDRESS_INVALID ( 0x0012 + cOCTVC1_NET_RTP_SESSION_RC_BASE ) + +/**************************************************************************** + RTP_MEMBER return codes + ****************************************************************************/ +#define cOCTVC1_NET_RTP_MEMBER_RC_BASE ( 0x0200 + cOCTVC1_NET_RC_BASE ) + +#define cOCTVC1_NET_RC_RTP_MEMBER_ACTIVATE_CNAME_LENGTH ( 0x0001 + cOCTVC1_NET_RTP_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_ACTIVATE_ALLOC ( 0x0002 + cOCTVC1_NET_RTP_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_INVALID_DSP_TERM ( 0x0003 + cOCTVC1_NET_RTP_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_PAUSE_FLAG ( 0x0004 + cOCTVC1_NET_RTP_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_DSP_TERM_IN_USE ( 0x0005 + cOCTVC1_NET_RTP_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_ACTIVATE_CPP_MAX_REACHED ( 0x0006 + cOCTVC1_NET_RTP_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_LOCAL_UDP_PORT_INVALID ( 0x0007 + cOCTVC1_NET_RTP_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_LOCAL_UDP_PORT_T38 ( 0x0008 + cOCTVC1_NET_RTP_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_DSP_TERM_GROUPED_WITH_T38 ( 0x0009 + cOCTVC1_NET_RTP_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_LOCAL_UDP_PORT_RTP_RTCP_EQUAL ( 0x000A + cOCTVC1_NET_RTP_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_REMOTE_RTP_IP_VERSION ( 0x000B + cOCTVC1_NET_RTP_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_REMOTE_RTCP_IP_VERSION ( 0x000C + cOCTVC1_NET_RTP_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_REMOTE_T38_IP_VERSION ( 0x000D + cOCTVC1_NET_RTP_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_MODIFY_CNAME_LENGTH ( 0x000E + cOCTVC1_NET_RTP_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_UNIDIR_DSP_TERM_IS_GROUPED ( 0x000F + cOCTVC1_NET_RTP_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_ALREADY_CONNECTED ( 0x0010 + cOCTVC1_NET_RTP_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_REMOTE_AUTO_DETECT ( 0x0011 + cOCTVC1_NET_RTP_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_RTP_PROFILE_NUM_ENTRY ( 0x0012 + cOCTVC1_NET_RTP_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_RTP_PROFILE_DUPLICATED_ENTRY ( 0x0013 + cOCTVC1_NET_RTP_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_RTP_PROFILE_ENTRY_NOT_FOUND ( 0x0014 + cOCTVC1_NET_RTP_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_RTP_PROFILE_ENTRY_MODIFY_TYPE ( 0x0015 + cOCTVC1_NET_RTP_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_INCOMPATIBLE_WITH_THIS_CMD ( 0x0016 + cOCTVC1_NET_RTP_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_CUSTOM_LOCAL_HOST_NOT_SUPPORTED ( 0x0017 + cOCTVC1_NET_RTP_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_MULTIPLE_UNICAST_SRTP_NOT_ALLOWED ( 0x0018 + cOCTVC1_NET_RTP_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_MULTIPLE_UNICAST_VIDEO_NOT_ENABLED_IN_CONFIG_FILE ( 0x0019 + cOCTVC1_NET_RTP_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_MULTIPLE_UNICAST_MAX_CONNECTED_REACHED ( 0x0020 + cOCTVC1_NET_RTP_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_MULTIPLE_UNICAST_UNSUPPORTED_TERM ( 0x0021 + cOCTVC1_NET_RTP_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_MULTIPLE_UNICAST_FORCED_SEQ_NOT_ALLOWED ( 0x0022 + cOCTVC1_NET_RTP_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_MULTIPLE_UNICAST_RTCP_TRANSLATOR_NOT_ALLOWED ( 0x0023 + cOCTVC1_NET_RTP_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_CANNOT_MODIFY_DISABLED_STREAM ( 0x0024 + cOCTVC1_NET_RTP_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_DHCP_PORT_CANNOT_BE_USED ( 0x0025 + cOCTVC1_NET_RTP_MEMBER_RC_BASE ) + +/**************************************************************************** + RTP_MEMBER_SRTP_STREAM return codes + ****************************************************************************/ +#define cOCTVC1_NET_RTP_MEMBER_SRTP_STREAM_RC_BASE ( 0x0240 + cOCTVC1_NET_RC_BASE ) + +#define cOCTVC1_NET_RC_RTP_MEMBER_SRTP_STREAM_CRYPTO_TRANSFORM_INVALID ( 0x0001 + cOCTVC1_NET_RTP_MEMBER_SRTP_STREAM_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_SRTP_STREAM_AUTH_TRANSFORM_INVALID ( 0x0002 + cOCTVC1_NET_RTP_MEMBER_SRTP_STREAM_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_SRTP_STREAM_AUTH_TAG_BIT_SIZE_INVALID ( 0x0003 + cOCTVC1_NET_RTP_MEMBER_SRTP_STREAM_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_SRTP_STREAM_MKI_BYTE_SIZE_INVALID ( 0x0004 + cOCTVC1_NET_RTP_MEMBER_SRTP_STREAM_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_SRTP_STREAM_SESSION_CRYPTO_KEY_BIT_SIZE_INVALID ( 0x0005 + cOCTVC1_NET_RTP_MEMBER_SRTP_STREAM_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_SRTP_STREAM_SESSION_SALT_KEY_BIT_SIZE_INVALID ( 0x0006 + cOCTVC1_NET_RTP_MEMBER_SRTP_STREAM_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_SRTP_STREAM_SESSION_AUTH_KEY_BIT_SIZE_INVALID ( 0x0007 + cOCTVC1_NET_RTP_MEMBER_SRTP_STREAM_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_SRTP_STREAM_SERVICE_MASK_INVALID ( 0x0008 + cOCTVC1_NET_RTP_MEMBER_SRTP_STREAM_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_SRTP_STREAM_UNSUPORTED_TERMINATION ( 0x0009 + cOCTVC1_NET_RTP_MEMBER_SRTP_STREAM_RC_BASE ) + +/**************************************************************************** + RTP_MEMBER_SRTP_KEY_ENTRY return codes + ****************************************************************************/ +#define cOCTVC1_NET_RTP_MEMBER_SRTP_KEY_ENTRY_RC_BASE ( 0x0250 + cOCTVC1_NET_RC_BASE ) + +#define cOCTVC1_NET_RC_RTP_MEMBER_SRTP_KEY_ENTRY_MASTER_KEY_BIT_SIZE_INVALID ( 0x0001 + cOCTVC1_NET_RTP_MEMBER_SRTP_KEY_ENTRY_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_SRTP_KEY_ENTRY_MASTER_SALT_KEY_BIT_SIZE_INVALID ( 0x0002 + cOCTVC1_NET_RTP_MEMBER_SRTP_KEY_ENTRY_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_SRTP_KEY_ENTRY_DERIVATION_RATE_LOG2_INVALID ( 0x0003 + cOCTVC1_NET_RTP_MEMBER_SRTP_KEY_ENTRY_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_SRTP_KEY_ENTRY_RTP_MAX_LIFE_TIME_INVALID ( 0x0004 + cOCTVC1_NET_RTP_MEMBER_SRTP_KEY_ENTRY_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_SRTP_KEY_ENTRY_RTP_FROM_LIFE_TIME_INVALID ( 0x0005 + cOCTVC1_NET_RTP_MEMBER_SRTP_KEY_ENTRY_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_SRTP_KEY_ENTRY_RTP_TO_LIFE_TIME_INVALID ( 0x0006 + cOCTVC1_NET_RTP_MEMBER_SRTP_KEY_ENTRY_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_SRTP_KEY_ENTRY_RTP_REKEY_THRESHOLD_INVALID ( 0x0007 + cOCTVC1_NET_RTP_MEMBER_SRTP_KEY_ENTRY_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_SRTP_KEY_ENTRY_RTCP_MAX_LIFE_TIME_INVALID ( 0x0008 + cOCTVC1_NET_RTP_MEMBER_SRTP_KEY_ENTRY_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_SRTP_KEY_ENTRY_RTCP_FROM_LIFE_TIME_INVALID ( 0x0009 + cOCTVC1_NET_RTP_MEMBER_SRTP_KEY_ENTRY_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_SRTP_KEY_ENTRY_RTCP_TO_LIFE_TIME_INVALID ( 0x000A + cOCTVC1_NET_RTP_MEMBER_SRTP_KEY_ENTRY_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_SRTP_KEY_ENTRY_RTCP_REKEY_THRESHOLD_INVALID ( 0x000B + cOCTVC1_NET_RTP_MEMBER_SRTP_KEY_ENTRY_RC_BASE ) + +/**************************************************************************** + RTP_MEMBER_SRTCP_STREAM return codes + ****************************************************************************/ +#define cOCTVC1_NET_RTP_MEMBER_SRTCP_STREAM_RC_BASE ( 0x0260 + cOCTVC1_NET_RC_BASE ) + +#define cOCTVC1_NET_RC_RTP_MEMBER_SRTCP_STREAM_SERVICE_MASK_INVALID ( 0x0001 + cOCTVC1_NET_RTP_MEMBER_SRTCP_STREAM_RC_BASE ) + +/**************************************************************************** + RTP_MEMBER_SRTP return codes + ****************************************************************************/ +#define cOCTVC1_NET_RTP_MEMBER_SRTP_RC_BASE ( 0x0270 + cOCTVC1_NET_RC_BASE ) + +#define cOCTVC1_NET_RC_RTP_MEMBER_SRTP_SENDER_KEY_ENTRY_NUM_INVALID ( 0x0001 + cOCTVC1_NET_RTP_MEMBER_SRTP_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_SRTP_SENDER_KEY_ENTRY_ACTIVE_IDX_INVALID ( 0x0002 + cOCTVC1_NET_RTP_MEMBER_SRTP_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_SRTP_RECEIVER_KEY_ENTRY_NUM_INVALID ( 0x0003 + cOCTVC1_NET_RTP_MEMBER_SRTP_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_SRTP_RECEIVER_KEY_ENTRY_ACTIVE_IDX_INVALID ( 0x0004 + cOCTVC1_NET_RTP_MEMBER_SRTP_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_MEMBER_SRTP_INACTIVE ( 0x0005 + cOCTVC1_NET_RTP_MEMBER_SRTP_RC_BASE ) + +/**************************************************************************** + RTP_MEMBER_RTCP_STATS return codes + ****************************************************************************/ +#define cOCTVC1_NET_RTP_MEMBER_RTCP_STATS_RC_BASE ( 0x0280 + cOCTVC1_NET_RC_BASE ) + +#define cOCTVC1_NET_RC_RTP_MEMBER_RTCP_STATS_NO_MORE_ENTRY ( 0x0001 + cOCTVC1_NET_RTP_MEMBER_RTCP_STATS_RC_BASE ) + +/**************************************************************************** + DEST_SET return codes + ****************************************************************************/ +#define cOCTVC1_NET_DEST_SET_RC_BASE ( 0x0300 + cOCTVC1_NET_RC_BASE ) + +#define cOCTVC1_NET_RC_DEST_SET_INVALID_PORT ( 0x0001 + cOCTVC1_NET_DEST_SET_RC_BASE ) +#define cOCTVC1_NET_RC_DEST_SET_ROUTING_ENTRY_NOT_FOUND ( 0x0002 + cOCTVC1_NET_DEST_SET_RC_BASE ) +#define cOCTVC1_NET_RC_DEST_SET_RESERVED_PORT ( 0x0003 + cOCTVC1_NET_DEST_SET_RC_BASE ) + +/**************************************************************************** + LOCAL_HOST return codes + ****************************************************************************/ +#define cOCTVC1_NET_LOCAL_HOST_RC_BASE ( 0x0400 + cOCTVC1_NET_RC_BASE ) + +#define cOCTVC1_NET_RC_LOCAL_HOST_CREATE_PORT_ALREADY_OPEN ( 0x0001 + cOCTVC1_NET_LOCAL_HOST_RC_BASE ) +#define cOCTVC1_NET_RC_LOCAL_HOST_CREATE_MAX_OBJECTS_REACHED ( 0x0002 + cOCTVC1_NET_LOCAL_HOST_RC_BASE ) +#define cOCTVC1_NET_RC_LOCAL_HOST_CREATE_ALLOC ( 0x0003 + cOCTVC1_NET_LOCAL_HOST_RC_BASE ) +#define cOCTVC1_NET_RC_LOCAL_HOST_ACTIVE_DEPENDENCIES ( 0x0004 + cOCTVC1_NET_LOCAL_HOST_RC_BASE ) +#define cOCTVC1_NET_RC_LOCAL_HOST_IP_VERSION_INVALID ( 0x0005 + cOCTVC1_NET_LOCAL_HOST_RC_BASE ) +#define cOCTVC1_NET_RC_LOCAL_HOST_IPV4_NOT_ENABLED_ON_LINK ( 0x0006 + cOCTVC1_NET_LOCAL_HOST_RC_BASE ) +#define cOCTVC1_NET_RC_LOCAL_HOST_IPV6_NOT_ENABLED_ON_LINK ( 0x0007 + cOCTVC1_NET_LOCAL_HOST_RC_BASE ) +#define cOCTVC1_NET_RC_LOCAL_HOST_EVENT_MASK_INVALID ( 0x0008 + cOCTVC1_NET_LOCAL_HOST_RC_BASE ) +#define cOCTVC1_NET_RC_LOCAL_HOST_EVENT_THROTTLE_INVALID ( 0x0009 + cOCTVC1_NET_LOCAL_HOST_RC_BASE ) +#define cOCTVC1_NET_RC_LOCAL_HOST_NOT_FOUND ( 0x000A + cOCTVC1_NET_LOCAL_HOST_RC_BASE ) +#define cOCTVC1_NET_RC_LOCAL_HOST_PAUSE_MEMBERS_ON_IPV6_ADDRESS_EXPIRATION ( 0x000B + cOCTVC1_NET_LOCAL_HOST_RC_BASE ) +#define cOCTVC1_NET_RC_LOCAL_HOST_PAUSE_MEMBERS_ON_DHCPV4_LEASE_RENEW_FAILURE ( 0x000C + cOCTVC1_NET_LOCAL_HOST_RC_BASE ) +#define cOCTVC1_NET_RC_LOCAL_HOST_ADDR_AUTO_CONFIG_FLAG_INVALID ( 0x000D + cOCTVC1_NET_LOCAL_HOST_RC_BASE ) +#define cOCTVC1_NET_RC_LOCAL_HOST_MUTE_ON_ADDR_EXPIRE_FLAG_INVALID ( 0x000E + cOCTVC1_NET_LOCAL_HOST_RC_BASE ) +#define cOCTVC1_NET_RC_LOCAL_HOST_ETH_LINK_AUTO_CONFIG_DISABLED ( 0x000F + cOCTVC1_NET_LOCAL_HOST_RC_BASE ) +#define cOCTVC1_NET_RC_LOCAL_HOST_ADDR_AUTO_CONFIG_MAX_IPV6_PREFIX_REACHED ( 0x0010 + cOCTVC1_NET_LOCAL_HOST_RC_BASE ) +#define cOCTVC1_NET_RC_LOCAL_HOST_ADDR_AUTO_CONFIG_MAX_IPV4_DHCP_REACHED ( 0x0011 + cOCTVC1_NET_LOCAL_HOST_RC_BASE ) + +/**************************************************************************** + ETH_LINK return codes + ****************************************************************************/ +#define cOCTVC1_NET_ETH_LINK_RC_BASE ( 0x0500 + cOCTVC1_NET_RC_BASE ) + +#define cOCTVC1_NET_RC_ETH_LINK_CACHE_ENTRY_NOT_FOUND ( 0x0001 + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_CACHE_ENTRY_ALLOC ( 0x0002 + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_CACHE_ENTRY_ALREADY_EXIST ( 0x0003 + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_CACHE_NO_MORE_FREE_ENTRY ( 0x0004 + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_IPV4_ARP_REFRESH_TIME_INVALID ( 0x0005 + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_IPV4_ARP_REPLY_TIME_INVALID ( 0x0006 + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_IPV4_ARP_UNUSED_TIME_INVALID ( 0x0007 + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_IPV4_ARP_REQ_CREATE_CNT_INVALID ( 0x0008 + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_IPV4_ARP_REFRESH_CNT_INVALID ( 0x0009 + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_IPV4_ARP_REFRESH_BROADCAST_CNT_INVALID ( 0x000A + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_IPV4_ARP_REFRESH_TOTAL_INVALID ( 0x000B + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_IPV4_GARP_REQUEST_CNT_INVALID ( 0x000C + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_IPV4_ENABLE_FLAG_INVALID ( 0x000D + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_IPV6_CREATE_LOOPBACK_ENTRY_FLAG_INVALID ( 0x000E + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_IPV6_ADDR_AUTOCONFIG_MODE_INVALID ( 0x0010 + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_IPV6_ND_BASE_REACHABLE_TIME_INVALID ( 0x0011 + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_IPV6_ND_RETRANS_TIME_INVALID ( 0x0012 + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_IPV6_ND_UNUSED_TIME_INVALID ( 0x0013 + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_IPV6_ND_SOLICIT_CREATE_CNT_INVALID ( 0x0014 + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_IPV6_ND_SOLICIT_PROBE_CNT_INVALID ( 0x0015 + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_IPV6_ND_SOLICIT_PROBE_MULTICAST_CNT_INVALID ( 0x0016 + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_IPV6_ND_SOLICIT_TOTAL_INVALID ( 0x0017 + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_IPV6_ND_SOLICIT_DUP_ADDR_CNT_INVALID ( 0x0018 + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_IPV6_ENABLE_FLAG_INVALID ( 0x0019 + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_CLOSE_WITH_ACTIVE_DEPENDENCIES ( 0x001A + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_OPEN_ETH_PORT_INVALID ( 0x001B + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_ETH_PORT_ALREADY_ACTIVE ( 0x001C + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_8021_PQ_DEFAULT_USER_ID_INVALID ( 0x001D + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_8021_PQ_VLAN_ID_INVALID ( 0x001E + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_8021_PQ_ENABLE_FLAG_INVALID ( 0x001F + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_IP_VERSION_INVALID ( 0x0020 + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_IP_VERSION_NOT_ENABLED ( 0x0021 + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_COULD_NOT_OPEN_LINK_LOCAL_HOST ( 0x0022 + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_COULD_NOT_CLOSE_LINK_LOCAL_HOST ( 0x0023 + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_COULD_NOT_OPEN_ALL_NODES_LOCAL_HOST ( 0x0024 + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_COULD_NOT_CLOSE_ALL_NODES_LOCAL_HOST ( 0x0025 + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_IPV6_NOT_ENOUGH_FREE_HOSTS ( 0x0026 + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_ENABLE_LOOPBACK_FLAG_INVALID ( 0x0027 + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_ENABLE_MAC_ADDR_RESOLUTION_FLAG_INVALID ( 0x0028 + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_ENABLE_ICMP_REDIRECT_FLAG_INVALID ( 0x0029 + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_IPV4_ARP_REQUEST_DUPLPICATE_ADDR_CNT_INVALID ( 0x002A + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_CACHE_ENTRY_HAS_DEPENDENCIES ( 0x002B + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_TX_PAUSE_FLAG_INVALID ( 0x002C + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_IPV6_ND_SOLICIT_ROUTER_CNT ( 0x002D + cOCTVC1_NET_ETH_LINK_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_IPV4_ADDR_AUTOCONFIG_MODE_INVALID ( 0x0034 + cOCTVC1_NET_ETH_LINK_RC_BASE ) + +/**************************************************************************** + ICMP_PING return codes + ****************************************************************************/ +#define cOCTVC1_NET_ICMP_PING_RC_BASE ( 0x0600 + cOCTVC1_NET_RC_BASE ) + +#define cOCTVC1_NET_RC_ICMP_PING_MAX_PENDING_PING_REACHED ( 0x0001 + cOCTVC1_NET_ICMP_PING_RC_BASE ) +#define cOCTVC1_NET_RC_ICMP_PING_PAYLOAD_LENGTH ( 0x0002 + cOCTVC1_NET_ICMP_PING_RC_BASE ) +#define cOCTVC1_NET_RC_ICMP_PING_NO_DEFAULT_GTW ( 0x0003 + cOCTVC1_NET_ICMP_PING_RC_BASE ) +#define cOCTVC1_NET_RC_ICMP_PING_LOCAL_HOST_DAD ( 0x0004 + cOCTVC1_NET_ICMP_PING_RC_BASE ) +#define cOCTVC1_NET_RC_ICMP_PING_NOT_ALLOWED ( 0x0005 + cOCTVC1_NET_ICMP_PING_RC_BASE ) +#define cOCTVC1_NET_RC_ICMP_PING_LOCAL_HOST_ADDRESS_INVALID ( 0x0006 + cOCTVC1_NET_ICMP_PING_RC_BASE ) + +/**************************************************************************** + GATEWAY return codes + ****************************************************************************/ +#define cOCTVC1_NET_GATEWAY_RC_BASE ( 0x0700 + cOCTVC1_NET_RC_BASE ) + +#define cOCTVC1_NET_RC_GATEWAY_MAX_ADDITIONS_REACHED ( 0x0001 + cOCTVC1_NET_GATEWAY_RC_BASE ) +#define cOCTVC1_NET_RC_GATEWAY_DELETE_ACTIVE_DEPENDENCIES ( 0x0002 + cOCTVC1_NET_GATEWAY_RC_BASE ) +#define cOCTVC1_NET_RC_GATEWAY_ALREADY_ADDED ( 0x0003 + cOCTVC1_NET_GATEWAY_RC_BASE ) +#define cOCTVC1_NET_RC_GATEWAY_NOT_FOUND ( 0x0004 + cOCTVC1_NET_GATEWAY_RC_BASE ) +#define cOCTVC1_NET_RC_GATEWAY_IP_VERSION_INVALID ( 0x0005 + cOCTVC1_NET_GATEWAY_RC_BASE ) + +/**************************************************************************** + IPV6_PREFIX return codes + ****************************************************************************/ +#define cOCTVC1_NET_IPV6_PREFIX_RC_BASE ( 0x0800 + cOCTVC1_NET_RC_BASE ) + +#define cOCTVC1_NET_RC_IPV6_PREFIX_IP_VERSION_INVALID ( 0x0001 + cOCTVC1_NET_IPV6_PREFIX_RC_BASE ) +#define cOCTVC1_NET_RC_IPV6_PREFIX_IPV6_NOT_ENABLED_ON_LINK ( 0x0002 + cOCTVC1_NET_IPV6_PREFIX_RC_BASE ) +#define cOCTVC1_NET_RC_IPV6_PREFIX_MAX_ADDITIONS_REACHED ( 0x0003 + cOCTVC1_NET_IPV6_PREFIX_RC_BASE ) +#define cOCTVC1_NET_RC_IPV6_PREFIX_ALREADY_PRESENT ( 0x0004 + cOCTVC1_NET_IPV6_PREFIX_RC_BASE ) +#define cOCTVC1_NET_RC_IPV6_PREFIX_ON_LINK_FLAG_INVALID ( 0x0005 + cOCTVC1_NET_IPV6_PREFIX_RC_BASE ) +#define cOCTVC1_NET_RC_IPV6_PREFIX_ON_ADDR_AUTO_CNF_FLAG_INVALID ( 0x0006 + cOCTVC1_NET_IPV6_PREFIX_RC_BASE ) +#define cOCTVC1_NET_RC_IPV6_PREFIX_BIT_LENGTH_INVALID ( 0x0007 + cOCTVC1_NET_IPV6_PREFIX_RC_BASE ) +#define cOCTVC1_NET_RC_IPV6_PREFIX_INFO_NOT_FOUND ( 0x0008 + cOCTVC1_NET_IPV6_PREFIX_RC_BASE ) + +/**************************************************************************** + CUSTOM_MEMBER return codes + ****************************************************************************/ +#define cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ( 0x0900 + cOCTVC1_NET_RC_BASE ) + +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_NOT_ENOUGH_PKT_HEADER ( 0x0001 + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_FIRST_PKT_HEADER_INVALID ( 0x0002 + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_MISSING_PKT_HEADER ( 0x0003 + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_RTP_PROFILE_NUM_ENTRY_INVALID ( 0x0004 + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_RTP_PROFILE_PAYLOAD_TYPE_INVALID ( 0x0005 + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_LOCAL_CNAME_LENGTH_INVALID ( 0x0006 + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_REMOTE_CNAME_LENGTH_INVALID ( 0x0007 + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_TX_PKT_ENABLE_INVALID ( 0x0008 + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_RX_PKT_FILTER_INVALID ( 0x0009 + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_DSP_TERM_INVALID ( 0x000B + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_CPP_MAX_REACHED ( 0x000C + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_LOCAL_HOST_INVALID ( 0x000D + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_DSP_TERM_NOT_PKT_BASED ( 0x000E + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_DSP_TERM_IN_USE ( 0x000F + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_RTP_SESSION_INVALID ( 0x0010 + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_ACTIVATE_ALLOC ( 0x0011 + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_PKT_HEADER_SEQUENCE_INVALID ( 0x0012 + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_TX_PKT_ENABLE_MISSING_FIELDS ( 0x0013 + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_LOCAL_MEMBER_ID_INVALID ( 0x0014 + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_ETHERTYPE_ENCODING_INVALID ( 0x0015 + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_ETHERTYPE_INVALID ( 0x0016 + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_NUM_VLAN_TAG_INVALID ( 0x0017 + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_VLAN_TAG_PRIORITY_INVALID ( 0x0018 + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_VLAN_ID_INVALID ( 0x0019 + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_STREAM_ENABLE_FLAG_INVALID ( 0x001A + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_IP_VERSION_INVALID ( 0x001B + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_IP_TYPE_OF_SERVICE_INVALID ( 0x001C + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_IP_TIME_TO_LIVE_INVALID ( 0x001D + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_IPV6_FLOW_LABEL_INVALID ( 0x001E + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_TX_PKT_ENABLE_MISSING_VALID_IP_ADDRESS ( 0x001F + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_UDP_PORT_LOCAL_INVALID ( 0x0020 + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_UDP_PORT_REMOTE_INVALID ( 0x0021 + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_TX_PKT_ENABLE_MISSING_VALID_UDP_PORT ( 0x0022 + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_CANNOT_MODIFY_DISABLED_STREAM ( 0x0023 + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_LOCAL_IP_ADDRESS_INVALID ( 0x0024 + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_RX_UDP_PORT_CLOSE_ACTIVE_DEPENDENCIES ( 0x0025 + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_LOCAL_FORCED_RTP_PARM_MASK ( 0x0026 + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) +#define cOCTVC1_NET_RC_CUSTOM_MEMBER_LOCAL_FORCED_INIT_SEQ_NUM ( 0x0027 + cOCTVC1_NET_CUSTOM_MEMBER_RC_BASE ) + +/**************************************************************************** + Validate return codes + ****************************************************************************/ +#define cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ( 0xF000 + cOCTVC1_NET_RC_BASE ) + +#define cOCTVC1_NET_RC_SRTP_KEY_ENTRY_INVALID_KEY_DERIVATION_RATE_LOG2 ( 0x1 + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) +#define cOCTVC1_NET_RC_SRTP_KEY_ENTRY_INVALID_RTCP_MASTER_KEY_MAX_LIFE_TIME ( 0x2 + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) +#define cOCTVC1_NET_RC_SRTP_KEY_ENTRY_INVALID_RTCP_MASTER_KEY_FROM_LIFE_TIME ( 0x3 + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) +#define cOCTVC1_NET_RC_SRTP_KEY_ENTRY_INVALID_RTCP_MASTER_KEY_TO_LIFE_TIME ( 0x4 + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) +#define cOCTVC1_NET_RC_SRTP_KEY_ENTRY_INVALID_RTCP_RE_KEY_EVENT_THRESHOLD ( 0x5 + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) +#define cOCTVC1_NET_RC_SRTP_STREAM_CONFIG_INVALID_AUTH_TAG_BIT_SIZE ( 0x6 + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) +#define cOCTVC1_NET_RC_SRTP_STREAM_CONFIG_INVALID_MKI_BYTE_SIZE ( 0x7 + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) +#define cOCTVC1_NET_RC_SRTP_STREAM_CONFIG_INVALID_SESSION_SALT_KEY_BIT_SIZE ( 0x8 + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) +#define cOCTVC1_NET_RC_SRTP_STREAM_CONFIG_INVALID_SESSION_AUTH_KEY_BIT_SIZE ( 0x9 + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) +#define cOCTVC1_NET_RC_VLAN_TAG_INVALID_PRIORITY ( 0xA + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) +#define cOCTVC1_NET_RC_VLAN_TAG_INVALID_VLAN_ID ( 0xB + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) +#define cOCTVC1_NET_RC_HEADER_INFO_ETHERNET_INVALID_ETHERTYPE ( 0xC + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) +#define cOCTVC1_NET_RC_HEADER_INFO_VLAN_INVALID_NUM_VLAN_TAG ( 0xD + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) +#define cOCTVC1_NET_RC_HEADER_INFO_IP_INVALID_TYPE_OF_SERVICE ( 0xE + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) +#define cOCTVC1_NET_RC_HEADER_INFO_IP_INVALID_TIME_TO_LIVE ( 0xF + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) +#define cOCTVC1_NET_RC_HEADER_INFO_IP_INVALID_IPV6_FLOW_LABEL ( 0x10 + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) +#define cOCTVC1_NET_RC_HEADER_INFO_UDP_INVALID_LOCAL_UDP_PORT ( 0x11 + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) +#define cOCTVC1_NET_RC_HEADER_INFO_UDP_INVALID_REMOTE_UDP_PORT ( 0x12 + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) +#define cOCTVC1_NET_RC_ETH_LINK_CONFIG_IPV4_INVALID_ARPREQ_DUP_ADDR_CNT ( 0x13 + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_SESSION_MEMBER_ACTIVATE_INVALID_LOCAL_UDP_PORT_RTP ( 0x14 + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_SESSION_MEMBER_ACTIVATE_INVALID_LOCAL_UDP_PORT_RTCP ( 0x15 + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_SESSION_MEMBER_ACTIVATE_INVALID_LOCAL_CNAME_LENGTH ( 0x16 + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_SESSION_MEMBER_ACTIVATE_INVALID_REMOTE_CNAME_LENGTH ( 0x17 + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_SESSION_MEMBER_ACTIVATE_INVALID_IPV4_TIME_TO_LIVE ( 0x18 + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_SESSION_MEMBER_ACTIVATE_INVALID_IPV4_TYPE_OF_SERVICE ( 0x19 + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_SESSION_MEMBER_ACTIVATE_INVALID_IPV6_HOP_LIMIT ( 0x1A + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_SESSION_MEMBER_ACTIVATE_INVALID_IPV6_FLOW_LABEL ( 0x1B + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_SESSION_MEMBER_ACTIVATE_INVALID_IPV6_TRAFFIC_CLASS ( 0x1C + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_SESSION_MEMBER_ACTIVATE_INVALID_NUM_PROF_ENTRY ( 0x1D + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_SESSION_MEMBER_MODIFY_INVALID_LOCAL_UDP_PORT_RTP ( 0x1E + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_SESSION_MEMBER_MODIFY_INVALID_LOCAL_UDP_PORT_RTCP ( 0x1F + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_SESSION_MEMBER_MODIFY_INVALID_REMOTE_FORCED_INITIAL_SEQ_NUMBER ( 0x20 + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_SESSION_MEMBER_SRTP_KEY_LIST_MODIFY_INVALID_SENDER_SRTP_KEY_NUM ( 0x21 + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) +#define cOCTVC1_NET_RC_RTP_SESSION_MEMBER_SRTP_KEY_LIST_MODIFY_INVALID_RECEIVER_SRTP_KEY_NUM ( 0x22 + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) +#define cOCTVC1_NET_RC_LOCAL_HOST_ADDR_VALIDATE_START_INVALID_NUM_PROBE ( 0x23 + cOCTVC1_NET_AUTO_VALIDATE_RC_BASE ) + +#endif /* OCTVC1_NET_RC_H__ */ + diff --git a/software/include/vocallo/net/octvc1_net_version.h b/software/include/vocallo/net/octvc1_net_version.h new file mode 100644 index 0000000..f43c559 --- /dev/null +++ b/software/include/vocallo/net/octvc1_net_version.h @@ -0,0 +1,39 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_NET_VERSION.h + +$Octasic_Copyright: $ + +Description: Contains the version of the NET API interface. + +$Octasic_Confidentiality: $ + +$Octasic_Release: $ + +$Octasic_Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_NET_VERSION_H__ +#define __OCTVC1_NET_VERSION_H__ + + +/* The version ID is separated into the following sections: + + bit[31:25]: Major version + bit[24:18]: Minor version + bit[17:11]: Bug fix version + bit[10:0]: Build number +*/ +#define cOCTVC1_NET_VERSION_MAJOR 1 +#define cOCTVC1_NET_VERSION_MINOR 0 +#define cOCTVC1_NET_VERSION_MAINTENANCE 0 +#define cOCTVC1_NET_VERSION_BUILD 0 + +#define cOCTVC1_NET_VERSION_ID ( (cOCTVC1_NET_VERSION_MAJOR << 25) + \ + (cOCTVC1_NET_VERSION_MINOR << 18) + \ + (cOCTVC1_NET_VERSION_MAINTENANCE << 11) + \ + cOCTVC1_NET_VERSION_BUILD ) + +#endif /* __OCTVC1_NET_VERSION_H__ */ + diff --git a/software/include/vocallo/octvc1_app.h b/software/include/vocallo/octvc1_app.h new file mode 100644 index 0000000..c2710bb --- /dev/null +++ b/software/include/vocallo/octvc1_app.h @@ -0,0 +1,33 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_APP.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: Contains the definition of the OCTVC1 API. + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Octasic_Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_APP_H__ +#define __OCTVC1_APP_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "../octdev_types.h" +/**************************************************************************** + Generic application definitions + ****************************************************************************/ + +#define cOCTVC1_APP_COMPANY_NAME "Octasic" +#define cOCTVC1_APP_PRODUCT_NAME "Vocallo Software Define Radio" +#define cOCTVC1_APP_PRODUCT_SHORT_NAME "sdr" +#define cOCTVC1_APP_PRODUCT_GOOSE_ROOT_NAME "octsdr" + +#endif /* __OCTVC1_APP_H__ */ + diff --git a/software/include/vocallo/octvc1_base.h b/software/include/vocallo/octvc1_base.h new file mode 100644 index 0000000..6eef47e --- /dev/null +++ b/software/include/vocallo/octvc1_base.h @@ -0,0 +1,92 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_BASE.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: Contains the definition of the OCTVC1 API. + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Octasic_Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_BASE_H__ +#define __OCTVC1_BASE_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "../octdev_rc_base.h" + +/**************************************************************************** + Command identifier base + ****************************************************************************/ +#define cOCTVC1_CID_BASE ( 0x00100000 ) + +/**************************************************************************** + Event identifier base + ****************************************************************************/ +#define cOCTVC1_EID_BASE ( 0x00200000 ) + +/**************************************************************************** + Supervisory identifier base + ****************************************************************************/ +#define cOCTVC1_SID_BASE ( 0x00300000 ) + +/**************************************************************************** + return code identifier base + ****************************************************************************/ +#define cOCTVC1_RC_BASE ( cOCTVC1_API_RC_BASE ) + +/**************************************************************************** + Module unique identifiers + ****************************************************************************/ +#define cOCTVC1_GENERIC_UID ( 0x00 ) +#define cOCTVC1_MAIN_UID ( 0x01 ) +#define cOCTVC1_PKT_API_UID ( 0x02 ) +#define cOCTVC1_CTRL_UID ( 0x03 ) +#define cOCTVC1_CPP_UID ( 0x03 ) +#define cOCTVC1_LICENSING_UID ( 0x04 ) +#define cOCTVC1_NET_UID ( 0x04 ) +#define cOCTVC1_GSM_UID ( 0x0C ) + +/**************************************************************************** + Module identifier bases + ****************************************************************************/ + +/* Module: GENERIC */ +#define cOCTVC1_GENERIC_RC_BASE ( (cOCTVC1_GENERIC_UID << 16) + cOCTVC1_RC_BASE ) + +/* Module: MAIN */ +#define cOCTVC1_MAIN_CID_BASE ( (cOCTVC1_MAIN_UID << 16) + cOCTVC1_CID_BASE ) +#define cOCTVC1_MAIN_EID_BASE ( (cOCTVC1_MAIN_UID << 16) + cOCTVC1_EID_BASE ) +#define cOCTVC1_MAIN_RC_BASE ( (cOCTVC1_MAIN_UID << 16) + cOCTVC1_RC_BASE ) + +/* Module: PKT_API */ +#define cOCTVC1_PKT_API_RC_BASE ( (cOCTVC1_PKT_API_UID << 16) + cOCTVC1_RC_BASE ) + +/* Module: CTRL */ +#define cOCTVC1_CTRL_SID_BASE ( (cOCTVC1_CTRL_UID << 16) + cOCTVC1_SID_BASE ) + +/* Module: CPP */ +#define cOCTVC1_CPP_CID_BASE ( (cOCTVC1_CPP_UID << 16) + cOCTVC1_CID_BASE ) +#define cOCTVC1_CPP_RC_BASE ( (cOCTVC1_CPP_UID << 16) + cOCTVC1_RC_BASE ) + +/* Module: LICENSING */ +#define cOCTVC1_LICENSING_RC_BASE ( (cOCTVC1_LICENSING_UID << 16) + cOCTVC1_RC_BASE ) + +/* Module: NET */ +#define cOCTVC1_NET_CID_BASE ( (cOCTVC1_NET_UID << 16) + cOCTVC1_CID_BASE ) +#define cOCTVC1_NET_EID_BASE ( (cOCTVC1_NET_UID << 16) + cOCTVC1_EID_BASE ) +#define cOCTVC1_NET_RC_BASE ( (cOCTVC1_NET_UID << 16) + cOCTVC1_RC_BASE ) + +/* Module: GSM */ +#define cOCTVC1_GSM_CID_BASE ( (cOCTVC1_GSM_UID << 16) + cOCTVC1_CID_BASE ) +#define cOCTVC1_GSM_EID_BASE ( (cOCTVC1_GSM_UID << 16) + cOCTVC1_EID_BASE ) +#define cOCTVC1_GSM_RC_BASE ( (cOCTVC1_GSM_UID << 16) + cOCTVC1_RC_BASE ) + +#endif /* __OCTVC1_BASE_H__ */ + diff --git a/software/include/vocallo/octvc1_buffer.h b/software/include/vocallo/octvc1_buffer.h new file mode 100644 index 0000000..5051745 --- /dev/null +++ b/software/include/vocallo/octvc1_buffer.h @@ -0,0 +1,49 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_BUFFER.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_BUFFER_H__ +#define __OCTVC1_BUFFER_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "../octdev_types.h" +#include "octvc1_base.h" + + +/************************ COMMON DEFINITIONS *******************************/ + +/*------------------------------------------------------------------------------------- + tOCTVC1_BUFFER_FORMAT_ENUM : Buffer format + Bits[31:16] Reserved + Bits[15:12] Specify the API type of a buffer. + Bits[11: 0] Specify the content type of a buffer. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_BUFFER_FORMAT_ENUM tOCT_UINT32 + +#define cOCTVC1_BUFFER_FORMAT_ENUM_UNKNOWN 0x0000 +#define cOCTVC1_BUFFER_FORMAT_ENUM_MAIN ((tOCT_UINT32)(cOCTVC1_MAIN_UID<<12) ) + +/*------------------------------------------------------------------------------------- + tOCTVC1_BUFFER_FORMAT_MAIN_ENUM : +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_BUFFER_FORMAT_MAIN_ENUM tOCTVC1_BUFFER_FORMAT_ENUM + +#define cOCTVC1_BUFFER_FORMAT_MAIN_ENUM_PCAP_TRACE ((tOCTVC1_BUFFER_FORMAT_ENUM)(0x0001|cOCTVC1_BUFFER_FORMAT_ENUM_MAIN) ) +#define cOCTVC1_BUFFER_FORMAT_MAIN_ENUM_FILE_SYS ((tOCTVC1_BUFFER_FORMAT_ENUM)(0x0002|cOCTVC1_BUFFER_FORMAT_ENUM_MAIN) ) + + +#endif /* __OCTVC1_BUFFER_H__ */ + diff --git a/software/include/vocallo/octvc1_cursor.h b/software/include/vocallo/octvc1_cursor.h new file mode 100644 index 0000000..1b23d9d --- /dev/null +++ b/software/include/vocallo/octvc1_cursor.h @@ -0,0 +1,238 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_CURSOR.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_CURSOR_H__ +#define __OCTVC1_CURSOR_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "../octdev_types.h" +#include "octvc1_base.h" +#include "octvc1_handle.h" + + +/************************ COMMON DEFINITIONS *******************************/ + +/*------------------------------------------------------------------------------------- + Object Get Mode +-------------------------------------------------------------------------------------*/ +/*------------------------------------------------------------------------------------- + tOCTVC1_OBJECT_CURSOR_ENUM : +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_OBJECT_CURSOR_ENUM tOCT_UINT32 + +#define cOCTVC1_OBJECT_CURSOR_ENUM_DONE 0 +#define cOCTVC1_OBJECT_CURSOR_ENUM_SPECIFIC 1 +#define cOCTVC1_OBJECT_CURSOR_ENUM_FIRST 2 +#define cOCTVC1_OBJECT_CURSOR_ENUM_NEXT 3 +#define cOCTVC1_OBJECT_CURSOR_ENUM_SUB_OBJECT_FIRST 4 +#define cOCTVC1_OBJECT_CURSOR_ENUM_SUB_OBJECT_NEXT 5 + +/*------------------------------------------------------------------------------------- + tOCTVC1_CURSOR_HANDLE_GET + Generic Object Get structure, + Use when the object is identified by a tOCTVC1_HANDLE. + + Members: + hObject + Object handle + ulGetMode + Default: cOCTVC1_OBJECT_CURSOR_ENUM_FIRST + Get mode +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_HANDLE hObject; + tOCTVC1_OBJECT_CURSOR_ENUM ulGetMode; + +} tOCTVC1_CURSOR_HANDLE_GET; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CURSOR_HANDLE_GET_HANDLE + Handle get structure when the parent is identified by a tOCTVC1_HANDLE + + Members: + hObject + Object handle + ulGetMode + Default: cOCTVC1_OBJECT_CURSOR_ENUM_FIRST + Get mode + hSubObject + Sub Object handle +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_HANDLE hObject; + tOCTVC1_OBJECT_CURSOR_ENUM ulGetMode; + tOCTVC1_HANDLE hSubObject; + +} tOCTVC1_CURSOR_HANDLE_GET_HANDLE; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT + Handle Object get structure when the parent is identified by a tOCTVC1_HANDLE + + Members: + hObject + Object handle + ulGetMode + Default: cOCTVC1_OBJECT_CURSOR_ENUM_FIRST + Get mode + hHandleObject + Handle Object to get +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_HANDLE hObject; + tOCTVC1_OBJECT_CURSOR_ENUM ulGetMode; + tOCTVC1_HANDLE_OBJECT hHandleObject; + +} tOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID + Sub-object ID get structure when the parent is identified by a tOCTVC1_HANDLE + + Members: + hObject + Object handle + ulGetMode + Default: cOCTVC1_OBJECT_CURSOR_ENUM_FIRST + Get mode + ulSubObjectId + Sub Object handle +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_HANDLE hObject; + tOCTVC1_OBJECT_CURSOR_ENUM ulGetMode; + tOCTVC1_SUB_OBJECT_ID ulSubObjectId; + +} tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CURSOR_HANDLE_OBJECT_GET + Generic Handle Object Get structure, + Use when the object is identified by a tOCTVC1_HANDLE_OBJECT. + + Members: + hObject + Object handle + ulGetMode + Default: cOCTVC1_OBJECT_CURSOR_ENUM_FIRST + Get mode +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_HANDLE_OBJECT hObject; + tOCTVC1_OBJECT_CURSOR_ENUM ulGetMode; + +} tOCTVC1_CURSOR_HANDLE_OBJECT_GET; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT + Handle object get structure when the parent is identified by a + tOCTVC1_HANDLE_OBJECT + + Members: + hObject + Object handle of the parent + ulGetMode + Default: cOCTVC1_OBJECT_CURSOR_ENUM_FIRST + Get mode + hHandleObjectGet + Handle object to get +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_HANDLE_OBJECT hObject; + tOCTVC1_OBJECT_CURSOR_ENUM ulGetMode; + tOCTVC1_HANDLE_OBJECT hHandleObjectGet; + +} tOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID + Sub-object get structure when the parent is identified by a + tOCTVC1_HANDLE_OBJECT + + Members: + hObject + Object handle + ulGetMode + Default: cOCTVC1_OBJECT_CURSOR_ENUM_FIRST + Get mode + ulSubObjectId + Sub Object Id +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_HANDLE_OBJECT hObject; + tOCTVC1_OBJECT_CURSOR_ENUM ulGetMode; + tOCTVC1_SUB_OBJECT_ID ulSubObjectId; + +} tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID; + +/*------------------------------------------------------------------------------------- + tOCTVC1_CURSOR_INDEX_GET + Generic Index Object Get structure, + Use when the object is identified by a tOCTVC1_INDEX. + + Members: + ulIndex + Object index + ulGetMode + Default: cOCTVC1_OBJECT_CURSOR_ENUM_FIRST + Get mode +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_INDEX ulIndex; + tOCTVC1_OBJECT_CURSOR_ENUM ulGetMode; + +} tOCTVC1_CURSOR_INDEX_GET; + +/*------------------------------------------------------------------------------------- + Legacy types. Please use the new cursors. +-------------------------------------------------------------------------------------*/ + +/*------------------------------------------------------------------------------------- + tOCTVC1_OBJECT_CURSOR : +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_OBJECT_CURSOR tOCTVC1_CURSOR_HANDLE_GET + + +/*------------------------------------------------------------------------------------- + tOCTVC1_SUB_OBJECT_CURSOR : +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_SUB_OBJECT_CURSOR tOCTVC1_CURSOR_HANDLE_GET_HANDLE + + +/*------------------------------------------------------------------------------------- + tOCTVC1_SUB_OBJECT_ID_CURSOR : +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_SUB_OBJECT_ID_CURSOR tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID + + +/*------------------------------------------------------------------------------------- + tOCTVC1_INDEX_CURSOR : +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_INDEX_CURSOR tOCTVC1_CURSOR_INDEX_GET + + + +#endif /* __OCTVC1_CURSOR_H__ */ + diff --git a/software/include/vocallo/octvc1_cursor_swap.h b/software/include/vocallo/octvc1_cursor_swap.h new file mode 100644 index 0000000..6dbf621 --- /dev/null +++ b/software/include/vocallo/octvc1_cursor_swap.h @@ -0,0 +1,132 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* + +File: octvc1_cursor_swap.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#ifndef __OCTVC1_CURSOR_SWAP_H__ +#define __OCTVC1_CURSOR_SWAP_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************** INCLUDE FILES *******************************/ +#include "octvc1_swap_hdrs.h" +#include "octvc1_cursor.h" + +/********************************* MACROS **********************************/ + + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CURSOR_HANDLE_GET_SWAP( _f_pParms ){ tOCTVC1_CURSOR_HANDLE_GET * pOCTVC1_CURSOR_HANDLE_GET = (_f_pParms); \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_CURSOR_HANDLE_GET *)pOCTVC1_CURSOR_HANDLE_GET)->hObject ); } \ + ((tOCTVC1_CURSOR_HANDLE_GET *)pOCTVC1_CURSOR_HANDLE_GET)->ulGetMode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CURSOR_HANDLE_GET *)pOCTVC1_CURSOR_HANDLE_GET)->ulGetMode); \ +} +#else +#define mOCTVC1_CURSOR_HANDLE_GET_SWAP( pOCTVC1_CURSOR_HANDLE_GET ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#define mOCTVC1_OBJECT_CURSOR_SWAP mOCTVC1_CURSOR_HANDLE_GET_SWAP + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CURSOR_HANDLE_GET_HANDLE_SWAP( _f_pParms ){ tOCTVC1_CURSOR_HANDLE_GET_HANDLE * pOCTVC1_CURSOR_HANDLE_GET_HANDLE = (_f_pParms); \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_CURSOR_HANDLE_GET_HANDLE *)pOCTVC1_CURSOR_HANDLE_GET_HANDLE)->hObject ); } \ + ((tOCTVC1_CURSOR_HANDLE_GET_HANDLE *)pOCTVC1_CURSOR_HANDLE_GET_HANDLE)->ulGetMode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CURSOR_HANDLE_GET_HANDLE *)pOCTVC1_CURSOR_HANDLE_GET_HANDLE)->ulGetMode); \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_CURSOR_HANDLE_GET_HANDLE *)pOCTVC1_CURSOR_HANDLE_GET_HANDLE)->hSubObject ); } \ +} +#else +#define mOCTVC1_CURSOR_HANDLE_GET_HANDLE_SWAP( pOCTVC1_CURSOR_HANDLE_GET_HANDLE ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#define mOCTVC1_SUB_OBJECT_CURSOR_SWAP mOCTVC1_CURSOR_HANDLE_GET_HANDLE_SWAP + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT_SWAP( _f_pParms ){ tOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT * pOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT = (_f_pParms); \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT *)pOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT)->hObject ); } \ + ((tOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT *)pOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT)->ulGetMode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT *)pOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT)->ulGetMode); \ + ((tOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT *)pOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT)->hHandleObject = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT *)pOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT)->hHandleObject); \ +} +#else +#define mOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT_SWAP( pOCTVC1_CURSOR_HANDLE_GET_HANDLE_OBJECT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID_SWAP( _f_pParms ){ tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID * pOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID = (_f_pParms); \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID *)pOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID)->hObject ); } \ + ((tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID *)pOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID)->ulGetMode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID *)pOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID)->ulGetMode); \ + ((tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID *)pOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID)->ulSubObjectId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID *)pOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID)->ulSubObjectId); \ +} +#else +#define mOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID_SWAP( pOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#define mOCTVC1_SUB_OBJECT_ID_CURSOR_SWAP mOCTVC1_CURSOR_HANDLE_GET_SUB_OBJECT_ID_SWAP + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CURSOR_HANDLE_OBJECT_GET_SWAP( _f_pParms ){ tOCTVC1_CURSOR_HANDLE_OBJECT_GET * pOCTVC1_CURSOR_HANDLE_OBJECT_GET = (_f_pParms); \ + ((tOCTVC1_CURSOR_HANDLE_OBJECT_GET *)pOCTVC1_CURSOR_HANDLE_OBJECT_GET)->hObject = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CURSOR_HANDLE_OBJECT_GET *)pOCTVC1_CURSOR_HANDLE_OBJECT_GET)->hObject); \ + ((tOCTVC1_CURSOR_HANDLE_OBJECT_GET *)pOCTVC1_CURSOR_HANDLE_OBJECT_GET)->ulGetMode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CURSOR_HANDLE_OBJECT_GET *)pOCTVC1_CURSOR_HANDLE_OBJECT_GET)->ulGetMode); \ +} +#else +#define mOCTVC1_CURSOR_HANDLE_OBJECT_GET_SWAP( pOCTVC1_CURSOR_HANDLE_OBJECT_GET ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT_SWAP( _f_pParms ){ tOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT * pOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT = (_f_pParms); \ + ((tOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT *)pOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT)->hObject = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT *)pOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT)->hObject); \ + ((tOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT *)pOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT)->ulGetMode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT *)pOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT)->ulGetMode); \ + ((tOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT *)pOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT)->hHandleObjectGet = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT *)pOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT)->hHandleObjectGet); \ +} +#else +#define mOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT_SWAP( pOCTVC1_CURSOR_HANDLE_OBJECT_GET_HANDLE_OBJECT ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID_SWAP( _f_pParms ){ tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID * pOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID = (_f_pParms); \ + ((tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID *)pOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID)->hObject = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID *)pOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID)->hObject); \ + ((tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID *)pOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID)->ulGetMode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID *)pOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID)->ulGetMode); \ + ((tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID *)pOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID)->ulSubObjectId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID *)pOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID)->ulSubObjectId); \ +} +#else +#define mOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID_SWAP( pOCTVC1_CURSOR_HANDLE_OBJECT_GET_SUB_OBJECT_ID ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_CURSOR_INDEX_GET_SWAP( _f_pParms ){ tOCTVC1_CURSOR_INDEX_GET * pOCTVC1_CURSOR_INDEX_GET = (_f_pParms); \ + ((tOCTVC1_CURSOR_INDEX_GET *)pOCTVC1_CURSOR_INDEX_GET)->ulIndex = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CURSOR_INDEX_GET *)pOCTVC1_CURSOR_INDEX_GET)->ulIndex); \ + ((tOCTVC1_CURSOR_INDEX_GET *)pOCTVC1_CURSOR_INDEX_GET)->ulGetMode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_CURSOR_INDEX_GET *)pOCTVC1_CURSOR_INDEX_GET)->ulGetMode); \ +} +#else +#define mOCTVC1_CURSOR_INDEX_GET_SWAP( pOCTVC1_CURSOR_INDEX_GET ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#ifdef __cplusplus +} + +#endif + +#endif /* __OCTVC1_CURSOR_SWAP_H__ */ diff --git a/software/include/vocallo/octvc1_eth.h b/software/include/vocallo/octvc1_eth.h new file mode 100644 index 0000000..5eeac4e --- /dev/null +++ b/software/include/vocallo/octvc1_eth.h @@ -0,0 +1,46 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_ETH.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_ETH_H__ +#define __OCTVC1_ETH_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "../octdev_types.h" +#include "octvc1_base.h" + + +/************************ COMMON DEFINITIONS *******************************/ + +/*------------------------------------------------------------------------------------- + Ethernet port identifiers +-------------------------------------------------------------------------------------*/ +/*------------------------------------------------------------------------------------- + tOCTVC1_ETH_PORT_ID_ENUM : +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_ETH_PORT_ID_ENUM tOCT_UINT32 + +#define cOCTVC1_ETH_PORT_ID_ENUM_0 0 +#define cOCTVC1_ETH_PORT_ID_ENUM_1 1 +#define cOCTVC1_ETH_PORT_ID_ENUM_2 2 +#define cOCTVC1_ETH_PORT_ID_ENUM_3 3 +#define cOCTVC1_ETH_PORT_ID_ENUM_INVALID 0xFFFFFFFF + +#define cOCTVC1_ETH_802_1_PQ_TCI_INVALID 0xFFFFFFFF /* Ethernet 802.1 pq definition */ + + +#endif /* __OCTVC1_ETH_H__ */ + diff --git a/software/include/vocallo/octvc1_fifo.h b/software/include/vocallo/octvc1_fifo.h new file mode 100644 index 0000000..f881ecb --- /dev/null +++ b/software/include/vocallo/octvc1_fifo.h @@ -0,0 +1,36 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_FIFO.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_FIFO_H__ +#define __OCTVC1_FIFO_H__ + + +/************************ COMMON DEFINITIONS *******************************/ + +/*------------------------------------------------------------------------------------- + Control process _FIFO-ID definition +-------------------------------------------------------------------------------------*/ + +#define cOCTVC1_FIFO_ID_MGW_CONTROL 0x00000000 + +/*------------------------------------------------------------------------------------- + Invalid _FIFO-ID +-------------------------------------------------------------------------------------*/ + +#define cOCTVC1_FIFO_ID_INVALID 0xFFFFFFFF + +#endif /* __OCTVC1_FIFO_H__ */ + diff --git a/software/include/vocallo/octvc1_file.h b/software/include/vocallo/octvc1_file.h new file mode 100644 index 0000000..8798c4b --- /dev/null +++ b/software/include/vocallo/octvc1_file.h @@ -0,0 +1,107 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_FILE.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_FILE_H__ +#define __OCTVC1_FILE_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "../octdev_types.h" + + +/************************ COMMON DEFINITIONS *******************************/ + +/*------------------------------------------------------------------------------------- + File Header endian magic + "\x7F""OCT". + 0x54434F7F on little endian machine. + 0x7F4F4354 on big endian machine +-------------------------------------------------------------------------------------*/ +#define cOCTVC1_FILE_MAGIC_BIG_ENDIAN 0x7F4F4354 +#define cOCTVC1_FILE_MAGIC_LITTLE_ENDIAN 0x54434F7F +/*------------------------------------------------------------------------------------- + tOCTVC1_FILE_TYPE_ENUM : File Type description +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_FILE_TYPE_ENUM tOCT_UINT32 + +#define cOCTVC1_FILE_TYPE_ENUM_NONE 0 +#define cOCTVC1_FILE_TYPE_ENUM_TEXT 1 +#define cOCTVC1_FILE_TYPE_ENUM_BIN 1 + +/*------------------------------------------------------------------------------------- + tOCTVC1_FILE_FORMAT_ENUM : File Type description +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_FILE_FORMAT_ENUM tOCT_UINT32 + +#define cOCTVC1_FILE_FORMAT_ENUM_NONE 0 +#define cOCTVC1_FILE_FORMAT_ENUM_LOG 1 + +/*------------------------------------------------------------------------------------- + File Header Type +-------------------------------------------------------------------------------------*/ +#define cOCTVC1_FILE_TYPE_BIT_OFFSET 24 +#define cOCTVC1_FILE_TYPE_BIT_MASK 0xFF000000 + +/*------------------------------------------------------------------------------------- + File Header Format Version +-------------------------------------------------------------------------------------*/ +#define cOCTVC1_FILE_FORMAT_VERSION_BIT_OFFSET 16 +#define cOCTVC1_FILE_FORMAT_VERSION_BIT_MASK 0x00FF0000 + +/*------------------------------------------------------------------------------------- + File Header Format +-------------------------------------------------------------------------------------*/ +#define cOCTVC1_FILE_FORMAT_BIT_OFFSET 0 +#define cOCTVC1_FILE_FORMAT_BIT_MASK 0x0000FFFF + +/*------------------------------------------------------------------------------------- + File Header Size +-------------------------------------------------------------------------------------*/ +#define cOCTVC1_FILE_HEADER_SIZE_BIT_OFFSET 0 +#define cOCTVC1_FILE_HEADER_SIZE_BIT_MASK 0x0000FFFF +/*------------------------------------------------------------------------------------- + tOCTVC1_FILE_HEADER + Generic file header + + Members: + ulMagic + Default: cOCTVC1_FILE_MAGIC_BIG_ENDIAN + Magic file number. + "\x7F""OCT". + 0x54434F7F on little endian machine. + 0x7F4F4354 on big endian machine + ul_Type_Ver + bits[31:24] = File Type. + bits[23:16] = File Format Version. + bits[15:0] = File Format. + ulReserved + ulHeaderSize + Header size with padding. This indicate where the file payload start (in byte). + bits[31:16] = Reserved. + bits[15:0] = Header Size with padding. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCT_UINT32 ulMagic; + tOCT_UINT32 ul_Type_Ver; + tOCT_UINT32 ulReserved; + tOCT_UINT32 ulHeaderSize; + +} tOCTVC1_FILE_HEADER; + + +#endif /* __OCTVC1_FILE_H__ */ + diff --git a/software/include/vocallo/octvc1_file_swap.h b/software/include/vocallo/octvc1_file_swap.h new file mode 100644 index 0000000..1a919ea --- /dev/null +++ b/software/include/vocallo/octvc1_file_swap.h @@ -0,0 +1,48 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* + +File: octvc1_file_swap.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#ifndef __OCTVC1_FILE_SWAP_H__ +#define __OCTVC1_FILE_SWAP_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************** INCLUDE FILES *******************************/ +#include "octvc1_swap_hdrs.h" +#include "octvc1_file.h" + +/********************************* MACROS **********************************/ + + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_FILE_HEADER_SWAP( _f_pParms ){ tOCTVC1_FILE_HEADER * pOCTVC1_FILE_HEADER = (_f_pParms); \ + ((tOCTVC1_FILE_HEADER *)pOCTVC1_FILE_HEADER)->ulMagic = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_FILE_HEADER *)pOCTVC1_FILE_HEADER)->ulMagic); \ + ((tOCTVC1_FILE_HEADER *)pOCTVC1_FILE_HEADER)->ul_Type_Ver = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_FILE_HEADER *)pOCTVC1_FILE_HEADER)->ul_Type_Ver); \ + ((tOCTVC1_FILE_HEADER *)pOCTVC1_FILE_HEADER)->ulReserved = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_FILE_HEADER *)pOCTVC1_FILE_HEADER)->ulReserved); \ + ((tOCTVC1_FILE_HEADER *)pOCTVC1_FILE_HEADER)->ulHeaderSize = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_FILE_HEADER *)pOCTVC1_FILE_HEADER)->ulHeaderSize); \ +} +#else +#define mOCTVC1_FILE_HEADER_SWAP( pOCTVC1_FILE_HEADER ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#ifdef __cplusplus +} + +#endif + +#endif /* __OCTVC1_FILE_SWAP_H__ */ diff --git a/software/include/vocallo/octvc1_generic_rc.h b/software/include/vocallo/octvc1_generic_rc.h new file mode 100644 index 0000000..3638be4 --- /dev/null +++ b/software/include/vocallo/octvc1_generic_rc.h @@ -0,0 +1,79 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_GENERIC_RC.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: Contains the return codes for the GENERIC API. + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Octasic_Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef OCTVC1_GENERIC_RC_H__ +#define OCTVC1_GENERIC_RC_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "octvc1_base.h" + +/**************************************************************************** + GENERIC return codes + ****************************************************************************/ +#define cOCTVC1_RC_OK ( 0x0000 ) +#define cOCTVC1_GENERIC_RC_NO_MORE_FREE_SESSION ( 0x0001 + cOCTVC1_GENERIC_RC_BASE ) +#define cOCTVC1_GENERIC_RC_INVALID_TRANSACTION_ID ( 0x0002 + cOCTVC1_GENERIC_RC_BASE ) +#define cOCTVC1_GENERIC_RC_NO_MORE_OBJECT ( 0x0003 + cOCTVC1_GENERIC_RC_BASE ) +#define cOCTVC1_GENERIC_RC_GET_MODE_INVALID ( 0x0004 + cOCTVC1_GENERIC_RC_BASE ) +#define cOCTVC1_GENERIC_RC_HANDLE_INVALID ( 0x0005 + cOCTVC1_GENERIC_RC_BASE ) +#define cOCTVC1_GENERIC_RC_NO_MORE_SUB_OBJECT ( 0x0006 + cOCTVC1_GENERIC_RC_BASE ) +#define cOCTVC1_GENERIC_RC_ENTRY_INVALID ( 0x0007 + cOCTVC1_GENERIC_RC_BASE ) +#define cOCTVC1_GENERIC_RC_BAD_SUB_OBJECT ( 0x0008 + cOCTVC1_GENERIC_RC_BASE ) +#define cOCTVC1_GENERIC_RC_NO_TDM_CLOCK ( 0x0009 + cOCTVC1_GENERIC_RC_BASE ) +#define cOCTVC1_GENERIC_RC_HANDLE_OBJECT_INVALID ( 0x000A + cOCTVC1_GENERIC_RC_BASE ) + +/**************************************************************************** + API return codes + ****************************************************************************/ +#define cOCTVC1_GENERIC_API_RC_BASE ( 0x0300 + cOCTVC1_GENERIC_RC_BASE ) + +#define cOCTVC1_GENERIC_RC_API_INVALID_CMD_LENGTH ( 0x0001 + cOCTVC1_GENERIC_API_RC_BASE ) +#define cOCTVC1_GENERIC_RC_API_INVALID_CMD_ID_BASE ( 0x0002 + cOCTVC1_GENERIC_API_RC_BASE ) +#define cOCTVC1_GENERIC_RC_API_INVALID_CMD_ID ( 0x0003 + cOCTVC1_GENERIC_API_RC_BASE ) +#define cOCTVC1_GENERIC_RC_API_INVALID_CMD_TYPE ( 0x0004 + cOCTVC1_GENERIC_API_RC_BASE ) +#define cOCTVC1_GENERIC_RC_API_RESTRICTED_CMD_ID ( 0x0005 + cOCTVC1_GENERIC_API_RC_BASE ) +#define cOCTVC1_GENERIC_RC_API_INVALID_DEVICE_TYPE ( 0x0006 + cOCTVC1_GENERIC_API_RC_BASE ) +#define cOCTVC1_GENERIC_RC_API_OUT_OF_RANGE ( 0x0007 + cOCTVC1_GENERIC_API_RC_BASE ) +#define cOCTVC1_GENERIC_RC_API_CMD_NOT_IMPLEMENTED ( 0x0008 + cOCTVC1_GENERIC_API_RC_BASE ) + +/**************************************************************************** + OCTSYS return codes + ****************************************************************************/ +#define cOCTVC1_GENERIC_OCTSYS_RC_BASE ( 0x0400 + cOCTVC1_GENERIC_RC_BASE ) + +#define cOCTVC1_GENERIC_RC_OCTSYS_MEM_ALLOC ( 0x0001 + cOCTVC1_GENERIC_OCTSYS_RC_BASE ) +#define cOCTVC1_GENERIC_RC_OCTSYS_FILE_SYS ( 0x0002 + cOCTVC1_GENERIC_OCTSYS_RC_BASE ) +#define cOCTVC1_GENERIC_RC_OCTSYS_EXT_MEM_READ_FAIL ( 0x0003 + cOCTVC1_GENERIC_OCTSYS_RC_BASE ) +#define cOCTVC1_GENERIC_RC_OCTSYS_EXT_MEM_WRITE_FAIL ( 0x0004 + cOCTVC1_GENERIC_OCTSYS_RC_BASE ) +#define cOCTVC1_GENERIC_RC_OCTSYS_IO_READ_FAIL ( 0x0005 + cOCTVC1_GENERIC_OCTSYS_RC_BASE ) +#define cOCTVC1_GENERIC_RC_OCTSYS_IO_WRITE_FAIL ( 0x0006 + cOCTVC1_GENERIC_OCTSYS_RC_BASE ) +#define cOCTVC1_GENERIC_RC_OCTSYS_STATE_MANAGER_FULL ( 0x0007 + cOCTVC1_GENERIC_OCTSYS_RC_BASE ) +#define cOCTVC1_GENERIC_RC_OCTSYS_STATE_MANAGER_EVENT_NOT_FOUND ( 0x0008 + cOCTVC1_GENERIC_OCTSYS_RC_BASE ) +#define cOCTVC1_GENERIC_RC_OCTSYS_CREATE_VSP_FIFO ( 0x0009 + cOCTVC1_GENERIC_OCTSYS_RC_BASE ) +#define cOCTVC1_GENERIC_RC_OCTSYS_CREATE_AF_FIFO ( 0x000A + cOCTVC1_GENERIC_OCTSYS_RC_BASE ) +#define cOCTVC1_GENERIC_RC_OCTSYS_MEM_SHARE ( 0x000B + cOCTVC1_GENERIC_OCTSYS_RC_BASE ) +#define cOCTVC1_GENERIC_RC_OCTSYS_DIR_LINK_ADD ( 0x000C + cOCTVC1_GENERIC_OCTSYS_RC_BASE ) +#define cOCTVC1_GENERIC_RC_OCTSYS_AF_CORE_ALLOC ( 0x000D + cOCTVC1_GENERIC_OCTSYS_RC_BASE ) +#define cOCTVC1_GENERIC_RC_OCTSYS_ID_GET ( 0x000E + cOCTVC1_GENERIC_OCTSYS_RC_BASE ) +#define cOCTVC1_GENERIC_RC_OCTSYS_PROCESS_CREATE ( 0x000F + cOCTVC1_GENERIC_OCTSYS_RC_BASE ) +#define cOCTVC1_GENERIC_RC_OCTSYS_THREAD_CREATE ( 0x0010 + cOCTVC1_GENERIC_OCTSYS_RC_BASE ) +#define cOCTVC1_GENERIC_RC_OCTSYS_HANDLE_OPEN ( 0x0011 + cOCTVC1_GENERIC_OCTSYS_RC_BASE ) +#define cOCTVC1_GENERIC_RC_OCTSYS_FIFO_WRITE ( 0x0012 + cOCTVC1_GENERIC_OCTSYS_RC_BASE ) +#define cOCTVC1_GENERIC_RC_OCTSYS_DUMP_GET ( 0x0013 + cOCTVC1_GENERIC_OCTSYS_RC_BASE ) + +#endif /* OCTVC1_GENERIC_RC_H__ */ + diff --git a/software/include/vocallo/octvc1_handle.h b/software/include/vocallo/octvc1_handle.h new file mode 100644 index 0000000..b92fa2c --- /dev/null +++ b/software/include/vocallo/octvc1_handle.h @@ -0,0 +1,118 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_HANDLE.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_HANDLE_H__ +#define __OCTVC1_HANDLE_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "../octdev_types.h" + + +/************************ COMMON DEFINITIONS *******************************/ + +/*------------------------------------------------------------------------------------- + Handle Type Definitions +-------------------------------------------------------------------------------------*/ + +#define cOCTVC1_HANDLE_TYPE_OBJECT 0x00000000 +#define cOCTVC1_HANDLE_TYPE_SPECIAL 0xC0000000 + +/*------------------------------------------------------------------------------------- + Special Object Handle. + These handle are used by setting + tOCTVC1_HANDLE.aulHandle[0] to the selected value. +-------------------------------------------------------------------------------------*/ + +#define cOCTVC1_HANDLE_INVALID 0xFFFFFFFF +#define cOCTVC1_HANDLE_TX_ETHERNET 0xFFFFFFFE +#define cOCTVC1_HANDLE_RX_ETHERNET 0xFFFFFFFD + +/*------------------------------------------------------------------------------------- + Generic Definitions +-------------------------------------------------------------------------------------*/ + +#define cOCTVC1_DO_NOT_MODIFY 0xEEEEEEEE +#define cOCTVC1_INDEX_INVALID 0xFFFFFFFF +#define cOCTVC1_HANDLE_OBJECT_LIST_MAX_ENTRY 100 + +/*------------------------------------------------------------------------------------- + Base Object Type, for MAIN API +-------------------------------------------------------------------------------------*/ + +#define cOCTVC1_HANDLE_BASE_OBJ_TYPE_MAIN_MASK 0xFF00 +#define cOCTVC1_HANDLE_BASE_OBJ_TYPE_INVALID 0x0000 +#define cOCTVC1_HANDLE_BASE_OBJ_TYPE_MAIN (cOCTVC1_MAIN_UID<<8) + +/*------------------------------------------------------------------------------------- + Generic Vocallo Object Handle +-------------------------------------------------------------------------------------*/ +/*------------------------------------------------------------------------------------- + tOCTVC1_HANDLE + + Members: + aulHandle + aulHandle[0] = bits[31:30] = Handle Type (cOCTVC1_HANDLE_TYPE_*) + bits[29:16] = Handle Object Type (tOCTVC1_HANDLE_OBJ_TYPE_*) + bits[15:0] = Handle Object Instance bits[79:64] + aulHandle[1] = bits[31:0] = Handle Object Instance bits[63:32] + aulHandle[2] = bits[31:0] = Handle Object Instance bits[31:0] +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCT_UINT32 aulHandle[3]; + +} tOCTVC1_HANDLE; + +/*------------------------------------------------------------------------------------- + tOCTVC1_HANDLE_OBJECT : Handle Object Definitions + bits[31:20] = Object Type + bits[19:0] = Object Instance bits +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_HANDLE_OBJECT tOCT_UINT32 + + +/*------------------------------------------------------------------------------------- + tOCTVC1_SUB_OBJECT_ID : Identifier specific to a child. + Implementation is specific for every parent. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_SUB_OBJECT_ID tOCT_UINT32 + + +/*------------------------------------------------------------------------------------- + tOCTVC1_INDEX : Index specific to an object. + Implementation is specific for every object. +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_INDEX tOCT_UINT32 + + +/*------------------------------------------------------------------------------------- + Handle Type Definitions +-------------------------------------------------------------------------------------*/ + +#define cOCTVC1_HANDLE_BASE_OBJ_TYPE_VSPMP_VOC (cOCTVC1_VSPMP_VOC_UID<<8) +#define cOCTVC1_HANDLE_BASE_OBJ_TYPE_CPP (cOCTVC1_CPP_UID<<8) +#define cOCTVC1_HANDLE_BASE_OBJ_TYPE_NET (cOCTVC1_NET_UID<<8) +#define cOCTVC1_HANDLE_BASE_OBJ_TYPE_VSPMP_VID (cOCTVC1_VSPMP_VID_UID<<8) +#define cOCTVC1_HANDLE_BASE_OBJ_TYPE_MUX (cOCTVC1_MUX_UID<<8) + +/*------------------------------------------------------------------------------------- + Generic Vocallo Object Handle +-------------------------------------------------------------------------------------*/ + + +#endif /* __OCTVC1_HANDLE_H__ */ + diff --git a/software/include/vocallo/octvc1_handle_swap.h b/software/include/vocallo/octvc1_handle_swap.h new file mode 100644 index 0000000..0aef618 --- /dev/null +++ b/software/include/vocallo/octvc1_handle_swap.h @@ -0,0 +1,45 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* + +File: octvc1_handle_swap.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#ifndef __OCTVC1_HANDLE_SWAP_H__ +#define __OCTVC1_HANDLE_SWAP_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************** INCLUDE FILES *******************************/ +#include "octvc1_swap_hdrs.h" +#include "octvc1_handle.h" + +/********************************* MACROS **********************************/ + + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_HANDLE_SWAP( _f_pParms ){ tOCTVC1_HANDLE * pOCTVC1_HANDLE = (_f_pParms); \ + { tOCT_UINT32 iOCTVC1_HANDLE; \ + for( iOCTVC1_HANDLE=0; \ + iOCTVC1_HANDLE<(3);iOCTVC1_HANDLE++ ) \ + ((tOCTVC1_HANDLE *)pOCTVC1_HANDLE)->aulHandle[iOCTVC1_HANDLE] = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_HANDLE *)pOCTVC1_HANDLE)->aulHandle[iOCTVC1_HANDLE]);}\ +} +#else +#define mOCTVC1_HANDLE_SWAP( pOCTVC1_HANDLE ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#ifdef __cplusplus +} + +#endif + +#endif /* __OCTVC1_HANDLE_SWAP_H__ */ diff --git a/software/include/vocallo/octvc1_id2string.h b/software/include/vocallo/octvc1_id2string.h new file mode 100644 index 0000000..6137af0 --- /dev/null +++ b/software/include/vocallo/octvc1_id2string.h @@ -0,0 +1,276 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: octvc1_id2string.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +This file contains the id2string implementation for package OCTVC1 + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + + +#ifndef __OCTVC1_ID2STRING__ +#define __OCTVC1_ID2STRING__ + +#include "../octdev_types.h" +/* ------------------------------------------------------------------------------------- + OCTVC1_ID2STRING + -------------------------------------------------------------------------------------*/ +#define mOCTVC1_ID2STRING( _f_ulId ) \ + octvc1_id2string( _f_ulId ) + +#ifndef OCTVC1_ID2STRING_DECLARE +extern const char * octvc1_id2string( tOCT_UINT32 f_ulId ); +#endif + + +#ifdef OCTVC1_ID2STRING_DECLARE +#include +#include "main/octvc1_main_id.h" +#include "gsm/octvc1_gsm_id.h" + + +/* ------------------------------------------------------------------------------------- + octvc1_id2string + -------------------------------------------------------------------------------------*/ +const char * octvc1_id2string( tOCT_UINT32 f_ulId ) +{ + static char g_szUnknownoctvc1_id2string[32]; + switch( f_ulId ) + { + /* OCTVC1_MAIN */ + case cOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_CID: + return "cOCTVC1_MAIN_MSG_DEBUG_FORWARD_CLOSE_CID"; + case cOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_CID: + return "cOCTVC1_MAIN_MSG_DEBUG_FORWARD_INFO_CID"; + case cOCTVC1_MAIN_MSG_DEVICE_RESET_CID: + return "cOCTVC1_MAIN_MSG_DEVICE_RESET_CID"; + case cOCTVC1_MAIN_MSG_DEVICE_INFO_CID: + return "cOCTVC1_MAIN_MSG_DEVICE_INFO_CID"; + case cOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_CID: + return "cOCTVC1_MAIN_MSG_DEVICE_STATUS_OPUS_CORE_CID"; + case cOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_CID: + return "cOCTVC1_MAIN_MSG_DEVICE_INFO_OPUS_CORE_CID"; + case cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CID: + return "cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_START_CID"; + case cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_STOP_CID: + return "cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_STOP_CID"; + case cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_CID: + return "cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_CID"; + case cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CID: + return "cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_ADD_MGW_CID"; + case cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CID: + return "cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_REMOVE_MGW_CID"; + case cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_CID: + return "cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_LIST_MGW_CID"; + case cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_CID: + return "cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_INFO_MGW_CID"; + case cOCTVC1_MAIN_MSG_FILE_OPEN_CID: + return "cOCTVC1_MAIN_MSG_FILE_OPEN_CID"; + case cOCTVC1_MAIN_MSG_FILE_CLOSE_CID: + return "cOCTVC1_MAIN_MSG_FILE_CLOSE_CID"; + case cOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_CID: + return "cOCTVC1_MAIN_MSG_FILE_SYSTEM_DELETE_FILE_CID"; + case cOCTVC1_MAIN_MSG_FILE_WRITE_CID: + return "cOCTVC1_MAIN_MSG_FILE_WRITE_CID"; + case cOCTVC1_MAIN_MSG_FILE_READ_CID: + return "cOCTVC1_MAIN_MSG_FILE_READ_CID"; + case cOCTVC1_MAIN_MSG_FILE_INFO_CID: + return "cOCTVC1_MAIN_MSG_FILE_INFO_CID"; + case cOCTVC1_MAIN_MSG_FILE_LIST_CID: + return "cOCTVC1_MAIN_MSG_FILE_LIST_CID"; + case cOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_CID: + return "cOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_CID"; + case cOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_CID: + return "cOCTVC1_MAIN_MSG_FILE_SYSTEM_INFO_FILE_CID"; + case cOCTVC1_MAIN_MSG_LOG_READ_ENTRY_CID: + return "cOCTVC1_MAIN_MSG_LOG_READ_ENTRY_CID"; + case cOCTVC1_MAIN_MSG_LOG_ERASE_CID: + return "cOCTVC1_MAIN_MSG_LOG_ERASE_CID"; + case cOCTVC1_MAIN_MSG_LICENSING_INFO_CID: + return "cOCTVC1_MAIN_MSG_LICENSING_INFO_CID"; + case cOCTVC1_MAIN_MSG_OCT1010_RESET_CID: + return "cOCTVC1_MAIN_MSG_OCT1010_RESET_CID"; + case cOCTVC1_MAIN_MSG_OCT1010_INFO_CID: + return "cOCTVC1_MAIN_MSG_OCT1010_INFO_CID"; + case cOCTVC1_MAIN_MSG_ETH_STATS_CID: + return "cOCTVC1_MAIN_MSG_ETH_STATS_CID"; + case cOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_CID: + return "cOCTVC1_MAIN_MSG_ETH_INFO_PORT_CONFIG_CID"; + case cOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CID: + return "cOCTVC1_MAIN_MSG_ETH_MODIFY_PORT_CONFIG_CID"; + case cOCTVC1_MAIN_MSG_REGISTER_READ_CID: + return "cOCTVC1_MAIN_MSG_REGISTER_READ_CID"; + case cOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_CID: + return "cOCTVC1_MAIN_MSG_OCT1010_INFO_OCT1010ID_CID"; + case cOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_CID: + return "cOCTVC1_MAIN_MSG_OCT1010_STATUS_CORE_CID"; + case cOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_CID: + return "cOCTVC1_MAIN_MSG_OCT1010_INFO_CORE_CID"; + case cOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CID: + return "cOCTVC1_MAIN_MSG_GPIO_MODIFY_BANK_CONFIG_CID"; + case cOCTVC1_MAIN_MSG_GPIO_READ_BANK_CID: + return "cOCTVC1_MAIN_MSG_GPIO_READ_BANK_CID"; + case cOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CID: + return "cOCTVC1_MAIN_MSG_GPIO_WRITE_BANK_CID"; + case cOCTVC1_MAIN_MSG_SPI_ACCESS_CID: + return "cOCTVC1_MAIN_MSG_SPI_ACCESS_CID"; + case cOCTVC1_MAIN_MSG_PROCESS_LIST_CID: + return "cOCTVC1_MAIN_MSG_PROCESS_LIST_CID"; + case cOCTVC1_MAIN_MSG_PROCESS_INFO_CID: + return "cOCTVC1_MAIN_MSG_PROCESS_INFO_CID"; + case cOCTVC1_MAIN_MSG_MDIO_READ_PHY_CID: + return "cOCTVC1_MAIN_MSG_MDIO_READ_PHY_CID"; + case cOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CID: + return "cOCTVC1_MAIN_MSG_MDIO_WRITE_PHY_CID"; + case cOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CID: + return "cOCTVC1_MAIN_MSG_MODULE_MODIFY_EVT_CID"; + case cOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CID: + return "cOCTVC1_MAIN_MSG_GPIO_MONITOR_BANK_CID"; + case cOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CID: + return "cOCTVC1_MAIN_MSG_MDIO_MONITOR_PHY_CID"; + case cOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CID: + return "cOCTVC1_MAIN_MSG_PROCESS_MONITOR_CPU_USAGE_CID"; + case cOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CID: + return "cOCTVC1_MAIN_MSG_PROCESS_INFO_CPU_USAGE_CID"; + case cOCTVC1_MAIN_MSG_BUFFER_OPEN_CID: + return "cOCTVC1_MAIN_MSG_BUFFER_OPEN_CID"; + case cOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_CID: + return "cOCTVC1_MAIN_MSG_BUFFER_INFO_BY_NAME_CID"; + case cOCTVC1_MAIN_MSG_BUFFER_CLOSE_CID: + return "cOCTVC1_MAIN_MSG_BUFFER_CLOSE_CID"; + case cOCTVC1_MAIN_MSG_BUFFER_INFO_CID: + return "cOCTVC1_MAIN_MSG_BUFFER_INFO_CID"; + case cOCTVC1_MAIN_MSG_BUFFER_LIST_CID: + return "cOCTVC1_MAIN_MSG_BUFFER_LIST_CID"; + case cOCTVC1_MAIN_MSG_BUFFER_MODIFY_CID: + return "cOCTVC1_MAIN_MSG_BUFFER_MODIFY_CID"; + case cOCTVC1_MAIN_MSG_BUFFER_WRITE_CID: + return "cOCTVC1_MAIN_MSG_BUFFER_WRITE_CID"; + case cOCTVC1_MAIN_MSG_BUFFER_READ_CID: + return "cOCTVC1_MAIN_MSG_BUFFER_READ_CID"; + case cOCTVC1_MAIN_MSG_MODULE_START_TRACING_CID: + return "cOCTVC1_MAIN_MSG_MODULE_START_TRACING_CID"; + case cOCTVC1_MAIN_MSG_MODULE_STOP_TRACING_CID: + return "cOCTVC1_MAIN_MSG_MODULE_STOP_TRACING_CID"; + case cOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CID: + return "cOCTVC1_MAIN_MSG_DEBUG_FORWARD_OPEN_CID"; + case cOCTVC1_MAIN_MSG_MODULE_INFO_EVT_CID: + return "cOCTVC1_MAIN_MSG_MODULE_INFO_EVT_CID"; + case cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CID: + return "cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_EXECUTE_MGW_FAILOVER_CID"; + case cOCTVC1_MAIN_MSG_OCT1010_STATS_CID: + return "cOCTVC1_MAIN_MSG_OCT1010_STATS_CID"; + case cOCTVC1_MAIN_MSG_OCT2200_STATS_CID: + return "cOCTVC1_MAIN_MSG_OCT2200_STATS_CID"; + case cOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EID: + return "cOCTVC1_MAIN_MSG_GPIO_BANK_CHANGE_EID"; + case cOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EID: + return "cOCTVC1_MAIN_MSG_MDIO_PHY_CHANGE_EID"; + case cOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EID: + return "cOCTVC1_MAIN_MSG_PROCESS_CPU_USAGE_REPORT_EID"; + case cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EID: + return "cOCTVC1_MAIN_MSG_REDUNDANCY_SERVER_MGW_FAILOVER_DONE_EID"; + case cOCTVC1_MAIN_MSG_MODULE_TRACING_BUFFER_FULL_EID: + return "cOCTVC1_MAIN_MSG_MODULE_TRACING_BUFFER_FULL_EID"; + case cOCTVC1_MAIN_MSG_MODULE_TRACING_STOP_EID: + return "cOCTVC1_MAIN_MSG_MODULE_TRACING_STOP_EID"; + case cOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EID: + return "cOCTVC1_MAIN_MSG_DEVICE_OPUS_CORE_EXEC_REPORT_EID"; + /* OCTVC1_GSM */ + case cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CID: + return "cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_EMPTY_FRAME_CID"; + case cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CID: + return "cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_REQUEST_DATA_CID"; + case cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CID: + return "cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONNECT_CID"; + case cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CID: + return "cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_DISCONNECT_CID"; + case cOCTVC1_GSM_MSG_TRX_STATUS_CID: + return "cOCTVC1_GSM_MSG_TRX_STATUS_CID"; + case cOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_CID: + return "cOCTVC1_GSM_MSG_TRX_STATUS_TIMESLOT_CID"; + case cOCTVC1_GSM_MSG_TRX_RESET_CID: + return "cOCTVC1_GSM_MSG_TRX_RESET_CID"; + case cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_CID: + return "cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_RESET_CID"; + case cOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CID: + return "cOCTVC1_GSM_MSG_LOGICAL_CHANNEL_ACTIVATE_CID"; + case cOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CID: + return "cOCTVC1_GSM_MSG_LOGICAL_CHANNEL_DEACTIVATE_CID"; + case cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CID: + return "cOCTVC1_GSM_MSG_PHYSICAL_CHANNEL_CONFIGURE_CIPHERING_CID"; + case cOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_CID: + return "cOCTVC1_GSM_MSG_MODULE_INFO_HARDWARE_CID"; + case cOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_CID: + return "cOCTVC1_GSM_MSG_TRX_REQUEST_TIMESLOT_MEASUREMENT_REPORT_CID"; + case cOCTVC1_GSM_MSG_TEST_START_ETSI_CID: + return "cOCTVC1_GSM_MSG_TEST_START_ETSI_CID"; + case cOCTVC1_GSM_MSG_TEST_START_FCC_CID: + return "cOCTVC1_GSM_MSG_TEST_START_FCC_CID"; + case cOCTVC1_GSM_MSG_TEST_END_ETSI_CID: + return "cOCTVC1_GSM_MSG_TEST_END_ETSI_CID"; + case cOCTVC1_GSM_MSG_TEST_END_FCC_CID: + return "cOCTVC1_GSM_MSG_TEST_END_FCC_CID"; + case cOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CID: + return "cOCTVC1_GSM_MSG_MODULE_MODIFY_EVT_CID"; + case cOCTVC1_GSM_MSG_MODULE_INFO_EVT_CID: + return "cOCTVC1_GSM_MSG_MODULE_INFO_EVT_CID"; + case cOCTVC1_GSM_MSG_MODULE_INFO_CID: + return "cOCTVC1_GSM_MSG_MODULE_INFO_CID"; + case cOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CID: + return "cOCTVC1_GSM_MSG_PROCESS_UNIT_MODIFY_EVT_CID"; + case cOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_CID: + return "cOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_EVT_CID"; + case cOCTVC1_GSM_MSG_TRX_CONFIGURE_CID: + return "cOCTVC1_GSM_MSG_TRX_CONFIGURE_CID"; + case cOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_CID: + return "cOCTVC1_GSM_MSG_PROCESS_UNIT_LIST_CID"; + case cOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_CID: + return "cOCTVC1_GSM_MSG_PROCESS_UNIT_INFO_CID"; + case cOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CID: + return "cOCTVC1_GSM_MSG_PROCESS_UNIT_STATS_CID"; + case cOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EID: + return "cOCTVC1_GSM_MSG_MODULE_DATA_INDICATION_EID"; + case cOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EID: + return "cOCTVC1_GSM_MSG_MODULE_READY_TO_SEND_INDICATION_EID"; + case cOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EID: + return "cOCTVC1_GSM_MSG_MODULE_RACH_INDICATION_EID"; + case cOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EID: + return "cOCTVC1_GSM_MSG_MODULE_TIME_INDICATION_EID"; + case cOCTVC1_GSM_MSG_TEST_ETSI_TEST_REPORT_EID: + return "cOCTVC1_GSM_MSG_TEST_ETSI_TEST_REPORT_EID"; + case cOCTVC1_GSM_MSG_MODULE_TRX_RADIO_READY_EID: + return "cOCTVC1_GSM_MSG_MODULE_TRX_RADIO_READY_EID"; + case cOCTVC1_GSM_MSG_MODULE_ERROR_EID: + return "cOCTVC1_GSM_MSG_MODULE_ERROR_EID"; + case cOCTVC1_GSM_MSG_MODULE_MESSAGE_EID: + return "cOCTVC1_GSM_MSG_MODULE_MESSAGE_EID"; + case cOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EID: + return "cOCTVC1_GSM_MSG_MODULE_CHECKPOINT_EID"; + case cOCTVC1_GSM_MSG_MODULE_TRACING_EID: + return "cOCTVC1_GSM_MSG_MODULE_TRACING_EID"; + case cOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EID: + return "cOCTVC1_GSM_MSG_PROCESS_UNIT_ERROR_EID"; + case cOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EID: + return "cOCTVC1_GSM_MSG_PROCESS_UNIT_MESSAGE_EID"; + case cOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EID: + return "cOCTVC1_GSM_MSG_PROCESS_UNIT_CHECKPOINT_EID"; + case cOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EID: + return "cOCTVC1_GSM_MSG_PROCESS_UNIT_TRACING_EID"; + + } + sprintf( g_szUnknownoctvc1_id2string, "0x%.8X", f_ulId ); + return g_szUnknownoctvc1_id2string; +} +#endif + +#endif /* __OCTVC1_ID2STRING__ */ diff --git a/software/include/vocallo/octvc1_id2string_priv.h b/software/include/vocallo/octvc1_id2string_priv.h new file mode 100644 index 0000000..0f6b7bd --- /dev/null +++ b/software/include/vocallo/octvc1_id2string_priv.h @@ -0,0 +1,183 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: octvc1_id2string_priv.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +This file contains the id2string implementation for package OCTVC1 + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + + +#ifndef __OCTVC1_ID2STRING_PRIV__ +#define __OCTVC1_ID2STRING_PRIV__ + +#include "../octdev_types.h" +#include "octvc1_id2string.h" +/* ------------------------------------------------------------------------------------- + OCTVC1_ID2STRING_PRIV + -------------------------------------------------------------------------------------*/ +#define mOCTVC1_ID2STRING_PRIV( _f_ulId ) \ + octvc1_id2string_priv( _f_ulId ) + +#ifndef OCTVC1_ID2STRING_PRIV_DECLARE +extern const char * octvc1_id2string_priv( tOCT_UINT32 f_ulId ); +#endif + + +#ifdef OCTVC1_ID2STRING_PRIV_DECLARE +#include +#include "main/octvc1_main_id_priv.h" +#include "cpp/octvc1_cpp_id_priv.h" +#include "net/octvc1_net_id_priv.h" + + +/* ------------------------------------------------------------------------------------- + octvc1_id2string_priv + -------------------------------------------------------------------------------------*/ +const char * octvc1_id2string_priv( tOCT_UINT32 f_ulId ) +{ + static char g_szUnknownoctvc1_id2string_priv[32]; + switch( f_ulId ) + { + case cOCTVC1_MAIN_MSG_ETH_RESTRICTED_UNBLOCK_PORT_CID: + return "cOCTVC1_MAIN_MSG_ETH_RESTRICTED_UNBLOCK_PORT_CID"; + case cOCTVC1_MAIN_MSG_PROCESS_GET_MONITORING_CID: + return "cOCTVC1_MAIN_MSG_PROCESS_GET_MONITORING_CID"; + case cOCTVC1_MAIN_MSG_MODULE_INCREMENT_TIMESTAMP_CID: + return "cOCTVC1_MAIN_MSG_MODULE_INCREMENT_TIMESTAMP_CID"; + case cOCTVC1_MAIN_MSG_MODULE_START_DMA_TRACING_CID: + return "cOCTVC1_MAIN_MSG_MODULE_START_DMA_TRACING_CID"; + case cOCTVC1_MAIN_MSG_MODULE_STOP_DMA_TRACING_CID: + return "cOCTVC1_MAIN_MSG_MODULE_STOP_DMA_TRACING_CID"; + case cOCTVC1_MAIN_MSG_MODULE_PAUSE_DMA_TRACING_CID: + return "cOCTVC1_MAIN_MSG_MODULE_PAUSE_DMA_TRACING_CID"; + case cOCTVC1_MAIN_MSG_MODULE_GET_DMA_TRACING_CID: + return "cOCTVC1_MAIN_MSG_MODULE_GET_DMA_TRACING_CID"; + case cOCTVC1_MAIN_MSG_API_SYSTEM_START_MONITORING_CID: + return "cOCTVC1_MAIN_MSG_API_SYSTEM_START_MONITORING_CID"; + case cOCTVC1_MAIN_MSG_API_SYSTEM_STOP_MONITORING_CID: + return "cOCTVC1_MAIN_MSG_API_SYSTEM_STOP_MONITORING_CID"; + case cOCTVC1_MAIN_MSG_API_SYSTEM_LIST_COMMAND_CID: + return "cOCTVC1_MAIN_MSG_API_SYSTEM_LIST_COMMAND_CID"; + case cOCTVC1_MAIN_MSG_API_SYSTEM_STATS_COMMAND_CID: + return "cOCTVC1_MAIN_MSG_API_SYSTEM_STATS_COMMAND_CID"; + case cOCTVC1_MAIN_MSG_GOOSE_TEST_INFO_CID: + return "cOCTVC1_MAIN_MSG_GOOSE_TEST_INFO_CID"; + case cOCTVC1_MAIN_MSG_LOG_INFO_CID: + return "cOCTVC1_MAIN_MSG_LOG_INFO_CID"; + case cOCTVC1_MAIN_MSG_LOG_INFO_TRACE_CID: + return "cOCTVC1_MAIN_MSG_LOG_INFO_TRACE_CID"; + case cOCTVC1_MAIN_MSG_LOG_START_TRACE_CID: + return "cOCTVC1_MAIN_MSG_LOG_START_TRACE_CID"; + case cOCTVC1_MAIN_MSG_LOG_STOP_TRACE_CID: + return "cOCTVC1_MAIN_MSG_LOG_STOP_TRACE_CID"; + case cOCTVC1_MAIN_MSG_LOG_ERASE_TRACE_CID: + return "cOCTVC1_MAIN_MSG_LOG_ERASE_TRACE_CID"; + case cOCTVC1_MAIN_MSG_MODULE_GET_VERSION_CID: + return "cOCTVC1_MAIN_MSG_MODULE_GET_VERSION_CID"; + case cOCTVC1_MAIN_MSG_MODULE_GET_SW_CONFIG_CID: + return "cOCTVC1_MAIN_MSG_MODULE_GET_SW_CONFIG_CID"; + case cOCTVC1_MAIN_MSG_TDM_INITIALIZE_BUFFER_CID: + return "cOCTVC1_MAIN_MSG_TDM_INITIALIZE_BUFFER_CID"; + case cOCTVC1_MAIN_MSG_MODULE_CLEANUP_API_RESOURCE_CID: + return "cOCTVC1_MAIN_MSG_MODULE_CLEANUP_API_RESOURCE_CID"; + case cOCTVC1_MAIN_MSG_MODULE_GET_API_RESOURCE_CID: + return "cOCTVC1_MAIN_MSG_MODULE_GET_API_RESOURCE_CID"; + case cOCTVC1_MAIN_MSG_MODULE_STATS_SCHEDULER_CID: + return "cOCTVC1_MAIN_MSG_MODULE_STATS_SCHEDULER_CID"; + case cOCTVC1_MAIN_MSG_MODULE_STATS_AF_CID: + return "cOCTVC1_MAIN_MSG_MODULE_STATS_AF_CID"; + case cOCTVC1_MAIN_MSG_MODULE_STATS_TDM_DRIVER_CID: + return "cOCTVC1_MAIN_MSG_MODULE_STATS_TDM_DRIVER_CID"; + case cOCTVC1_MAIN_MSG_TDM_MODIFY_CID: + return "cOCTVC1_MAIN_MSG_TDM_MODIFY_CID"; + case cOCTVC1_MAIN_MSG_GOOSE_TEST_TEST_EID: + return "cOCTVC1_MAIN_MSG_GOOSE_TEST_TEST_EID"; + case cOCTVC1_CPP_MSG_MODULE_STATS_IP_CID: + return "cOCTVC1_CPP_MSG_MODULE_STATS_IP_CID"; + case cOCTVC1_CPP_MSG_RX_UDP_PORT_OPEN_CID: + return "cOCTVC1_CPP_MSG_RX_UDP_PORT_OPEN_CID"; + case cOCTVC1_CPP_MSG_RX_UDP_PORT_CLOSE_CID: + return "cOCTVC1_CPP_MSG_RX_UDP_PORT_CLOSE_CID"; + case cOCTVC1_CPP_MSG_RX_UDP_PORT_STATS_CID: + return "cOCTVC1_CPP_MSG_RX_UDP_PORT_STATS_CID"; + case cOCTVC1_CPP_MSG_RX_UDP_PORT_ACTIVATE_CNCT_CID: + return "cOCTVC1_CPP_MSG_RX_UDP_PORT_ACTIVATE_CNCT_CID"; + case cOCTVC1_CPP_MSG_RX_UDP_PORT_DEACTIVATE_CNCT_CID: + return "cOCTVC1_CPP_MSG_RX_UDP_PORT_DEACTIVATE_CNCT_CID"; + case cOCTVC1_CPP_MSG_RX_UDP_PORT_STATS_CNCT_CID: + return "cOCTVC1_CPP_MSG_RX_UDP_PORT_STATS_CNCT_CID"; + case cOCTVC1_CPP_MSG_TX_UDP_CNCT_OPEN_CID: + return "cOCTVC1_CPP_MSG_TX_UDP_CNCT_OPEN_CID"; + case cOCTVC1_CPP_MSG_TX_UDP_CNCT_MODIFY_CID: + return "cOCTVC1_CPP_MSG_TX_UDP_CNCT_MODIFY_CID"; + case cOCTVC1_CPP_MSG_TX_UDP_CNCT_CLOSE_CID: + return "cOCTVC1_CPP_MSG_TX_UDP_CNCT_CLOSE_CID"; + case cOCTVC1_CPP_MSG_TX_UDP_CNCT_STATS_CID: + return "cOCTVC1_CPP_MSG_TX_UDP_CNCT_STATS_CID"; + case cOCTVC1_CPP_MSG_RX_IP_PORT_OPEN_CID: + return "cOCTVC1_CPP_MSG_RX_IP_PORT_OPEN_CID"; + case cOCTVC1_CPP_MSG_RX_IP_PORT_CLOSE_CID: + return "cOCTVC1_CPP_MSG_RX_IP_PORT_CLOSE_CID"; + case cOCTVC1_CPP_MSG_RX_IP_PORT_STATS_CID: + return "cOCTVC1_CPP_MSG_RX_IP_PORT_STATS_CID"; + case cOCTVC1_CPP_MSG_RX_TCP_PORT_OPEN_CID: + return "cOCTVC1_CPP_MSG_RX_TCP_PORT_OPEN_CID"; + case cOCTVC1_CPP_MSG_RX_TCP_PORT_CLOSE_CID: + return "cOCTVC1_CPP_MSG_RX_TCP_PORT_CLOSE_CID"; + case cOCTVC1_CPP_MSG_RX_TCP_PORT_STATS_CID: + return "cOCTVC1_CPP_MSG_RX_TCP_PORT_STATS_CID"; + case cOCTVC1_CPP_MSG_RX_TCP_PORT_ACTIVATE_CNCT_CID: + return "cOCTVC1_CPP_MSG_RX_TCP_PORT_ACTIVATE_CNCT_CID"; + case cOCTVC1_CPP_MSG_RX_TCP_PORT_DEACTIVATE_CNCT_CID: + return "cOCTVC1_CPP_MSG_RX_TCP_PORT_DEACTIVATE_CNCT_CID"; + case cOCTVC1_CPP_MSG_RX_TCP_PORT_STATS_CNCT_CID: + return "cOCTVC1_CPP_MSG_RX_TCP_PORT_STATS_CNCT_CID"; + case cOCTVC1_NET_MSG_MODULE_MODIFY_DEST_CID: + return "cOCTVC1_NET_MSG_MODULE_MODIFY_DEST_CID"; + case cOCTVC1_NET_MSG_MODULE_GET_CONFIG_CID: + return "cOCTVC1_NET_MSG_MODULE_GET_CONFIG_CID"; + case cOCTVC1_NET_MSG_ETH_LINK_OPEN_CID: + return "cOCTVC1_NET_MSG_ETH_LINK_OPEN_CID"; + case cOCTVC1_NET_MSG_ETH_LINK_CLOSE_CID: + return "cOCTVC1_NET_MSG_ETH_LINK_CLOSE_CID"; + case cOCTVC1_NET_MSG_ETH_LINK_INFO_CID: + return "cOCTVC1_NET_MSG_ETH_LINK_INFO_CID"; + case cOCTVC1_NET_MSG_ETH_LINK_STATS_CID: + return "cOCTVC1_NET_MSG_ETH_LINK_STATS_CID"; + case cOCTVC1_NET_MSG_ETH_LINK_ADD_CACHE_ENTRY_CID: + return "cOCTVC1_NET_MSG_ETH_LINK_ADD_CACHE_ENTRY_CID"; + case cOCTVC1_NET_MSG_ETH_LINK_REMOVE_CACHE_ENTRY_CID: + return "cOCTVC1_NET_MSG_ETH_LINK_REMOVE_CACHE_ENTRY_CID"; + case cOCTVC1_NET_MSG_ETH_LINK_MODIFY_CACHE_ENTRY_CID: + return "cOCTVC1_NET_MSG_ETH_LINK_MODIFY_CACHE_ENTRY_CID"; + case cOCTVC1_NET_MSG_ETH_LINK_INFO_CACHE_ENTRY_CID: + return "cOCTVC1_NET_MSG_ETH_LINK_INFO_CACHE_ENTRY_CID"; + case cOCTVC1_NET_MSG_CUSTOM_LOCAL_HOST_OPEN_CID: + return "cOCTVC1_NET_MSG_CUSTOM_LOCAL_HOST_OPEN_CID"; + case cOCTVC1_NET_MSG_CUSTOM_LOCAL_HOST_CLOSE_CID: + return "cOCTVC1_NET_MSG_CUSTOM_LOCAL_HOST_CLOSE_CID"; + case cOCTVC1_NET_MSG_CUSTOM_LOCAL_HOST_INFO_CID: + return "cOCTVC1_NET_MSG_CUSTOM_LOCAL_HOST_INFO_CID"; + case cOCTVC1_NET_MSG_ETH_LINK_MODIFY_CID: + return "cOCTVC1_NET_MSG_ETH_LINK_MODIFY_CID"; + case cOCTVC1_NET_MSG_MODULE_MODIFY_NTP_TIMESTAMP_CID: + return "cOCTVC1_NET_MSG_MODULE_MODIFY_NTP_TIMESTAMP_CID"; + case cOCTVC1_NET_MSG_MODULE_INFO_NTP_TIMESTAMP_CID: + return "cOCTVC1_NET_MSG_MODULE_INFO_NTP_TIMESTAMP_CID"; + + } + return octvc1_id2string( f_ulId ); +} +#endif + +#endif /* __OCTVC1_ID2STRING_PRIV__ */ diff --git a/software/include/vocallo/octvc1_ip.h b/software/include/vocallo/octvc1_ip.h new file mode 100644 index 0000000..7aee2c3 --- /dev/null +++ b/software/include/vocallo/octvc1_ip.h @@ -0,0 +1,51 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_IP.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_IP_H__ +#define __OCTVC1_IP_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "../octdev_types.h" + + +/************************ COMMON DEFINITIONS *******************************/ + +/*------------------------------------------------------------------------------------- + tOCTVC1_IP_VERSION_ENUM : IP versions +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_IP_VERSION_ENUM tOCTDEV_IP_VERSION_ENUM + +#define cOCTVC1_IP_VERSION_ENUM_4 cOCTDEV_IP_VERSION_ENUM_4 +#define cOCTVC1_IP_VERSION_ENUM_6 cOCTDEV_IP_VERSION_ENUM_6 +#define cOCTVC1_IP_VERSION_ENUM_INVALID cOCTDEV_IP_VERSION_ENUM_INVALID + +/*------------------------------------------------------------------------------------- + tOCTVC1_IP_ADDRESS : IP address structure +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_IP_ADDRESS tOCTDEV_IP_ADDRESS + + + +/*-------------------------------------------------------------------------- + SWAP directive (for compatibility reason) +----------------------------------------------------------------------------*/ +#define mOCTVC1_IP_ADDRESS_SWAP mOCTDEV_IP_ADDRESS_SWAP + + + +#endif /* __OCTVC1_IP_H__ */ + diff --git a/software/include/vocallo/octvc1_licensing_rc.h b/software/include/vocallo/octvc1_licensing_rc.h new file mode 100644 index 0000000..b37c67c --- /dev/null +++ b/software/include/vocallo/octvc1_licensing_rc.h @@ -0,0 +1,31 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_LICENSING_RC.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: Contains the return codes for the LICENSING API. + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Octasic_Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef OCTVC1_LICENSING_RC_H__ +#define OCTVC1_LICENSING_RC_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "octvc1_base.h" + +/**************************************************************************** + LICENSING return codes + ****************************************************************************/ +#define cOCTVC1_LICENSING_RC_DENIED ( 0x0001 + cOCTVC1_LICENSING_RC_BASE ) +#define cOCTVC1_LICENSING_RC_INVALID_LICENSE ( 0x0002 + cOCTVC1_LICENSING_RC_BASE ) + +#endif /* OCTVC1_LICENSING_RC_H__ */ + diff --git a/software/include/vocallo/octvc1_list.h b/software/include/vocallo/octvc1_list.h new file mode 100644 index 0000000..72011db --- /dev/null +++ b/software/include/vocallo/octvc1_list.h @@ -0,0 +1,127 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_LIST.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_LIST_H__ +#define __OCTVC1_LIST_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "../octdev_types.h" +#include "octvc1_base.h" +#include "octvc1_cursor.h" + + +/************************ COMMON DEFINITIONS *******************************/ + +/*------------------------------------------------------------------------------------- + tOCTVC1_LIST_HANDLE_GET + Handle list List structure, + Used when the objects to list are identified by a tOCTVC1_HANDLE. + + Members: + ulNumHandle + Number of valid handles in aHandle + aHandle + Array containing the listed handles +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCT_UINT32 ulNumHandle; + tOCTVC1_HANDLE aHandle[cOCTVC1_HANDLE_OBJECT_LIST_MAX_ENTRY]; + +} tOCTVC1_LIST_HANDLE_GET; + +/*------------------------------------------------------------------------------------- + tOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID + Handle list List structure, + Used when the objects to list are identified by a tOCTVC1_SUB_OBJECT_ID. + + Members: + hParent + Handle of the parent of the sub-object IDs + ulNumSubObjectId + Number of valid entries in aSubObjectId + aSubObjectId + Array containing the listed sub object IDs +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_HANDLE hParent; + tOCT_UINT32 ulNumSubObjectId; + tOCTVC1_SUB_OBJECT_ID aSubObjectId[cOCTVC1_HANDLE_OBJECT_LIST_MAX_ENTRY]; + +} tOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID; + +/*------------------------------------------------------------------------------------- + tOCTVC1_LIST_HANDLE_OBJECT_GET + Handle Object list List structure, + Used when the objects to list are identified by a tOCTVC1_HANDLE_OBJECT. + + Members: + ulNumHandleObject + Number of valid handle objects in aHandleObject + aHandleObject + Array containing the listed handles +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCT_UINT32 ulNumHandleObject; + tOCTVC1_HANDLE_OBJECT aHandleObject[cOCTVC1_HANDLE_OBJECT_LIST_MAX_ENTRY]; + +} tOCTVC1_LIST_HANDLE_OBJECT_GET; + +/*------------------------------------------------------------------------------------- + tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID + Handle Object list List structure, + Used when the objects to list are identified by a tOCTVC1_SUB_OBJECT_ID. + + Members: + hParent + Handle object of the parent + ulNumSubObjectId + Number of valid sub object IDs in aSubObjectId + aSubObjectId + Array containing the listed handles +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_HANDLE_OBJECT hParent; + tOCT_UINT32 ulNumSubObjectId; + tOCTVC1_SUB_OBJECT_ID aSubObjectId[cOCTVC1_HANDLE_OBJECT_LIST_MAX_ENTRY]; + +} tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID; + +/*------------------------------------------------------------------------------------- + tOCTVC1_LIST_INDEX_GET + Object Index List structure, + Used when the objects to list are identified by a tOCTVC1_INDEX. + + Members: + ulNumIndex + Number of valid index in aIndex + aIndex + Array containing the listed of indexes +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCT_UINT32 ulNumIndex; + tOCTVC1_INDEX aIndex[cOCTVC1_HANDLE_OBJECT_LIST_MAX_ENTRY]; + +} tOCTVC1_LIST_INDEX_GET; + + +#endif /* __OCTVC1_LIST_H__ */ + diff --git a/software/include/vocallo/octvc1_list_swap.h b/software/include/vocallo/octvc1_list_swap.h new file mode 100644 index 0000000..add670f --- /dev/null +++ b/software/include/vocallo/octvc1_list_swap.h @@ -0,0 +1,105 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* + +File: octvc1_list_swap.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#ifndef __OCTVC1_LIST_SWAP_H__ +#define __OCTVC1_LIST_SWAP_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************** INCLUDE FILES *******************************/ +#include "octvc1_swap_hdrs.h" +#include "octvc1_list.h" + +/********************************* MACROS **********************************/ + + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_LIST_HANDLE_GET_SWAP( _f_pParms ){ tOCTVC1_LIST_HANDLE_GET * pOCTVC1_LIST_HANDLE_GET = (_f_pParms); \ + ((tOCTVC1_LIST_HANDLE_GET *)pOCTVC1_LIST_HANDLE_GET)->ulNumHandle = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_LIST_HANDLE_GET *)pOCTVC1_LIST_HANDLE_GET)->ulNumHandle); \ + { tOCT_UINT32 jOCTVC1_LIST_HANDLE_GET; \ + for( jOCTVC1_LIST_HANDLE_GET=0; \ + jOCTVC1_LIST_HANDLE_GET<(cOCTVC1_HANDLE_OBJECT_LIST_MAX_ENTRY);jOCTVC1_LIST_HANDLE_GET++ ) \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_LIST_HANDLE_GET *)pOCTVC1_LIST_HANDLE_GET)->aHandle[jOCTVC1_LIST_HANDLE_GET] ); }} \ +} +#else +#define mOCTVC1_LIST_HANDLE_GET_SWAP( pOCTVC1_LIST_HANDLE_GET ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID_SWAP( _f_pParms ){ tOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID * pOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID = (_f_pParms); \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID *)pOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID)->hParent ); } \ + ((tOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID *)pOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID)->ulNumSubObjectId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID *)pOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID)->ulNumSubObjectId); \ + { tOCT_UINT32 iOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID; \ + for( iOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID=0; \ + iOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID<(cOCTVC1_HANDLE_OBJECT_LIST_MAX_ENTRY);iOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID++ ) \ + ((tOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID *)pOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID)->aSubObjectId[iOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID] = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID *)pOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID)->aSubObjectId[iOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID]);}\ +} +#else +#define mOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID_SWAP( pOCTVC1_LIST_HANDLE_GET_SUB_OBJECT_ID ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_LIST_HANDLE_OBJECT_GET_SWAP( _f_pParms ){ tOCTVC1_LIST_HANDLE_OBJECT_GET * pOCTVC1_LIST_HANDLE_OBJECT_GET = (_f_pParms); \ + ((tOCTVC1_LIST_HANDLE_OBJECT_GET *)pOCTVC1_LIST_HANDLE_OBJECT_GET)->ulNumHandleObject = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_LIST_HANDLE_OBJECT_GET *)pOCTVC1_LIST_HANDLE_OBJECT_GET)->ulNumHandleObject); \ + { tOCT_UINT32 iOCTVC1_LIST_HANDLE_OBJECT_GET; \ + for( iOCTVC1_LIST_HANDLE_OBJECT_GET=0; \ + iOCTVC1_LIST_HANDLE_OBJECT_GET<(cOCTVC1_HANDLE_OBJECT_LIST_MAX_ENTRY);iOCTVC1_LIST_HANDLE_OBJECT_GET++ ) \ + ((tOCTVC1_LIST_HANDLE_OBJECT_GET *)pOCTVC1_LIST_HANDLE_OBJECT_GET)->aHandleObject[iOCTVC1_LIST_HANDLE_OBJECT_GET] = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_LIST_HANDLE_OBJECT_GET *)pOCTVC1_LIST_HANDLE_OBJECT_GET)->aHandleObject[iOCTVC1_LIST_HANDLE_OBJECT_GET]);}\ +} +#else +#define mOCTVC1_LIST_HANDLE_OBJECT_GET_SWAP( pOCTVC1_LIST_HANDLE_OBJECT_GET ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID_SWAP( _f_pParms ){ tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID * pOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID = (_f_pParms); \ + ((tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID *)pOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID)->hParent = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID *)pOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID)->hParent); \ + ((tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID *)pOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID)->ulNumSubObjectId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID *)pOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID)->ulNumSubObjectId); \ + { tOCT_UINT32 iOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID; \ + for( iOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID=0; \ + iOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID<(cOCTVC1_HANDLE_OBJECT_LIST_MAX_ENTRY);iOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID++ ) \ + ((tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID *)pOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID)->aSubObjectId[iOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID] = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID *)pOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID)->aSubObjectId[iOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID]);}\ +} +#else +#define mOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID_SWAP( pOCTVC1_LIST_HANDLE_OBJECT_GET_SUB_OBJECT_ID ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_LIST_INDEX_GET_SWAP( _f_pParms ){ tOCTVC1_LIST_INDEX_GET * pOCTVC1_LIST_INDEX_GET = (_f_pParms); \ + ((tOCTVC1_LIST_INDEX_GET *)pOCTVC1_LIST_INDEX_GET)->ulNumIndex = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_LIST_INDEX_GET *)pOCTVC1_LIST_INDEX_GET)->ulNumIndex); \ + { tOCT_UINT32 iOCTVC1_LIST_INDEX_GET; \ + for( iOCTVC1_LIST_INDEX_GET=0; \ + iOCTVC1_LIST_INDEX_GET<(cOCTVC1_HANDLE_OBJECT_LIST_MAX_ENTRY);iOCTVC1_LIST_INDEX_GET++ ) \ + ((tOCTVC1_LIST_INDEX_GET *)pOCTVC1_LIST_INDEX_GET)->aIndex[iOCTVC1_LIST_INDEX_GET] = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_LIST_INDEX_GET *)pOCTVC1_LIST_INDEX_GET)->aIndex[iOCTVC1_LIST_INDEX_GET]);}\ +} +#else +#define mOCTVC1_LIST_INDEX_GET_SWAP( pOCTVC1_LIST_INDEX_GET ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#ifdef __cplusplus +} + +#endif + +#endif /* __OCTVC1_LIST_SWAP_H__ */ diff --git a/software/include/vocallo/octvc1_log.h b/software/include/vocallo/octvc1_log.h new file mode 100644 index 0000000..bff3275 --- /dev/null +++ b/software/include/vocallo/octvc1_log.h @@ -0,0 +1,134 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_LOG.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_LOG_H__ +#define __OCTVC1_LOG_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "../octdev_types.h" + + +/************************ COMMON DEFINITIONS *******************************/ + +/*------------------------------------------------------------------------------------- + Log and trace +-------------------------------------------------------------------------------------*/ +/*------------------------------------------------------------------------------------- + tOCTVC1_LOG_TYPE_ENUM : +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_LOG_TYPE_ENUM tOCT_UINT32 + +#define cOCTVC1_LOG_TYPE_ENUM_LOG 0 +#define cOCTVC1_LOG_TYPE_ENUM_TRACE 1 + +/*------------------------------------------------------------------------------------- + tOCTVC1_LOG_LEVEL_ENUM : +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_LOG_LEVEL_ENUM tOCT_UINT32 + +#define cOCTVC1_LOG_LEVEL_ENUM_EMERGENCY 0 +#define cOCTVC1_LOG_LEVEL_ENUM_ALERT 1 +#define cOCTVC1_LOG_LEVEL_ENUM_CRITICAL 2 +#define cOCTVC1_LOG_LEVEL_ENUM_ERROR 3 +#define cOCTVC1_LOG_LEVEL_ENUM_WARNING 4 +#define cOCTVC1_LOG_LEVEL_ENUM_NOTICE 5 + +/*------------------------------------------------------------------------------------- + tOCTVC1_LOG_TRACE_MASK : +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_LOG_TRACE_MASK tOCT_UINT32 + +#define cOCTVC1_LOG_TRACE_MASK_FNC_IN 0x01 +#define cOCTVC1_LOG_TRACE_MASK_FNC_OUT 0x02 +#define cOCTVC1_LOG_TRACE_MASK_INFO 0x04 +#define cOCTVC1_LOG_TRACE_MASK_DEBUG 0x08 +#define cOCTVC1_LOG_TRACE_MASK_USER_0 0x10 +#define cOCTVC1_LOG_TRACE_MASK_USER_1 0x20 +#define cOCTVC1_LOG_TRACE_MASK_USER_2 0x40 +#define cOCTVC1_LOG_TRACE_MASK_USER_3 0x80 +#define cOCTVC1_LOG_TRACE_MASK_NONE 0x00 +#define cOCTVC1_LOG_TRACE_MASK_ALL 0xFFFFFFFF + +/*------------------------------------------------------------------------------------- + tOCTVC1_LOG_ID : +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_LOG_ID tOCT_UINT32 + + +/*------------------------------------------------------------------------------------- + Log Header Type +-------------------------------------------------------------------------------------*/ +#define cOCTVC1_LOG_TYPE_BIT_OFFSET 28 +#define cOCTVC1_LOG_TYPE_BIT_MASK 0xF0000000 + +/*------------------------------------------------------------------------------------- + Log Header Fragment Extra Entry. +-------------------------------------------------------------------------------------*/ +#define cOCTVC1_LOG_FRAGMENT_BIT_OFFSET 27 +#define cOCTVC1_LOG_FRAGMENT_BIT_MASK 0x08000000 + +/*------------------------------------------------------------------------------------- + Log Header string data +-------------------------------------------------------------------------------------*/ +#define cOCTVC1_LOG_PAYLOAD_STR_BIT_OFFSET 26 +#define cOCTVC1_LOG_PAYLOAD_STR_BIT_MASK 0x04000000 + +/*------------------------------------------------------------------------------------- + Log Header info + If TYPE_LOG info value map to tOCTVC1_LOG_LEVEL_ENUM + If TYPE_TRACE info value map to tOCTVC1_LOG_TRACE_MASK +-------------------------------------------------------------------------------------*/ +#define cOCTVC1_LOG_INFO_BIT_OFFSET 16 +#define cOCTVC1_LOG_INFO_BIT_MASK 0x0FFF0000 + +/*------------------------------------------------------------------------------------- + Log Header payload length +-------------------------------------------------------------------------------------*/ +#define cOCTVC1_LOG_PAYLOAD_LENGTH_BIT_OFFSET 0 +#define cOCTVC1_LOG_PAYLOAD_LENGTH_BIT_MASK 0x0000FFFF +/*------------------------------------------------------------------------------------- + tOCTVC1_LOG_HEADER + Log and trace Header + + Members: + ulId + ulTime + Time of log, base on system time + hProcess + Process handle + ul_Type_Info_Length + bits[31:28] = Log TYPE tOCTVC1_LOG_TYPE_ENUM. + bits[27] = Fragment Extra Entry will follow. + bits[26] = Payload String Flag. + bits[25:24] = Reserved. + bits[23:16] = Type Info base of Log Type see tOCTVC1_LOG_TYPE_ENUM + If TYPE_LOG base tOCTVC1_LOG_LEVEL_ENUM + If TYPE_TRACE base tOCTVC1_LOG_TRACE_MASK + bits[15:0] = Log or Trace payload length (in bytes). +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVC1_LOG_ID ulId; + tOCT_UINT32 ulTime; + tOCT_UINT32 hProcess; + tOCT_UINT32 ul_Type_Info_Length; + +} tOCTVC1_LOG_HEADER; + + +#endif /* __OCTVC1_LOG_H__ */ + diff --git a/software/include/vocallo/octvc1_log_swap.h b/software/include/vocallo/octvc1_log_swap.h new file mode 100644 index 0000000..b7cf362 --- /dev/null +++ b/software/include/vocallo/octvc1_log_swap.h @@ -0,0 +1,47 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* + +File: octvc1_log_swap.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#ifndef __OCTVC1_LOG_SWAP_H__ +#define __OCTVC1_LOG_SWAP_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************** INCLUDE FILES *******************************/ +#include "octvc1_swap_hdrs.h" +#include "octvc1_log.h" + +/********************************* MACROS **********************************/ + + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_LOG_HEADER_SWAP( _f_pParms ){ tOCTVC1_LOG_HEADER * pOCTVC1_LOG_HEADER = (_f_pParms); \ + { mOCTVC1_LOG_ID_SWAP( &((tOCTVC1_LOG_HEADER *)pOCTVC1_LOG_HEADER)->ulId ); } \ + ((tOCTVC1_LOG_HEADER *)pOCTVC1_LOG_HEADER)->ulTime = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_LOG_HEADER *)pOCTVC1_LOG_HEADER)->ulTime); \ + ((tOCTVC1_LOG_HEADER *)pOCTVC1_LOG_HEADER)->hProcess = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_LOG_HEADER *)pOCTVC1_LOG_HEADER)->hProcess); \ + ((tOCTVC1_LOG_HEADER *)pOCTVC1_LOG_HEADER)->ul_Type_Info_Length = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_LOG_HEADER *)pOCTVC1_LOG_HEADER)->ul_Type_Info_Length); \ +} +#else +#define mOCTVC1_LOG_HEADER_SWAP( pOCTVC1_LOG_HEADER ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#ifdef __cplusplus +} + +#endif + +#endif /* __OCTVC1_LOG_SWAP_H__ */ diff --git a/software/include/vocallo/octvc1_mac.h b/software/include/vocallo/octvc1_mac.h new file mode 100644 index 0000000..1d5a83b --- /dev/null +++ b/software/include/vocallo/octvc1_mac.h @@ -0,0 +1,42 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_MAC.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_MAC_H__ +#define __OCTVC1_MAC_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "../octdev_types.h" + + +/************************ COMMON DEFINITIONS *******************************/ + +/*------------------------------------------------------------------------------------- + tOCTVC1_MAC_ADDRESS : MAC address structure +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_MAC_ADDRESS tOCTDEV_MAC_ADDRESS + + + +/*-------------------------------------------------------------------------- + SWAP directive (for compatibility reason) +----------------------------------------------------------------------------*/ +#define mOCTVC1_MAC_ADDRESS_SWAP mOCTDEV_MAC_ADDRESS_SWAP + + + +#endif /* __OCTVC1_MAC_H__ */ + diff --git a/software/include/vocallo/octvc1_macro.h b/software/include/vocallo/octvc1_macro.h new file mode 100644 index 0000000..52b079d --- /dev/null +++ b/software/include/vocallo/octvc1_macro.h @@ -0,0 +1,70 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_MACRO.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_MACRO_H__ +#define __OCTVC1_MACRO_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "../octdev_types.h" +#include "../octdev_macro.h" +#include "octvc1_handle.h" + + +/************************ COMMON DEFINITIONS *******************************/ + +/*------------------------------------------------------------------------------------- + Generic swap macros +-------------------------------------------------------------------------------------*/ + + +/*-------------------------------------------------------------------------- + 32-bit Endian Swapping when target is Little Endian +----------------------------------------------------------------------------*/ +#if !defined( mOCTVC1_SWAP32_IF_LE ) +#define mOCTVC1_SWAP32_IF_LE( f_ulValue ) mOCT_SWAP32_IF_LE( f_ulValue ) +#endif /* mOCTVC1_SWAP32_IF_LE */ + +/*-------------------------------------------------------------------------- + 16-bit Endian Swapping when target is Little Endian +----------------------------------------------------------------------------*/ +#if !defined( mOCTVC1_SWAP16_IF_LE ) +#define mOCTVC1_SWAP16_IF_LE( f_usValue ) mOCT_SWAP16_IF_LE( f_usValue ) +#endif /* mOCTVC1_SWAP16_IF_LE */ + +/*-------------------------------------------------------------------------- + Create a TSST Identifier +----------------------------------------------------------------------------*/ + +#define mOCTVC1_MAKE_TSST_ID( f_ulStream, f_ulTimeslot ) \ + ( ( ((f_ulStream) & 0x1f) << 10 ) + \ + ((f_ulTimeslot) & 0x3ff) ) + +/*-------------------------------------------------------------------------- + Get Vocoder Mask from a Vocoder Type Value +----------------------------------------------------------------------------*/ +/* what 32-bit DWORD index the bit mask corresponds to */ +#define mOCTVC1_GET_VOCMASK_INDEX( f_ulEncoderType ) \ + ( (((f_ulEncoderType) >> 5) & 0x3) ) + +/* The actual bit mask for the 32-bit index */ +#define mOCTVC1_GET_VOCMASK_BIT( f_ulEncoderType ) \ + ( (1 << ((f_ulEncoderType) & 0x1F)) ) + + + +#endif /* __OCTVC1_MACRO_H__ */ + diff --git a/software/include/vocallo/octvc1_msg.h b/software/include/vocallo/octvc1_msg.h new file mode 100644 index 0000000..ed6dad7 --- /dev/null +++ b/software/include/vocallo/octvc1_msg.h @@ -0,0 +1,148 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_MSG.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_MSG_H__ +#define __OCTVC1_MSG_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "../octdev_types.h" +#include "octvocnet_pkt.h" + + +/************************ COMMON DEFINITIONS *******************************/ + +/*------------------------------------------------------------------------------------- + Message Types +-------------------------------------------------------------------------------------*/ +#define cOCTVC1_MSG_TYPE_COMMAND 0 +#define cOCTVC1_MSG_TYPE_RESPONSE 1 +#define cOCTVC1_MSG_TYPE_NOTIFICATION 2 +#define cOCTVC1_MSG_TYPE_SUPERVISORY 7 +#define cOCTVC1_MSG_TYPE_BIT_OFFSET 29 +#define cOCTVC1_MSG_TYPE_BIT_MASK 0x7 + +/*------------------------------------------------------------------------------------- + Message Resynch +-------------------------------------------------------------------------------------*/ +#define cOCTVC1_MSG_RESYNCH_BIT_OFFSET 28 +#define cOCTVC1_MSG_RESYNCH_BIT_MASK 0x1 + +/*------------------------------------------------------------------------------------- + Message identifier +-------------------------------------------------------------------------------------*/ +#define cOCTVC1_MSG_ID_BIT_OFFSET 0 +#define cOCTVC1_MSG_ID_BIT_MASK 0x0FFFFFFF + +/*------------------------------------------------------------------------------------- + Message identifier - Method ID +-------------------------------------------------------------------------------------*/ +#define cOCTVC1_MSG_METHOD_ID_BIT_OFFSET 0 +#define cOCTVC1_MSG_METHOD_BIT_MASK 0x00000FFF + +/*------------------------------------------------------------------------------------- + Message identifier - Module ID +-------------------------------------------------------------------------------------*/ +#define cOCTVC1_MSG_MODULE_ID_BIT_OFFSET 16 +#define cOCTVC1_MSG_MODULE_BIT_MASK 0x000000FF + +/*------------------------------------------------------------------------------------- + Message identifier - Module and MethodID +-------------------------------------------------------------------------------------*/ +#define cOCTVC1_MSG_MODULE_AND_METHOD_BIT_MASK ((cOCTVC1_MSG_MODULE_BIT_MASK<. + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#ifndef __OCTVC1_MSG_SWAP_H__ +#define __OCTVC1_MSG_SWAP_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************** INCLUDE FILES *******************************/ +#include "octvc1_swap_hdrs.h" +#include "octvc1_msg.h" + +/********************************* MACROS **********************************/ + + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_MSG_HEADER_SWAP( _f_pParms ){ tOCTVC1_MSG_HEADER * pOCTVC1_MSG_HEADER = (_f_pParms); \ + ((tOCTVC1_MSG_HEADER *)pOCTVC1_MSG_HEADER)->ulLength = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MSG_HEADER *)pOCTVC1_MSG_HEADER)->ulLength); \ + ((tOCTVC1_MSG_HEADER *)pOCTVC1_MSG_HEADER)->ulTransactionId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MSG_HEADER *)pOCTVC1_MSG_HEADER)->ulTransactionId); \ + ((tOCTVC1_MSG_HEADER *)pOCTVC1_MSG_HEADER)->ul_Type_R_CmdId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MSG_HEADER *)pOCTVC1_MSG_HEADER)->ul_Type_R_CmdId); \ + ((tOCTVC1_MSG_HEADER *)pOCTVC1_MSG_HEADER)->ulSessionId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MSG_HEADER *)pOCTVC1_MSG_HEADER)->ulSessionId); \ + ((tOCTVC1_MSG_HEADER *)pOCTVC1_MSG_HEADER)->ulReturnCode = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_MSG_HEADER *)pOCTVC1_MSG_HEADER)->ulReturnCode); \ +} +#else +#define mOCTVC1_MSG_HEADER_SWAP( pOCTVC1_MSG_HEADER ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_EVENT_HEADER_SWAP( _f_pParms ){ tOCTVC1_EVENT_HEADER * pOCTVC1_EVENT_HEADER = (_f_pParms); \ + ((tOCTVC1_EVENT_HEADER *)pOCTVC1_EVENT_HEADER)->ulLength = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_EVENT_HEADER *)pOCTVC1_EVENT_HEADER)->ulLength); \ + ((tOCTVC1_EVENT_HEADER *)pOCTVC1_EVENT_HEADER)->ulEventId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_EVENT_HEADER *)pOCTVC1_EVENT_HEADER)->ulEventId); \ + ((tOCTVC1_EVENT_HEADER *)pOCTVC1_EVENT_HEADER)->ulUserEventId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_EVENT_HEADER *)pOCTVC1_EVENT_HEADER)->ulUserEventId); \ +} +#else +#define mOCTVC1_EVENT_HEADER_SWAP( pOCTVC1_EVENT_HEADER ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#ifdef __cplusplus +} + +#endif + +#endif /* __OCTVC1_MSG_SWAP_H__ */ diff --git a/software/include/vocallo/octvc1_privacy.h b/software/include/vocallo/octvc1_privacy.h new file mode 100644 index 0000000..abf35c1 --- /dev/null +++ b/software/include/vocallo/octvc1_privacy.h @@ -0,0 +1,24 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_PRIVACY.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_PRIVACY_H__ +#define __OCTVC1_PRIVACY_H__ + + +/************************ COMMON DEFINITIONS *******************************/ + +#endif /* __OCTVC1_PRIVACY_H__ */ + diff --git a/software/include/vocallo/octvc1_rc2string.h b/software/include/vocallo/octvc1_rc2string.h new file mode 100644 index 0000000..1e34643 --- /dev/null +++ b/software/include/vocallo/octvc1_rc2string.h @@ -0,0 +1,336 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: octvc1_rc2string.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +This file contains the rc2string implementation for package OCTVC1 + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + + +#ifndef __OCTVC1_RC2STRING__ +#define __OCTVC1_RC2STRING__ + +#include "../octdev_types.h" +/* ------------------------------------------------------------------------------------- + OCTVC1_RC2STRING + -------------------------------------------------------------------------------------*/ +#define mOCTVC1_RC2STRING( _f_ulRc ) \ + octvc1_rc2string( _f_ulRc ) + +#ifndef OCTVC1_RC2STRING_DECLARE +extern const char * octvc1_rc2string( tOCT_UINT32 f_ulRc ); +#endif + + +#ifdef OCTVC1_RC2STRING_DECLARE +#include +#include "octvc1_generic_rc.h" +#include "octvc1_licensing_rc.h" +#include "pkt_api/octvc1_pkt_api_rc.h" +#include "main/octvc1_main_rc.h" +#include "gsm/octvc1_gsm_rc.h" + + +/* ------------------------------------------------------------------------------------- + octvc1_rc2string + -------------------------------------------------------------------------------------*/ +const char * octvc1_rc2string( tOCT_UINT32 f_ulRc ) +{ + static char g_szUnknownoctvc1_rc2string[32]; + switch( f_ulRc ) + { + case cOCTVC1_RC_OK: + return "cOCTVC1_RC_OK"; + case cOCTVC1_GENERIC_RC_NO_MORE_FREE_SESSION: + return "cOCTVC1_GENERIC_RC_NO_MORE_FREE_SESSION"; + case cOCTVC1_GENERIC_RC_INVALID_TRANSACTION_ID: + return "cOCTVC1_GENERIC_RC_INVALID_TRANSACTION_ID"; + case cOCTVC1_GENERIC_RC_NO_MORE_OBJECT: + return "cOCTVC1_GENERIC_RC_NO_MORE_OBJECT"; + case cOCTVC1_GENERIC_RC_GET_MODE_INVALID: + return "cOCTVC1_GENERIC_RC_GET_MODE_INVALID"; + case cOCTVC1_GENERIC_RC_HANDLE_INVALID: + return "cOCTVC1_GENERIC_RC_HANDLE_INVALID"; + case cOCTVC1_GENERIC_RC_NO_MORE_SUB_OBJECT: + return "cOCTVC1_GENERIC_RC_NO_MORE_SUB_OBJECT"; + case cOCTVC1_GENERIC_RC_ENTRY_INVALID: + return "cOCTVC1_GENERIC_RC_ENTRY_INVALID"; + case cOCTVC1_GENERIC_RC_BAD_SUB_OBJECT: + return "cOCTVC1_GENERIC_RC_BAD_SUB_OBJECT"; + case cOCTVC1_GENERIC_RC_NO_TDM_CLOCK: + return "cOCTVC1_GENERIC_RC_NO_TDM_CLOCK"; + case cOCTVC1_GENERIC_RC_HANDLE_OBJECT_INVALID: + return "cOCTVC1_GENERIC_RC_HANDLE_OBJECT_INVALID"; + case cOCTVC1_GENERIC_RC_API_INVALID_CMD_LENGTH: + return "cOCTVC1_GENERIC_RC_API_INVALID_CMD_LENGTH"; + case cOCTVC1_GENERIC_RC_API_INVALID_CMD_ID_BASE: + return "cOCTVC1_GENERIC_RC_API_INVALID_CMD_ID_BASE"; + case cOCTVC1_GENERIC_RC_API_INVALID_CMD_ID: + return "cOCTVC1_GENERIC_RC_API_INVALID_CMD_ID"; + case cOCTVC1_GENERIC_RC_API_INVALID_CMD_TYPE: + return "cOCTVC1_GENERIC_RC_API_INVALID_CMD_TYPE"; + case cOCTVC1_GENERIC_RC_API_RESTRICTED_CMD_ID: + return "cOCTVC1_GENERIC_RC_API_RESTRICTED_CMD_ID"; + case cOCTVC1_GENERIC_RC_API_INVALID_DEVICE_TYPE: + return "cOCTVC1_GENERIC_RC_API_INVALID_DEVICE_TYPE"; + case cOCTVC1_GENERIC_RC_API_OUT_OF_RANGE: + return "cOCTVC1_GENERIC_RC_API_OUT_OF_RANGE"; + case cOCTVC1_GENERIC_RC_API_CMD_NOT_IMPLEMENTED: + return "cOCTVC1_GENERIC_RC_API_CMD_NOT_IMPLEMENTED"; + case cOCTVC1_GENERIC_RC_OCTSYS_MEM_ALLOC: + return "cOCTVC1_GENERIC_RC_OCTSYS_MEM_ALLOC"; + case cOCTVC1_GENERIC_RC_OCTSYS_FILE_SYS: + return "cOCTVC1_GENERIC_RC_OCTSYS_FILE_SYS"; + case cOCTVC1_GENERIC_RC_OCTSYS_EXT_MEM_READ_FAIL: + return "cOCTVC1_GENERIC_RC_OCTSYS_EXT_MEM_READ_FAIL"; + case cOCTVC1_GENERIC_RC_OCTSYS_EXT_MEM_WRITE_FAIL: + return "cOCTVC1_GENERIC_RC_OCTSYS_EXT_MEM_WRITE_FAIL"; + case cOCTVC1_GENERIC_RC_OCTSYS_IO_READ_FAIL: + return "cOCTVC1_GENERIC_RC_OCTSYS_IO_READ_FAIL"; + case cOCTVC1_GENERIC_RC_OCTSYS_IO_WRITE_FAIL: + return "cOCTVC1_GENERIC_RC_OCTSYS_IO_WRITE_FAIL"; + case cOCTVC1_GENERIC_RC_OCTSYS_STATE_MANAGER_FULL: + return "cOCTVC1_GENERIC_RC_OCTSYS_STATE_MANAGER_FULL"; + case cOCTVC1_GENERIC_RC_OCTSYS_STATE_MANAGER_EVENT_NOT_FOUND: + return "cOCTVC1_GENERIC_RC_OCTSYS_STATE_MANAGER_EVENT_NOT_FOUND"; + case cOCTVC1_GENERIC_RC_OCTSYS_CREATE_VSP_FIFO: + return "cOCTVC1_GENERIC_RC_OCTSYS_CREATE_VSP_FIFO"; + case cOCTVC1_GENERIC_RC_OCTSYS_CREATE_AF_FIFO: + return "cOCTVC1_GENERIC_RC_OCTSYS_CREATE_AF_FIFO"; + case cOCTVC1_GENERIC_RC_OCTSYS_MEM_SHARE: + return "cOCTVC1_GENERIC_RC_OCTSYS_MEM_SHARE"; + case cOCTVC1_GENERIC_RC_OCTSYS_DIR_LINK_ADD: + return "cOCTVC1_GENERIC_RC_OCTSYS_DIR_LINK_ADD"; + case cOCTVC1_GENERIC_RC_OCTSYS_AF_CORE_ALLOC: + return "cOCTVC1_GENERIC_RC_OCTSYS_AF_CORE_ALLOC"; + case cOCTVC1_GENERIC_RC_OCTSYS_ID_GET: + return "cOCTVC1_GENERIC_RC_OCTSYS_ID_GET"; + case cOCTVC1_GENERIC_RC_OCTSYS_PROCESS_CREATE: + return "cOCTVC1_GENERIC_RC_OCTSYS_PROCESS_CREATE"; + case cOCTVC1_GENERIC_RC_OCTSYS_THREAD_CREATE: + return "cOCTVC1_GENERIC_RC_OCTSYS_THREAD_CREATE"; + case cOCTVC1_GENERIC_RC_OCTSYS_HANDLE_OPEN: + return "cOCTVC1_GENERIC_RC_OCTSYS_HANDLE_OPEN"; + case cOCTVC1_GENERIC_RC_OCTSYS_FIFO_WRITE: + return "cOCTVC1_GENERIC_RC_OCTSYS_FIFO_WRITE"; + case cOCTVC1_GENERIC_RC_OCTSYS_DUMP_GET: + return "cOCTVC1_GENERIC_RC_OCTSYS_DUMP_GET"; + case cOCTVC1_LICENSING_RC_DENIED: + return "cOCTVC1_LICENSING_RC_DENIED"; + case cOCTVC1_LICENSING_RC_INVALID_LICENSE: + return "cOCTVC1_LICENSING_RC_INVALID_LICENSE"; + case cOCTVC1_PKT_API_RC_OS_ERROR: + return "cOCTVC1_PKT_API_RC_OS_ERROR"; + case cOCTVC1_PKT_API_RC_TRANSPORT_ERROR: + return "cOCTVC1_PKT_API_RC_TRANSPORT_ERROR"; + case cOCTVC1_PKT_API_RC_TIMEOUT: + return "cOCTVC1_PKT_API_RC_TIMEOUT"; + case cOCTVC1_PKT_API_RC_LOCAL_MAC_INDEX_NOT_FOUND: + return "cOCTVC1_PKT_API_RC_LOCAL_MAC_INDEX_NOT_FOUND"; + case cOCTVC1_PKT_API_RC_BAD_PARAM: + return "cOCTVC1_PKT_API_RC_BAD_PARAM"; + case cOCTVC1_PKT_API_RC_INST_CNCT_NOMORE: + return "cOCTVC1_PKT_API_RC_INST_CNCT_NOMORE"; + case cOCTVC1_PKT_API_RC_INST_PKT_NOMORE: + return "cOCTVC1_PKT_API_RC_INST_PKT_NOMORE"; + case cOCTVC1_PKT_API_RC_INST_SYNC_TOOMANY: + return "cOCTVC1_PKT_API_RC_INST_SYNC_TOOMANY"; + case cOCTVC1_PKT_API_RC_INST_CNCT_DEP: + return "cOCTVC1_PKT_API_RC_INST_CNCT_DEP"; + case cOCTVC1_PKT_API_RC_INST_DISCOVER_INPROGRESS: + return "cOCTVC1_PKT_API_RC_INST_DISCOVER_INPROGRESS"; + case cOCTVC1_PKT_API_RC_INST_RSP_TRUNCATE: + return "cOCTVC1_PKT_API_RC_INST_RSP_TRUNCATE"; + case cOCTVC1_PKT_API_RC_INST_TERMINATED: + return "cOCTVC1_PKT_API_RC_INST_TERMINATED"; + case cOCTVC1_PKT_API_RC_CNCT_SESS_NOMORE: + return "cOCTVC1_PKT_API_RC_CNCT_SESS_NOMORE"; + case cOCTVC1_PKT_API_RC_CNCT_SESS_DEP: + return "cOCTVC1_PKT_API_RC_CNCT_SESS_DEP"; + case cOCTVC1_PKT_API_RC_CNCT_BRIDGE_DEP: + return "cOCTVC1_PKT_API_RC_CNCT_BRIDGE_DEP"; + case cOCTVC1_PKT_API_RC_CNCT_ALREADY_OPEN: + return "cOCTVC1_PKT_API_RC_CNCT_ALREADY_OPEN"; + case cOCTVC1_PKT_API_RC_INTERFACE_NAME_NOT_FOUND: + return "cOCTVC1_PKT_API_RC_INTERFACE_NAME_NOT_FOUND"; + case cOCTVC1_PKT_API_RC_DEPENDENCIES: + return "cOCTVC1_PKT_API_RC_DEPENDENCIES"; + case cOCTVC1_PKT_API_RC_SESS_CLOSE: + return "cOCTVC1_PKT_API_RC_SESS_CLOSE"; + case cOCTVC1_PKT_API_RC_CNCT_CLOSE: + return "cOCTVC1_PKT_API_RC_CNCT_CLOSE"; + case cOCTVC1_PKT_API_RC_SESS_ALREADY_OPEN: + return "cOCTVC1_PKT_API_RC_SESS_ALREADY_OPEN"; + case cOCTVC1_MAIN_RC_PROCESS_IMAGE_LOAD_FILE_NOT_FOUND: + return "cOCTVC1_MAIN_RC_PROCESS_IMAGE_LOAD_FILE_NOT_FOUND"; + case cOCTVC1_MAIN_RC_CORE_NOT_FOUND: + return "cOCTVC1_MAIN_RC_CORE_NOT_FOUND"; + case cOCTVC1_MAIN_RC_EVENT_MASK_INVALID: + return "cOCTVC1_MAIN_RC_EVENT_MASK_INVALID"; + case cOCTVC1_MAIN_RC_ETH_PORT_RESTRICTED_API_DENIED: + return "cOCTVC1_MAIN_RC_ETH_PORT_RESTRICTED_API_DENIED"; + case cOCTVC1_MAIN_RC_PROCESS_NOT_FOUND: + return "cOCTVC1_MAIN_RC_PROCESS_NOT_FOUND"; + case cOCTVC1_MAIN_RC_TDM_BUFFER_TX_TSST_INVALID: + return "cOCTVC1_MAIN_RC_TDM_BUFFER_TX_TSST_INVALID"; + case cOCTVC1_MAIN_RC_TDM_MODIFY_STATUS_INVALID: + return "cOCTVC1_MAIN_RC_TDM_MODIFY_STATUS_INVALID"; + case cOCTVC1_MAIN_RC_FILE_OPEN: + return "cOCTVC1_MAIN_RC_FILE_OPEN"; + case cOCTVC1_MAIN_RC_FILE_HANDLE: + return "cOCTVC1_MAIN_RC_FILE_HANDLE"; + case cOCTVC1_MAIN_RC_FILE_INVALID_ACCESS_RIGHTS: + return "cOCTVC1_MAIN_RC_FILE_INVALID_ACCESS_RIGHTS"; + case cOCTVC1_MAIN_RC_FILE_WRITE: + return "cOCTVC1_MAIN_RC_FILE_WRITE"; + case cOCTVC1_MAIN_RC_FILE_SEEK_UNKOWN_ORIGIN: + return "cOCTVC1_MAIN_RC_FILE_SEEK_UNKOWN_ORIGIN"; + case cOCTVC1_MAIN_RC_FILE_SEEK_INVALID_OFFSET: + return "cOCTVC1_MAIN_RC_FILE_SEEK_INVALID_OFFSET"; + case cOCTVC1_MAIN_RC_FILE_SEEK: + return "cOCTVC1_MAIN_RC_FILE_SEEK"; + case cOCTVC1_MAIN_RC_FILE_NOT_FOUND: + return "cOCTVC1_MAIN_RC_FILE_NOT_FOUND"; + case cOCTVC1_MAIN_RC_FILE_MAX_READ_BYTE_SIZE: + return "cOCTVC1_MAIN_RC_FILE_MAX_READ_BYTE_SIZE"; + case cOCTVC1_MAIN_RC_FILE_MAX_WRITE_BYTE_SIZE: + return "cOCTVC1_MAIN_RC_FILE_MAX_WRITE_BYTE_SIZE"; + case cOCTVC1_MAIN_RC_FILE_NAME: + return "cOCTVC1_MAIN_RC_FILE_NAME"; + case cOCTVC1_MAIN_RC_FILE_ALREADY_OPENED: + return "cOCTVC1_MAIN_RC_FILE_ALREADY_OPENED"; + case cOCTVC1_MAIN_RC_FILE_BUSY: + return "cOCTVC1_MAIN_RC_FILE_BUSY"; + case cOCTVC1_MAIN_RC_FILE_ALREADY_CLOSED: + return "cOCTVC1_MAIN_RC_FILE_ALREADY_CLOSED"; + case cOCTVC1_MAIN_RC_FILE_NOT_OPEN: + return "cOCTVC1_MAIN_RC_FILE_NOT_OPEN"; + case cOCTVC1_MAIN_RC_FILE_FLASH_CMD_NOT_AVAILABLE: + return "cOCTVC1_MAIN_RC_FILE_FLASH_CMD_NOT_AVAILABLE"; + case cOCTVC1_MAIN_RC_FILE_GET_MODE_INVALID: + return "cOCTVC1_MAIN_RC_FILE_GET_MODE_INVALID"; + case cOCTVC1_MAIN_RC_FILE_OCT1010ID_EXT_MEM: + return "cOCTVC1_MAIN_RC_FILE_OCT1010ID_EXT_MEM"; + case cOCTVC1_MAIN_RC_FILE_OCT1010ID_CHECKSUM: + return "cOCTVC1_MAIN_RC_FILE_OCT1010ID_CHECKSUM"; + case cOCTVC1_MAIN_RC_FILE_OCT1010ID_FILE_SIZE: + return "cOCTVC1_MAIN_RC_FILE_OCT1010ID_FILE_SIZE"; + case cOCTVC1_MAIN_RC_FILE_OCT1010ID_TYPE: + return "cOCTVC1_MAIN_RC_FILE_OCT1010ID_TYPE"; + case cOCTVC1_MAIN_RC_FILE_ACCESS_DENIED: + return "cOCTVC1_MAIN_RC_FILE_ACCESS_DENIED"; + case cOCTVC1_MAIN_RC_FILE_SYSTEM_INFO: + return "cOCTVC1_MAIN_RC_FILE_SYSTEM_INFO"; + case cOCTVC1_MAIN_RC_FILE_SYSTEM_INFO_NO_MORE_FILE: + return "cOCTVC1_MAIN_RC_FILE_SYSTEM_INFO_NO_MORE_FILE"; + case cOCTVC1_MAIN_RC_GPIO_BANK_INVALID: + return "cOCTVC1_MAIN_RC_GPIO_BANK_INVALID"; + case cOCTVC1_MAIN_RC_FLASH_INVALID_ADDRESS: + return "cOCTVC1_MAIN_RC_FLASH_INVALID_ADDRESS"; + case cOCTVC1_MAIN_RC_FLASH_ACCESS_OUT_OF_RANGE: + return "cOCTVC1_MAIN_RC_FLASH_ACCESS_OUT_OF_RANGE"; + case cOCTVC1_MAIN_RC_FLASH_APP_SPACE: + return "cOCTVC1_MAIN_RC_FLASH_APP_SPACE"; + case cOCTVC1_MAIN_RC_FLASH_NOT_PRESENT: + return "cOCTVC1_MAIN_RC_FLASH_NOT_PRESENT"; + case cOCTVC1_MAIN_RC_FLASH_TYPE_UNKNOWN: + return "cOCTVC1_MAIN_RC_FLASH_TYPE_UNKNOWN"; + case cOCTVC1_MAIN_RC_FLASH_ERROR: + return "cOCTVC1_MAIN_RC_FLASH_ERROR"; + case cOCTVC1_MAIN_RC_SPI_CHIP_SELECT_INVALID: + return "cOCTVC1_MAIN_RC_SPI_CHIP_SELECT_INVALID"; + case cOCTVC1_MAIN_RC_SPI_CLOCK_FREQUENCY_INVALID: + return "cOCTVC1_MAIN_RC_SPI_CLOCK_FREQUENCY_INVALID"; + case cOCTVC1_MAIN_RC_SPI_CLOCK_POLARITY_INVALID: + return "cOCTVC1_MAIN_RC_SPI_CLOCK_POLARITY_INVALID"; + case cOCTVC1_MAIN_RC_SPI_CLOCK_PHASE_INVALID: + return "cOCTVC1_MAIN_RC_SPI_CLOCK_PHASE_INVALID"; + case cOCTVC1_MAIN_RC_SPI_TRANSFER_SIZE_INVALID: + return "cOCTVC1_MAIN_RC_SPI_TRANSFER_SIZE_INVALID"; + case cOCTVC1_MAIN_RC_CPU_USAGE_HANDLE_INVALID: + return "cOCTVC1_MAIN_RC_CPU_USAGE_HANDLE_INVALID"; + case cOCTVC1_MAIN_RC_CPU_USAGE_THRESHOLD_INVALID: + return "cOCTVC1_MAIN_RC_CPU_USAGE_THRESHOLD_INVALID"; + case cOCTVC1_MAIN_RC_CPU_USAGE_NOT_ACCESSIBLE: + return "cOCTVC1_MAIN_RC_CPU_USAGE_NOT_ACCESSIBLE"; + case cOCTVC1_MAIN_RC_DMA_TRACE_PARAMETER_INVALID: + return "cOCTVC1_MAIN_RC_DMA_TRACE_PARAMETER_INVALID"; + case cOCTVC1_MAIN_RC_DMA_TRACE_OCTSYS_FUNC_ERROR: + return "cOCTVC1_MAIN_RC_DMA_TRACE_OCTSYS_FUNC_ERROR"; + case cOCTVC1_MAIN_RC_DMA_TRACE_PASSWORD_ERROR: + return "cOCTVC1_MAIN_RC_DMA_TRACE_PASSWORD_ERROR"; + case cOCTVC1_MAIN_RC_DMA_TRACE_ENGINE_STATE: + return "cOCTVC1_MAIN_RC_DMA_TRACE_ENGINE_STATE"; + case cOCTVC1_MAIN_RC_BUFFER_FORMAT: + return "cOCTVC1_MAIN_RC_BUFFER_FORMAT"; + case cOCTVC1_MAIN_RC_BUFFER_MAX_REACHED: + return "cOCTVC1_MAIN_RC_BUFFER_MAX_REACHED"; + case cOCTVC1_MAIN_RC_BUFFER_FILE_NOT_FOUND: + return "cOCTVC1_MAIN_RC_BUFFER_FILE_NOT_FOUND"; + case cOCTVC1_MAIN_RC_BUFFER_READ: + return "cOCTVC1_MAIN_RC_BUFFER_READ"; + case cOCTVC1_MAIN_RC_BUFFER_WRITE_LENGTH: + return "cOCTVC1_MAIN_RC_BUFFER_WRITE_LENGTH"; + case cOCTVC1_MAIN_RC_BUFFER_WRITE_OFFSET: + return "cOCTVC1_MAIN_RC_BUFFER_WRITE_OFFSET"; + case cOCTVC1_MAIN_RC_BUFFER_MODIFY: + return "cOCTVC1_MAIN_RC_BUFFER_MODIFY"; + case cOCTVC1_MAIN_RC_BUFFER_LOCK: + return "cOCTVC1_MAIN_RC_BUFFER_LOCK"; + case cOCTVC1_MAIN_RC_BUFFER_INTERNAL_ERROR: + return "cOCTVC1_MAIN_RC_BUFFER_INTERNAL_ERROR"; + case cOCTVC1_MAIN_RC_TRACING_MODE: + return "cOCTVC1_MAIN_RC_TRACING_MODE"; + case cOCTVC1_MAIN_RC_TRACING_TYPE: + return "cOCTVC1_MAIN_RC_TRACING_TYPE"; + case cOCTVC1_MAIN_RC_TRACING_NUM_BUFFER: + return "cOCTVC1_MAIN_RC_TRACING_NUM_BUFFER"; + case cOCTVC1_MAIN_RC_TRACING_BUFFER_SIZE: + return "cOCTVC1_MAIN_RC_TRACING_BUFFER_SIZE"; + case cOCTVC1_MAIN_RC_TRACING_ALREADY_ACTIVE: + return "cOCTVC1_MAIN_RC_TRACING_ALREADY_ACTIVE"; + case cOCTVC1_MAIN_RC_DEBUG_FORWARD_ALREADY_OPENED: + return "cOCTVC1_MAIN_RC_DEBUG_FORWARD_ALREADY_OPENED"; + case cOCTVC1_MAIN_RC_DEBUG_FORWARD_SOURCE_MAC_ADDRESS: + return "cOCTVC1_MAIN_RC_DEBUG_FORWARD_SOURCE_MAC_ADDRESS"; + case cOCTVC1_MAIN_RC_REDUNDANCY_SERVER_ALREADY_STARTED: + return "cOCTVC1_MAIN_RC_REDUNDANCY_SERVER_ALREADY_STARTED"; + case cOCTVC1_MAIN_RC_REDUNDANCY_SERVER_NOT_STARTED: + return "cOCTVC1_MAIN_RC_REDUNDANCY_SERVER_NOT_STARTED"; + case cOCTVC1_MAIN_RC_REDUNDANCY_SERVER_INVALID_REDUNDANT_MGW_CNT: + return "cOCTVC1_MAIN_RC_REDUNDANCY_SERVER_INVALID_REDUNDANT_MGW_CNT"; + case cOCTVC1_MAIN_RC_REDUNDANCY_SERVER_API_RESOURCE_OPENED_ON_ACTIVE_MGW: + return "cOCTVC1_MAIN_RC_REDUNDANCY_SERVER_API_RESOURCE_OPENED_ON_ACTIVE_MGW"; + case cOCTVC1_MAIN_RC_REDUNDANCY_SERVER_MGW_MAX_REACHED: + return "cOCTVC1_MAIN_RC_REDUNDANCY_SERVER_MGW_MAX_REACHED"; + case cOCTVC1_MAIN_RC_REDUNDANCY_SERVER_INVALID_MGW_HANDLE: + return "cOCTVC1_MAIN_RC_REDUNDANCY_SERVER_INVALID_MGW_HANDLE"; + case cOCTVC1_MAIN_RC_REDUNDANCY_SERVER_INTERNAL_ERROR: + return "cOCTVC1_MAIN_RC_REDUNDANCY_SERVER_INTERNAL_ERROR"; + case cOCTVC1_MAIN_RC_REDUNDANCY_SERVER_UNSUPPORTED_API_CMD: + return "cOCTVC1_MAIN_RC_REDUNDANCY_SERVER_UNSUPPORTED_API_CMD"; + case cOCTVC1_MAIN_RC_REDUNDANCY_SERVER_FAILOVER_ALREADY_EXECUTED: + return "cOCTVC1_MAIN_RC_REDUNDANCY_SERVER_FAILOVER_ALREADY_EXECUTED"; + case cOCTVC1_MAIN_RC_BUFFER_OPEN_INVALID_ALLOCATED_BYTE_LENGTH: + return "cOCTVC1_MAIN_RC_BUFFER_OPEN_INVALID_ALLOCATED_BYTE_LENGTH"; + case cOCTVC1_GSM_RC_GENERIC_EVENT_MASK_INVALID: + return "cOCTVC1_GSM_RC_GENERIC_EVENT_MASK_INVALID"; + case cOCTVC1_GSM_RC_MODULE__INVALID_US_MESSAGE_LENGTH: + return "cOCTVC1_GSM_RC_MODULE__INVALID_US_MESSAGE_LENGTH"; + } + sprintf( g_szUnknownoctvc1_rc2string, "0x%.8X", f_ulRc ); + return g_szUnknownoctvc1_rc2string; +} +#endif + +#endif /* __OCTVC1_RC2STRING__ */ diff --git a/software/include/vocallo/octvc1_swap_hdrs.h b/software/include/vocallo/octvc1_swap_hdrs.h new file mode 100644 index 0000000..8def032 --- /dev/null +++ b/software/include/vocallo/octvc1_swap_hdrs.h @@ -0,0 +1,51 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* + +File: octvc1_swap_hdrs.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#ifndef __OCTVC1_SWAP_HDRS_H__ +#define __OCTVC1_SWAP_HDRS_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************** INCLUDE FILES *******************************/ +#include "../octdev_macro.h" + +/* START OF SWAP FILE HDR */ + +#include "../octdev_types_swap.h" +#include "../octpkt/octpkt_hdr_swap.h" +#include "../octpkt/octpkt_hdrxl_swap.h" +#include "octvocnet_pkt_swap.h" +#include "octvc1_cursor_swap.h" +#include "octvc1_handle_swap.h" +#include "octvc1_vlan_swap.h" +#include "octvc1_list_swap.h" +#include "octvc1_msg_swap.h" +#include "octvc1_log_swap.h" +#include "octvc1_file_swap.h" +#include "ctrl/octvc1_ctrl_api_swap.h" +#include "main/octvc1_main_api_swap.h" +#include "main/octvc1_main_evt_swap.h" +#include "gsm/octvc1_gsm_api_swap.h" +#include "gsm/octvc1_gsm_evt_swap.h" +#include "cpp/octvc1_cpp_api_swap.h" +#include "net/octvc1_net_api_swap.h" +#include "net/octvc1_net_evt_swap.h" +/* END OF SWAP FILE HDR */ +#ifdef __cplusplus +} + +#endif + +#endif /* __OCTVC1_SWAP_HDRS_H__ */ diff --git a/software/include/vocallo/octvc1_udp.h b/software/include/vocallo/octvc1_udp.h new file mode 100644 index 0000000..c1fd9ab --- /dev/null +++ b/software/include/vocallo/octvc1_udp.h @@ -0,0 +1,44 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_UDP.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_UDP_H__ +#define __OCTVC1_UDP_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "../octdev_types.h" + + +/************************ COMMON DEFINITIONS *******************************/ + +#define cOCTVC1_UDP_PORT_INVALID cOCTDEV_UDP_PORT_INVALID /* Invalid UDP port specification. */ + +/*------------------------------------------------------------------------------------- + tOCTVC1_UDP_ADDRESS : UDP address structure +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_UDP_ADDRESS tOCTDEV_UDP_ADDRESS + + + +/*-------------------------------------------------------------------------- + SWAP directive (for compatibility reason) +----------------------------------------------------------------------------*/ +#define mOCTVC1_UDP_ADDRESS_SWAP mOCTDEV_UDP_ADDRESS_SWAP + + + +#endif /* __OCTVC1_UDP_H__ */ + diff --git a/software/include/vocallo/octvc1_vlan.h b/software/include/vocallo/octvc1_vlan.h new file mode 100644 index 0000000..bef3fae --- /dev/null +++ b/software/include/vocallo/octvc1_vlan.h @@ -0,0 +1,82 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_VLAN.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_VLAN_H__ +#define __OCTVC1_VLAN_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "../octdev_types.h" + + +/************************ COMMON DEFINITIONS *******************************/ + +#define cOCTVC1_VLAN_MAX_TAG 4 + +/*------------------------------------------------------------------------------------- + tOCTVC1_VLAN_PROTOCOL_ID_ENUM : +-------------------------------------------------------------------------------------*/ +#define tOCTVC1_VLAN_PROTOCOL_ID_ENUM tOCT_UINT32 + +#define cOCTVC1_VLAN_PROTOCOL_ID_ENUM_8100 0 +#define cOCTVC1_VLAN_PROTOCOL_ID_ENUM_88A8 1 +#define cOCTVC1_VLAN_PROTOCOL_ID_ENUM_9100 2 +#define cOCTVC1_VLAN_PROTOCOL_ID_ENUM_9200 3 + +/*------------------------------------------------------------------------------------- + tOCTVC1_VLAN_TAG + + Members: + ulPriority + Range: [0..7] + Default: 5 + ulVlanId + Range: [0..4095] + Default: 0 + ulProtocolId + Default: cOCTVC1_VLAN_PROTOCOL_ID_ENUM_8100 +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCT_UINT32 ulPriority; + tOCT_UINT32 ulVlanId; + tOCTVC1_VLAN_PROTOCOL_ID_ENUM ulProtocolId; + +} tOCTVC1_VLAN_TAG; + +/*------------------------------------------------------------------------------------- + tOCTVC1_VLAN_HEADER_INFO + + Members: + ulNumVlanTag + Range: [0..cOCTVC1_VLAN_MAX_TAG] + Default: 0 + Number of Vlan TAGs present in the header. The tag inserted right after the + Ethernet header must be located at index 0 of aVlanTag while the one at the + highest index is located right before the transport header. + aVlanTag + Array containing the VLAN TAG to present in the header for this member. +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCT_UINT32 ulNumVlanTag; + tOCTVC1_VLAN_TAG aVlanTag[cOCTVC1_VLAN_MAX_TAG]; + +} tOCTVC1_VLAN_HEADER_INFO; + + +#endif /* __OCTVC1_VLAN_H__ */ + diff --git a/software/include/vocallo/octvc1_vlan_swap.h b/software/include/vocallo/octvc1_vlan_swap.h new file mode 100644 index 0000000..8c47e93 --- /dev/null +++ b/software/include/vocallo/octvc1_vlan_swap.h @@ -0,0 +1,59 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* + +File: octvc1_vlan_swap.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#ifndef __OCTVC1_VLAN_SWAP_H__ +#define __OCTVC1_VLAN_SWAP_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************** INCLUDE FILES *******************************/ +#include "octvc1_swap_hdrs.h" +#include "octvc1_vlan.h" + +/********************************* MACROS **********************************/ + + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_VLAN_TAG_SWAP( _f_pParms ){ tOCTVC1_VLAN_TAG * pOCTVC1_VLAN_TAG = (_f_pParms); \ + ((tOCTVC1_VLAN_TAG *)pOCTVC1_VLAN_TAG)->ulPriority = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_VLAN_TAG *)pOCTVC1_VLAN_TAG)->ulPriority); \ + ((tOCTVC1_VLAN_TAG *)pOCTVC1_VLAN_TAG)->ulVlanId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_VLAN_TAG *)pOCTVC1_VLAN_TAG)->ulVlanId); \ + ((tOCTVC1_VLAN_TAG *)pOCTVC1_VLAN_TAG)->ulProtocolId = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_VLAN_TAG *)pOCTVC1_VLAN_TAG)->ulProtocolId); \ +} +#else +#define mOCTVC1_VLAN_TAG_SWAP( pOCTVC1_VLAN_TAG ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVC1_VLAN_HEADER_INFO_SWAP( _f_pParms ){ tOCTVC1_VLAN_HEADER_INFO * pOCTVC1_VLAN_HEADER_INFO = (_f_pParms); \ + ((tOCTVC1_VLAN_HEADER_INFO *)pOCTVC1_VLAN_HEADER_INFO)->ulNumVlanTag = \ + mOCT_SWAP32_IF_LE(((tOCTVC1_VLAN_HEADER_INFO *)pOCTVC1_VLAN_HEADER_INFO)->ulNumVlanTag); \ + { tOCT_UINT32 jOCTVC1_VLAN_HEADER_INFO; \ + for( jOCTVC1_VLAN_HEADER_INFO=0; \ + jOCTVC1_VLAN_HEADER_INFO<(cOCTVC1_VLAN_MAX_TAG);jOCTVC1_VLAN_HEADER_INFO++ ) \ + { mOCTVC1_VLAN_TAG_SWAP( &((tOCTVC1_VLAN_HEADER_INFO *)pOCTVC1_VLAN_HEADER_INFO)->aVlanTag[jOCTVC1_VLAN_HEADER_INFO] ); }} \ +} +#else +#define mOCTVC1_VLAN_HEADER_INFO_SWAP( pOCTVC1_VLAN_HEADER_INFO ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#ifdef __cplusplus +} + +#endif + +#endif /* __OCTVC1_VLAN_SWAP_H__ */ diff --git a/software/include/vocallo/octvocnet_pkt.h b/software/include/vocallo/octvocnet_pkt.h new file mode 100644 index 0000000..0c81cda --- /dev/null +++ b/software/include/vocallo/octvocnet_pkt.h @@ -0,0 +1,464 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVOCNET_PKT.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVOCNET_PKT_H__ +#define __OCTVOCNET_PKT_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "../octdev_types.h" +#include "../octpkt/octpkt_hdr.h" +#include "octvc1_handle.h" + + +/************************ COMMON DEFINITIONS *******************************/ + +#define cOCTVOCNET_PKT_ETHERTYPE cOCTPKT_HDR_ETHERTYPE + +/*------------------------------------------------------------------------------------- + VocalloNet Packet Format Values +-------------------------------------------------------------------------------------*/ +#define cOCTVOCNET_PKT_FORMAT_MASK cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_FORMAT +#define cOCTVOCNET_PKT_FORMAT_BIT_OFFSET cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_FORMAT_BIT_OFFSET +#define cOCTVOCNET_PKT_FORMAT_BIT_MASK cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_FORMAT_BIT_MASK +#define cOCTVOCNET_PKT_TRACE_MASK cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_TRACE +#define cOCTVOCNET_PKT_TRACE_BIT_OFFSET cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_TRACE_BIT_OFFSET +#define cOCTVOCNET_PKT_TRACE_BIT_MASK cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_TRACE_BIT_MASK +#define cOCTVOCNET_PKT_CONTROL_PROTOCOL_TYPE_MASK cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_CONTROL_PROTOCOL_TYPE +#define cOCTVOCNET_PKT_CONTROL_PROTOCOL_TYPE_BIT_OFFSET cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_CONTROL_PROTOCOL_TYPE_BIT_OFFSET +#define cOCTVOCNET_PKT_CONTROL_PROTOCOL_TYPE_BIT_MASK cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_CONTROL_PROTOCOL_TYPE_BIT_MASK +#define cOCTVOCNET_PKT_LENGTH_MASK cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_LENGTH +#define cOCTVOCNET_PKT_LENGTH_BIT_OFFSET cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_LENGTH_BIT_OFFSET +#define cOCTVOCNET_PKT_LENGTH_BIT_MASK cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_LENGTH_BIT_MASK + +/*------------------------------------------------------------------------------------- + VocalloNet Format Control Packet +-------------------------------------------------------------------------------------*/ +#define cOCTVOCNET_PKT_FORMAT_CTRL 0x00 +#define cOCTVOCNET_PKT_FORMAT_A 0x01 +#define cOCTVOCNET_PKT_FORMAT_B 0x02 +#define cOCTVOCNET_PKT_FORMAT_D 0x04 +#define cOCTVOCNET_PKT_FORMAT_F 0x06 +#define cOCTVOCNET_PKT_FORMAT_H 0x08 +#define cOCTVOCNET_PKT_FORMAT_I 0x09 + +/*------------------------------------------------------------------------------------- + VocalloNet Format Control Bit Shifted +-------------------------------------------------------------------------------------*/ +#define cOCTVOCNET_PKT_BITSHIFTED_FORMAT_CTRL (cOCTVOCNET_PKT_FORMAT_CTRL< Fields marked with "valid_rtp=1" are not valid; + 1 -> Fields marked with "valid_rtp=1" are valid. In this case, + aulRtp[] contains a complete RTP header which can also include a + CSRC list and a RTP extension. Refer to RFC 1889 for additional + details. + bits[30:22] = Packet encoding type. + bits[21:14] = RTP padding size in bytes. (valid_rtp=1) + bits[13:11] = Reserved and must be 0. + bits[10:0] = RTP payload offset in bytes. (valid_rtp=1) + aulRtp + aulRtp[ 0 ].bits[31:30] = RTP version = 0x2. (valid_rtp=1) + .bit[29] = RTP padding. (valid_rtp=1) + .bit[28] = RTP extension. (valid_rtp=1) + .bits[27:24] = RTP contributing source count. (valid_rtp=1) + .bit[23] = Marker. + .bits[22:16] = RTP payload type. (valid_rtp=1) + .bits[15:0] = Sequence Number + aulRtp[ 1 ].bits[31:0] = Timestamp + aulRtp[ 2 ].bits[31:0] = + valid_rtp=1: RTP Synchronization source. + valid_rtp=0: Vocoder-dependant flags as defined below: + Enhanced Full Rate (EFR), see 3GPP TS 48.081 + .bits[31:4]:reserved, must be 0 + .bit[3]:BFI + .bit[2]:TAF + .bits[1:0]:SID +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVOCNET_PKT_DATA_HEADER VocNetHeader; + tOCT_UINT32 ulReserved; + tOCT_UINT32 ul_Rtp_PktType_Pad_Offset; + tOCT_UINT32 aulRtp[3]; + +} tOCTVOCNET_PKT_DATA_D_HEADER; + +/*------------------------------------------------------------------------------------- + tOCTVOCNET_PKT_DATA_F_HEADER + VocalloNet Format F Packet Header (Raw Data packet) + + Members: + VocNetHeader + ulTimestamp + bits[31:0] = Timestamp + ulSubType + bits[31:4] = Reserved, bits[3:0] = SubType +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVOCNET_PKT_DATA_HEADER VocNetHeader; + tOCT_UINT32 ulTimestamp; + tOCT_UINT32 ulSubType; + +} tOCTVOCNET_PKT_DATA_F_HEADER; + +/*------------------------------------------------------------------------------------- + VocalloNet Format Control Packet +-------------------------------------------------------------------------------------*/ +#define cOCTVOCNET_PKT_FORMAT_C 0x03 +#define cOCTVOCNET_PKT_FORMAT_E 0x05 +#define cOCTVOCNET_PKT_FORMAT_G 0x07 +#define cOCTVOCNET_PKT_FORMAT_R 0x12 +#define cOCTVOCNET_PKT_FORMAT_WCDMA 0x13 +#define cOCTVOCNET_PKT_FORMAT_GSM 0x14 +#define cOCTVOCNET_PKT_FORMAT_GSM_EVT 0x15 +#define cOCTVOCNET_PKT_FORMAT_Q 0x80 + +/*------------------------------------------------------------------------------------- +-------------------------------------------------------------------------------------*/ +#define cOCTVOCNET_PKT_MAX_RTP_PROFILE_ENTRY 9 + +/*------------------------------------------------------------------------------------- + VocalloNet D packet types. +-------------------------------------------------------------------------------------*/ +/*------------------------------------------------------------------------------------- + tOCTVOCNET_PKT_D_TYPE_ENUM : +-------------------------------------------------------------------------------------*/ +#define tOCTVOCNET_PKT_D_TYPE_ENUM tOCT_UINT32 + +#define cOCTVOCNET_PKT_D_TYPE_ENUM_TONE 0 +#define cOCTVOCNET_PKT_D_TYPE_ENUM_GEN_SID 1 +#define cOCTVOCNET_PKT_D_TYPE_ENUM_LINEAR_8KSS 2 /* Linear */ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_LINEAR_16KSS 3 /* Linear 16-bit, 16000Hz sampling */ + +/*------------------------------------------------------------------------------------- + G.711 PCM +-------------------------------------------------------------------------------------*/ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_PCM_U_LAW 4 +#define cOCTVOCNET_PKT_D_TYPE_ENUM_PCM_A_LAW 5 + +/*------------------------------------------------------------------------------------- + G.711 PCM VB_DATA +-------------------------------------------------------------------------------------*/ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_PCM_U_LAW_VBD 6 +#define cOCTVOCNET_PKT_D_TYPE_ENUM_PCM_A_LAW_VBD 7 + +/*------------------------------------------------------------------------------------- + G.726 ADPCM +-------------------------------------------------------------------------------------*/ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_G726_16 10 /* ITU-T Recommendation I.366.2 Annex E. */ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_G726_24 11 +#define cOCTVOCNET_PKT_D_TYPE_ENUM_G726_32 12 +#define cOCTVOCNET_PKT_D_TYPE_ENUM_G726_40 13 +#define cOCTVOCNET_PKT_D_TYPE_ENUM_G726_16_RTP 14 /* ITU-T Recommendation X.420. */ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_G726_24_RTP 15 +#define cOCTVOCNET_PKT_D_TYPE_ENUM_G726_32_RTP 16 +#define cOCTVOCNET_PKT_D_TYPE_ENUM_G726_40_RTP 17 + +/*------------------------------------------------------------------------------------- + G.722 ADPCM +-------------------------------------------------------------------------------------*/ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_G722_48 18 +#define cOCTVOCNET_PKT_D_TYPE_ENUM_G722_56 19 +#define cOCTVOCNET_PKT_D_TYPE_ENUM_G722_64 20 + +/*------------------------------------------------------------------------------------- + G.723.1 +-------------------------------------------------------------------------------------*/ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_G723_1 21 + +/*------------------------------------------------------------------------------------- + G.729 +-------------------------------------------------------------------------------------*/ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_G729A 22 +#define cOCTVOCNET_PKT_D_TYPE_ENUM_G729AB_8 23 + +/*------------------------------------------------------------------------------------- + AMR +-------------------------------------------------------------------------------------*/ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_AMR 24 /* Output from codec */ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_AMR_RTP 25 /* IETF RFC 3267 */ + +/*------------------------------------------------------------------------------------- + EFR +-------------------------------------------------------------------------------------*/ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_EFR 26 /* Output from codec */ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_EFR_RTP 27 /* IETF RFC 3551 */ + +/*------------------------------------------------------------------------------------- + Full Rate (FR) +-------------------------------------------------------------------------------------*/ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_FR 28 /* Output from codec. */ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_FR_RTP 29 /* RFC 3551 */ + +/*------------------------------------------------------------------------------------- + AMR Wide-Band +-------------------------------------------------------------------------------------*/ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_AMR_WB 30 /* Output from codec. */ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_AMR_WB_RTP 31 /* IETF RFC 3267 */ + +/*------------------------------------------------------------------------------------- + iLBC +-------------------------------------------------------------------------------------*/ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_ILBC 32 /* RFC 3951 */ + +/*------------------------------------------------------------------------------------- + G.722.1 +-------------------------------------------------------------------------------------*/ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_G722_1_24 33 +#define cOCTVOCNET_PKT_D_TYPE_ENUM_G722_1_32 34 + +/*------------------------------------------------------------------------------------- + G.729.1 +-------------------------------------------------------------------------------------*/ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_G729_1 35 /* Output from codec. */ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_G729_1_RTP 36 /* IETF RFC 4749 */ + +/*------------------------------------------------------------------------------------- + T.38 Fax Relay +-------------------------------------------------------------------------------------*/ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_T38_UDPTL 37 /* T.38 over UDPTL */ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_T38_RTP 38 /* T.38 over RTP */ + +/*------------------------------------------------------------------------------------- + DIALOGIC ADPCM +-------------------------------------------------------------------------------------*/ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_VOX 39 + +/*------------------------------------------------------------------------------------- + Video Codecs +-------------------------------------------------------------------------------------*/ + +/*------------------------------------------------------------------------------------- + Uncompressed Video +-------------------------------------------------------------------------------------*/ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_YUV_RTP_RFC4175 300 /* IETF RFC 4175 for YUV uncompressed video data. Only YUV420 is supported. */ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_RAW_YUV 301 /* Packets containing sequential 16x16 macroblock of YUV420. */ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_RAW_RGB 302 /* Packets containing sequential 16x16 macroblock of RGB. */ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_RAW_YUV_EXTENDED 303 /* Packets containing sequential 16x16 macroblock of YUV420 with cropping. */ + +/*------------------------------------------------------------------------------------- + Video H263 +-------------------------------------------------------------------------------------*/ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_H263_RTP_RFC2190 310 /* IETF RFC 2190 for H.263 compressed video data. */ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_H263_RTP_RFC2190_BYTE_BOUNDARY 311 /* IETF RFC 2190 for H.263 compressed video data. Packetized at Byte boundaries. */ + /* Identical to H263_RTP_RFC2190 for Rx Video Terminations. */ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_H263_RTP_RFC2429 312 /* IETF RFC 2429 (or RFC 4629) for H.263 compressed video data. */ + +/*------------------------------------------------------------------------------------- + Video MPEG-4 +-------------------------------------------------------------------------------------*/ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_MPEG4_RTP_RFC3016 320 /* IETF RFC 3016 for MPEG-4 compressed elementary stream video data. */ + +/*------------------------------------------------------------------------------------- + Video H264 +-------------------------------------------------------------------------------------*/ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_H264_RTP_RFC3984 330 /* IETF RFC 3984: RTP Payload Format for H.264 Video. */ + +/*------------------------------------------------------------------------------------- + FAST YUV +-------------------------------------------------------------------------------------*/ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_FAST_YUV 340 /* Constant bitrate, visually lossless video compression. */ + +/*------------------------------------------------------------------------------------- + Unknown packet type +-------------------------------------------------------------------------------------*/ +#define cOCTVOCNET_PKT_D_TYPE_ENUM_UNKNOWN_RTP_PAYLOAD_TYPE 511 /* For internal use only. */ + +/*------------------------------------------------------------------------------------- + tOCTVOCNET_PKT_DATA_B_HEADER + VocalloNet Format B Packet Header (AAL0-AAL1 cells in a packet). + + Members: + VocNetHeader + ulNumCells + bits[31:6] = 0 -> Reserved + bits[5:0] = Number of cells present in the packet +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVOCNET_PKT_DATA_HEADER VocNetHeader; + tOCT_UINT32 ulNumCells; + +} tOCTVOCNET_PKT_DATA_B_HEADER; + +/*------------------------------------------------------------------------------------- + tOCTVOCNET_PKT_DATA_C_HEADER + VocalloNet Format C Packet Header (AAL2 CPS packet). + + Members: + VocNetHeader +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVOCNET_PKT_DATA_HEADER VocNetHeader; + +} tOCTVOCNET_PKT_DATA_C_HEADER; + +/*------------------------------------------------------------------------------------- + tOCTVOCNET_PKT_DATA_E_HEADER + VocalloNet Format E Packet Header (AAL5 packet) + + Members: + VocNetHeader + ul_Uu_Cp + bits[31:16] = 0 -> Reserved + bits[15:8] = AAL5 UU field + bits[7:0] = AAL5 CP field +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVOCNET_PKT_DATA_HEADER VocNetHeader; + tOCT_UINT32 ul_Uu_Cp; + +} tOCTVOCNET_PKT_DATA_E_HEADER; + +/*------------------------------------------------------------------------------------- + tOCTVOCNET_PKT_DATA_R_HEADER + VocalloNet Format R Packet Header (Tunnel packet) + + Members: + VocNetHeader + ulForwardPkt_BridgeMacDstAddrHi + bit[31] = Forward packet flag. + bits[30:16] = Reserved + bits[15:0] = Bridge Dst Mac Address bits[47:32] + ulBridgeMacDstAddrLow + bits[31:0] = Bridge Dst Mac Address bits[31:0] + ulBridgeMacSrcAddrHi + bits[31:16] = Reserved + bits[15:0] = Bridge Src Mac Address bits[47:32] + ulBridgeMacSrcAddrLow + bits[31:0] = Bridge Src Mac Address bits[31:0] +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVOCNET_PKT_HEADER VocNetHeader; + tOCT_UINT32 ulForwardPkt_BridgeMacDstAddrHi; + tOCT_UINT32 ulBridgeMacDstAddrLow; + tOCT_UINT32 ulBridgeMacSrcAddrHi; + tOCT_UINT32 ulBridgeMacSrcAddrLow; + +} tOCTVOCNET_PKT_DATA_R_HEADER; + +/*------------------------------------------------------------------------------------- + tOCTVOCNET_PKT_DATA_Q_HEADER + VocalloNet Format Q Packet Header (Ethernet packet rejected) + + Members: + VocNetHeader + ausInfo + bits[31:0] = Rejected packet info +-------------------------------------------------------------------------------------*/ +typedef struct +{ + tOCTVOCNET_PKT_HEADER VocNetHeader; + tOCT_UINT16 ausInfo[3]; + +} tOCTVOCNET_PKT_DATA_Q_HEADER; + + +#endif /* __OCTVOCNET_PKT_H__ */ + diff --git a/software/include/vocallo/octvocnet_pkt_swap.h b/software/include/vocallo/octvocnet_pkt_swap.h new file mode 100644 index 0000000..3becd22 --- /dev/null +++ b/software/include/vocallo/octvocnet_pkt_swap.h @@ -0,0 +1,144 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* + +File: octvocnet_pkt_swap.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ +#ifndef __OCTVOCNET_PKT_SWAP_H__ +#define __OCTVOCNET_PKT_SWAP_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************** INCLUDE FILES *******************************/ +#include "octvc1_swap_hdrs.h" +#include "octvocnet_pkt.h" + +/********************************* MACROS **********************************/ + + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVOCNET_PKT_CTL_HEADER_SWAP( _f_pParms ){ tOCTVOCNET_PKT_CTL_HEADER * pOCTVOCNET_PKT_CTL_HEADER = (_f_pParms); \ + ((tOCTVOCNET_PKT_CTL_HEADER *)pOCTVOCNET_PKT_CTL_HEADER)->ulDestFifoId = \ + mOCT_SWAP32_IF_LE(((tOCTVOCNET_PKT_CTL_HEADER *)pOCTVOCNET_PKT_CTL_HEADER)->ulDestFifoId); \ + ((tOCTVOCNET_PKT_CTL_HEADER *)pOCTVOCNET_PKT_CTL_HEADER)->ulSourceFifoId = \ + mOCT_SWAP32_IF_LE(((tOCTVOCNET_PKT_CTL_HEADER *)pOCTVOCNET_PKT_CTL_HEADER)->ulSourceFifoId); \ + ((tOCTVOCNET_PKT_CTL_HEADER *)pOCTVOCNET_PKT_CTL_HEADER)->ulSocketId = \ + mOCT_SWAP32_IF_LE(((tOCTVOCNET_PKT_CTL_HEADER *)pOCTVOCNET_PKT_CTL_HEADER)->ulSocketId); \ +} +#else +#define mOCTVOCNET_PKT_CTL_HEADER_SWAP( pOCTVOCNET_PKT_CTL_HEADER ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVOCNET_PKT_DATA_HEADER_SWAP( _f_pParms ){ tOCTVOCNET_PKT_DATA_HEADER * pOCTVOCNET_PKT_DATA_HEADER = (_f_pParms); \ + { mOCTVC1_HANDLE_SWAP( &((tOCTVOCNET_PKT_DATA_HEADER *)pOCTVOCNET_PKT_DATA_HEADER)->hLogicalObj ); } \ + ((tOCTVOCNET_PKT_DATA_HEADER *)pOCTVOCNET_PKT_DATA_HEADER)->ulLogicalObjPktPort = \ + mOCT_SWAP32_IF_LE(((tOCTVOCNET_PKT_DATA_HEADER *)pOCTVOCNET_PKT_DATA_HEADER)->ulLogicalObjPktPort); \ + ((tOCTVOCNET_PKT_DATA_HEADER *)pOCTVOCNET_PKT_DATA_HEADER)->ulDestFifoId = \ + mOCT_SWAP32_IF_LE(((tOCTVOCNET_PKT_DATA_HEADER *)pOCTVOCNET_PKT_DATA_HEADER)->ulDestFifoId); \ +} +#else +#define mOCTVOCNET_PKT_DATA_HEADER_SWAP( pOCTVOCNET_PKT_DATA_HEADER ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVOCNET_PKT_DATA_D_HEADER_SWAP( _f_pParms ){ tOCTVOCNET_PKT_DATA_D_HEADER * pOCTVOCNET_PKT_DATA_D_HEADER = (_f_pParms); \ + { mOCTVOCNET_PKT_DATA_HEADER_SWAP( &((tOCTVOCNET_PKT_DATA_D_HEADER *)pOCTVOCNET_PKT_DATA_D_HEADER)->VocNetHeader ); } \ + ((tOCTVOCNET_PKT_DATA_D_HEADER *)pOCTVOCNET_PKT_DATA_D_HEADER)->ulReserved = \ + mOCT_SWAP32_IF_LE(((tOCTVOCNET_PKT_DATA_D_HEADER *)pOCTVOCNET_PKT_DATA_D_HEADER)->ulReserved); \ + ((tOCTVOCNET_PKT_DATA_D_HEADER *)pOCTVOCNET_PKT_DATA_D_HEADER)->ul_Rtp_PktType_Pad_Offset = \ + mOCT_SWAP32_IF_LE(((tOCTVOCNET_PKT_DATA_D_HEADER *)pOCTVOCNET_PKT_DATA_D_HEADER)->ul_Rtp_PktType_Pad_Offset); \ + { tOCT_UINT32 iOCTVOCNET_PKT_DATA_D_HEADER; \ + for( iOCTVOCNET_PKT_DATA_D_HEADER=0; \ + iOCTVOCNET_PKT_DATA_D_HEADER<(3);iOCTVOCNET_PKT_DATA_D_HEADER++ ) \ + ((tOCTVOCNET_PKT_DATA_D_HEADER *)pOCTVOCNET_PKT_DATA_D_HEADER)->aulRtp[iOCTVOCNET_PKT_DATA_D_HEADER] = \ + mOCT_SWAP32_IF_LE(((tOCTVOCNET_PKT_DATA_D_HEADER *)pOCTVOCNET_PKT_DATA_D_HEADER)->aulRtp[iOCTVOCNET_PKT_DATA_D_HEADER]);}\ +} +#else +#define mOCTVOCNET_PKT_DATA_D_HEADER_SWAP( pOCTVOCNET_PKT_DATA_D_HEADER ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVOCNET_PKT_DATA_F_HEADER_SWAP( _f_pParms ){ tOCTVOCNET_PKT_DATA_F_HEADER * pOCTVOCNET_PKT_DATA_F_HEADER = (_f_pParms); \ + { mOCTVOCNET_PKT_DATA_HEADER_SWAP( &((tOCTVOCNET_PKT_DATA_F_HEADER *)pOCTVOCNET_PKT_DATA_F_HEADER)->VocNetHeader ); } \ + ((tOCTVOCNET_PKT_DATA_F_HEADER *)pOCTVOCNET_PKT_DATA_F_HEADER)->ulTimestamp = \ + mOCT_SWAP32_IF_LE(((tOCTVOCNET_PKT_DATA_F_HEADER *)pOCTVOCNET_PKT_DATA_F_HEADER)->ulTimestamp); \ + ((tOCTVOCNET_PKT_DATA_F_HEADER *)pOCTVOCNET_PKT_DATA_F_HEADER)->ulSubType = \ + mOCT_SWAP32_IF_LE(((tOCTVOCNET_PKT_DATA_F_HEADER *)pOCTVOCNET_PKT_DATA_F_HEADER)->ulSubType); \ +} +#else +#define mOCTVOCNET_PKT_DATA_F_HEADER_SWAP( pOCTVOCNET_PKT_DATA_F_HEADER ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVOCNET_PKT_DATA_B_HEADER_SWAP( _f_pParms ){ tOCTVOCNET_PKT_DATA_B_HEADER * pOCTVOCNET_PKT_DATA_B_HEADER = (_f_pParms); \ + { mOCTVOCNET_PKT_DATA_HEADER_SWAP( &((tOCTVOCNET_PKT_DATA_B_HEADER *)pOCTVOCNET_PKT_DATA_B_HEADER)->VocNetHeader ); } \ + ((tOCTVOCNET_PKT_DATA_B_HEADER *)pOCTVOCNET_PKT_DATA_B_HEADER)->ulNumCells = \ + mOCT_SWAP32_IF_LE(((tOCTVOCNET_PKT_DATA_B_HEADER *)pOCTVOCNET_PKT_DATA_B_HEADER)->ulNumCells); \ +} +#else +#define mOCTVOCNET_PKT_DATA_B_HEADER_SWAP( pOCTVOCNET_PKT_DATA_B_HEADER ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVOCNET_PKT_DATA_C_HEADER_SWAP( _f_pParms ){ tOCTVOCNET_PKT_DATA_C_HEADER * pOCTVOCNET_PKT_DATA_C_HEADER = (_f_pParms); \ + { mOCTVOCNET_PKT_DATA_HEADER_SWAP( &((tOCTVOCNET_PKT_DATA_C_HEADER *)pOCTVOCNET_PKT_DATA_C_HEADER)->VocNetHeader ); } \ +} +#else +#define mOCTVOCNET_PKT_DATA_C_HEADER_SWAP( pOCTVOCNET_PKT_DATA_C_HEADER ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVOCNET_PKT_DATA_E_HEADER_SWAP( _f_pParms ){ tOCTVOCNET_PKT_DATA_E_HEADER * pOCTVOCNET_PKT_DATA_E_HEADER = (_f_pParms); \ + { mOCTVOCNET_PKT_DATA_HEADER_SWAP( &((tOCTVOCNET_PKT_DATA_E_HEADER *)pOCTVOCNET_PKT_DATA_E_HEADER)->VocNetHeader ); } \ + ((tOCTVOCNET_PKT_DATA_E_HEADER *)pOCTVOCNET_PKT_DATA_E_HEADER)->ul_Uu_Cp = \ + mOCT_SWAP32_IF_LE(((tOCTVOCNET_PKT_DATA_E_HEADER *)pOCTVOCNET_PKT_DATA_E_HEADER)->ul_Uu_Cp); \ +} +#else +#define mOCTVOCNET_PKT_DATA_E_HEADER_SWAP( pOCTVOCNET_PKT_DATA_E_HEADER ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVOCNET_PKT_DATA_R_HEADER_SWAP( _f_pParms ){ tOCTVOCNET_PKT_DATA_R_HEADER * pOCTVOCNET_PKT_DATA_R_HEADER = (_f_pParms); \ + { mOCTVOCNET_PKT_HEADER_SWAP( &((tOCTVOCNET_PKT_DATA_R_HEADER *)pOCTVOCNET_PKT_DATA_R_HEADER)->VocNetHeader ); } \ + ((tOCTVOCNET_PKT_DATA_R_HEADER *)pOCTVOCNET_PKT_DATA_R_HEADER)->ulForwardPkt_BridgeMacDstAddrHi = \ + mOCT_SWAP32_IF_LE(((tOCTVOCNET_PKT_DATA_R_HEADER *)pOCTVOCNET_PKT_DATA_R_HEADER)->ulForwardPkt_BridgeMacDstAddrHi); \ + ((tOCTVOCNET_PKT_DATA_R_HEADER *)pOCTVOCNET_PKT_DATA_R_HEADER)->ulBridgeMacDstAddrLow = \ + mOCT_SWAP32_IF_LE(((tOCTVOCNET_PKT_DATA_R_HEADER *)pOCTVOCNET_PKT_DATA_R_HEADER)->ulBridgeMacDstAddrLow); \ + ((tOCTVOCNET_PKT_DATA_R_HEADER *)pOCTVOCNET_PKT_DATA_R_HEADER)->ulBridgeMacSrcAddrHi = \ + mOCT_SWAP32_IF_LE(((tOCTVOCNET_PKT_DATA_R_HEADER *)pOCTVOCNET_PKT_DATA_R_HEADER)->ulBridgeMacSrcAddrHi); \ + ((tOCTVOCNET_PKT_DATA_R_HEADER *)pOCTVOCNET_PKT_DATA_R_HEADER)->ulBridgeMacSrcAddrLow = \ + mOCT_SWAP32_IF_LE(((tOCTVOCNET_PKT_DATA_R_HEADER *)pOCTVOCNET_PKT_DATA_R_HEADER)->ulBridgeMacSrcAddrLow); \ +} +#else +#define mOCTVOCNET_PKT_DATA_R_HEADER_SWAP( pOCTVOCNET_PKT_DATA_R_HEADER ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#if defined( _OCT_ENDIAN_TYPE_LE_ ) +#define mOCTVOCNET_PKT_DATA_Q_HEADER_SWAP( _f_pParms ){ tOCTVOCNET_PKT_DATA_Q_HEADER * pOCTVOCNET_PKT_DATA_Q_HEADER = (_f_pParms); \ + { mOCTVOCNET_PKT_HEADER_SWAP( &((tOCTVOCNET_PKT_DATA_Q_HEADER *)pOCTVOCNET_PKT_DATA_Q_HEADER)->VocNetHeader ); } \ + { tOCT_UINT32 iOCTVOCNET_PKT_DATA_Q_HEADER; \ + for( iOCTVOCNET_PKT_DATA_Q_HEADER=0; \ + iOCTVOCNET_PKT_DATA_Q_HEADER<(3);iOCTVOCNET_PKT_DATA_Q_HEADER++ ) \ + ((tOCTVOCNET_PKT_DATA_Q_HEADER *)pOCTVOCNET_PKT_DATA_Q_HEADER)->ausInfo[iOCTVOCNET_PKT_DATA_Q_HEADER] = \ + mOCT_SWAP16_IF_LE(((tOCTVOCNET_PKT_DATA_Q_HEADER *)pOCTVOCNET_PKT_DATA_Q_HEADER)->ausInfo[iOCTVOCNET_PKT_DATA_Q_HEADER]);} \ +} +#else +#define mOCTVOCNET_PKT_DATA_Q_HEADER_SWAP( pOCTVOCNET_PKT_DATA_Q_HEADER ) +#endif /* _OCT_ENDIAN_TYPE_LE_ */ + +#ifdef __cplusplus +} + +#endif + +#endif /* __OCTVOCNET_PKT_SWAP_H__ */ diff --git a/software/include/vocallo/pkt_api/octvc1_pkt_api.h b/software/include/vocallo/pkt_api/octvc1_pkt_api.h new file mode 100644 index 0000000..040d296 --- /dev/null +++ b/software/include/vocallo/pkt_api/octvc1_pkt_api.h @@ -0,0 +1,982 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_PKT_API.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Revision: 25549 $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_PKT_API_H__ +#define __OCTVC1_PKT_API_H__ + +/***************************** INCLUDE FILES *******************************/ +#include "octvc1_pkt_api_rc.h" +#include "../../octdev_types.h" +#include "../octvc1_generic_rc.h" +#include "../octvc1_fifo.h" +#include "../octvc1_handle.h" +#include "../octvocnet_pkt.h" +#include "../octvc1_msg.h" +#include "../octvc1_macro.h" +#include "../main/octvc1_main_api.h" + +/*-------------------------------------------------------------------------- + C language +----------------------------------------------------------------------------*/ + +#ifdef __cplusplus +extern "C" { +#endif + + +/***************************** DEFINES **************************************/ + +/*-------------------------------------------------------------------------- + API Packet Types +----------------------------------------------------------------------------*/ +#define tOCTVC1_PKT_API_PKT_TYPE_ENUM tOCT_UINT32 +#define cOCTVC1_PKT_API_PKT_TYPE_ENUM_INVALID 0xFFFFFFFF +#define cOCTVC1_PKT_API_PKT_TYPE_ENUM_RSP 0 +#define cOCTVC1_PKT_API_PKT_TYPE_ENUM_EVENT 1 +#define cOCTVC1_PKT_API_PKT_TYPE_ENUM_DATA 2 +#define cOCTVC1_PKT_API_PKT_TYPE_ENUM_DISCOVER 3 +#define cOCTVC1_PKT_API_PKT_TYPE_ENUM_CMD 4 + +#define cOCTVC1_PKT_API_PKT_TYPE_ENUM_MAX (cOCTVC1_PKT_API_PKT_TYPE_ENUM_CMD) +#define cOCTVC1_PKT_API_PKT_TYPE_ENUM_CNT (cOCTVC1_PKT_API_PKT_TYPE_ENUM_MAX + 1) + +#define tOCTVC1_PKT_API_RCV_MASK tOCT_UINT32 +#define cOCTVC1_PKT_API_RCV_MASK_RSP (1<. + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Revision: 21846 $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_PKT_API_DEF_H__ +#define __OCTVC1_PKT_API_DEF_H__ + +/***************************** INCLUDE FILES *******************************/ +#include "octvc1_pkt_api.h" + +/*-------------------------------------------------------------------------- + C language +----------------------------------------------------------------------------*/ + +#ifdef __cplusplus +extern "C" { +#endif + + +/***************************** DEFINES **************************************/ + +/*-------------------------------------------------------------------------- + INSTANCE Default structure macros +----------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------- + Default macro for tOCTVC1_PKT_API_INST_GET_SIZE_PARMS structure +----------------------------------------------------------------------------*/ +#define mOCTVC1_PKT_API_INST_GET_SIZE_PARMS_DEF( _f_pParms ) \ + { \ + tOCTVC1_PKT_API_INST_GET_SIZE_PARMS * _pParms; \ + _pParms = (_f_pParms); \ + _pParms->pInitParms = 0x0; \ + _pParms->ulRequiredSize = 0; \ + } + +/*---------------------------------------------------------------------------- + Default macro for tOCTVC1_PKT_API_INST_INIT_PARMS structure +----------------------------------------------------------------------------*/ +#define mOCTVC1_PKT_API_INST_INIT_PARMS_DEF( _f_pParms ) \ + { \ + tOCTVC1_PKT_API_INST_INIT_PARMS * _pParms; \ + _pParms = (_f_pParms); \ + _pParms->ulCmdTimeoutMs = 2000; \ + _pParms->ulMaxRetry = 1; \ + _pParms->ulMaxConnection = 2; \ + _pParms->ulMaxSession = 1; \ + _pParms->ulMaxSyncCmd = 8; \ + _pParms->ulMaxPendingRsp = 8; \ + _pParms->ulMaxPendingEvt = 8; \ + _pParms->ulMaxPendingData = 8; \ + _pParms->usSessionInstanceStart = 0; \ + _pParms->pOsContext = 0x0; \ + _pParms->pTransportContext = 0x0; \ + _pParms->pTransportLocalContext = 0x0; \ + _pParms->AdaptorSelection = 0; \ + _pParms->abyLocalMac[0] = 0x0; \ + _pParms->abyLocalMac[1] = 0x0; \ + _pParms->abyLocalMac[2] = 0x0; \ + _pParms->abyLocalMac[3] = 0x0; \ + _pParms->abyLocalMac[4] = 0x0; \ + _pParms->abyLocalMac[5] = 0x0; \ + _pParms->pszInterfaceName = NULL; \ + _pParms->ulOptionMask = cOCTVC1_PKT_API_INSTANCE_OPTION_MASK_NONE; \ + _pParms->TransportFunc.pfnTransportApiOpen = 0x0; \ + _pParms->TransportFunc.pfnTransportApiClose = 0x0; \ + _pParms->TransportFunc.pfnTransportApiSend = 0x0; \ + _pParms->TransportFunc.pfnTransportApiRecv = 0x0; \ + _pParms->TransportFunc.pfnTransportApiSelect = 0x0; \ + _pParms->TransportFunc.pfnTransportApiOpenLoopBack = 0x0;\ + } + +/*---------------------------------------------------------------------------- + Default macro for tOCTVC1_PKT_API_INST_TERM_PARMS structure +----------------------------------------------------------------------------*/ +#define mOCTVC1_PKT_API_INST_TERM_PARMS_DEF( _f_pParms ) \ + { \ + tOCTVC1_PKT_API_INST_TERM_PARMS * _pParms; \ + _pParms = (_f_pParms); \ + _pParms->fForce = cOCT_FALSE; \ + } + +/*---------------------------------------------------------------------------- + Default macro for tOCTVC1_PKT_API_INST_STATS_PARMS structure +----------------------------------------------------------------------------*/ +#define mOCTVC1_PKT_API_INST_STATS_PARMS_DEF( _f_pParms ) \ + { \ + tOCTVC1_PKT_API_INST_STATS_PARMS * _pParms; \ + _pParms = (_f_pParms); \ + _pParms->fClear = cOCT_FALSE; \ + _pParms->ulOpenConnectionCnt = 0; \ + _pParms->ulOpenSessionCnt = 0; \ + _pParms->ulTotalPktSentCnt = 0; \ + _pParms->ulTotalPktRecvCnt = 0; \ + _pParms->ulTotalPktRejectCnt = 0; \ + _pParms->ulTotalPktTimeoutCnt = 0; \ + _pParms->ulTotalPktInvalidCnt = 0; \ + _pParms->ulTotalPktDropCnt = 0; \ + _pParms->ulTotalPktLateRspCnt = 0; \ + } + + + +/*---------------------------------------------------------------------------- + Default macro for tOCTVC1_PKT_API_INST_INFO_PARMS structure +----------------------------------------------------------------------------*/ +#define mOCTVC1_PKT_API_INST_INFO_PARMS_DEF( _f_pParms ) \ + { \ + tOCTVC1_PKT_API_INST_INFO_PARMS * _pParms; \ + _pParms = (_f_pParms); \ + _pParms->pTransportContext = 0x0; \ + _pParms->pTransportLocalContext = 0x0; \ + _pParms->abyLocalMac[0] = 0x0; \ + _pParms->abyLocalMac[1] = 0x0; \ + _pParms->abyLocalMac[2] = 0x0; \ + _pParms->abyLocalMac[3] = 0x0; \ + _pParms->abyLocalMac[4] = 0x0; \ + _pParms->abyLocalMac[5] = 0x0; \ + _pParms->ulOptionMask = cOCTVC1_PKT_API_INSTANCE_OPTION_MASK_NONE; \ + } + + +/*---------------------------------------------------------------------------- + Default macro for tOCTVC1_PKT_API_INST_DISCOVER_DEV_PARMS structure +----------------------------------------------------------------------------*/ +#define mOCTVC1_PKT_API_INST_DISCOVER_DEV_PARMS_DEF( _f_pParms ) \ + { \ + tOCTVC1_PKT_API_INST_DISCOVER_DEV_PARMS * _pParms; \ + _pParms = (_f_pParms); \ + _pParms->ulTimeoutMs = 500; \ + _pParms->pTransportDiscoverContext = NULL; \ + _pParms->ulDeviceCnt = 0; \ + } + + + + +/*-------------------------------------------------------------------------- + CONNECTION Default structure macros +----------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------- + Default macro for tOCTVC1_PKT_API_CNCT_OPEN_PARMS structure +----------------------------------------------------------------------------*/ +#define mOCTVC1_PKT_API_CNCT_OPEN_PARMS_DEF( _f_pParms ) \ + { \ + tOCTVC1_PKT_API_CNCT_OPEN_PARMS * _pParms; \ + _pParms = (_f_pParms); \ + _pParms->abyRemoteMac[0] = 0x0; \ + _pParms->abyRemoteMac[1] = 0x0; \ + _pParms->abyRemoteMac[2] = 0x0; \ + _pParms->abyRemoteMac[3] = 0x0; \ + _pParms->abyRemoteMac[4] = 0x0; \ + _pParms->abyRemoteMac[5] = 0x0; \ + _pParms->pTransportRemoteContext = NULL; \ + _pParms->pUserConnectionContext = NULL; \ + _pParms->pConnection = NULL; \ + } + +/*---------------------------------------------------------------------------- + Default macro for tOCTVC1_PKT_API_CNCT_CLOSE_PARMS structure +----------------------------------------------------------------------------*/ +#define mOCTVC1_PKT_API_CNCT_CLOSE_PARMS_DEF( _f_pParms ) \ + { \ + tOCTVC1_PKT_API_CNCT_CLOSE_PARMS * _pParms; \ + _pParms = (_f_pParms); \ + _pParms->fForce = cOCT_FALSE; \ + } + + +/*---------------------------------------------------------------------------- + Default macro for tOCTVC1_PKT_API_CNCT_STATS_PARMS structure +----------------------------------------------------------------------------*/ +#define mOCTVC1_PKT_API_CNCT_STATS_PARMS_DEF( _f_pParms ) \ + { \ + tOCTVC1_PKT_API_CNCT_STATS_PARMS * _pParms; \ + _pParms = (_f_pParms); \ + _pParms->fClear = cOCT_FALSE; \ + _pParms->ulOpenSessionCnt = 0; \ + _pParms->ulTotalPktSentCnt = 0; \ + _pParms->ulTotalPktRecvCnt = 0; \ + _pParms->ulTotalPktRejectCnt = 0; \ + _pParms->ulTotalPktTimeoutCnt = 0; \ + _pParms->ulTotalPktDropCnt = 0; \ + _pParms->ulTotalPktLateRspCnt = 0; \ + } + + + +/*---------------------------------------------------------------------------- + Default macro for tOCTVC1_PKT_API_CNCT_INFO_PARMS structure +----------------------------------------------------------------------------*/ +#define mOCTVC1_PKT_API_CNCT_INFO_PARMS_DEF( _f_pParms ) \ + { \ + tOCTVC1_PKT_API_CNCT_INFO_PARMS * _pParms; \ + _pParms = (_f_pParms); \ + _pParms->abyRemoteMac[0] = 0x0; \ + _pParms->abyRemoteMac[1] = 0x0; \ + _pParms->abyRemoteMac[2] = 0x0; \ + _pParms->abyRemoteMac[3] = 0x0; \ + _pParms->abyRemoteMac[4] = 0x0; \ + _pParms->abyRemoteMac[5] = 0x0; \ + _pParms->pTransportRemoteContext = NULL; \ + _pParms->pUserConnectionContext = NULL; \ + } + + +/*---------------------------------------------------------------------------- + Default macro for tOCTVC1_PKT_API_CNCT_MODIFY_PARMS structure +----------------------------------------------------------------------------*/ +#define mOCTVC1_PKT_API_CNCT_MODIFY_PARMS_DEF( _f_pParms ) \ + { \ + tOCTVC1_PKT_API_CNCT_MODIFY_PARMS * _pParms; \ + _pParms = (_f_pParms); \ + _pParms->abyRemoteMac[0] = 0x0; \ + _pParms->abyRemoteMac[1] = 0x0; \ + _pParms->abyRemoteMac[2] = 0x0; \ + _pParms->abyRemoteMac[3] = 0x0; \ + _pParms->abyRemoteMac[4] = 0x0; \ + _pParms->abyRemoteMac[5] = 0x0; \ + _pParms->pTransportRemoteContext = NULL; \ + _pParms->pUserConnectionContext = NULL; \ + } + + + +/*-------------------------------------------------------------------------- + SESSION Default structure macros +----------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------- + Default macro for tOCTVC1_PKT_API_SESS_OPEN_PARMS structure +----------------------------------------------------------------------------*/ +#define mOCTVC1_PKT_API_SESS_OPEN_PARMS_DEF( _f_pParms ) \ + { \ + tOCTVC1_PKT_API_SESS_OPEN_PARMS * _pParms; \ + _pParms = (_f_pParms); \ + _pParms->ulControlProcessFifoId = cOCTVC1_FIFO_ID_MGW_CONTROL; \ + _pParms->pUserSessionContext = NULL; \ + _pParms->pSession = NULL; \ + } + +/*---------------------------------------------------------------------------- + Default macro for tOCTVC1_PKT_API_SESS_CLOSE_PARMS structure +----------------------------------------------------------------------------*/ +#define mOCTVC1_PKT_API_SESS_CLOSE_PARMS_DEF( _f_pParms ) \ + { \ + tOCTVC1_PKT_API_SESS_CLOSE_PARMS * _pParms; \ + _pParms = (_f_pParms); \ + _pParms->fForce = cOCT_FALSE; \ + } + + +/*---------------------------------------------------------------------------- + Default macro for tOCTVC1_PKT_API_SESS_STATS_PARMS structure +----------------------------------------------------------------------------*/ +#define mOCTVC1_PKT_API_SESS_STATS_PARMS_DEF( _f_pParms ) \ + { \ + tOCTVC1_PKT_API_SESS_STATS_PARMS * _pParms; \ + _pParms = (_f_pParms); \ + _pParms->fClear = cOCT_FALSE; \ + _pParms->ulPktSentCnt = 0; \ + _pParms->ulPktRecvCnt = 0; \ + _pParms->ulPktRejectCnt = 0; \ + _pParms->ulPktTimeoutCnt = 0; \ + _pParms->ulPktLateRspCnt = 0; \ + } + + +/*-------------------------------------------------------------------------- + Common Default structure macros +----------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------- + Default macro for tOCTVC1_PKT_API_INST_RECV_PARMS structure +----------------------------------------------------------------------------*/ +#define mOCTVC1_PKT_API_INST_RECV_PARMS_DEF( _f_pParms ) \ + { \ + tOCTVC1_PKT_API_INST_RECV_PARMS * _pParms; \ + _pParms = (_f_pParms); \ + _pParms->PktRcvMask = cOCTVC1_PKT_API_RCV_MASK_ALL; \ + _pParms->ulTimeoutMs = cOCTVC1_PKT_API_FOREVER; \ + _pParms->pPayload = NULL; \ + _pParms->ulMaxPayloadLength = 0; \ + _pParms->RcvPktType = cOCTVC1_PKT_API_PKT_TYPE_ENUM_INVALID; \ + _pParms->ulRcvPayloadLength = 0; \ + _pParms->Info.Rsp.ulCmdId = 0; \ + _pParms->Info.Rsp.ulReturnCode = 0; \ + _pParms->Info.Rsp.pUserCmdContext = NULL; \ + _pParms->pConnection = NULL; \ + _pParms->pUserConnectionContext = NULL; \ + _pParms->pSession = NULL; \ + _pParms->pUserSessionContext = NULL; \ + } + +/*---------------------------------------------------------------------------- + Default macro for tOCTVC1_PKT_API_DATA_SEND_PARMS structure +----------------------------------------------------------------------------*/ +#define mOCTVC1_PKT_API_DATA_SEND_PARMS_DEF( _f_pParms ) \ + { \ + tOCTVC1_PKT_API_DATA_SEND_PARMS * _pParms; \ + _pParms = (_f_pParms); \ + _pParms->ulFormat = cOCTVOCNET_PKT_FORMAT_Q; \ + _pParms->ulLength = 0; \ + _pParms->pData = NULL; \ + } + +/*---------------------------------------------------------------------------- + Default macro for tOCTVC1_PKT_API_CMD_SEND_PARMS structure +----------------------------------------------------------------------------*/ +#define mOCTVC1_PKT_API_CMD_SEND_PARMS_DEF( _f_pParms ) \ + { \ + tOCTVC1_PKT_API_CMD_SEND_PARMS * _pParms; \ + _pParms = (_f_pParms); \ + _pParms->ulCmdTimeoutMs = 0; \ + _pParms->pUserCmdContext = NULL; \ + _pParms->pCmd = NULL; \ + } + +/*---------------------------------------------------------------------------- + Default macro for tOCTVC1_PKT_API_CMD_EXECUTE_PARMS structure +----------------------------------------------------------------------------*/ +#define mOCTVC1_PKT_API_CMD_EXECUTE_PARMS_DEF( _f_pParms ) \ + { \ + tOCTVC1_PKT_API_CMD_EXECUTE_PARMS * _pParms; \ + _pParms = (_f_pParms); \ + _pParms->ulCmdTimeoutMs = 0; \ + _pParms->pCmd = NULL; \ + _pParms->ulMaxRspLength = 0; \ + _pParms->ulRcvRspLength = 0; \ + _pParms->pRsp = NULL; \ + } + +/*---------------------------------------------------------------------------- + Default macro for tOCTVC1_PKT_API_SYSTEM_GET_MAC_ADDR_PARMS structure +----------------------------------------------------------------------------*/ +#define mOCTVC1_PKT_API_SYSTEM_GET_MAC_ADDR_PARMS_DEF( _f_pParms ) \ + { \ + tOCTVC1_PKT_API_SYSTEM_GET_MAC_ADDR_PARMS * _pParms; \ + _pParms = (_f_pParms); \ + _pParms->pTransportContext = NULL; \ + _pParms->AdaptorSelection = 0; \ + _pParms->pszInterfaceName = NULL; \ + _pParms->ulAdaptorIndex = 0; \ + _pParms->abyLocalMac[0] = 0; \ + _pParms->abyLocalMac[1] = 0; \ + _pParms->abyLocalMac[2] = 0; \ + _pParms->abyLocalMac[3] = 0; \ + _pParms->abyLocalMac[4] = 0; \ + _pParms->abyLocalMac[5] = 0; \ + } + +/*************************** STRUCTURES *************************************/ + + + +/***************************** FUNCTIONS ************************************/ + +/*-------------------------------------------------------------------------- + C language +----------------------------------------------------------------------------*/ + +#ifdef __cplusplus +} +#endif + +#endif /* __OCTVC1_PKT_API_DEF_H__*/ diff --git a/software/include/vocallo/pkt_api/octvc1_pkt_api_rc.h b/software/include/vocallo/pkt_api/octvc1_pkt_api_rc.h new file mode 100644 index 0000000..3dfcdcd --- /dev/null +++ b/software/include/vocallo/pkt_api/octvc1_pkt_api_rc.h @@ -0,0 +1,51 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_PKT_API_RC.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: Contains the return codes for the PKT_API API. + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Octasic_Revision: $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef OCTVC1_PKT_API_RC_H__ +#define OCTVC1_PKT_API_RC_H__ + + +/***************************** INCLUDE FILES *******************************/ +#include "../octvc1_generic_rc.h" + +/**************************************************************************** + PKT_API return codes + ****************************************************************************/ +#define cOCTVC1_PKT_API_RC_OK ( 0x0000 ) +#define cOCTVC1_PKT_API_RC_OS_ERROR ( 0x0001 + cOCTVC1_PKT_API_RC_BASE ) +#define cOCTVC1_PKT_API_RC_TRANSPORT_ERROR ( 0x0002 + cOCTVC1_PKT_API_RC_BASE ) +#define cOCTVC1_PKT_API_RC_TIMEOUT ( 0x0003 + cOCTVC1_PKT_API_RC_BASE ) +#define cOCTVC1_PKT_API_RC_LOCAL_MAC_INDEX_NOT_FOUND ( 0x0004 + cOCTVC1_PKT_API_RC_BASE ) +#define cOCTVC1_PKT_API_RC_BAD_PARAM ( 0x0005 + cOCTVC1_PKT_API_RC_BASE ) +#define cOCTVC1_PKT_API_RC_INST_CNCT_NOMORE ( 0x0100 + cOCTVC1_PKT_API_RC_BASE ) +#define cOCTVC1_PKT_API_RC_INST_PKT_NOMORE ( 0x0101 + cOCTVC1_PKT_API_RC_BASE ) +#define cOCTVC1_PKT_API_RC_INST_SYNC_TOOMANY ( 0x0102 + cOCTVC1_PKT_API_RC_BASE ) +#define cOCTVC1_PKT_API_RC_INST_CNCT_DEP ( 0x0103 + cOCTVC1_PKT_API_RC_BASE ) +#define cOCTVC1_PKT_API_RC_INST_DISCOVER_INPROGRESS ( 0x0104 + cOCTVC1_PKT_API_RC_BASE ) +#define cOCTVC1_PKT_API_RC_INST_RSP_TRUNCATE ( 0x0105 + cOCTVC1_PKT_API_RC_BASE ) +#define cOCTVC1_PKT_API_RC_INST_TERMINATED ( 0x0106 + cOCTVC1_PKT_API_RC_BASE ) +#define cOCTVC1_PKT_API_RC_CNCT_SESS_NOMORE ( 0x0200 + cOCTVC1_PKT_API_RC_BASE ) +#define cOCTVC1_PKT_API_RC_CNCT_SESS_DEP ( 0x0201 + cOCTVC1_PKT_API_RC_BASE ) +#define cOCTVC1_PKT_API_RC_CNCT_BRIDGE_DEP ( 0x0202 + cOCTVC1_PKT_API_RC_BASE ) +#define cOCTVC1_PKT_API_RC_CNCT_ALREADY_OPEN ( 0x0203 + cOCTVC1_PKT_API_RC_BASE ) +#define cOCTVC1_PKT_API_RC_INTERFACE_NAME_NOT_FOUND ( 0x0204 + cOCTVC1_PKT_API_RC_BASE ) +#define cOCTVC1_PKT_API_RC_DEPENDENCIES ( 0x0205 + cOCTVC1_PKT_API_RC_BASE ) +#define cOCTVC1_PKT_API_RC_SESS_CLOSE ( 0x0206 + cOCTVC1_PKT_API_RC_BASE ) +#define cOCTVC1_PKT_API_RC_CNCT_CLOSE ( 0x0207 + cOCTVC1_PKT_API_RC_BASE ) +#define cOCTVC1_PKT_API_RC_SESS_ALREADY_OPEN ( 0x0208 + cOCTVC1_PKT_API_RC_BASE ) + +#endif /* OCTVC1_PKT_API_RC_H__ */ + diff --git a/software/include/vocallo/pkt_api/octvc1_pkt_api_version.h b/software/include/vocallo/pkt_api/octvc1_pkt_api_version.h new file mode 100644 index 0000000..2c77a22 --- /dev/null +++ b/software/include/vocallo/pkt_api/octvc1_pkt_api_version.h @@ -0,0 +1,58 @@ +/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\ + +File: OCTVC1_PKT_API_VERSION.h + +Copyright (c) 2014 Octasic Inc. All rights reserved. + +Description: + +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 . + +Octasic_Release: OCTSDR-2G-01.08.05-B29-ALPHA (2014/08/14) + +$Revision: 25841 $ + +\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ + +#ifndef __OCTVC1_PKT_API_VERSION_H__ +#define __OCTVC1_PKT_API_VERSION_H__ + +/***************************** INCLUDE FILES *******************************/ +#include "../../octdev_types.h" + +/*-------------------------------------------------------------------------- + C language +----------------------------------------------------------------------------*/ + +#ifdef __cplusplus +extern "C" { +#endif + + +/***************************** DEFINES **************************************/ +/* The version ID is separated into the following sections: + + bit[31:25]: Major version + bit[24:18]: Minor version + bit[17:11]: Bug fix version + bit[10:0]: Build number +*/ +#define cOCTVC1_PKT_API_VERSION_MAJOR 1 +#define cOCTVC1_PKT_API_VERSION_MINOR 3 +#define cOCTVC1_PKT_API_VERSION_MAINTENANCE 27 +#define cOCTVC1_PKT_API_VERSION_BUILD 0 + +#define cOCTVC1_PKT_API_VERSION_ID ( (cOCTVC1_PKT_API_VERSION_MAJOR << 25) + \ + (cOCTVC1_PKT_API_VERSION_MINOR << 18) + \ + (cOCTVC1_PKT_API_VERSION_MAINTENANCE << 11) + \ + cOCTVC1_PKT_API_VERSION_BUILD ) + +/*-------------------------------------------------------------------------- + C language +----------------------------------------------------------------------------*/ + +#ifdef __cplusplus +} +#endif + +#endif /* __OCTVC1_PKT_API_VERSION_H__*/

_r|B}l_~ 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 literal 0 HcmV?d00001 diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_ws.exp b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_ws.exp new file mode 100644 index 0000000000000000000000000000000000000000..1e70fc5923f04152d0c7c9f781c76aa18b722b22 GIT binary patch literal 908 zcmaJ<+invv5S>jaA%FyVqCz~ZP#zM2mV`?iq98>Lt*9sgwN=G~rIlGbTPvG*Wp6Ix zg%9A358&(g0luKj*h#xWh|$jRnPbb|xf}--=xz7UzE=S5g0mo!f*0Hegx}Bw`Y#I5 zZle$Ii-i0#PaCJCkqrZYcj#ps!2NxS>5Yv}N4D0!(f+>%PywA3i=-1TZ6vY`@@$@} zS!`q)U+|gG<8et+wvYxE(paTuJ}*oUs_bx4*1-uBp;oaQXG)3`A6*(BDPU_8$=mGA%1veAs%VZfo&aFylwZhPXwFJ46Fzm5UMyG~P!$Xxx8#Y(n-4?t4i*se?JPS{Y zxllTM9kto{knJChSf*x^=-~4Kz(eTPsj2Zly7B<`sQ9Hl-=2H8v4wq&H+>o;dYVT{ z)K)*>@{&qZ9z;Jh_UnjGCBPxx=oORZ3k-mow^95lYT`y&el)@j?OJJ!+Gri1ne=D8 p@*L8?loznPQjoZzp_PpC0@!irp_I;Atw0M|Df_E=Eor_Ye*l@Lt4II< literal 0 HcmV?d00001 diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_ws.lib b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_ws.lib new file mode 100644 index 0000000000000000000000000000000000000000..bd071f400907ffd9536681e4d117e3cd9a91eeca GIT binary patch literal 2126 zcmcIlOKuZE5PdVYli1>8K_pfPgCYT&;Ll9NCqfP}5>_ToBC`RN949jTeQbM=?XEd_4;S9Ph44DES-PvaoG>lx)!OlC zW9@)sr)|^tMapW*BK~gOu9gSowY0)kN%%qiw**2oXOX;+dK(hP9TGIMr}P-lB5^^X z!YZP?#BHBbPjNp^K?DDh8|y^R?(N!@UZ>xw4-(Ic&l6U@u;YB47;e#;H}VfC_>L5( zkuriXpB-c?os%w|H+uFJS69j)@8QM=)S=wY0?v_}3UM4{OCg0AtU~}i9dm>*{)7kF z`0v0Qx#CI3M;fo0mN%I(X;WQ8M=?v&os9YJ9FUJ0oH14B(`XpWn2bU>W4@_{oH=9u zQzpz4-G_9Hzg~yFWSOJV(l5t(b1Ur^8E``#%-f7gGZj^wkX&iwZLHD^g|psIwUF}- z^E(fxkI3|lbX=5G(~wtug5N$aQ%mDJ%q^ysz=yXq}G WTlj`HGQl1`AbUF9e%`A)VdoFUNw7!& literal 0 HcmV?d00001 diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_ws.pdb b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_ws.pdb new file mode 100644 index 0000000000000000000000000000000000000000..c6ff513176b331dc34a662f30330673014d9a546 GIT binary patch literal 994304 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 z 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%0D;@6FlZAZkkC)Cdyrg-VhL1b(K-ZA1G}`RH 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%0DkE|9qGm3u9;W!9XmE+V6{__WP1J21}v#`_i}y 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

s78n^D)XwxIgrR&?**zc5A!rtSG1uV=A6(Qf@) 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 literal 0 HcmV?d00001 diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_msg_ctrl.obj b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_msg_ctrl.obj new file mode 100644 index 0000000000000000000000000000000000000000..a145c44124756e2fcbefe3a411e7ddf631408670 GIT binary patch literal 113950 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 Isw(0C0Roh__LP3VG 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 literal 0 HcmV?d00001 diff --git a/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_plugin.obj b/application/tool/wireshark/plugins/octasic/octsdr/octvc1/Release_1.6.5/octvc1_plugin.obj new file mode 100644 index 0000000000000000000000000000000000000000..52c24b59b828bd5df3b1d790920e3977f1a95b61 GIT binary patch literal 29936 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 G?Ee7JB(_H& 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 z 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