summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorglebius <glebius@FreeBSD.org>2005-02-14 12:01:09 +0000
committerglebius <glebius@FreeBSD.org>2005-02-14 12:01:09 +0000
commit38b3e66d0e482dcdfa25e3a105ecf1953564ffcc (patch)
tree94c23046d989fd4910b204ad35b0062aeb4759d1
parentdb16f02fe3ae580aab2242ba7ca6506161ec5408 (diff)
downloadFreeBSD-src-38b3e66d0e482dcdfa25e3a105ecf1953564ffcc.zip
FreeBSD-src-38b3e66d0e482dcdfa25e3a105ecf1953564ffcc.tar.gz
Add new netgraph control message NGM_ETHER_DETACH, which actually
removes netgraph node and unwraps Ethernet interface. This gives us ability to unload ng_ether.ko, when all interfaces are detached, making ng_ether(4) developers happy. Reviewed by: ru
-rw-r--r--sys/netgraph/ng_ether.c10
-rw-r--r--sys/netgraph/ng_ether.h1
2 files changed, 11 insertions, 0 deletions
diff --git a/sys/netgraph/ng_ether.c b/sys/netgraph/ng_ether.c
index 30acdfa..f5dc793 100644
--- a/sys/netgraph/ng_ether.c
+++ b/sys/netgraph/ng_ether.c
@@ -186,6 +186,13 @@ static const struct ng_cmdlist ng_ether_cmdlist[] = {
&ng_parse_enaddr_type,
NULL
},
+ {
+ NGM_ETHER_COOKIE,
+ NGM_ETHER_DETACH,
+ "detach",
+ NULL,
+ NULL
+ },
{ 0 }
};
@@ -544,6 +551,9 @@ ng_ether_rcvmsg(node_p node, item_p item, hook_p lasthook)
(struct sockaddr *)&sa_dl);
break;
}
+ case NGM_ETHER_DETACH:
+ ng_ether_detach(priv->ifp);
+ break;
default:
error = EINVAL;
break;
diff --git a/sys/netgraph/ng_ether.h b/sys/netgraph/ng_ether.h
index f8ac14a..f2f0519 100644
--- a/sys/netgraph/ng_ether.h
+++ b/sys/netgraph/ng_ether.h
@@ -67,6 +67,7 @@ enum {
NGM_ETHER_SET_AUTOSRC, /* enable/disable src addr override */
NGM_ETHER_ADD_MULTI, /* add multicast membership */
NGM_ETHER_DEL_MULTI, /* delete multicast membership */
+ NGM_ETHER_DETACH, /* our way to be shut down */
};
#endif /* _NETGRAPH_NG_ETHER_H_ */
OpenPOWER on IntegriCloud