+lldpd (0.7.8)
+ * Fixes:
+ + Don't hard-code default values for system name, system
+ description and port description. When the field is not present,
+ just don't display it.
+
lldpd (0.7.7)
* Features:
+ Use a locally administered MAC address or an arbitrary one
*var_len = chassis->c_id_len;
return (u_char *)chassis->c_id;
case LLDP_SNMP_SYSNAME:
+ if (!chassis->c_name || *chassis->c_name == '\0') break;
*var_len = strlen(chassis->c_name);
return (u_char *)chassis->c_name;
case LLDP_SNMP_SYSDESCR:
+ if (!chassis->c_descr || *chassis->c_descr == '\0') break;
*var_len = strlen(chassis->c_descr);
return (u_char *)chassis->c_descr;
case LLDP_SNMP_SYSCAP_SUP:
default:
break;
}
- return NULL;
+ return NULL;
}
static u_char*
agent_h_local_chassis(struct variable *vp, oid *name, size_t *length,
*var_len = port->p_id_len;
return (u_char *)port->p_id;
case LLDP_SNMP_PORTDESC:
+ if (!port->p_descr || *port->p_descr == '\0') break;
*var_len = strlen(port->p_descr);
return (u_char *)port->p_descr;
#ifdef ENABLE_DOT3
ASN_OCTET_STR,
(u_char *)hardware->h_ifname,
strnlen(hardware->h_ifname, IFNAMSIZ));
- if (rport->p_chassis->c_name) {
+ if (rport->p_chassis->c_name && *rport->p_chassis->c_name != '\0') {
snmp_varlist_add_variable(¬ification_vars,
sysname_oid, sysname_oid_len,
ASN_OCTET_STR,
/* Chassis ID */
if (!(
POKE_START_CDP_TLV(CDP_TLV_CHASSIS) &&
- POKE_BYTES(chassis->c_name, strlen(chassis->c_name)) &&
+ chassis->c_name?
+ POKE_BYTES(chassis->c_name, strlen(chassis->c_name)):
+ POKE_BYTES("", 0) &&
POKE_END_CDP_TLV))
goto toobig;
/* Port ID */
if (!(
POKE_START_CDP_TLV(CDP_TLV_PORT) &&
+ hardware->h_lport.p_descr?
POKE_BYTES(hardware->h_lport.p_descr,
- strlen(hardware->h_lport.p_descr)) &&
+ strlen(hardware->h_lport.p_descr)):
+ POKE_BYTES("", 0) &&
POKE_END_CDP_TLV))
goto toobig;
/* Software version */
if (!(
POKE_START_CDP_TLV(CDP_TLV_SOFTWARE) &&
- POKE_BYTES(chassis->c_descr, strlen(chassis->c_descr)) &&
+ chassis->c_descr?
+ POKE_BYTES(chassis->c_descr, strlen(chassis->c_descr)):
+ POKE_BYTES("", 0) &&
POKE_END_CDP_TLV))
goto toobig;
goto toobig;
/* System name */
- if (!(
- POKE_START_LLDP_TLV(LLDP_TLV_SYSTEM_NAME) &&
- POKE_BYTES(chassis->c_name, strlen(chassis->c_name)) &&
- POKE_END_LLDP_TLV))
- goto toobig;
+ if (chassis->c_name && *chassis->c_name != '\0') {
+ if (!(
+ POKE_START_LLDP_TLV(LLDP_TLV_SYSTEM_NAME) &&
+ POKE_BYTES(chassis->c_name, strlen(chassis->c_name)) &&
+ POKE_END_LLDP_TLV))
+ goto toobig;
+ }
/* System description (skip it if empty) */
if (chassis->c_descr && *chassis->c_descr != '\0') {
}
/* Port description */
- if (!(
- POKE_START_LLDP_TLV(LLDP_TLV_PORT_DESCR) &&
- POKE_BYTES(port->p_descr, strlen(port->p_descr)) &&
- POKE_END_LLDP_TLV))
- goto toobig;
+ if (port->p_descr && *port->p_descr != '\0') {
+ if (!(
+ POKE_START_LLDP_TLV(LLDP_TLV_PORT_DESCR) &&
+ POKE_BYTES(port->p_descr, strlen(port->p_descr)) &&
+ POKE_END_LLDP_TLV))
+ goto toobig;
+ }
#ifdef ENABLE_DOT1
/* Port VLAN ID */
hardware->h_ifname);
goto malformed;
}
-#define NOTRECEIVED "Not received"
- if (chassis->c_name == NULL) {
- if ((chassis->c_name = (char *)calloc(1, strlen(NOTRECEIVED) + 1)) == NULL) {
- log_warnx("lldp", "unable to allocate null chassis name");
- goto malformed;
- }
- memcpy(chassis->c_name, NOTRECEIVED, strlen(NOTRECEIVED));
- }
- if (chassis->c_descr == NULL) {
- if ((chassis->c_descr = (char *)calloc(1, strlen(NOTRECEIVED) + 1)) == NULL) {
- log_warnx("lldp", "unable to allocate null chassis description");
- goto malformed;
- }
- memcpy(chassis->c_descr, NOTRECEIVED, strlen(NOTRECEIVED));
- }
- if (port->p_descr == NULL) {
- if ((port->p_descr = (char *)calloc(1, strlen(NOTRECEIVED) + 1)) == NULL) {
- log_warnx("lldp", "unable to allocate null port description");
- goto malformed;
- }
- memcpy(port->p_descr, NOTRECEIVED, strlen(NOTRECEIVED));
- }
*newchassis = chassis;
*newport = port;
return 1;
if (neighbors == 0)
priv_iface_description(hardware->h_ifname,
"");
- else if (neighbors == 1 && neighbor) {
+ else if (neighbors == 1 && neighbor && *neighbor != '\0') {
if (asprintf(&description, "%s",
neighbor) != -1) {
priv_iface_description(hardware->h_ifname, description);
neighbors--;
if (neighbors == 0)
setproctitle("no neighbor");
- else if (neighbors == 1 && neighbor)
+ else if (neighbors == 1 && neighbor && *neighbor != '\0')
setproctitle("connected to %s", neighbor);
else
setproctitle("%d neighbor%s", neighbors,
/* Handle special cases. */
size = mi->size;
if (!strcmp(mi->name, "null string"))
+ /* We know we can't be called with NULL */
size = strlen((char *)unserialized) + 1;
else if (!strcmp(mi->name, "fixed string"))
size = osize;
ck_assert_int_eq(nport->p_id_len, ETHER_ADDR_LEN);
fail_unless(memcmp(mac2, nport->p_id, ETHER_ADDR_LEN) == 0);
ck_assert_int_eq(nchassis->c_ttl, 120);
- ck_assert_str_eq(nchassis->c_name, "Not received");
- ck_assert_str_eq(nchassis->c_descr, "Not received");
- ck_assert_str_eq(nport->p_descr, "Not received");
+ ck_assert_int_eq(nchassis->c_name, NULL);
+ ck_assert_int_eq(nchassis->c_descr, NULL);
+ ck_assert_int_eq(nport->p_descr, NULL);
}
END_TEST