struct cmd_env *, int, int);
void display_interface(lldpctl_conn_t *, struct writer *, int,
lldpctl_atom_t *, lldpctl_atom_t *, int, int);
+void display_local_chassis(lldpctl_conn_t *, struct writer *,
+ struct cmd_env *, int);
void display_configuration(lldpctl_conn_t *, struct writer *);
void display_interfaces_stats(lldpctl_conn_t *, struct writer *,
struct cmd_env *);
return sage;
}
+void
+display_local_chassis(lldpctl_conn_t *conn, struct writer *w,
+ struct cmd_env *env, int details)
+{
+ tag_start(w, "local-chassis", "Local chassis");
+
+ lldpctl_atom_t *chassis = lldpctl_get_local_chassis(conn);
+ display_chassis(w, chassis, details);
+ if (details == DISPLAY_DETAILS) {
+ display_med(w, NULL, chassis);
+ }
+ lldpctl_atom_dec_ref(chassis);
+
+ tag_end(w);
+}
+
void
display_interface(lldpctl_conn_t *conn, struct writer *w, int hidden,
lldpctl_atom_t *iface, lldpctl_atom_t *neighbor, int details, int protocol)
return 1;
}
+/**
+ * Show chassis.
+ *
+ * The environment will contain the following keys:
+ * - C{summary} if we want to show only a summary
+ * - C{detailed} for a detailed overview
+ */
+static int
+cmd_show_chassis(struct lldpctl_conn_t *conn, struct writer *w,
+ struct cmd_env *env, void *arg)
+{
+ log_debug("lldpctl", "show chassis data (%s)",
+ cmdenv_get(env, "summary")?"summary":
+ cmdenv_get(env, "detailed")?"detailed":
+ "normal");
+
+ display_local_chassis(conn, w, env,
+ cmdenv_get(env, "summary")?DISPLAY_BRIEF:
+ cmdenv_get(env, "detailed")?DISPLAY_DETAILS:
+ DISPLAY_NORMAL);
+
+ return 1;
+}
+
/**
* Show stats.
*
}
/**
- * Register common subcommands for `watch` and `show neighbors`.
+ * Register common subcommands for `watch` and `show neighbors` and `show chassis'
*/
void
-register_common_commands(struct cmd_node *root)
+register_common_commands(struct cmd_node *root, int neighbor)
{
- /* With hidden neighbors */
- commands_new(root,
- "hidden",
- "Include hidden neighbors",
- cmd_check_no_env, cmd_store_env_and_pop, "hidden");
-
/* With more details */
commands_new(root,
"details",
"With less details",
cmd_check_no_detailed_nor_summary, cmd_store_env_and_pop, "summary");
+ if (!neighbor) return;
+
+ /* With hidden neighbors */
+ commands_new(root,
+ "hidden",
+ "Include hidden neighbors",
+ cmd_check_no_env, cmd_store_env_and_pop, "hidden");
+
/* Some specific port */
cmd_restrict_ports(root);
"Show neighbors data",
NULL, NULL, NULL);
+ struct cmd_node *chassis = commands_new(
+ show,
+ "chassis",
+ "Show local chassis data",
+ NULL, NULL, NULL);
+
struct cmd_node *stats = commands_new(
show,
"statistics",
"Show neighbors data",
NULL, cmd_show_neighbors, NULL);
- register_common_commands(neighbors);
+ register_common_commands(neighbors, 1);
+
+ /* Chassis data */
+ commands_new(chassis,
+ NEWLINE,
+ "Show local chassis data",
+ NULL, cmd_show_chassis, NULL);
+
+ register_common_commands(chassis, 0);
/* Stats data */
commands_new(stats,
"Monitor neighbors change",
NULL, cmd_watch_neighbors, NULL);
- register_common_commands(watch);
+ register_common_commands(watch, 1);
}