}
tag_datatag(w, "descr", "SysDescr",
lldpctl_atom_get_str(chassis, lldpctl_k_chassis_descr));
- if (details && lldpctl_atom_get_int(chassis, lldpctl_k_chassis_ttl) > 0)
- tag_datatag(w, "ttl", "TTL",
- lldpctl_atom_get_str(chassis, lldpctl_k_chassis_ttl));
/* Management addresses */
mgmts = lldpctl_atom_get(chassis, lldpctl_k_chassis_mgmt);
long_ret = scfg->g_config.c_tx_interval;
return (u_char *)&long_ret;
case LLDP_SNMP_TXMULTIPLIER:
- long_ret = LOCAL_CHASSIS(scfg)->c_ttl / scfg->g_config.c_tx_interval;
+ long_ret = scfg->g_config.c_ttl / scfg->g_config.c_tx_interval;
return (u_char *)&long_ret;
case LLDP_SNMP_REINITDELAY:
long_ret = 1;
log_debug("rpc", "client change transmit interval to %d",
config->c_tx_interval);
cfg->g_config.c_tx_interval = config->c_tx_interval;
- LOCAL_CHASSIS(cfg)->c_ttl = cfg->g_config.c_tx_interval *
+ cfg->g_config.c_ttl = cfg->g_config.c_tx_interval *
cfg->g_config.c_tx_hold;
}
}
log_debug("rpc", "client change transmit hold to %d",
config->c_tx_hold);
cfg->g_config.c_tx_hold = config->c_tx_hold;
- LOCAL_CHASSIS(cfg)->c_ttl = cfg->g_config.c_tx_interval *
+ cfg->g_config.c_ttl = cfg->g_config.c_tx_interval *
cfg->g_config.c_tx_hold;
}
if (CHANGED(c_lldp_portid_type) &&
}
/* Compute the next TTL event */
- struct timeval tv = { LOCAL_CHASSIS(cfg)->c_ttl, 0 };
+ struct timeval tv = { cfg->g_config.c_ttl, 0 };
time_t now = time(NULL);
time_t next;
struct lldpd_hardware *hardware;
cfg->g_config.c_receiveonly = receiveonly;
cfg->g_config.c_tx_interval = LLDPD_TX_INTERVAL;
cfg->g_config.c_tx_hold = LLDPD_TX_HOLD;
+ cfg->g_config.c_ttl = cfg->g_config.c_tx_interval * cfg->g_config.c_tx_hold;
cfg->g_config.c_max_neighbors = LLDPD_MAX_NEIGHBORS;
#ifdef ENABLE_LLDPMED
cfg->g_config.c_enable_fast_start = enable_fast_start;
cfg->g_config.c_noinventory = 1;
#endif
- /* Set TTL */
- lchassis->c_ttl = cfg->g_config.c_tx_interval * cfg->g_config.c_tx_hold;
-
log_debug("main", "initialize protocols");
cfg->g_protocols = protos;
for (i=0; protos[i].mode != 0; i++) {
if (!(
POKE_SAVE(pos_cdp) &&
POKE_UINT8((version == 0)?1:version) &&
- POKE_UINT8(chassis->c_ttl) &&
+ POKE_UINT8(global?global->g_config.c_ttl:180) &&
POKE_SAVE(pos_checksum) && /* Save checksum position */
POKE_UINT16(0)))
goto toobig;
/* Time to live */
if (!(
POKE_START_LLDP_TLV(LLDP_TLV_TTL) &&
- POKE_UINT16(shutdown?0:chassis->c_ttl) &&
+ POKE_UINT16(shutdown?0:(global?global->g_config.c_ttl:180)) &&
POKE_END_LLDP_TLV))
goto toobig;
return chassis->c_cap_available;
case lldpctl_k_chassis_cap_enabled:
return chassis->c_cap_enabled;
- case lldpctl_k_chassis_ttl:
- return chassis->c_ttl;
#ifdef ENABLE_LLDPMED
case lldpctl_k_chassis_med_type:
return chassis->c_med_type;
lldpctl_k_chassis_cap_available, /**< `(I)` Available capabalities (see `LLDP_CAP_*`) */
lldpctl_k_chassis_cap_enabled, /**< `(I)` Enabled capabilities (see `LLDP_CAP_*`) */
lldpctl_k_chassis_mgmt, /**< `(AL)` List of management addresses */
- lldpctl_k_chassis_ttl, /**< `(I)` The chassis TTL */
+ lldpctl_k_chassis_ttl, /**< Deprecated */
lldpctl_k_chassis_med_type = 1900, /**< `(IS)` Chassis MED type. See `LLDP_MED_CLASS_*` */
lldpctl_k_chassis_med_cap, /**< `(I)` Available MED capabilitied. See `LLDP_MED_CAP_*` */
u_int16_t c_cap_available;
u_int16_t c_cap_enabled;
- u_int16_t c_ttl; /* TTL for local chassis */
-
TAILQ_HEAD(, lldpd_mgmt) c_mgmt;
#ifdef ENABLE_LLDPMED
struct lldpd_config {
int c_paused; /* lldpd is paused */
int c_tx_interval; /* Transmit interval */
+ int c_ttl; /* TTL */
int c_smart; /* Bitmask for smart configuration (see SMART_*) */
int c_receiveonly; /* Receive only mode */
int c_max_neighbors; /* Maximum number of neighbors (per protocol) */
struct lldpd_mgmt *mgmt;
struct lldpd cfg = {
.g_config = {
+ .c_ttl = 180,
.c_platform = "Linux"
}
};
struct lldpd_mgmt *mgmt2;
struct lldpd cfg = {
.g_config = {
+ .c_ttl = 180,
.c_platform = "Linux"
}
};
struct lldpd test_cfg = {
.g_config = {
.c_tx_interval = 30,
+ .c_ttl = 60,
.c_smart = 0
}
};
.c_descr = "First chassis",
.c_cap_available = LLDP_CAP_BRIDGE | LLDP_CAP_WLAN | LLDP_CAP_ROUTER,
.c_cap_enabled = LLDP_CAP_ROUTER,
- .c_ttl = 60,
#ifdef ENABLE_LLDPMED
.c_med_cap_available = LLDP_MED_CAP_CAP | LLDP_MED_CAP_IV | \
LLDP_MED_CAP_LOCATION | LLDP_MED_CAP_POLICY | \
.c_descr = "Second chassis",
.c_cap_available = LLDP_CAP_ROUTER,
.c_cap_enabled = LLDP_CAP_ROUTER,
- .c_ttl = 60,
#ifdef ENABLE_LLDPMED
.c_med_hw = "Hardware 2",
/* We skip c_med_fw */
/* Prepare chassis */
memset(&chassis, 0, sizeof(struct lldpd_chassis));
hardware.h_lport.p_chassis = &chassis;
- chassis.c_ttl = 180;
}
void
printf(" Description: %s\n", nchassis->c_descr?nchassis->c_descr:"(null)");
printf(" Cap available: %" PRIu16 "\n", nchassis->c_cap_available);
printf(" Cap enabled: %" PRIu16 "\n", nchassis->c_cap_enabled);
- printf(" TTL: %" PRIu16 "\n", nchassis->c_ttl);
struct lldpd_mgmt *mgmt;
TAILQ_FOREACH(mgmt, &nchassis->c_mgmt, m_entries) {
char ipaddress[INET6_ADDRSTRLEN + 1];