The OpenFlow specification says that only role changes to slave or master
check the generation ID, so this is a bug fix.
OpenFlow 1.2 section A.3.9 phrases the requirement this way:
Additionally, if the role value in the message is OFPCR_ROLE_MASTER
or OFPCR_ROLE_SLAVE, the switch must validate generation_id to check
for stale messages.
Found by OFTest.
Signed-off-by: Ben Pfaff <blp@nicira.com>
}
if (request.role != OFPCR12_ROLE_NOCHANGE) {
- if (request.have_generation_id
+ if (request.role != OFPCR12_ROLE_EQUAL
+ && request.have_generation_id
&& !ofconn_set_master_election_id(ofconn, request.generation_id)) {
return OFPERR_OFPRRFC_STALE;
}