ofproto: Adjust netdev_monitor when switching netdevs.
authorBen Pfaff <blp@nicira.com>
Thu, 21 Apr 2011 23:25:41 +0000 (16:25 -0700)
committerBen Pfaff <blp@nicira.com>
Thu, 21 Apr 2011 23:25:41 +0000 (16:25 -0700)
This fixes a segfault in the "ofproto - mod-port" test.  The segfault
should not occur--there must be a bug in the netdev_monitor or possibly
the netdev_dummy implementation--but the netdev_monitor_remove() and
netdev_monitor_add() calls are definitely wanted here in any case to ensure
that the new netdev, not the old one, is what gets monitored.

ofproto/ofproto.c

index 39e2b30e1ddad90e7b108ca864292c6f321393c8..fb63606ad6d1ccb6aac121084ee278f914cee559 100644 (file)
@@ -1203,6 +1203,9 @@ ofport_modified(struct ofproto *ofproto, struct ofport *port,
     port->opp.supported = opp->supported;
     port->opp.peer = opp->peer;
 
+    netdev_monitor_remove(ofproto->netdev_monitor, port->netdev);
+    netdev_monitor_add(ofproto->netdev_monitor, netdev);
+
     netdev_close(port->netdev);
     port->netdev = netdev;