aboutsummaryrefslogtreecommitdiff
path: root/datapath/dp_notify.c
blob: 6203470e566102ff298dca1fa65064c87fb22d55 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/*
 * 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 */

#include <linux/netdevice.h>

#include "datapath.h"


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;
		mutex_lock(&dp->mutex);
		dp_del_port(p, NULL);
		mutex_unlock(&dp->mutex);
	}
	return NOTIFY_DONE;
}

struct notifier_block dp_device_notifier = {
	.notifier_call = dp_device_event
};