aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Thompson <thompsa@FreeBSD.org>2008-09-20 19:38:37 +0000
committerAndrew Thompson <thompsa@FreeBSD.org>2008-09-20 19:38:37 +0000
commitcb959fa205386d63a61d44673befa7c1d5f4d111 (patch)
tree74b9472edb5958688889f2506f58d4469202a603
parentb0000a98c40fcdb4283190f55240ed05fabb370d (diff)
downloadsrc-cb959fa205386d63a61d44673befa7c1d5f4d111.tar.gz
src-cb959fa205386d63a61d44673befa7c1d5f4d111.zip
Fix clone destruction, can't use the simple api because that does not remove
the ifnet from cloner's list. Expose if_clone_destroyif api to do this. Submitted by: sam
Notes
Notes: svn path=/head/; revision=183210
-rw-r--r--sys/net/if_clone.c3
-rw-r--r--sys/net/if_clone.h1
-rw-r--r--sys/net80211/ieee80211_freebsd.c2
3 files changed, 3 insertions, 3 deletions
diff --git a/sys/net/if_clone.c b/sys/net/if_clone.c
index cc5212635714..8ffb7584c337 100644
--- a/sys/net/if_clone.c
+++ b/sys/net/if_clone.c
@@ -53,7 +53,6 @@
static void if_clone_free(struct if_clone *ifc);
static int if_clone_createif(struct if_clone *ifc, char *name, size_t len,
caddr_t params);
-static int if_clone_destroyif(struct if_clone *ifc, struct ifnet *ifp);
static struct mtx if_cloners_mtx;
static int if_cloners_count;
@@ -199,7 +198,7 @@ if_clone_destroy(const char *name)
/*
* Destroy a clone network interface.
*/
-static int
+int
if_clone_destroyif(struct if_clone *ifc, struct ifnet *ifp)
{
int err;
diff --git a/sys/net/if_clone.h b/sys/net/if_clone.h
index af3395fe7e6a..280a5455db86 100644
--- a/sys/net/if_clone.h
+++ b/sys/net/if_clone.h
@@ -75,6 +75,7 @@ void if_clone_detach(struct if_clone *);
int if_clone_create(char *, size_t, caddr_t);
int if_clone_destroy(const char *);
+int if_clone_destroyif(struct if_clone *, struct ifnet *);
int if_clone_list(struct if_clonereq *);
int ifc_name2unit(const char *name, int *unit);
diff --git a/sys/net80211/ieee80211_freebsd.c b/sys/net80211/ieee80211_freebsd.c
index ad29931e6332..71174b72edfc 100644
--- a/sys/net80211/ieee80211_freebsd.c
+++ b/sys/net80211/ieee80211_freebsd.c
@@ -144,7 +144,7 @@ IFC_SIMPLE_DECLARE(wlan, 0);
void
ieee80211_vap_destroy(struct ieee80211vap *vap)
{
- ifc_simple_destroy(&wlan_cloner, vap->iv_ifp);
+ if_clone_destroyif(&wlan_cloner, vap->iv_ifp);
}
static int