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>
Fri, 29 Apr 2011 21:32:00 +0000 (14:32 -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 f44b736..737b86b 100644 (file)
@@ -1202,6 +1202,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;