summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjulian <julian@FreeBSD.org>2001-07-23 21:14:57 +0000
committerjulian <julian@FreeBSD.org>2001-07-23 21:14:57 +0000
commitad094e6d4f425b96a105c5d240170552d8fc10f9 (patch)
treeb3990a9856719af0230ef00d47ccb95e1426696d
parent4ee832f9e7a14f07151f6ed49fa10f7407e1df3e (diff)
downloadFreeBSD-src-ad094e6d4f425b96a105c5d240170552d8fc10f9.zip
FreeBSD-src-ad094e6d4f425b96a105c5d240170552d8fc10f9.tar.gz
Add an external function to unlink a netgraph type from the types list.
-rw-r--r--sys/netgraph/netgraph.h1
-rw-r--r--sys/netgraph/ng_base.c20
2 files changed, 21 insertions, 0 deletions
diff --git a/sys/netgraph/netgraph.h b/sys/netgraph/netgraph.h
index c1f03ce..33fcfb0 100644
--- a/sys/netgraph/netgraph.h
+++ b/sys/netgraph/netgraph.h
@@ -1123,6 +1123,7 @@ item_p ng_package_msg_self(node_p here, hook_p hook, struct ng_mesg *msg);
void ng_replace_retaddr(node_p here, item_p item, ng_ID_t retaddr);
int ng_rmhook_self(hook_p hook); /* if a node wants to kill a hook */
int ng_rmnode_self(node_p here); /* if a node wants to suicide */
+int ng_rmtype(struct ng_type *tp);
int ng_snd_item(item_p item, int queue);
int ng_send_fn(node_p node, hook_p hook, ng_item_fn *fn,
void *arg1, int arg2);
diff --git a/sys/netgraph/ng_base.c b/sys/netgraph/ng_base.c
index 6cba23b..553193b 100644
--- a/sys/netgraph/ng_base.c
+++ b/sys/netgraph/ng_base.c
@@ -1167,6 +1167,26 @@ ng_newtype(struct ng_type *tp)
}
/*
+ * unlink a netgraph type
+ * If no examples exist
+ */
+int
+ng_rmtype(struct ng_type *tp)
+{
+ /* Check for name collision */
+ if (tp->refs != 1) {
+ TRAP_ERROR();
+ return (EBUSY);
+ }
+
+ /* Unlink type */
+ mtx_lock(&ng_typelist_mtx);
+ LIST_REMOVE(tp, types);
+ mtx_unlock(&ng_typelist_mtx);
+ return (0);
+}
+
+/*
* Look for a type of the name given
*/
struct ng_type *
OpenPOWER on IntegriCloud