+ Add support for 802.3BT (no SNMP support).
* Fix:
+ Don't clear chassis TLV on shutdown LLDPDU.
+ + Don't require/display powerpairs for Dot3 power when device type
+ is PD.
lldpd (1.0.4)
* Changes:
/* Powerpairs */
(what = "power pairs", lldpctl_atom_set_str(dot3_power,
lldpctl_k_dot3_power_pairs,
- cmdenv_get(env, "powerpairs"))) == NULL ||
+ cmdenv_get(env, "powerpairs")?cmdenv_get(env, "powerpairs"):"unknown")) == NULL ||
/* Class */
(what = "power class", cmdenv_get(env, "class")?
lldpctl_atom_set_str(dot3_power,
static int
cmd_check_env_power(struct cmd_env *env, void *nothing)
{
- /* We need type and powerpair but if we have typeat, we also request
- * source, priority, requested and allocated. */
+ /* We need type. If we type is PSE, we need powerpairs. If we have
+ * typeat, we also request source, priority, requested and allocated. */
if (!cmdenv_get(env, "device-type")) return 0;
- if (!cmdenv_get(env, "powerpairs")) return 0;
+ if (!strcmp(cmdenv_get(env, "device-type"), "pse") &&
+ !cmdenv_get(env, "powerpairs")) return 0;
if (cmdenv_get(env, "typeat")) {
return (!!cmdenv_get(env, "source") &&
!!cmdenv_get(env, "priority") &&
/* Power pairs */
struct cmd_node *powerpairs = commands_new(
configure_dot3power,
- "powerpairs", "Which pairs are currently used for power (mandatory)",
- cmd_check_type_but_no, NULL, "powerpairs");
+ "powerpairs", "Which pairs are currently used for power",
+ cmd_check_pse, NULL, "powerpairs");
for (lldpctl_map_t *pp_map =
lldpctl_key_get_map(lldpctl_k_dot3_power_pairs);
pp_map->string;
tag_data(w, lldpctl_atom_get_str(dot3_power,
lldpctl_k_dot3_power_devicetype));;
tag_end(w);
- tag_start(w, "pairs", "Power pairs");
- tag_data(w, lldpctl_atom_get_str(dot3_power,
- lldpctl_k_dot3_power_pairs));
- tag_end(w);
+ if (lldpctl_atom_get_int(dot3_power,
+ lldpctl_k_dot3_power_devicetype) == LLDP_DOT3_POWER_PSE) {
+ tag_start(w, "pairs", "Power pairs");
+ tag_data(w, lldpctl_atom_get_str(dot3_power,
+ lldpctl_k_dot3_power_pairs));
+ tag_end(w);
+ }
tag_start(w, "class", "Class");
tag_data(w, lldpctl_atom_get_str(dot3_power,
lldpctl_k_dot3_power_class));
.Op Cd supported
.Op Cd enabled
.Op Cd paircontrol
-.Cd powerpairs Ar powerpairs
+.Op Cd powerpairs Ar powerpairs
.Op Cd class Ar class
.Op Cd type Ar type Cd source Ar source Cd priority Ar priority Cd requested Ar requested Cd allocated Ar allocated
.Bd -ragged -offset XXXXXX
static struct atom_map port_dot3_power_pairs_map = {
.key = lldpctl_k_dot3_power_pairs,
.map = {
+ { 0, "unknown" },
{ LLDP_DOT3_POWERPAIRS_SIGNAL, "signal" },
{ LLDP_DOT3_POWERPAIRS_SPARE, "spare" },
{ 0, NULL }
}
case lldpctl_k_dot3_power_pairs:
switch (value) {
+ case 0:
case 1:
case 2:
port->p_power.pairs = value;
'device-type': 'PSE',
'pairs': 'spare',
'class': 'class 3'}),
- ("pd supported enabled powerpairs spare class class-3 type 1 source "
+ ("pd supported enabled class class-3 type 1 source "
"pse priority low requested 10000 allocated 15000",
{'supported': 'yes',
'enabled': 'yes',
'paircontrol': 'no',
'device-type': 'PD',
- 'pairs': 'spare',
'class': 'class 3',
'power-type': '1',
'source': 'Primary power source',
result = lldpcli(
*shlex.split("configure dot3 power pd "
"supported enabled paircontrol "
- "powerpairs spare "
"class class-3 "
"type 1 source both priority low "
"requested 20000 allocated 5000"))
configure ports eth0 med power pd source pse priority high value 5000
configure dot3 power pse supported enabled paircontrol powerpairs spare class class-3
configure ports eth0 dot3 power pse supported enabled paircontrol powerpairs spare class class-3
-configure dot3 power pd supported enabled powerpairs spare class class-3 type 1 source pse priority low requested 10000 allocated 15000
+configure dot3 power pd supported enabled class class-3 type 1 source pse priority low requested 10000 allocated 15000
# A convenient way to "test" lldpcli and liblldpctl is to load those commands in lldpcli with valgrind:
# libtool execute valgrind --suppressions=../src/client/lldpcli.supp --leak-check=full src/client/lldpcli -c ../tests/lldpcli.conf