Oh, sorry, my mailer has deformed inlined patch, so send it again, now as attachment. BTW, what about that .depend file in repository? It is not used in Makefile, and anyway its content is out-of-date. Maybe it should be removed from repository? -- With Best Regards, Vitaly Demyanec
diff -ur a/ctl_main.c b/ctl_main.c --- a/ctl_main.c 2009-05-26 10:50:04.000000000 +0300 +++ b/ctl_main.c 2009-05-26 10:50:24.000000000 +0300 @@ -173,6 +173,38 @@ _str; \ }) +#define ROLE_STR(_role) \ + ({ \ + int _r = _role; \ + char *_str = "Unknown"; \ + switch ((Role)_r) \ + { \ + case RootPort: _str = "Root"; break; \ + case DesignatedPort: _str = "Designated"; break; \ + case AlternatePort: _str = "Alternate"; break; \ + case BackupPort: _str = "Backup"; break; \ + case DisabledPort: _str = "Disabled"; break; \ + default: ; \ + } \ + _str; \ + }) + +#define SHORT_ROLE_STR(_role) \ + ({ \ + int _r = _role; \ + char *_str = "Unkn"; \ + switch ((Role)_r) \ + { \ + case RootPort: _str = "Root"; break; \ + case DesignatedPort: _str = "Desg"; break; \ + case AlternatePort: _str = "Altn"; break; \ + case BackupPort: _str = "Back"; break; \ + case DisabledPort: _str = "Disa"; break; \ + default: ; \ + } \ + _str; \ + }) + int detail = 0; @@ -193,7 +225,7 @@ if (detail) { printf("%s (%u)\n", port_name, (s.id & 0xfff)); - printf(" enabled\t\t%4s\n", BOOL_STR(s.enabled)); + printf(" enabled\t\t%4s\t\t\trole\t\t%15s\n", BOOL_STR(s.enabled), ROLE_STR(s.role_)); printf(" port id\t\t%04x\t\t\tstate\t\t%15s\n", s.id, STATE_STR(s.state)); printf(" path cost\t%12d\t\t\tadmin path cost\t%12d\n", @@ -213,7 +245,7 @@ printf("\t\t\tadmin point to point\t%4s\n", ADMIN_P2P_STR(s.admin_p2p)); } else { - printf("%c%c %4s %04x %4s " BR_ID_FMT " " BR_ID_FMT " %04x\n", + printf("%c%c %4s %04x %4s " BR_ID_FMT " " BR_ID_FMT " %04x %4s\n", (s.oper_p2p) ? ' ' : '*', (s.oper_edge_port) ? 'E' : ' ', port_name, @@ -221,7 +253,8 @@ s.enabled?SHORT_STATE_STR(s.state):"down", BR_ID_ARGS(s.designated_root), BR_ID_ARGS(s.designated_bridge), - s.designated_port); + s.designated_port, + SHORT_ROLE_STR(s.role_)); } return 0; } diff -ur a/rstp.c b/rstp.c --- a/rstp.c 2009-05-26 10:50:04.000000000 +0300 +++ b/rstp.c 2009-05-26 10:50:24.000000000 +0300 @@ -271,19 +271,6 @@ Disabled } InfoType; -// We accomodate the port role encoding in BPDUs as per 9.2.9 -// into this type, defining an extra value of AltBackupPort valid -// only in a BPDU. -typedef enum _Role { - UnknownPort = 0, - AltBackupPort = 1, - RootPort = 2, - DesignatedPort = 3, - AlternatePort, - BackupPort, - DisabledPort -} Role; - typedef enum _BPDUType { BPDUTypeConfig = 0, BPDUTypeRST = 2, @@ -2947,6 +2934,8 @@ status->admin_p2p = adminPointToPointMAC; status->oper_p2p = operPointToPointMAC; + + status->role_ = role; } diff -ur a/rstp.h b/rstp.h --- a/rstp.h 2009-05-26 10:50:04.000000000 +0300 +++ b/rstp.h 2009-05-26 10:50:24.000000000 +0300 @@ -149,6 +149,19 @@ /****** Status ******/ +/* We accomodate the port role encoding in BPDUs as per 9.2.9 + into this type, defining an extra value of AltBackupPort valid + only in a BPDU. */ +typedef enum _Role { + UnknownPort = 0, + AltBackupPort = 1, + RootPort = 2, + DesignatedPort = 3, + AlternatePort, + BackupPort, + DisabledPort +} Role; + typedef struct STP_BridgeStatus_ { unsigned char bridge_id[8]; @@ -197,6 +210,7 @@ */ unsigned int admin_p2p; unsigned int oper_p2p; + unsigned int role_; } STP_PortStatus; void STP_IN_get_port_status(STP_Port *, STP_PortStatus *);
_______________________________________________ Bridge mailing list Bridge@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/bridge