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 <dima_b@pigeonpoint.com>
Reviewed-by: Evan Huus <eapache@gmail.com>
Reviewed-by: Michael Mann <mmann78@netscape.net>
This commit is contained in:
Michael Mann 2014-06-16 13:23:28 -04:00
parent cf99e6b198
commit a279fa7705
14 changed files with 45 additions and 70 deletions

View File

@ -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

View File

@ -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

View File

@ -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,

View File

@ -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));

View File

@ -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,

View File

@ -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,

View File

@ -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 };

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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));

View File

@ -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 };

View File

@ -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);

View File

@ -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 */