From 7efa65c16ec752ee6bf0357a7428859641860f36 Mon Sep 17 00:00:00 2001 From: Vincent Bernat Date: Tue, 8 Jul 2014 22:57:54 +0200 Subject: [PATCH] lldpcli: use protocol map from liblldpctl to select protocol --- src/client/display.c | 20 ++++++++++---------- src/client/show.c | 22 ++++++++++++---------- src/lib/atom-private.c | 2 ++ 3 files changed, 24 insertions(+), 20 deletions(-) diff --git a/src/client/display.c b/src/client/display.c index 9d0cc77d..a34640e7 100644 --- a/src/client/display.c +++ b/src/client/display.c @@ -555,7 +555,7 @@ display_interfaces(lldpctl_conn_t *conn, struct writer *w, { lldpctl_atom_t *iface; int protocol = LLDPD_MODE_MAX; - char *proto_str; + const char *proto_str; /* user might have specified protocol to filter display results */ proto_str = cmdenv_get(env, "protocol"); @@ -563,15 +563,15 @@ display_interfaces(lldpctl_conn_t *conn, struct writer *w, if (proto_str) { log_debug("display", "filter protocol: %s ", proto_str); - if (!strcmp(proto_str, "cdpv1")) { - protocol = LLDPD_MODE_CDPV1; - } else if (!strcmp(proto_str, "cdpv2")) { - protocol = LLDPD_MODE_CDPV2; - } else if (!strcmp(proto_str, "lldp")) { - protocol = LLDPD_MODE_LLDP; - } else { - /* unsupported - dont show anything */ - protocol = 0; + protocol = 0; + for (lldpctl_map_t *protocol_map = + lldpctl_key_get_map(lldpctl_k_port_protocol); + protocol_map->string; + protocol_map++) { + if (!strcasecmp(proto_str, protocol_map->string)) { + protocol = protocol_map->value; + break; + } } } diff --git a/src/client/show.c b/src/client/show.c index 1959dd77..1e2a06d3 100644 --- a/src/client/show.c +++ b/src/client/show.c @@ -16,6 +16,7 @@ */ #include "client.h" +#include /** * Show neighbors. @@ -108,7 +109,7 @@ watchcb(lldpctl_conn_t *conn, struct cmd_env *env = wa->env; struct writer *w = wa->w; const char *interfaces = cmdenv_get(env, "ports"); - char *proto_str; + const char *proto_str; int protocol = LLDPD_MODE_MAX; if (interfaces && !contains(interfaces, lldpctl_atom_get_str(interface, @@ -121,15 +122,16 @@ watchcb(lldpctl_conn_t *conn, if (proto_str) { log_debug("display", "filter protocol: %s ", proto_str); - if (!strcmp(proto_str, "cdpv1")) - protocol = LLDPD_MODE_CDPV1; - else if (!strcmp(proto_str, "cdpv2")) - protocol = LLDPD_MODE_CDPV2; - else if (!strcmp(proto_str, "lldp")) - protocol = LLDPD_MODE_LLDP; - else - /* unsupported - dont show anything */ - protocol = 0; + protocol = 0; /* unsupported */ + for (lldpctl_map_t *protocol_map = + lldpctl_key_get_map(lldpctl_k_port_protocol); + protocol_map->string; + protocol_map++) { + if (!strcasecmp(proto_str, protocol_map->string)) { + protocol = protocol_map->value; + break; + } + } } switch (type) { diff --git a/src/lib/atom-private.c b/src/lib/atom-private.c index c1688726..050349a6 100644 --- a/src/lib/atom-private.c +++ b/src/lib/atom-private.c @@ -334,6 +334,8 @@ lldpctl_key_get_map(lldpctl_key_t key) return bond_slave_src_mac_map; case lldpctl_k_config_lldp_portid_type: return lldp_portid_map; + case lldpctl_k_port_protocol: + return lldpd_protocol_map; default: return empty_map; } } -- 2.39.5