diff --git a/ospfd/ospf_abr.c b/ospfd/ospf_abr.c
index 7e32195..def55f1 100644
--- a/ospfd/ospf_abr.c
+++ b/ospfd/ospf_abr.c
@@ -614,15 +614,6 @@
   memcpy(header->metric, mp, 3);
 }
 
-static int
-ospf_abr_check_nssa_range (struct prefix_ipv4 *p, u_int32_t cost,
-				   struct ospf_area *area)
-{
-  /* The Type-7 is tested against the aggregated prefix and forwarded
-       for lsa installation and flooding */
-  return 0;
-}
-
 /* ospf_abr_translate_nssa */
 static int
 ospf_abr_translate_nssa (struct ospf_area *area, struct ospf_lsa *lsa)
@@ -1578,42 +1569,6 @@
 }
 
 static void
-ospf_abr_announce_nssa_defaults (struct ospf *ospf) /* By ABR-Translator */
-{
-  struct listnode *node;
-  struct ospf_area *area;
-
-  if (! IS_OSPF_ABR (ospf))
-    return;
-
-  if (IS_DEBUG_OSPF_NSSA)
-    zlog_debug ("ospf_abr_announce_stub_defaults(): Start");
-
-  for (ALL_LIST_ELEMENTS_RO (ospf->areas, node, area))
-    {
-      if (IS_DEBUG_OSPF_NSSA)
-        zlog_debug ("ospf_abr_announce_nssa_defaults(): looking at area %s",
-                   inet_ntoa (area->area_id));
-
-      if (area->external_routing != OSPF_AREA_NSSA)
-        continue;
-
-      if (OSPF_IS_AREA_BACKBONE (area))
-        continue; /* Sanity Check */
-
-      /* if (!TranslatorRole continue V 1.0 look for "always" conf */
-      if (area->NSSATranslatorState)
-        {
-          if (IS_DEBUG_OSPF_NSSA)
-            zlog_debug ("ospf_abr_announce_nssa_defaults(): "
-                       "announcing 0.0.0.0/0 to this nssa");
-          /* ospf_abr_announce_nssa_asbr_to_as (&p, area->default_cost, area); */
-          /*ospf_abr_announce_network_to_area (&p, area->default_cost, area);*/
-        }
-    }
-}
-
-static void
 ospf_abr_announce_stub_defaults (struct ospf *ospf)
 {
   struct listnode *node;
diff --git a/ospfd/ospf_route.c b/ospfd/ospf_route.c
index d77c742..d2e5e1e 100644
--- a/ospfd/ospf_route.c
+++ b/ospfd/ospf_route.c
@@ -272,61 +272,6 @@
       }
 }
 
-static void
-ospf_intra_route_add (struct route_table *rt, struct vertex *v,
-		      struct ospf_area *area)
-{
-  struct route_node *rn;
-  struct ospf_route *or;
-  struct prefix_ipv4 p;
-  struct ospf_path *path;
-  struct vertex_parent *parent;
-  struct listnode *node, *nnode;
-
-  p.family = AF_INET;
-  p.prefix = v->id;
-  if (v->type == OSPF_VERTEX_ROUTER)
-    p.prefixlen = IPV4_MAX_BITLEN;
-  else
-    {
-      struct network_lsa *lsa = (struct network_lsa *) v->lsa;
-      p.prefixlen = ip_masklen (lsa->mask);
-    }
-  apply_mask_ipv4 (&p);
-
-  rn = route_node_get (rt, (struct prefix *) &p);
-  if (rn->info)
-    {
-      zlog_warn ("Same routing information exists for %s", inet_ntoa (v->id));
-      route_unlock_node (rn);
-      return;
-    }
-
-  or = ospf_route_new ();
-
-  if (v->type == OSPF_VERTEX_NETWORK)
-    {
-      or->type = OSPF_DESTINATION_NETWORK;
-
-      for (ALL_LIST_ELEMENTS (v->parents, node, nnode, parent))
-        {
-          path = ospf_path_new ();
-          path->nexthop = parent->nexthop->router;
-          listnode_add (or->paths, path);
-        }
-    }
-  else
-    or->type = OSPF_DESTINATION_ROUTER;
-
-  or->id = v->id;
-  or->u.std.area_id = area->area_id;
-  or->u.std.external_routing= area->external_routing;
-  or->path_type = OSPF_PATH_INTRA_AREA;
-  or->cost = v->distance;
-
-  rn->info = or;
-}
-
 /* RFC2328 16.1. (4). For "router". */
 void
 ospf_intra_add_router (struct route_table *rt, struct vertex *v,
diff --git a/ospfd/ospf_spf.c b/ospfd/ospf_spf.c
index 6dcf0b1..d7f9ba2 100644
--- a/ospfd/ospf_spf.c
+++ b/ospfd/ospf_spf.c
@@ -1042,6 +1042,7 @@
   route_table_finish (rtrs);
 }
 
+#if 0
 static void
 ospf_rtrs_print (struct route_table *rtrs)
 {
@@ -1101,6 +1102,7 @@
 
   zlog_debug ("ospf_rtrs_print() end");
 }
+#endif
 
 /* Calculating the shortest-path tree for an area. */
 static void
diff --git a/ospfd/ospf_vty.c b/ospfd/ospf_vty.c
index b1526c3..577e417 100644
--- a/ospfd/ospf_vty.c
+++ b/ospfd/ospf_vty.c
@@ -3732,7 +3732,7 @@
   return 0;
 }
 
-/* N.B. This function currently seems to be unused. */
+#if 0
 static int
 show_as_external_lsa_stdvty (struct ospf_lsa *lsa)
 {
@@ -3756,6 +3756,7 @@
 
   return 0;
 }
+#endif
 
 /* Show AS-NSSA-LSA detail information. */
 static int
diff --git a/ospfd/ospfd.c b/ospfd/ospfd.c
index a7553e7..c250fe9 100644
--- a/ospfd/ospfd.c
+++ b/ospfd/ospfd.c
@@ -1205,6 +1205,7 @@
   return 1;
 }
 
+#if 0
 /* XXX: unused? Leave for symmetry? */
 static int
 ospf_area_nssa_translator_role_unset (struct ospf *ospf,
@@ -1222,6 +1223,7 @@
 
   return 1;
 }
+#endif
 
 int
 ospf_area_export_list_set (struct ospf *ospf,
