diff options
Diffstat (limited to 'ospf6d/ospf6_hook.c')
-rw-r--r-- | ospf6d/ospf6_hook.c | 174 |
1 files changed, 0 insertions, 174 deletions
diff --git a/ospf6d/ospf6_hook.c b/ospf6d/ospf6_hook.c deleted file mode 100644 index fc9e185d..00000000 --- a/ospf6d/ospf6_hook.c +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Copyright (C) 2001 Yasuhiro Ohara - * - * This file is part of GNU Zebra. - * - * GNU Zebra is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2, or (at your option) any - * later version. - * - * GNU Zebra is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Zebra; see the file COPYING. If not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#include <zebra.h> - -#include "log.h" -#include "memory.h" - -#include "ospf6_hook.h" - -struct ospf6_hook_master neighbor_hook; -struct ospf6_hook_master interface_hook; -struct ospf6_hook_master area_hook; -struct ospf6_hook_master top_hook; -struct ospf6_hook_master database_hook; -struct ospf6_hook_master intra_topology_hook; -struct ospf6_hook_master inter_topology_hook; -struct ospf6_hook_master route_hook; -struct ospf6_hook_master redistribute_hook; - -static struct ospf6_hook * -ospf6_hook_create () -{ - struct ospf6_hook *new; - new = XMALLOC (MTYPE_OSPF6_OTHER, sizeof (struct ospf6_hook)); - if (new == NULL) - return NULL; - memset (new, 0, sizeof (struct ospf6_hook)); - return new; -} - -static void -ospf6_hook_delete (struct ospf6_hook *hook) -{ - XFREE (MTYPE_OSPF6_OTHER, hook); -} - -static int -ospf6_hook_issame (struct ospf6_hook *hook1, struct ospf6_hook *hook2) -{ - if (hook1->name && hook2->name && - strcmp (hook1->name, hook2->name) != 0) - return 0; - if (hook1->hook_add != hook2->hook_add) - return 0; - if (hook1->hook_change != hook2->hook_change) - return 0; - if (hook1->hook_remove != hook2->hook_remove) - return 0; - return 1; -} - -void -ospf6_hook_register (struct ospf6_hook *hook, - struct ospf6_hook_master *master) -{ - struct ospf6_hook *new; - - new = ospf6_hook_create (); - - if (hook->name) - new->name = strdup (hook->name); - new->hook_add = hook->hook_add; - new->hook_change = hook->hook_change; - new->hook_remove = hook->hook_remove; - - new->prev = master->tail; - if (master->tail) - master->tail->next = new; - - master->tail = new; - if (! master->head) - master->head = new; - - master->count++; - - if (IS_OSPF6_DUMP_HOOK) - { - zlog_info ("HOOK: Register hook%s%s%s%s", - (hook->name ? " " : ""), - (hook->name ? hook->name : ""), - (master->name ? " to " : ""), - (master->name ? master->name : "")); - } -} - -void -ospf6_hook_unregister (struct ospf6_hook *req, - struct ospf6_hook_master *master) -{ - struct ospf6_hook *hook; - - for (hook = master->head; hook; hook = hook->next) - { - if (ospf6_hook_issame (hook, req)) - break; - } - if (! hook) - return; - - if (hook->prev) - hook->prev->next = hook->next; - if (hook->next) - hook->next->prev = hook->prev; - if (master->head == hook) - master->head = hook->next; - if (master->tail == hook) - master->tail = hook->prev; - - master->count--; - - if (IS_OSPF6_DUMP_HOOK) - { - zlog_info ("HOOK: Unregister hook%s%s%s%s", - (hook->name ? " " : ""), - (hook->name ? hook->name : ""), - (master->name ? " to " : ""), - (master->name ? master->name : "")); - } - - if (hook->name) - free (hook->name); - ospf6_hook_delete (hook); -} - -void -ospf6_hook_unregister_all (struct ospf6_hook_master *master) -{ - struct ospf6_hook *hook, *next; - - for (hook = master->head; hook; hook = next) - { - next = hook->next; - ospf6_hook_delete (hook); - } - - master->head = NULL; - master->tail = NULL; - master->count = 0; -} - - -void -ospf6_hook_init () -{ - neighbor_hook.name = "Neighbor Hooklist"; - interface_hook.name = "Interface Hooklist"; - area_hook.name = "Area Hooklist"; - top_hook.name = "Top Hooklist"; - database_hook.name = "Database Hooklist"; - intra_topology_hook.name = "IntraTopology Hooklist"; - inter_topology_hook.name = "InterTopology Hooklist"; - route_hook.name = "Route Hooklist"; -} - - |