]> git.ipfire.org Git - thirdparty/lldpd.git/commitdiff
Handle correctly MDI/PSE or PD capabilities
authorVincent Bernat <bernat@luffy.cx>
Mon, 8 Dec 2008 19:14:15 +0000 (20:14 +0100)
committerVincent Bernat <bernat@luffy.cx>
Mon, 8 Dec 2008 19:14:15 +0000 (20:14 +0100)
src/lldp.c
src/lldp.h
src/lldpctl.c

index be9d52317d969c15ed6fe0cd53610b42c317bd60..be788f285dc8bc0be38116a481d8aa9eb7bd7102 100644 (file)
@@ -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:
index 527a3e2d29ecac4bf707f25242f9663ec83d16e2..ebda46df7ec67b4cdb43841c90c1b50821fbbc5b 100644 (file)
@@ -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 {
index f5c7691ac57a3ca7047e5eb28f5217b43ddbeea3..8f7e900bab025608eb23f0568921bd09b3d17227 100644 (file)
@@ -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");