#define LLDP_SNMP_LOCAL_DOT3_AGG_STATUS 9
#define LLDP_SNMP_LOCAL_DOT3_AGG_ID 10
#define LLDP_SNMP_LOCAL_DOT3_MFS 11
+#define LLDP_SNMP_LOCAL_DOT1_PVID 12
/* Remote ports */
#define LLDP_SNMP_REMOTE_CIDSUBTYPE 1
#define LLDP_SNMP_REMOTE_CID 2
#define LLDP_SNMP_REMOTE_DOT3_AGG_STATUS 14
#define LLDP_SNMP_REMOTE_DOT3_AGG_ID 15
#define LLDP_SNMP_REMOTE_DOT3_MFS 16
+#define LLDP_SNMP_REMOTE_DOT1_PVID 17
/* Local vlans */
#define LLDP_SNMP_LOCAL_DOT1_VLANNAME 1
/* Remote vlans */
case LLDP_SNMP_LOCAL_DOT3_MFS:
long_ret = hardware->h_lport.p_mfs;
return (u_char *)&long_ret;
+#endif
+#ifdef ENABLE_DOT1
+ case LLDP_SNMP_LOCAL_DOT1_PVID:
+ long_ret = hardware->h_lport.p_pvid; /* Should always be 0 */
+ return (u_char *)&long_ret;
#endif
default:
break;
case LLDP_SNMP_REMOTE_DOT3_MFS:
long_ret = hardware->h_rport->p_mfs;
return (u_char *)&long_ret;
+#endif
+#ifdef ENABLE_DOT1
+ case LLDP_SNMP_REMOTE_DOT1_PVID:
+ long_ret = hardware->h_rport->p_pvid;
+ return (u_char *)&long_ret;
#endif
default:
break;
{1, 5, 4623, 1, 2, 3, 1, 2}},
{LLDP_SNMP_LOCAL_DOT3_MFS, ASN_INTEGER, RONLY, agent_h_local_port, 8,
{1, 5, 4623, 1, 2, 4, 1, 1}},
+#endif
+#ifdef ENABLE_DOT1
+ {LLDP_SNMP_LOCAL_DOT1_PVID, ASN_INTEGER, RONLY, agent_h_local_port, 8,
+ {1, 5, 32962, 1, 2, 1, 1, 1}},
#endif
/* Remote ports */
{LLDP_SNMP_REMOTE_CIDSUBTYPE, ASN_INTEGER, RONLY, agent_h_remote_port, 5, {1, 4, 1, 1, 4}},
{1, 5, 4623, 1, 3, 4, 1, 1}},
#endif
#ifdef ENABLE_DOT1
+ {LLDP_SNMP_REMOTE_DOT1_PVID, ASN_INTEGER, RONLY, agent_h_remote_port, 8,
+ {1, 5, 32962, 1, 3, 1, 1, 1}},
/* Local vlans */
{LLDP_SNMP_LOCAL_DOT1_VLANNAME, ASN_OCTET_STR, RONLY, agent_h_local_vlan, 8,
{1, 5, 32962, 1, 2, 3, 1, 2}},
int size, type, subtype; /* TLV header */
char *b;
int gotend = 0;
+ struct lldpd_vlan *vlan;
+ int vlan_len;
if ((chassis = calloc(1, sizeof(struct lldpd_chassis))) == NULL) {
LLOG_WARN("failed to allocate remote chassis");
hardware->h_rx_unrecognized_cnt++;
#else
/* Dot1 */
- if ((*(u_int8_t*)(frame + f + 3)) ==
- LLDP_TLV_DOT1_VLANNAME) {
- struct lldpd_vlan *vlan;
- int vlan_len;
-
+ switch (*(u_int8_t*)(frame + f + 3)) {
+ case LLDP_TLV_DOT1_VLANNAME:
if ((size < 7) ||
(size < 7 + *(u_int8_t*)(frame + f + 6))) {
LLOG_WARNX("too short vlan tlv "
TAILQ_INSERT_TAIL(&port->p_vlans,
vlan, v_entries);
f += size - 7;
- } else {
+ break;
+ case LLDP_TLV_DOT1_PVID:
+ if (size < 6) {
+ LLOG_WARNX("too short pvid tlv "
+ "received on %s",
+ hardware->h_ifname);
+ goto malformed;
+ }
+ port->p_pvid =
+ ntohs(*(u_int16_t*)(frame + f + 4));
+ f += size;
+ break;
+ default:
/* Unknown Dot1 TLV, ignore it */
f += size;
hardware->h_rx_unrecognized_cnt++;