Signed-off-by: Ira Weiny <wei...@llnl.gov> --- include/ibdiag_common.h | 16 ++++++++++++++++ src/ibccconfig.c | 21 +-------------------- src/ibccquery.c | 38 ++++++++++---------------------------- src/ibdiag_common.c | 10 ++++++++++ src/smpquery.c | 38 ++++++++++---------------------------- 5 files changed, 47 insertions(+), 76 deletions(-)
diff --git a/include/ibdiag_common.h b/include/ibdiag_common.h index 7e6d5c1..c297c4d 100644 --- a/include/ibdiag_common.h +++ b/include/ibdiag_common.h @@ -161,4 +161,20 @@ int vsnprint_field(char *buf, size_t n, enum MAD_FIELDS f, int spacing, int snprint_field(char *buf, size_t n, enum MAD_FIELDS f, int spacing, const char *format, ...); void dump_portinfo(void *pi, int pisize, int tabs); + + +/** + * Some common command line parsing + */ +typedef char *(op_fn_t) (ib_portid_t * dest, char **argv, int argc); + +typedef struct match_rec { + const char *name, *alias; + op_fn_t *fn; + unsigned opt_portnum; + char *ops_extra; +} match_rec_t; + +op_fn_t *match_op(const match_rec_t match_tbl[], char *name); + #endif /* _IBDIAG_COMMON_H_ */ diff --git a/src/ibccconfig.c b/src/ibccconfig.c index 6dd6b0b..79a0e71 100644 --- a/src/ibccconfig.c +++ b/src/ibccconfig.c @@ -56,15 +56,6 @@ struct ibmad_port *srcport; -typedef char *(op_fn_t) (ib_portid_t * dest, char **argv, int argc); - -typedef struct match_rec { - const char *name, *alias; - op_fn_t *fn; - unsigned opt_portnum; - char *ops_extra; -} match_rec_t; - static op_fn_t congestion_key_info; static op_fn_t switch_congestion_setting; static op_fn_t switch_port_congestion_setting; @@ -553,16 +544,6 @@ static char *congestion_control_table(ib_portid_t * dest, char **argv, int argc) return NULL; } -static op_fn_t *match_op(char *name) -{ - const match_rec_t *r; - for (r = match_tbl; r->name; r++) - if (!strcasecmp(r->name, name) || - (r->alias && !strcasecmp(r->alias, name))) - return r->fn; - return NULL; -} - static int process_opt(void *context, int ch, char *optarg) { switch (ch) { @@ -623,7 +604,7 @@ int main(int argc, char **argv) if (argc < 2) ibdiag_show_usage(); - if (!(fn = match_op(argv[0]))) + if (!(fn = match_op(match_tbl, argv[0]))) IBERROR("operation '%s' not supported", argv[0]); srcport = mad_rpc_open_port(ibd_ca, ibd_ca_port, mgmt_classes, 3); diff --git a/src/ibccquery.c b/src/ibccquery.c index 476436f..5e0e283 100644 --- a/src/ibccquery.c +++ b/src/ibccquery.c @@ -53,14 +53,6 @@ struct ibmad_port *srcport; -typedef char *(op_fn_t) (ib_portid_t * dest, char **argv, int argc); - -typedef struct match_rec { - const char *name, *alias; - op_fn_t *fn; - unsigned opt_portnum; -} match_rec_t; - static op_fn_t class_port_info; static op_fn_t congestion_info; static op_fn_t congestion_key_info; @@ -72,15 +64,15 @@ static op_fn_t congestion_control_table; static op_fn_t timestamp_dump; static const match_rec_t match_tbl[] = { - {"ClassPortInfo", "CP", class_port_info, 0}, - {"CongestionInfo", "CI", congestion_info, 0}, - {"CongestionKeyInfo", "CK", congestion_key_info, 0}, - {"CongestionLog", "CL", congestion_log, 0}, - {"SwitchCongestionSetting", "SS", switch_congestion_setting, 0}, - {"SwitchPortCongestionSetting", "SP", switch_port_congestion_setting, 1}, - {"CACongestionSetting", "CS", ca_congestion_setting, 0}, - {"CongestionControlTable", "CT", congestion_control_table, 0}, - {"Timestamp", "TI", timestamp_dump, 0}, + {"ClassPortInfo", "CP", class_port_info, 0, ""}, + {"CongestionInfo", "CI", congestion_info, 0, ""}, + {"CongestionKeyInfo", "CK", congestion_key_info, 0, ""}, + {"CongestionLog", "CL", congestion_log, 0, ""}, + {"SwitchCongestionSetting", "SS", switch_congestion_setting, 0, ""}, + {"SwitchPortCongestionSetting", "SP", switch_port_congestion_setting, 1, ""}, + {"CACongestionSetting", "CS", ca_congestion_setting, 0, ""}, + {"CongestionControlTable", "CT", congestion_control_table, 0, ""}, + {"Timestamp", "TI", timestamp_dump, 0, ""}, {0} }; @@ -344,16 +336,6 @@ static char *timestamp_dump(ib_portid_t * dest, char **argv, int argc) return NULL; } -static op_fn_t *match_op(char *name) -{ - const match_rec_t *r; - for (r = match_tbl; r->name; r++) - if (!strcasecmp(r->name, name) || - (r->alias && !strcasecmp(r->alias, name))) - return r->fn; - return NULL; -} - static int process_opt(void *context, int ch, char *optarg) { switch (ch) { @@ -407,7 +389,7 @@ int main(int argc, char **argv) if (argc < 2) ibdiag_show_usage(); - if (!(fn = match_op(argv[0]))) + if (!(fn = match_op(match_tbl, argv[0]))) IBERROR("operation '%s' not supported", argv[0]); srcport = mad_rpc_open_port(ibd_ca, ibd_ca_port, mgmt_classes, 3); diff --git a/src/ibdiag_common.c b/src/ibdiag_common.c index ebe8797..d550529 100644 --- a/src/ibdiag_common.c +++ b/src/ibdiag_common.c @@ -1016,3 +1016,13 @@ void dump_portinfo(void *pi, int pisize, int tabs) printf("%s\n", buf); } } + +op_fn_t *match_op(const match_rec_t match_tbl[], char *name) +{ + const match_rec_t *r; + for (r = match_tbl; r->name; r++) + if (!strcasecmp(r->name, name) || + (r->alias && !strcasecmp(r->alias, name))) + return r->fn; + return NULL; +} diff --git a/src/smpquery.c b/src/smpquery.c index 66354e0..5ba0a05 100644 --- a/src/smpquery.c +++ b/src/smpquery.c @@ -54,27 +54,19 @@ struct ibmad_port *srcport; -typedef char *(op_fn_t) (ib_portid_t * dest, char **argv, int argc); - -typedef struct match_rec { - const char *name, *alias; - op_fn_t *fn; - unsigned opt_portnum; -} match_rec_t; - static op_fn_t node_desc, node_info, port_info, switch_info, pkey_table, sl2vl_table, vlarb_table, guid_info, mlnx_ext_port_info; static const match_rec_t match_tbl[] = { - {"NodeInfo", "NI", node_info}, - {"NodeDesc", "ND", node_desc}, - {"PortInfo", "PI", port_info, 1}, - {"SwitchInfo", "SI", switch_info}, - {"PKeyTable", "PKeys", pkey_table, 1}, - {"SL2VLTable", "SL2VL", sl2vl_table, 1}, - {"VLArbitration", "VLArb", vlarb_table, 1}, - {"GUIDInfo", "GI", guid_info}, - {"MlnxExtPortInfo", "MEPI", mlnx_ext_port_info, 1}, + {"NodeInfo", "NI", node_info, 0, ""}, + {"NodeDesc", "ND", node_desc, 0, ""}, + {"PortInfo", "PI", port_info, 1, ""}, + {"SwitchInfo", "SI", switch_info, 0, ""}, + {"PKeyTable", "PKeys", pkey_table, 1, ""}, + {"SL2VLTable", "SL2VL", sl2vl_table, 1, ""}, + {"VLArbitration", "VLArb", vlarb_table, 1, ""}, + {"GUIDInfo", "GI", guid_info, 0, ""}, + {"MlnxExtPortInfo", "MEPI", mlnx_ext_port_info, 1, ""}, {0} }; @@ -396,16 +388,6 @@ static char *guid_info(ib_portid_t * dest, char **argv, int argc) return 0; } -static op_fn_t *match_op(char *name) -{ - const match_rec_t *r; - for (r = match_tbl; r->name; r++) - if (!strcasecmp(r->name, name) || - (r->alias && !strcasecmp(r->alias, name))) - return r->fn; - return NULL; -} - static int process_opt(void *context, int ch, char *optarg) { switch (ch) { @@ -470,7 +452,7 @@ int main(int argc, char **argv) if (argc < 2) ibdiag_show_usage(); - if (!(fn = match_op(argv[0]))) + if (!(fn = match_op(match_tbl, argv[0]))) IBERROR("operation '%s' not supported", argv[0]); srcport = mad_rpc_open_port(ibd_ca, ibd_ca_port, mgmt_classes, 3); -- 1.7.1 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html