From: Vincent Bernat Date: Mon, 8 Dec 2008 19:14:15 +0000 (+0100) Subject: Handle correctly MDI/PSE or PD capabilities X-Git-Tag: 0.3~18 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a49b3a79b61691079e8b2dbc3c8517ca0d9291fb;p=thirdparty%2Flldpd.git Handle correctly MDI/PSE or PD capabilities --- diff --git a/src/lldp.c b/src/lldp.c index be9d5231..be788f28 100644 --- a/src/lldp.c +++ b/src/lldp.c @@ -725,6 +725,8 @@ lldp_decode(struct lldpd *cfg, char *frame, int s, switch (*(u_int8_t*)(frame + f) & 0xC0) { case 0x0: chassis->c_med_pow_devicetype = LLDPMED_POW_TYPE_PSE; + chassis->c_med_cap_enabled |= + LLDPMED_CAP_MDI_PSE; switch (*(u_int8_t*)(frame + f) & 0x30) { case 0x0: chassis->c_med_pow_source = @@ -745,6 +747,8 @@ lldp_decode(struct lldpd *cfg, char *frame, int s, break; case 0x40: chassis->c_med_pow_devicetype = LLDPMED_POW_TYPE_PD; + chassis->c_med_cap_enabled |= + LLDPMED_CAP_MDI_PD; switch (*(u_int8_t*)(frame + f) & 0x30) { case 0x0: chassis->c_med_pow_source = @@ -792,8 +796,6 @@ lldp_decode(struct lldpd *cfg, char *frame, int s, chassis->c_med_pow_val = 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: diff --git a/src/lldp.h b/src/lldp.h index 527a3e2d..ebda46df 100644 --- a/src/lldp.h +++ b/src/lldp.h @@ -286,8 +286,8 @@ enum { #define LLDPMED_CAP_CAP 0x01 #define LLDPMED_CAP_POLICY 0x02 #define LLDPMED_CAP_LOCATION 0x04 -#define LLDPMED_CAP_MDI1 0x08 -#define LLDPMED_CAP_MDI2 0x10 +#define LLDPMED_CAP_MDI_PSE 0x08 +#define LLDPMED_CAP_MDI_PD 0x10 #define LLDPMED_CAP_IV 0x20 struct lldpmed_cap { diff --git a/src/lldpctl.c b/src/lldpctl.c index f5c7691a..8f7e900b 100644 --- a/src/lldpctl.c +++ b/src/lldpctl.c @@ -338,8 +338,10 @@ display_med(struct lldpd_chassis *chassis) printf(" Policy"); if (chassis->c_med_cap_enabled & LLDPMED_CAP_LOCATION) printf(" Location"); - if (chassis->c_med_cap_enabled & (LLDPMED_CAP_MDI1 | LLDPMED_CAP_MDI2)) - printf(" MDI"); + if (chassis->c_med_cap_enabled & LLDPMED_CAP_MDI_PSE) + printf(" MDI/PSE"); + if (chassis->c_med_cap_enabled & LLDPMED_CAP_MDI_PD) + printf(" MDI/PD"); if (chassis->c_med_cap_enabled & LLDPMED_CAP_IV) printf(" Inventory"); printf("\n");