bit = swap_bits(port->p_med_cap_enabled);
return (u_char *)&bit;
case LLDP_SNMP_MED_REMOTE_POE_DEVICETYPE:
- switch (port->p_med_pow_devicetype) {
+ switch (port->p_med_power.devicetype) {
case LLDPMED_POW_TYPE_PSE:
long_ret = 2; break;
case LLDPMED_POW_TYPE_PD:
case LLDP_SNMP_MED_REMOTE_POE_PSE_POWERVAL:
case LLDP_SNMP_MED_REMOTE_POE_PD_POWERVAL:
if (((vp->magic == LLDP_SNMP_MED_REMOTE_POE_PSE_POWERVAL) &&
- (port->p_med_pow_devicetype ==
+ (port->p_med_power.devicetype ==
LLDPMED_POW_TYPE_PSE)) ||
((vp->magic == LLDP_SNMP_MED_REMOTE_POE_PD_POWERVAL) &&
- (port->p_med_pow_devicetype ==
+ (port->p_med_power.devicetype ==
LLDPMED_POW_TYPE_PD))) {
- long_ret = port->p_med_pow_val;
+ long_ret = port->p_med_power.val;
return (u_char *)&long_ret;
}
break;
case LLDP_SNMP_MED_REMOTE_POE_PSE_POWERSOURCE:
- if (port->p_med_pow_devicetype ==
+ if (port->p_med_power.devicetype ==
LLDPMED_POW_TYPE_PSE) {
- switch (port->p_med_pow_source) {
+ switch (port->p_med_power.source) {
case LLDPMED_POW_SOURCE_PRIMARY:
long_ret = 2; break;
case LLDPMED_POW_SOURCE_BACKUP:
}
break;
case LLDP_SNMP_MED_REMOTE_POE_PD_POWERSOURCE:
- if (port->p_med_pow_devicetype ==
+ if (port->p_med_power.devicetype ==
LLDPMED_POW_TYPE_PD) {
- switch (port->p_med_pow_source) {
+ switch (port->p_med_power.source) {
case LLDPMED_POW_SOURCE_PSE:
long_ret = 2; break;
case LLDPMED_POW_SOURCE_LOCAL:
case LLDP_SNMP_MED_REMOTE_POE_PSE_POWERPRIORITY:
case LLDP_SNMP_MED_REMOTE_POE_PD_POWERPRIORITY:
if (((vp->magic == LLDP_SNMP_MED_REMOTE_POE_PSE_POWERPRIORITY) &&
- (port->p_med_pow_devicetype ==
+ (port->p_med_power.devicetype ==
LLDPMED_POW_TYPE_PSE)) ||
((vp->magic == LLDP_SNMP_MED_REMOTE_POE_PD_POWERPRIORITY) &&
- (port->p_med_pow_devicetype ==
+ (port->p_med_power.devicetype ==
LLDPMED_POW_TYPE_PD))) {
- switch (port->p_med_pow_priority) {
+ switch (port->p_med_power.priority) {
case LLDPMED_POW_PRIO_CRITICAL:
long_ret = 2; break;
case LLDPMED_POW_PRIO_HIGH:
tag_end(w);
}
}
- if (port->p_med_pow_devicetype) {
+ if (port->p_med_power.devicetype) {
tag_start(w, "poe", "Extended Power-over-Ethernet");
tag_start(w, "device-type", "Power Type & Source");
- tag_data(w, map_lookup(port_med_pow_devicetype_map, port->p_med_pow_devicetype));
+ tag_data(w, map_lookup(port_med_pow_devicetype_map, port->p_med_power.devicetype));
tag_end(w);
tag_start(w, "source", "Power Source");
- tag_data(w, map_lookup(port_med_pow_source_map, port->p_med_pow_source));
+ tag_data(w, map_lookup(port_med_pow_source_map, port->p_med_power.source));
tag_end(w);
tag_start(w, "priority", "Power Priority");
- tag_data(w, map_lookup(port_med_pow_priority_map, port->p_med_pow_priority));
+ tag_data(w, map_lookup(port_med_pow_priority_map, port->p_med_power.priority));
tag_end(w);
- if(port->p_med_pow_val < 1024) {
+ if(port->p_med_power.val < 1024) {
tag_start(w, "power", "Power Value");
- tag_data(w, u2str(port->p_med_pow_val * 100));
+ tag_data(w, u2str(port->p_med_power.val * 100));
tag_end(w);
}
tag_end(w);
power = PEEK_UINT8;
switch (power & 0xC0) {
case 0x0:
- port->p_med_pow_devicetype = LLDPMED_POW_TYPE_PSE;
+ port->p_med_power.devicetype = LLDPMED_POW_TYPE_PSE;
port->p_med_cap_enabled |=
LLDPMED_CAP_MDI_PSE;
switch (power & 0x30) {
case 0x0:
- port->p_med_pow_source =
+ port->p_med_power.source =
LLDPMED_POW_SOURCE_UNKNOWN;
break;
case 0x10:
- port->p_med_pow_source =
+ port->p_med_power.source =
LLDPMED_POW_SOURCE_PRIMARY;
break;
case 0x20:
- port->p_med_pow_source =
+ port->p_med_power.source =
LLDPMED_POW_SOURCE_BACKUP;
break;
default:
- port->p_med_pow_source =
+ port->p_med_power.source =
LLDPMED_POW_SOURCE_RESERVED;
}
break;
case 0x40:
- port->p_med_pow_devicetype = LLDPMED_POW_TYPE_PD;
+ port->p_med_power.devicetype = LLDPMED_POW_TYPE_PD;
port->p_med_cap_enabled |=
LLDPMED_CAP_MDI_PD;
switch (power & 0x30) {
case 0x0:
- port->p_med_pow_source =
+ port->p_med_power.source =
LLDPMED_POW_SOURCE_UNKNOWN;
break;
case 0x10:
- port->p_med_pow_source =
+ port->p_med_power.source =
LLDPMED_POW_SOURCE_PSE;
break;
case 0x20:
- port->p_med_pow_source =
+ port->p_med_power.source =
LLDPMED_POW_SOURCE_LOCAL;
break;
default:
- port->p_med_pow_source =
+ port->p_med_power.source =
LLDPMED_POW_SOURCE_BOTH;
}
break;
default:
- port->p_med_pow_devicetype =
+ port->p_med_power.devicetype =
LLDPMED_POW_TYPE_RESERVED;
}
switch (power & 0x0F) {
case 0x0:
- port->p_med_pow_priority =
+ port->p_med_power.priority =
LLDPMED_POW_PRIO_UNKNOWN;
break;
case 0x1:
- port->p_med_pow_priority =
+ port->p_med_power.priority =
LLDPMED_POW_PRIO_CRITICAL;
break;
case 0x2:
- port->p_med_pow_priority =
+ port->p_med_power.priority =
LLDPMED_POW_PRIO_HIGH;
break;
case 0x3:
- port->p_med_pow_priority =
+ port->p_med_power.priority =
LLDPMED_POW_PRIO_LOW;
break;
default:
- port->p_med_pow_priority =
+ port->p_med_power.priority =
LLDPMED_POW_PRIO_UNKNOWN;
}
- port->p_med_pow_val = PEEK_UINT16;
+ port->p_med_power.val = PEEK_UINT16;
break;
case LLDP_TLV_MED_IV_HW:
case LLDP_TLV_MED_IV_SW:
char *data;
int data_len;
};
+
+#define STRUCT_LLDPD_MED_POWER "(bbbw)"
+struct lldpd_med_power {
+ u_int8_t devicetype; /* PD or PSE */
+ u_int8_t source;
+ u_int8_t priority;
+ u_int16_t val;
+};
#endif
struct lldpd_chassis {
STRUCT_LLDPD_MED_LOC \
STRUCT_LLDPD_MED_LOC \
STRUCT_LLDPD_MED_LOC \
- "bbbw"
+ STRUCT_LLDPD_MED_POWER
u_int16_t p_med_cap_enabled;
struct lldpd_med_policy p_med_policy[LLDPMED_APPTYPE_LAST];
struct lldpd_med_loc p_med_location[LLDPMED_LOCFORMAT_LAST];
- u_int8_t p_med_pow_devicetype; /* PD or PSE */
- u_int8_t p_med_pow_source;
- u_int8_t p_med_pow_priority;
- u_int16_t p_med_pow_val;
+ struct lldpd_med_power p_med_power;
#else
#define STRUCT_LLDPD_PORT_MED ""
#endif
6;
hardware.h_lport.p_med_policy[LLDPMED_APPTYPE_SOFTPHONEVOICE-1].dscp =
46;
- hardware.h_lport.p_med_pow_devicetype = LLDPMED_POW_TYPE_PSE;
- hardware.h_lport.p_med_pow_source = LLDPMED_POW_SOURCE_PRIMARY;
- hardware.h_lport.p_med_pow_priority = LLDPMED_POW_PRIO_HIGH;
- hardware.h_lport.p_med_pow_val = 65;
+ hardware.h_lport.p_med_power.devicetype = LLDPMED_POW_TYPE_PSE;
+ hardware.h_lport.p_med_power.source = LLDPMED_POW_SOURCE_PRIMARY;
+ hardware.h_lport.p_med_power.priority = LLDPMED_POW_PRIO_HIGH;
+ hardware.h_lport.p_med_power.val = 65;
/* Build packet */
n = lldp_send(NULL, &hardware);
LLDPMED_LOCFORMAT_CIVIC);
ck_assert_int_eq(nport->p_med_location[LLDPMED_LOCFORMAT_COORD-1].format,
0);
- ck_assert_int_eq(nport->p_med_pow_val, 65);
- ck_assert_int_eq(nport->p_med_pow_source, LLDPMED_POW_SOURCE_UNKNOWN);
- ck_assert_int_eq(nport->p_med_pow_priority, LLDPMED_POW_PRIO_LOW);
- ck_assert_int_eq(nport->p_med_pow_devicetype, LLDPMED_POW_TYPE_PSE);
+ ck_assert_int_eq(nport->p_med_power.val, 65);
+ ck_assert_int_eq(nport->p_med_power.source, LLDPMED_POW_SOURCE_UNKNOWN);
+ ck_assert_int_eq(nport->p_med_power.priority, LLDPMED_POW_PRIO_LOW);
+ ck_assert_int_eq(nport->p_med_power.devicetype, LLDPMED_POW_TYPE_PSE);
}
END_TEST
#endif