From a279fa7705b9baf3f6c779face3067b722c802b2 Mon Sep 17 00:00:00 2001 From: Michael Mann Date: Mon, 16 Jun 2014 13:23:28 -0400 Subject: Have ipmi "dissectors" register through the build process instead of "manually" Change-Id: I6d6d32e8a1bc21dee9bf52b502e1a02e9511ecb2 Reviewed-on: https://code.wireshark.org/review/2253 Reviewed-by: Dmitry Bazhenov Reviewed-by: Evan Huus Reviewed-by: Michael Mann --- epan/CMakeLists.txt | 27 +++++++++++---------------- epan/dissectors/Makefile.common | 26 +++++++++++--------------- epan/dissectors/packet-ipmi-app.c | 4 +++- epan/dissectors/packet-ipmi-bridge.c | 4 +++- epan/dissectors/packet-ipmi-chassis.c | 4 +++- epan/dissectors/packet-ipmi-picmg.c | 2 +- epan/dissectors/packet-ipmi-pps.c | 2 +- epan/dissectors/packet-ipmi-se.c | 2 +- epan/dissectors/packet-ipmi-storage.c | 2 +- epan/dissectors/packet-ipmi-transport.c | 2 +- epan/dissectors/packet-ipmi-update.c | 2 +- epan/dissectors/packet-ipmi-vita.c | 2 +- epan/dissectors/packet-ipmi.c | 23 +++++------------------ epan/dissectors/packet-ipmi.h | 13 ++----------- 14 files changed, 45 insertions(+), 70 deletions(-) diff --git a/epan/CMakeLists.txt b/epan/CMakeLists.txt index 524a76db15..946b0c3357 100644 --- a/epan/CMakeLists.txt +++ b/epan/CMakeLists.txt @@ -808,9 +808,19 @@ set(DISSECTOR_SRC dissectors/packet-ipars.c dissectors/packet-ipdc.c dissectors/packet-ipfc.c - dissectors/packet-ipmi-session.c dissectors/packet-ipmi.c + dissectors/packet-ipmi-app.c + dissectors/packet-ipmi-bridge.c + dissectors/packet-ipmi-chassis.c + dissectors/packet-ipmi-picmg.c + dissectors/packet-ipmi-se.c + dissectors/packet-ipmi-session.c + dissectors/packet-ipmi-storage.c dissectors/packet-ipmi-trace.c + dissectors/packet-ipmi-transport.c + dissectors/packet-ipmi-pps.c + dissectors/packet-ipmi-update.c + dissectors/packet-ipmi-vita.c dissectors/packet-ipnet.c dissectors/packet-ipoib.c dissectors/packet-ipp.c @@ -1400,22 +1410,7 @@ set(DIRTY_DISSECTOR_SRC dissectors/packet-x11.c ) -# IPMI sub-parsers for each network function code -set(IPMI_SUBPARSERS - dissectors/packet-ipmi-app.c - dissectors/packet-ipmi-bridge.c - dissectors/packet-ipmi-chassis.c - dissectors/packet-ipmi-picmg.c - dissectors/packet-ipmi-se.c - dissectors/packet-ipmi-storage.c - dissectors/packet-ipmi-transport.c - dissectors/packet-ipmi-pps.c - dissectors/packet-ipmi-update.c - dissectors/packet-ipmi-vita.c -) - set(DISSECTOR_SUPPORT_SRC - ${IPMI_SUBPARSERS} dissectors/packet-dcerpc-nt.c dissectors/usb.c register.c diff --git a/epan/dissectors/Makefile.common b/epan/dissectors/Makefile.common index 8359ce3e26..96444eb246 100644 --- a/epan/dissectors/Makefile.common +++ b/epan/dissectors/Makefile.common @@ -728,9 +728,19 @@ DISSECTOR_SRC = \ packet-ipars.c \ packet-ipdc.c \ packet-ipfc.c \ - packet-ipmi-session.c \ packet-ipmi.c \ + packet-ipmi-app.c \ + packet-ipmi-bridge.c \ + packet-ipmi-chassis.c \ + packet-ipmi-picmg.c \ + packet-ipmi-se.c \ + packet-ipmi-session.c \ + packet-ipmi-storage.c \ packet-ipmi-trace.c \ + packet-ipmi-transport.c \ + packet-ipmi-pps.c \ + packet-ipmi-update.c \ + packet-ipmi-vita.c \ packet-ipnet.c \ packet-ipoib.c \ packet-ipp.c \ @@ -1705,24 +1715,10 @@ DISSECTOR_INCLUDES = \ $(GENERATED_HEADER_FILES) \ $(CUSTOM_HEADER_FILES) -# IPMI sub-parsers for each network function code -IPMI_SUBPARSERS = \ - packet-ipmi-app.c \ - packet-ipmi-bridge.c \ - packet-ipmi-chassis.c \ - packet-ipmi-picmg.c \ - packet-ipmi-se.c \ - packet-ipmi-storage.c \ - packet-ipmi-transport.c \ - packet-ipmi-pps.c \ - packet-ipmi-update.c \ - packet-ipmi-vita.c - # 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 "register.c"). DISSECTOR_SUPPORT_SRC = \ - $(IPMI_SUBPARSERS) \ packet-dcerpc-nt.c \ usb.c \ register.c diff --git a/epan/dissectors/packet-ipmi-app.c b/epan/dissectors/packet-ipmi-app.c index 97b71bc93f..f0a0bc7e99 100644 --- a/epan/dissectors/packet-ipmi-app.c +++ b/epan/dissectors/packet-ipmi-app.c @@ -29,6 +29,8 @@ #include "packet-ipmi.h" +void proto_register_ipmi_app(void); + static gint ett_ipmi_app_01_byte2 = -1; static gint ett_ipmi_app_01_byte3 = -1; static gint ett_ipmi_app_01_byte6 = -1; @@ -1045,7 +1047,7 @@ static ipmi_cmd_t cmd_app[] = { }; void -ipmi_register_app(gint proto_ipmi) +proto_register_ipmi_app(void) { static hf_register_info hf[] = { { &hf_ipmi_app_01_dev_id, diff --git a/epan/dissectors/packet-ipmi-bridge.c b/epan/dissectors/packet-ipmi-bridge.c index 6da35fb6b5..de723556ee 100644 --- a/epan/dissectors/packet-ipmi-bridge.c +++ b/epan/dissectors/packet-ipmi-bridge.c @@ -27,6 +27,8 @@ #include "packet-ipmi.h" +void proto_register_ipmi_bridge(void); + /* Bridge commands are not implemented (yet) */ @@ -134,7 +136,7 @@ static ipmi_cmd_t cmd_bridge[] = { }; void -ipmi_register_bridge(gint proto_ipmi _U_) +proto_register_ipmi_bridge(void) { ipmi_register_netfn_cmdtab(IPMI_BRIDGE_REQ, IPMI_OEM_NONE, NULL, 0, NULL, cmd_bridge, array_length(cmd_bridge)); diff --git a/epan/dissectors/packet-ipmi-chassis.c b/epan/dissectors/packet-ipmi-chassis.c index 6d00fbc08c..a482cef5d4 100644 --- a/epan/dissectors/packet-ipmi-chassis.c +++ b/epan/dissectors/packet-ipmi-chassis.c @@ -27,6 +27,8 @@ #include "packet-ipmi.h" +void proto_register_ipmi_chassis(void); + /* Local variables. */ static gint ett_ipmi_chs_bo00_byte1 = -1; @@ -709,7 +711,7 @@ static ipmi_cmd_t cmd_chassis[] = { }; void -ipmi_register_chassis(gint proto_ipmi) +proto_register_ipmi_chassis(void) { static hf_register_info hf[] = { { &hf_ipmi_chs_bo00_sip, diff --git a/epan/dissectors/packet-ipmi-picmg.c b/epan/dissectors/packet-ipmi-picmg.c index 04f2423747..9e53675091 100644 --- a/epan/dissectors/packet-ipmi-picmg.c +++ b/epan/dissectors/packet-ipmi-picmg.c @@ -2668,7 +2668,7 @@ static ipmi_cmd_t cmd_picmg[] = { }; void -ipmi_register_picmg(gint proto_ipmi) +proto_register_ipmi_picmg(void) { static hf_register_info hf[] = { { &hf_ipmi_picmg_led_function, diff --git a/epan/dissectors/packet-ipmi-pps.c b/epan/dissectors/packet-ipmi-pps.c index f3d089018f..785d6ce870 100644 --- a/epan/dissectors/packet-ipmi-pps.c +++ b/epan/dissectors/packet-ipmi-pps.c @@ -97,7 +97,7 @@ static ipmi_cmd_t cmd_pps[] = { }; void -ipmi_register_pps(gint proto_ipmi _U_) +proto_register_ipmi_pps(void) { static guint8 sig_pps[3] = { 0x0a, 0x40, 0x00 }; static guint8 sig_pps_rev[3] = { 0x00, 0x40, 0x0a }; diff --git a/epan/dissectors/packet-ipmi-se.c b/epan/dissectors/packet-ipmi-se.c index 50c65c7b99..2603f73f03 100644 --- a/epan/dissectors/packet-ipmi-se.c +++ b/epan/dissectors/packet-ipmi-se.c @@ -2891,7 +2891,7 @@ static ipmi_cmd_t cmd_se[] = { }; void -ipmi_register_se(gint proto_ipmi) +proto_register_ipmi_se(void) { static hf_register_info hf[] = { { &hf_ipmi_se_evt_rev, diff --git a/epan/dissectors/packet-ipmi-storage.c b/epan/dissectors/packet-ipmi-storage.c index 5f9d0ab6f9..6c04ac0d1c 100644 --- a/epan/dissectors/packet-ipmi-storage.c +++ b/epan/dissectors/packet-ipmi-storage.c @@ -743,7 +743,7 @@ static ipmi_cmd_t cmd_storage[] = { }; void -ipmi_register_storage(gint proto_ipmi) +proto_register_ipmi_storage(void) { static hf_register_info hf[] = { { &hf_ipmi_stor_10_fruid, diff --git a/epan/dissectors/packet-ipmi-transport.c b/epan/dissectors/packet-ipmi-transport.c index acfa0bf97c..0e3d876940 100644 --- a/epan/dissectors/packet-ipmi-transport.c +++ b/epan/dissectors/packet-ipmi-transport.c @@ -2170,7 +2170,7 @@ static ipmi_cmd_t cmd_transport[] = { }; void -ipmi_register_transport(gint proto_ipmi) +proto_register_ipmi_transport(void) { static hf_register_info hf[] = { { &hf_ipmi_trn_lan00_sip, diff --git a/epan/dissectors/packet-ipmi-update.c b/epan/dissectors/packet-ipmi-update.c index 713e481e12..cb42ac66ce 100644 --- a/epan/dissectors/packet-ipmi-update.c +++ b/epan/dissectors/packet-ipmi-update.c @@ -38,7 +38,7 @@ static ipmi_cmd_t cmd_update[] = { }; void -ipmi_register_update(gint proto_ipmi _U_) +proto_register_ipmi_update(void) { ipmi_register_netfn_cmdtab(IPMI_UPDATE_REQ, IPMI_OEM_PPS, NULL, 0, NULL, cmd_update, array_length(cmd_update)); diff --git a/epan/dissectors/packet-ipmi-vita.c b/epan/dissectors/packet-ipmi-vita.c index d41b33d654..d0b5d0ba13 100755 --- a/epan/dissectors/packet-ipmi-vita.c +++ b/epan/dissectors/packet-ipmi-vita.c @@ -1298,7 +1298,7 @@ static ipmi_cmd_t cmd_vita[] = { /* VITA 46.11 command set registrator */ void -ipmi_register_vita(gint proto_ipmi) +proto_register_ipmi_vita(void) { static const guint8 sig_vita[1] = { 3 }; diff --git a/epan/dissectors/packet-ipmi.c b/epan/dissectors/packet-ipmi.c index 4eaff33c4a..d007f252c2 100644 --- a/epan/dissectors/packet-ipmi.c +++ b/epan/dissectors/packet-ipmi.c @@ -135,7 +135,7 @@ typedef struct { static dissector_handle_t data_dissector; -static gint proto_ipmi = -1; +gint proto_ipmi = -1; static gint proto_ipmb = -1; static gint proto_kcs = -1; static gint proto_tmode = -1; @@ -1768,15 +1768,13 @@ proto_register_ipmi(void) { "pps", "Pigeon Point Systems", IPMI_OEM_PPS }, { NULL, NULL, 0 } }; -#if 0 + static ei_register_info ei[] = { { &ei_impi_parser_not_implemented, { "ipmi.parser_not_implemented", PI_UNDECODED, PI_WARN, "[PARSER NOT IMPLEMENTED]", EXPFILL }}, }; -#endif + module_t *m; -#if 0 expert_module_t* expert_ipmi; -#endif guint32 i; proto_ipmi = proto_register_protocol("Intelligent Platform Management Interface", @@ -1795,9 +1793,9 @@ proto_register_ipmi(void) proto_register_field_array(proto_ipmi, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); -#if 0 + expert_ipmi = expert_register_protocol(proto_ipmi); -#endif + expert_register_field_array(expert_ipmi, ei, array_length(ei)); ipmi_netfn_setdesc(IPMI_CHASSIS_REQ, "Chassis", 0); ipmi_netfn_setdesc(IPMI_BRIDGE_REQ, "Bridge", 0); @@ -1812,17 +1810,6 @@ proto_register_ipmi(void) ipmi_netfn_setdesc(i, "OEM", 0); } - ipmi_register_chassis(proto_ipmi); - ipmi_register_bridge(proto_ipmi); - ipmi_register_se(proto_ipmi); - ipmi_register_app(proto_ipmi); - ipmi_register_update(proto_ipmi); - ipmi_register_storage(proto_ipmi); - ipmi_register_transport(proto_ipmi); - ipmi_register_picmg(proto_ipmi); - ipmi_register_pps(proto_ipmi); - ipmi_register_vita(proto_ipmi); - new_register_dissector("ipmi", dissect_ipmi, proto_ipmi); new_register_dissector("ipmb", dissect_ipmi, proto_ipmb); new_register_dissector("kcs", dissect_kcs, proto_kcs); diff --git a/epan/dissectors/packet-ipmi.h b/epan/dissectors/packet-ipmi.h index ffc75b93c8..a0f9233a05 100644 --- a/epan/dissectors/packet-ipmi.h +++ b/epan/dissectors/packet-ipmi.h @@ -166,17 +166,8 @@ ipmi_netfn_t *ipmi_getnetfn(guint32 netfn, const guint8 *sig); ipmi_cmd_t *ipmi_getcmd(ipmi_netfn_t *nf, guint32 cmd); const char *ipmi_get_completion_code(guint8 completion, ipmi_cmd_t *cmd); -/* Sub-registrars (ipmi_*.c) */ -void ipmi_register_app(int proto); -void ipmi_register_bridge(int proto); -void ipmi_register_chassis(int proto); -void ipmi_register_picmg(int proto); -void ipmi_register_pps(int proto); -void ipmi_register_se(int proto); -void ipmi_register_storage(int proto); -void ipmi_register_transport(int proto); -void ipmi_register_update(int proto); -void ipmi_register_vita(int proto); +/* Used for sub-registrars (ipmi_*.c) */ +extern gint proto_ipmi; /* Main dissection routine */ #define IPMI_D_NONE 0x0001 /* Do not parse at all */ -- cgit v1.2.3