return 1;
}
+/* FIXME: see about compressing this with other functions */
+static int
+cmd_chassis_mgmt_advertise(struct lldpctl_conn_t *conn, struct writer *w,
+ struct cmd_env *env, void *arg)
+{
+ lldpctl_atom_t *config = lldpctl_get_configuration(conn);
+ if (config == NULL) {
+ log_warnx("lldpctl", "unable to get configuration from lldpd. %s",
+ lldpctl_last_strerror(conn));
+ return 0;
+ }
+ if (lldpctl_atom_set_int(config,
+ lldpctl_k_config_chassis_mgmt_advertise,
+ arg?1:0) == NULL) {
+ log_warnx("lldpctl", "unable to %s management addresses advertisement: %s",
+ arg?"enable":"disable",
+ lldpctl_last_strerror(conn));
+ lldpctl_atom_dec_ref(config);
+ return 0;
+ }
+ log_info("lldpctl", "management addresses advertisement %s",
+ arg?"enabled":"disabled");
+ lldpctl_atom_dec_ref(config);
+ return 1;
+}
+
/**
* Register `configure lldp` commands.
*
NULL, NULL, NULL),
NEWLINE, "Don't enable chassis capabilities advertisement",
NULL, cmd_chassis_cap_advertise, NULL);
+
+ commands_new(
+ commands_new(configure_lldp,
+ "management-addresses-advertisements",
+ "Enable management addresses advertisement",
+ NULL, NULL, NULL),
+ NEWLINE, "Enable management addresses advertisement",
+ NULL, cmd_chassis_mgmt_advertise, "enable");
+ commands_new(
+ commands_new(unconfigure_lldp,
+ "management-addresses-advertisements",
+ "Don't enable management addresses advertisement",
+ NULL, NULL, NULL),
+ NEWLINE, "Don't enable management addresses advertisement",
+ NULL, cmd_chassis_mgmt_advertise, NULL);
}
cfg->g_config.c_cap_advertise = config->c_cap_advertise;
levent_update_now(cfg);
}
+ if (CHANGED(c_mgmt_advertise)) {
+ log_debug("rpc", "%s management addresses advertisement",
+ config->c_promisc?"enable":"disable");
+ cfg->g_config.c_mgmt_advertise = config->c_mgmt_advertise;
+ levent_update_now(cfg);
+ }
if (CHANGED(c_bond_slave_src_mac_type)) {
if (config->c_bond_slave_src_mac_type >
LLDP_BOND_SLAVE_SRC_MAC_TYPE_UNKNOWN &&
const char *pattern = cfg->g_config.c_mgmt_pattern;
lldpd_chassis_mgmt_cleanup(LOCAL_CHASSIS(cfg));
+ if (!cfg->g_config.c_mgmt_advertise)
+ return;
/* Is the pattern provided an actual IP address? */
if (pattern && strpbrk(pattern, "!,*?") == NULL) {
cfg->g_config.c_cap_advertise = 1;
lchassis->c_cap_available = LLDP_CAP_BRIDGE | LLDP_CAP_WLAN |
LLDP_CAP_ROUTER | LLDP_CAP_STATION;
+ cfg->g_config.c_mgmt_advertise = 1;
TAILQ_INIT(&lchassis->c_mgmt);
#ifdef ENABLE_LLDPMED
if (lldpmed > 0) {
return c->config->c_promisc;
case lldpctl_k_config_chassis_cap_advertise:
return c->config->c_cap_advertise;
+ case lldpctl_k_config_chassis_mgmt_advertise:
+ return c->config->c_mgmt_advertise;
#ifdef ENABLE_LLDPMED
case lldpctl_k_config_lldpmed_noinventory:
return c->config->c_noinventory;
case lldpctl_k_config_chassis_cap_advertise:
config.c_cap_advertise = c->config->c_cap_advertise = value;
break;
+ case lldpctl_k_config_chassis_mgmt_advertise:
+ config.c_mgmt_advertise = c->config->c_mgmt_advertise = value;
+ break;
#ifdef ENABLE_LLDPMED
case lldpctl_k_config_fast_start_enabled:
config.c_enable_fast_start = c->config->c_enable_fast_start = value;
lldpctl_k_config_ifdescr_update, /**< `(I,WO)` Enable or disable setting interface description */
lldpctl_k_config_iface_promisc, /**< `(I,WO)` Enable or disable promiscuous mode on interfaces */
lldpctl_k_config_chassis_cap_advertise, /**< `(I,WO)` Enable or disable chassis capabilities advertisement */
+ lldpctl_k_config_chassis_mgmt_advertise, /**< `(I,WO)` Enable or disable management addresses advertisement */
lldpctl_k_interface_name = 1000, /**< `(S)` The interface name. */
int c_set_ifdescr; /* Set interface description */
int c_promisc; /* Interfaces should be in promiscuous mode */
int c_cap_advertise; /* Chassis capabilities advertisement */
+ int c_mgmt_advertise; /* Management addresses advertisement */
#ifdef ENABLE_LLDPMED
int c_noinventory; /* Don't send inventory with LLDP-MED */