X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=isisd%2Fisis_dynhn.c;h=921e23d33a31ac8b752af4739beebf51b4e29ba1;hb=d25827acfbeb326d658b88857c8db3a650331605;hp=0c702e6729cb16ccf702cb317a46207e4630e70d;hpb=697629e190495f9da309d4afc510ff30af2a2d76;p=mirror_frr.git diff --git a/isisd/isis_dynhn.c b/isisd/isis_dynhn.c index 0c702e672..921e23d33 100644 --- a/isisd/isis_dynhn.c +++ b/isisd/isis_dynhn.c @@ -2,17 +2,17 @@ * IS-IS Rout(e)ing protocol - isis_dynhn.c * Dynamic hostname cache * Copyright (C) 2001,2002 Sampo Saaristo - * Tampere University of Technology + * Tampere University of Technology * Institute of Communications Engineering * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public Licenseas published by the Free - * Software Foundation; either version 2 of the License, or (at your option) + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public Licenseas published by the Free + * Software Foundation; either version 2 of the License, or (at your option) * any later version. * - * This program 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 + * This program 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 @@ -31,7 +31,6 @@ #include "if.h" #include "thread.h" -#include "isisd/dict.h" #include "isisd/isis_constants.h" #include "isisd/isis_common.h" #include "isisd/isis_flags.h" @@ -44,107 +43,87 @@ extern struct host host; struct list *dyn_cache = NULL; -static int dyn_cache_cleanup (struct thread *); +static int dyn_cache_cleanup(struct thread *); -void -dyn_cache_init (void) +void dyn_cache_init(void) { - if (dyn_cache == NULL) - dyn_cache = list_new (); - thread_add_timer(master, dyn_cache_cleanup, NULL, 120, &isis->t_dync_clean); - return; + if (dyn_cache == NULL) + dyn_cache = list_new(); + thread_add_timer(master, dyn_cache_cleanup, NULL, 120, + &isis->t_dync_clean); + return; } -static int -dyn_cache_cleanup (struct thread *thread) +static int dyn_cache_cleanup(struct thread *thread) { - struct listnode *node, *nnode; - struct isis_dynhn *dyn; - time_t now = time (NULL); + struct listnode *node, *nnode; + struct isis_dynhn *dyn; + time_t now = time(NULL); - isis->t_dync_clean = NULL; + isis->t_dync_clean = NULL; - for (ALL_LIST_ELEMENTS (dyn_cache, node, nnode, dyn)) - { - if ((now - dyn->refresh) < MAX_LSP_LIFETIME) - continue; + for (ALL_LIST_ELEMENTS(dyn_cache, node, nnode, dyn)) { + if ((now - dyn->refresh) < MAX_LSP_LIFETIME) + continue; - list_delete_node (dyn_cache, node); - XFREE (MTYPE_ISIS_DYNHN, dyn); - } + list_delete_node(dyn_cache, node); + XFREE(MTYPE_ISIS_DYNHN, dyn); + } - thread_add_timer(master, dyn_cache_cleanup, NULL, 120, &isis->t_dync_clean); - return ISIS_OK; + thread_add_timer(master, dyn_cache_cleanup, NULL, 120, + &isis->t_dync_clean); + return ISIS_OK; } -struct isis_dynhn * -dynhn_find_by_id (const u_char * id) +struct isis_dynhn *dynhn_find_by_id(const uint8_t *id) { - struct listnode *node = NULL; - struct isis_dynhn *dyn = NULL; + struct listnode *node = NULL; + struct isis_dynhn *dyn = NULL; - for (ALL_LIST_ELEMENTS_RO (dyn_cache, node, dyn)) - if (memcmp (dyn->id, id, ISIS_SYS_ID_LEN) == 0) - return dyn; + for (ALL_LIST_ELEMENTS_RO(dyn_cache, node, dyn)) + if (memcmp(dyn->id, id, ISIS_SYS_ID_LEN) == 0) + return dyn; - return NULL; + return NULL; } -struct isis_dynhn * -dynhn_find_by_name (const char *hostname) +struct isis_dynhn *dynhn_find_by_name(const char *hostname) { - struct listnode *node = NULL; - struct isis_dynhn *dyn = NULL; + struct listnode *node = NULL; + struct isis_dynhn *dyn = NULL; - for (ALL_LIST_ELEMENTS_RO (dyn_cache, node, dyn)) - if (strncmp ((char *)dyn->name.name, hostname, 255) == 0) - return dyn; + for (ALL_LIST_ELEMENTS_RO(dyn_cache, node, dyn)) + if (strncmp(dyn->hostname, hostname, 255) == 0) + return dyn; - return NULL; + return NULL; } -void -isis_dynhn_insert (const u_char * id, struct hostname *hostname, int level) +void isis_dynhn_insert(const uint8_t *id, const char *hostname, int level) { - struct isis_dynhn *dyn; - - dyn = dynhn_find_by_id (id); - if (dyn) - { - memcpy (&dyn->name, hostname, hostname->namelen + 1); - memcpy (dyn->id, id, ISIS_SYS_ID_LEN); - dyn->refresh = time (NULL); - return; - } - dyn = XCALLOC (MTYPE_ISIS_DYNHN, sizeof (struct isis_dynhn)); - if (!dyn) - { - zlog_warn ("isis_dynhn_insert(): out of memory!"); - return; - } - - /* we also copy the length */ - memcpy (&dyn->name, hostname, hostname->namelen + 1); - memcpy (dyn->id, id, ISIS_SYS_ID_LEN); - dyn->refresh = time (NULL); - dyn->level = level; - - listnode_add (dyn_cache, dyn); - - return; + struct isis_dynhn *dyn; + + dyn = dynhn_find_by_id(id); + if (!dyn) { + dyn = XCALLOC(MTYPE_ISIS_DYNHN, sizeof(struct isis_dynhn)); + memcpy(dyn->id, id, ISIS_SYS_ID_LEN); + dyn->level = level; + listnode_add(dyn_cache, dyn); + } + + snprintf(dyn->hostname, sizeof(dyn->hostname), "%s", hostname); + dyn->refresh = time(NULL); } -void -isis_dynhn_remove (const u_char * id) +void isis_dynhn_remove(const uint8_t *id) { - struct isis_dynhn *dyn; - - dyn = dynhn_find_by_id (id); - if (!dyn) - return; - listnode_delete (dyn_cache, dyn); - XFREE (MTYPE_ISIS_DYNHN, dyn); - return; + struct isis_dynhn *dyn; + + dyn = dynhn_find_by_id(id); + if (!dyn) + return; + listnode_delete(dyn_cache, dyn); + XFREE(MTYPE_ISIS_DYNHN, dyn); } /* @@ -153,21 +132,19 @@ isis_dynhn_remove (const u_char * id) * 2 0000.0000.0002 bar-gw * * 0000.0000.0004 this-gw */ -void -dynhn_print_all (struct vty *vty) +void dynhn_print_all(struct vty *vty) { - struct listnode *node; - struct isis_dynhn *dyn; - - vty_out (vty, "Level System ID Dynamic Hostname%s", VTY_NEWLINE); - for (ALL_LIST_ELEMENTS_RO (dyn_cache, node, dyn)) - { - vty_out (vty, "%-7d", dyn->level); - vty_out (vty, "%-15s%-15s%s", sysid_print (dyn->id), dyn->name.name, - VTY_NEWLINE); - } - - vty_out (vty, " * %s %s%s", sysid_print (isis->sysid), unix_hostname (), - VTY_NEWLINE); - return; + struct listnode *node; + struct isis_dynhn *dyn; + + vty_out(vty, "Level System ID Dynamic Hostname\n"); + for (ALL_LIST_ELEMENTS_RO(dyn_cache, node, dyn)) { + vty_out(vty, "%-7d", dyn->level); + vty_out(vty, "%-15s%-15s\n", sysid_print(dyn->id), + dyn->hostname); + } + + vty_out(vty, " * %s %s\n", sysid_print(isis->sysid), + cmd_hostname_get()); + return; }