xenserver: Add new helper function to interface-reconfigure.
[openvswitch] / datapath / dp_notify.c
index 56d5c3c987de3c5992f6823e1ecfb5db52683684..f22d8b342f1b1b3d88d19132a2ad88d83feaec56 100644 (file)
@@ -1,6 +1,9 @@
 /*
  * Distributed under the terms of the GNU GPL version 2.
  * Copyright (c) 2007, 2008, 2009 Nicira Networks.
+ *
+ * Significant portions of this file may be copied from parts of the Linux
+ * kernel, by Linus Torvalds and others.
  */
 
 /* Handle changes to managed devices */
@@ -14,12 +17,29 @@ static int dp_device_event(struct notifier_block *unused, unsigned long event,
                void *ptr) 
 {
        struct net_device *dev = ptr;
-       struct net_bridge_port *p = dev->br_port;
-       if (event == NETDEV_UNREGISTER && p) {
-               struct datapath *dp = p->dp;
+       struct net_bridge_port *p;
+       struct datapath *dp;
+
+       p = dev->br_port;
+       if (!p)
+               return NOTIFY_DONE;
+       dp = p->dp;
+
+       switch (event) {
+       case NETDEV_UNREGISTER:
                mutex_lock(&dp->mutex);
-               dp_del_port(p, NULL);
+               dp_del_port(p);
                mutex_unlock(&dp->mutex);
+               break;
+
+       case NETDEV_CHANGENAME:
+               if (p->port_no != ODPP_LOCAL) {
+                       mutex_lock(&dp->mutex);
+                       dp_sysfs_del_if(p);
+                       dp_sysfs_add_if(p);
+                       mutex_unlock(&dp->mutex);
+               }
+               break;
        }
        return NOTIFY_DONE;
 }