]> git.ipfire.org Git - thirdparty/lldpd.git/commitdiff
lldpcli: use protocol map from liblldpctl to select protocol
authorVincent Bernat <vincent@bernat.im>
Tue, 8 Jul 2014 20:57:54 +0000 (22:57 +0200)
committerVincent Bernat <vincent@bernat.im>
Tue, 8 Jul 2014 20:57:54 +0000 (22:57 +0200)
src/client/display.c
src/client/show.c
src/lib/atom-private.c

index 9d0cc77d5430f8613ac4036108a7c760d31c3ee2..a34640e7334a4ca02070a31ae1bffd138a8e0737 100644 (file)
@@ -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;
+                       }
                }
        }
 
index 1959dd77c1114f9ccd08f5af85f5141f01a58868..1e2a06d31845c993ccaa77d9ea58b21f526baf79 100644 (file)
@@ -16,6 +16,7 @@
  */
 
 #include "client.h"
+#include <string.h>
 
 /**
  * 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) {
index c16887268c33577bd9204769defa93b31d7c0151..050349a6bbbccda1b236eec29bf4d037a425f659 100644 (file)
@@ -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;
        }
 }