diff options
author | julian <julian@FreeBSD.org> | 2001-07-23 21:14:57 +0000 |
---|---|---|
committer | julian <julian@FreeBSD.org> | 2001-07-23 21:14:57 +0000 |
commit | ad094e6d4f425b96a105c5d240170552d8fc10f9 (patch) | |
tree | b3990a9856719af0230ef00d47ccb95e1426696d | |
parent | 4ee832f9e7a14f07151f6ed49fa10f7407e1df3e (diff) | |
download | FreeBSD-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.h | 1 | ||||
-rw-r--r-- | sys/netgraph/ng_base.c | 20 |
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 * |