cmd_system_description(struct lldpctl_conn_t *conn, struct writer *w,
struct cmd_env *env, void *arg)
{
- log_debug("lldpctl", "set system description");
+ int platform = 0;
+ const char *value = cmdenv_get(env, "description");
+ if (!value) {
+ platform = 1;
+ value = cmdenv_get(env, "platform");
+ }
+ log_debug("lldpctl", "set %s description", platform?"platform":"system");
lldpctl_atom_t *config = lldpctl_get_configuration(conn);
if (config == NULL) {
log_warnx("lldpctl", "unable to get configuration from lldpd. %s",
return 0;
}
if (lldpctl_atom_set_str(config,
- lldpctl_k_config_description, cmdenv_get(env, "description")) == NULL) {
- log_warnx("lldpctl", "unable to set system description. %s",
+ platform?lldpctl_k_config_platform:lldpctl_k_config_description,
+ value) == NULL) {
+ log_warnx("lldpctl", "unable to set description. %s",
lldpctl_last_strerror(conn));
lldpctl_atom_dec_ref(config);
return 0;
}
- log_info("lldpctl", "system description set to new value %s",
- cmdenv_get(env, "description"));
+ log_info("lldpctl", "description set to new value %s",
+ value);
lldpctl_atom_dec_ref(config);
return 1;
}
commands_new(
commands_new(
commands_new(configure_system,
- "description", "Override system description",
+ "description", "Override chassis description",
NULL, NULL, NULL),
- NULL, "System description",
+ NULL, "Chassis description",
NULL, cmd_store_env_value, "description"),
- NEWLINE, "Override system description",
+ NEWLINE, "Override chassis description",
+ NULL, cmd_system_description, NULL);
+
+ commands_new(
+ commands_new(
+ commands_new(configure_system,
+ "platform", "Override platform description",
+ NULL, NULL, NULL),
+ NULL, "Platform description (CDP)",
+ NULL, cmd_store_env_value, "platform"),
+ NEWLINE, "Override platform description",
NULL, cmd_system_description, NULL);
commands_new(
kernel name, node name, kernel version, build date and architecture.
.Ed
+.Cd configure
+.Cd system platform Ar description
+.Bd -ragged -offset XXXXXX
+Override platform description with the provided value instead of using
+kernel name. This value is currently only used for CDP.
+.Ed
+
.Cd configure
.Cd system interface pattern Ar pattern
.Bd -ragged -offset XXXXXX
levent_update_now(cfg);
}
if (config->c_description) {
- log_debug("rpc", "change system description to %s", config->c_description);
+ log_debug("rpc", "change chassis description to %s", config->c_description);
free(cfg->g_config.c_description);
cfg->g_config.c_description = strdup(config->c_description);
levent_update_now(cfg);
}
+ if (config->c_platform) {
+ log_debug("rpc", "change platform description to %s", config->c_platform);
+ free(cfg->g_config.c_platform);
+ cfg->g_config.c_platform = strdup(config->c_platform);
+ levent_update_now(cfg);
+ }
lldpd_config_cleanup(config);
free(config);
(struct _lldpctl_atom_config_t *)atom;
struct lldpd_config config;
char *iface_pattern = NULL;
- char *system_description = NULL;
+ char *description = NULL;
int rc, len;
memset(&config, 0, sizeof(struct lldpd_config));
c->config->c_iface_pattern = strdup(iface_pattern);
break;
case lldpctl_k_config_description:
- system_description = _lldpctl_alloc_in_atom(atom, strlen(value) + 1);
- if (!system_description)
+ description = _lldpctl_alloc_in_atom(atom, strlen(value) + 1);
+ if (!description)
return NULL;
- memcpy(system_description, value, len);
- config.c_description = system_description;
+ memcpy(description, value, len);
+ config.c_description = description;
free(c->config->c_description);
- c->config->c_description = strdup(system_description);
+ c->config->c_description = strdup(description);
+ break;
+ case lldpctl_k_config_platform:
+ description = _lldpctl_alloc_in_atom(atom, strlen(value) + 1);
+ if (!description)
+ return NULL;
+ memcpy(description, value, len);
+ config.c_platform = description;
+ free(c->config->c_platform);
+ c->config->c_description = strdup(description);
break;
default:
SET_ERROR(atom->conn, LLDPCTL_ERR_NOT_EXIST);
lldpctl_k_config_iface_pattern, /**< `(S,WO)` Pattern of enabled interfaces */
lldpctl_k_config_cid_pattern, /**< `(S)` Interface pattern to choose the chassis ID */
lldpctl_k_config_description, /**< `(S,WO)` Chassis description overridden */
- lldpctl_k_config_platform, /**< `(S)` Platform description overridden (CDP) */
+ lldpctl_k_config_platform, /**< `(S,WO)` Platform description overridden (CDP) */
lldpctl_k_config_advertise_version, /**< `(I)` Advertise version */
lldpctl_k_config_lldpmed_noinventory, /**< `(I)` Disable LLDP-MED inventory */
lldpctl_k_config_paused, /**< `(I)` lldpd is paused */