diff --git a/isisd/ChangeLog b/isisd/ChangeLog
index 3abe3ae..f69364c 100644
--- a/isisd/ChangeLog
+++ b/isisd/ChangeLog
@@ -1,5 +1,11 @@
 2005-09-28 Hasso Tepper <hasso at quagga.net>
 
+	* isis_dynh.c, isisd.h: Implement dynamic hostname cache cleanup.
+	* isis_lsp.c: Refresh dynamic hostname in the cache while refreshing
+	  topology LSP.
+
+2005-09-28 Hasso Tepper <hasso at quagga.net>
+
 	* isis_lsp.c: Make topology generator generate TE TLVs if necessary.
 	  Also take care of inserting dynamic hostname of topology TLVs into
 	  cache.
diff --git a/isisd/isis_dynhn.c b/isisd/isis_dynhn.c
index 68257dd..13acae7 100644
--- a/isisd/isis_dynhn.c
+++ b/isisd/isis_dynhn.c
@@ -30,6 +30,7 @@
 #include "stream.h"
 #include "command.h"
 #include "if.h"
+#include "thread.h"
 
 #include "isisd/dict.h"
 #include "isisd/isis_constants.h"
@@ -42,18 +43,42 @@
 #include "isisd/isis_constants.h"
 
 extern struct isis *isis;
+extern struct thread_master *master;
 extern struct host host;
 
 struct list *dyn_cache = NULL;
+static int dyn_cache_cleanup (struct thread *);
 
 void
 dyn_cache_init (void)
 {
   dyn_cache = list_new ();
-
+  THREAD_TIMER_ON (master, isis->t_dync_clean, dyn_cache_cleanup, NULL, 120);
   return;
 }
 
+static int
+dyn_cache_cleanup (struct thread *thread)
+{
+  struct listnode *node, *nnode;
+  struct isis_dynhn *dyn;
+  time_t now = time (NULL);
+
+  isis->t_dync_clean = NULL;
+
+  for (ALL_LIST_ELEMENTS (dyn_cache, node, nnode, dyn))
+    {
+      if ((now - dyn->refresh) < (MAX_AGE + 120))
+	continue;
+
+      list_delete_node (dyn_cache, node);
+      XFREE (MTYPE_ISIS_DYNHN, dyn);
+    }
+
+  THREAD_TIMER_ON (master, isis->t_dync_clean, dyn_cache_cleanup, NULL, 120);
+  return ISIS_OK;
+}
+
 struct isis_dynhn *
 dynhn_find_by_id (u_char * id)
 {
@@ -80,13 +105,13 @@
       dyn->refresh = time (NULL);
       return;
     }
-  dyn = XMALLOC (MTYPE_ISIS_DYNHN, sizeof (struct isis_dynhn));
+  dyn = XCALLOC (MTYPE_ISIS_DYNHN, sizeof (struct isis_dynhn));
   if (!dyn)
     {
       zlog_warn ("isis_dynhn_insert(): out of memory!");
       return;
     }
-  memset (dyn, 0, sizeof (struct isis_dynhn));
+
   /* we also copy the length */
   memcpy (&dyn->name, hostname, hostname->namelen + 1);
   memcpy (dyn->id, id, ISIS_SYS_ID_LEN);
diff --git a/isisd/isis_lsp.c b/isisd/isis_lsp.c
index c0574ad..f4a42a6 100644
--- a/isisd/isis_lsp.c
+++ b/isisd/isis_lsp.c
@@ -2154,6 +2154,10 @@
       zlog_debug ("ISIS-Upd (): refreshing Topology L1 %s",
 		  rawlspid_print (lsp->lsp_header->lsp_id));
     }
+  /* Refresh dynamic hostname in the cache. */
+  isis_dynhn_insert (lsp->lsp_header->lsp_id, lsp->tlv_data.hostname,
+		     IS_LEVEL_1);
+
   lsp->lsp_header->rem_lifetime =
     htons (isis_jitter (lsp->area->max_lsp_lifetime[0], MAX_AGE_JITTER));
 
diff --git a/isisd/isisd.h b/isisd/isisd.h
index 4e71640..2277f27 100644
--- a/isisd/isisd.h
+++ b/isisd/isisd.h
@@ -50,6 +50,7 @@
   struct area_addr *man_area_addrs;	/* manualAreaAddresses */
   u_int32_t debugs;		/* bitmap for debug */
   time_t uptime;		/* when did we start */
+  struct thread *t_dync_clean;	/* dynamic hostname cache cleanup thread */
 
   /* Redistributed external information. */
   struct route_table *external_info[ZEBRA_ROUTE_MAX + 1];
