projects
/
openvswitch
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
dpif-linux: Use get_32aligned_u64() in an appropriate place.
[openvswitch]
/
datapath
/
dp_notify.c
diff --git
a/datapath/dp_notify.c
b/datapath/dp_notify.c
index 94d671dd37a13df626de6b29c84cd9fbf2f3c6b5..07fd222de297d20812f83a7d89407ed6ec66b249 100644
(file)
--- a/
datapath/dp_notify.c
+++ b/
datapath/dp_notify.c
@@
-9,6
+9,7
@@
/* Handle changes to managed devices */
#include <linux/netdevice.h>
/* Handle changes to managed devices */
#include <linux/netdevice.h>
+#include <net/genetlink.h>
#include "datapath.h"
#include "vport-internal_dev.h"
#include "datapath.h"
#include "vport-internal_dev.h"
@@
-33,8
+34,23
@@
static int dp_device_event(struct notifier_block *unused, unsigned long event,
switch (event) {
case NETDEV_UNREGISTER:
switch (event) {
case NETDEV_UNREGISTER:
- if (!is_internal_dev(dev))
+ if (!is_internal_dev(dev)) {
+ struct sk_buff *reply;
+
+ reply = ovs_vport_cmd_build_info(vport, 0, 0,
+ OVS_VPORT_CMD_DEL);
dp_detach_port(vport);
dp_detach_port(vport);
+ if (IS_ERR(reply)) {
+ netlink_set_err(INIT_NET_GENL_SOCK, 0,
+ dp_vport_multicast_group.id,
+ PTR_ERR(reply));
+ break;
+ }
+
+ genl_notify(reply, dev_net(dev), 0,
+ dp_vport_multicast_group.id, NULL,
+ GFP_KERNEL);
+ }
break;
case NETDEV_CHANGENAME:
break;
case NETDEV_CHANGENAME:
@@
-43,11
+59,6
@@
static int dp_device_event(struct notifier_block *unused, unsigned long event,
dp_sysfs_add_if(vport);
}
break;
dp_sysfs_add_if(vport);
}
break;
-
- case NETDEV_CHANGEMTU:
- if (!is_internal_dev(dev))
- set_internal_devs_mtu(dp);
- break;
}
return NOTIFY_DONE;
}
}
return NOTIFY_DONE;
}