Hi. We tested the RSTP implementation against the IXIA IxANVL validation software. This allowed us to fix some small bugs, and the implementation now passes such tests with success! Please find attached the patch series.
It appears that patches 12 and 17 break the "RSTP dummy" test, while all other tests succeed. We also did some tests on some physical machines and the behaviour seems to be ok with patches 12 and 17 applied. The "RSTP dummy" test succeeds with the following modifications: diff --git a/lib/rstp.c b/lib/rstp.c index 144f2ba..6803bb2 100644 --- a/lib/rstp.c +++ b/lib/rstp.c @@ -324,10 +324,9 @@ rstp_set_bridge_address__(struct rstp *rstp, rstp_identifier bridge_address) RSTP_ID_ARGS(bridge_address)); if (rstp->address != bridge_address) { rstp->address = bridge_address; - rstp->bridge_identifier &= 0xffff000000000000ULL; - rstp->bridge_identifier |= bridge_address; - set_bridge_priority__(rstp); } + rstp->bridge_identifier = rstp->address; + set_bridge_priority__(rstp); } /* Sets the bridge address. */ @@ -378,10 +377,10 @@ rstp_set_bridge_priority__(struct rstp *rstp, int new_priority) VLOG_DBG("%s: set bridge priority to %d", rstp->name, new_priority); rstp->priority = new_priority; - rstp->bridge_identifier &= 0x0000ffffffffffffULL; - rstp->bridge_identifier |= (uint64_t)new_priority << 48; - set_bridge_priority__(rstp); } + rstp->bridge_identifier &= 0x0000ffffffffffffULL; + rstp->bridge_identifier |= (uint64_t)rstp->priority << 48; + set_bridge_priority__(rstp); } but this breaks some IXIA validation tests. We're still not sure why this test fails. Jarno, could you take a look? Best regards, Daniele _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev