#define LLDP_SNMP_MED_LOCAL_MODEL 7
#define LLDP_SNMP_MED_LOCAL_ASSET 8
/* LLDP-MED remote */
-#define LLDP_SNMP_MED_REMOTE_CAP 1
-#define LLDP_SNMP_MED_REMOTE_CLASS 2
-#define LLDP_SNMP_MED_REMOTE_HW 3
-#define LLDP_SNMP_MED_REMOTE_FW 4
-#define LLDP_SNMP_MED_REMOTE_SW 5
-#define LLDP_SNMP_MED_REMOTE_SN 6
-#define LLDP_SNMP_MED_REMOTE_MANUF 7
-#define LLDP_SNMP_MED_REMOTE_MODEL 8
-#define LLDP_SNMP_MED_REMOTE_ASSET 9
+#define LLDP_SNMP_MED_REMOTE_CAP_AVAILABLE 1
+#define LLDP_SNMP_MED_REMOTE_CAP_ENABLED 2
+#define LLDP_SNMP_MED_REMOTE_CLASS 3
+#define LLDP_SNMP_MED_REMOTE_HW 4
+#define LLDP_SNMP_MED_REMOTE_FW 5
+#define LLDP_SNMP_MED_REMOTE_SW 6
+#define LLDP_SNMP_MED_REMOTE_SN 7
+#define LLDP_SNMP_MED_REMOTE_MANUF 8
+#define LLDP_SNMP_MED_REMOTE_MODEL 9
+#define LLDP_SNMP_MED_REMOTE_ASSET 10
static u_char*
agent_h_scalars(struct variable *vp, oid *name, size_t *length,
if (header_generic(vp, name, length, exact, var_len, write_method))
return NULL;
- if (!scfg->g_lchassis.c_med_cap)
+ if (!scfg->g_lchassis.c_med_cap_available)
return NULL;
switch (vp->magic) {
static uint8_t bit;
static unsigned long long_ret;
- if (!scfg->g_lchassis.c_med_cap)
+ if (!scfg->g_lchassis.c_med_cap_available)
return NULL;
if ((hardware = header_tprindexed_table(vp, name, length,
exact, var_len, write_method, 0)) == NULL)
return NULL;
- if (!hardware->h_rchassis->c_med_cap)
+ if (!hardware->h_rchassis->c_med_cap_available)
return NULL;
switch (vp->magic) {
if (long_ret > 0)
return (u_char *)&long_ret;
break;
- case LLDP_SNMP_MED_REMOTE_CAP:
+ case LLDP_SNMP_MED_REMOTE_CAP_AVAILABLE:
*var_len = 1;
- bit = swap_bits(hardware->h_rchassis->c_med_cap);
+ bit = swap_bits(hardware->h_rchassis->c_med_cap_available);
+ return (u_char *)&bit;
+ case LLDP_SNMP_MED_REMOTE_CAP_ENABLED:
+ *var_len = 1;
+ bit = swap_bits(hardware->h_rchassis->c_med_cap_enabled);
return (u_char *)&bit;
#define LLDP_H_REMOTE_MED(magic, variable) \
case magic: \
{LLDP_SNMP_MED_LOCAL_ASSET, ASN_OCTET_STR, RONLY, agent_h_local_med, 6,
{1, 5, 4795, 1, 2, 8}},
/* LLDP-MED remote */
- {LLDP_SNMP_MED_REMOTE_CAP, ASN_OCTET_STR, RONLY, agent_h_remote_med, 8,
+ {LLDP_SNMP_MED_REMOTE_CAP_AVAILABLE, ASN_OCTET_STR, RONLY, agent_h_remote_med, 8,
{1, 5, 4795, 1, 3, 1, 1, 1}},
- {LLDP_SNMP_MED_REMOTE_CAP, ASN_OCTET_STR, RONLY, agent_h_remote_med, 8,
+ {LLDP_SNMP_MED_REMOTE_CAP_ENABLED, ASN_OCTET_STR, RONLY, agent_h_remote_med, 8,
{1, 5, 4795, 1, 3, 1, 1, 2}},
{LLDP_SNMP_MED_REMOTE_CLASS, ASN_INTEGER, RONLY, agent_h_remote_med, 8,
{1, 5, 4795, 1, 3, 1, 1, 3}},
#endif
#ifdef ENABLE_LLDPMED
- if (global->g_lchassis.c_med_cap) {
+ if (global->g_lchassis.c_med_cap_enabled) {
/* LLDP-MED cap */
memset(&medcap, 0, sizeof(medcap));
medcap.tlv_head.type_len = LLDP_TLV_HEAD(LLDP_TLV_ORG,
sizeof(medcap.tlv_cap) + sizeof(medcap.tlv_type));
memcpy(medcap.tlv_org_id, med, sizeof(medcap.tlv_org_id));
medcap.tlv_org_subtype = LLDP_TLV_MED_CAP;
- medcap.tlv_cap = htons(global->g_lchassis.c_med_cap);
+ medcap.tlv_cap = htons(global->g_lchassis.c_med_cap_available);
medcap.tlv_type = global->g_lchassis.c_med_type;
IOV_NEW;
iov[c].iov_base = &medcap;
iov[c].iov_len = len; \
}
- if (!global->g_med_noinventory) {
+ if (global->g_lchassis.c_med_cap_enabled & LLDPMED_CAP_IV) {
LLDP_INVENTORY(global->g_lchassis.c_med_hw,
medhw, LLDP_TLV_MED_IV_HW);
LLDP_INVENTORY(global->g_lchassis.c_med_fw,
hardware->h_ifname);
goto malformed;
}
- chassis->c_med_cap =
+ chassis->c_med_cap_available =
ntohs(*(u_int16_t*)(frame + f));
f += 2;
chassis->c_med_type =
*(u_int8_t*)(frame + f);
f += 1;
+ chassis->c_med_cap_enabled |=
+ LLDPMED_CAP_CAP;
break;
case LLDP_TLV_MED_POLICY:
f += 4;
chassis->c_med_policy =
ntohl(*(u_int32_t*)(frame + f));
f += 4;
+ chassis->c_med_cap_enabled |=
+ LLDPMED_CAP_POLICY;
break;
case LLDP_TLV_MED_LOCATION:
f += 4;
size - 5);
chassis->c_med_locdata = b;
f += size - 5;
+ chassis->c_med_cap_enabled |=
+ LLDPMED_CAP_LOCATION;
break;
case LLDP_TLV_MED_MDI:
f += 4;
chassis->c_med_powval =
ntohs(*(u_int16_t*)(frame + f));
f += 2;
+ chassis->c_med_cap_enabled |=
+ LLDPMED_CAP_MDI1 | LLDPMED_CAP_MDI2;
break;
case LLDP_TLV_MED_IV_HW:
case LLDP_TLV_MED_IV_SW:
break;
}
f += size - 4;
+ chassis->c_med_cap_enabled |=
+ LLDPMED_CAP_IV;
break;
default:
/* Unknown LLDP MED, ignore it */
break;
}
printf("\n LLDP-MED Capabilities:");
- if (chassis->c_med_cap & LLDPMED_CAP_CAP)
+ if (chassis->c_med_cap_enabled & LLDPMED_CAP_CAP)
printf(" Capabilities");
- if (chassis->c_med_cap & LLDPMED_CAP_POLICY)
+ if (chassis->c_med_cap_enabled & LLDPMED_CAP_POLICY)
printf(" Policy");
- if (chassis->c_med_cap & LLDPMED_CAP_LOCATION)
+ if (chassis->c_med_cap_enabled & LLDPMED_CAP_LOCATION)
printf(" Location");
- if (chassis->c_med_cap & (LLDPMED_CAP_MDI1 | LLDPMED_CAP_MDI2))
+ if (chassis->c_med_cap_enabled & (LLDPMED_CAP_MDI1 | LLDPMED_CAP_MDI2))
printf(" MDI");
- if (chassis->c_med_cap & LLDPMED_CAP_IV)
+ if (chassis->c_med_cap_enabled & LLDPMED_CAP_IV)
printf(" Inventory");
printf("\n");
if (chassis->c_med_policy) {
printf(", Primary Power Source");
} else if((chassis->c_med_powtype & 0x30) == 0x20) {
printf(", Backup Power Source / Power Conservation Mode");
- } else {
- printf("");
}
} else if((chassis->c_med_powtype & 0xC0) == 0x40) {
printf("PD Device");
}
#endif
#ifdef ENABLE_LLDPMED
- if (chassis.c_med_cap) {
+ if (chassis.c_med_cap_enabled) {
printf("\n");
display_med(&chassis);
}