diff --git a/isisd/isis_routemap.c b/isisd/isis_routemap.c
new file mode 100644
index 0000000..4df983d
--- /dev/null
+++ b/isisd/isis_routemap.c
@@ -0,0 +1,100 @@
+/*
+ * IS-IS Rout(e)ing protocol               - isis_routemap.c
+ *
+ * Copyright (C) 2001,2002   Sampo Saaristo
+ *                           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) 
+ * 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 
+ * more details.
+
+ * You should have received a copy of the GNU General Public License along 
+ * with this program; if not, write to the Free Software Foundation, Inc., 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+#include <stdlib.h>
+#include <stdio.h>
+#include <zebra.h>
+#include <net/ethernet.h>
+
+#include "thread.h"
+#include "linklist.h"
+#include "vty.h"
+#include "log.h"
+#include "memory.h"
+#include "prefix.h"
+#include "hash.h"
+#include "if.h"
+#include "table.h"
+#include "routemap.h"
+
+#include "isis_constants.h"
+#include "isis_common.h"
+#include "dict.h"
+#include "isisd.h"
+#include "isis_misc.h"
+#include "isis_adjacency.h"
+#include "isis_circuit.h"
+#include "isis_tlv.h"
+#include "isis_pdu.h"
+#include "isis_lsp.h"
+#include "isis_spf.h"
+#include "isis_route.h"
+#include "isis_zebra.h"
+
+extern struct isis *isis;
+
+void
+isis_route_map_upd()
+{
+  int i = 0;
+  
+  if (!isis)
+    return;
+  
+  for (i = 0; i <= ZEBRA_ROUTE_MAX; i++) {
+    if (isis->rmap[i].name)
+      isis->rmap[i].map =  isis->rmap[i].map = 
+        route_map_lookup_by_name (isis->rmap[i].name);
+    else
+      isis->rmap[i].map = NULL;
+  }
+  /* FIXME: do the address family sub-mode AF_INET6 here ? */
+}
+
+void
+isis_route_map_event(route_map_event_t event, char *name)
+{
+  int type;
+
+  if (!isis)
+    return;
+
+  for (type = 0; type <= ZEBRA_ROUTE_MAX; type++) {
+    if (isis->rmap[type].name &&  isis->rmap[type].map && 
+        !strcmp (isis->rmap[type].name, name)) {
+      isis_distribute_list_update (type);
+    }
+  }  
+}
+
+
+void
+isis_route_map_init (void)
+{
+  route_map_init ();
+  route_map_init_vty ();
+  
+  route_map_add_hook (isis_route_map_upd);
+  route_map_delete_hook (isis_route_map_upd);
+  route_map_event_hook (isis_route_map_event);
+
+}
