diff --git a/ripd/rip_interface.c b/ripd/rip_interface.c
index 4f80bf4..d3b55fc 100644
--- a/ripd/rip_interface.c
+++ b/ripd/rip_interface.c
@@ -239,6 +239,7 @@
   }
 }
 
+#if 0
 /* Send RIP request to the neighbor. */
 static void
 rip_request_neighbor (struct in_addr addr)
@@ -269,6 +270,7 @@
     if (rp->info)
       rip_request_neighbor (rp->p.u.prefix4);
 }
+#endif
 
 /* Multicast packet receive socket. */
 static int
@@ -423,8 +425,9 @@
     return 0;
 
   if (IS_RIP_DEBUG_ZEBRA)
-    zlog_debug ("interface %s index %d flags %lld metric %d mtu %d is up",
-	       ifp->name, ifp->ifindex, ifp->flags, ifp->metric, ifp->mtu);
+    zlog_debug ("interface %s index %d flags %#llx metric %d mtu %d is up",
+	       ifp->name, ifp->ifindex, (unsigned long long) ifp->flags,
+	       ifp->metric, ifp->mtu);
 
   /* Check if this interface is RIP enabled or not.*/
   rip_enable_apply (ifp);
@@ -447,8 +450,9 @@
   ifp = zebra_interface_add_read (zclient->ibuf);
 
   if (IS_RIP_DEBUG_ZEBRA)
-    zlog_debug ("interface add %s index %d flags %lld metric %d mtu %d",
-	       ifp->name, ifp->ifindex, ifp->flags, ifp->metric, ifp->mtu);
+    zlog_debug ("interface add %s index %d flags %#llx metric %d mtu %d",
+		ifp->name, ifp->ifindex, (unsigned long long) ifp->flags,
+		ifp->metric, ifp->mtu);
 
   /* Check if this interface is RIP enabled or not.*/
   rip_enable_apply (ifp);
@@ -486,8 +490,9 @@
     rip_if_down(ifp);
   } 
   
-  zlog_info("interface delete %s index %d flags %lld metric %d mtu %d",
-	    ifp->name, ifp->ifindex, ifp->flags, ifp->metric, ifp->mtu);  
+  zlog_info("interface delete %s index %d flags %#llx metric %d mtu %d",
+	    ifp->name, ifp->ifindex, (unsigned long long) ifp->flags,
+	    ifp->metric, ifp->mtu);
   
   /* To support pseudo interface do not free interface structure.  */
   /* if_delete(ifp); */
@@ -947,8 +952,6 @@
   return 0;
 }
 
-int rip_redistribute_check (int);
-
 static void
 rip_connect_set (struct interface *ifp, int set)
 {
diff --git a/ripd/rip_zebra.c b/ripd/rip_zebra.c
index 7729d9b..c476d8f 100644
--- a/ripd/rip_zebra.c
+++ b/ripd/rip_zebra.c
@@ -233,6 +233,7 @@
   return CMD_SUCCESS;
 }
 
+#if 0
 static int
 rip_redistribute_set (int type)
 {
@@ -246,6 +247,7 @@
 
   return CMD_SUCCESS;
 }
+#endif
 
 static int
 rip_redistribute_unset (int type)
diff --git a/ripd/ripd.c b/ripd/ripd.c
index 2d5a856..5a6dbc8 100644
--- a/ripd/ripd.c
+++ b/ripd/ripd.c
@@ -2976,6 +2976,7 @@
   return CMD_SUCCESS;
 }
 
+#if 0
 static void
 rip_update_default_metric (void)
 {
@@ -2987,6 +2988,7 @@
       if (rinfo->type != ZEBRA_ROUTE_RIP && rinfo->type != ZEBRA_ROUTE_CONNECT)
         rinfo->metric = rip->default_metric;
 }
+#endif
 
 DEFUN (rip_default_metric,
        rip_default_metric_cmd,
diff --git a/ripd/ripd.h b/ripd/ripd.h
index 4d0c04e..45b07b9 100644
--- a/ripd/ripd.h
+++ b/ripd/ripd.h
@@ -395,6 +395,8 @@
 extern int rip_request_send (struct sockaddr_in *, struct interface *, u_char,
                       struct connected *);
 extern int rip_neighbor_lookup (struct sockaddr_in *);
+
+extern int rip_redistribute_check (int);
 extern void rip_redistribute_add (int, int, struct prefix_ipv4 *, unsigned int, 
 			   struct in_addr *, unsigned int, unsigned char);
 extern void rip_redistribute_delete (int, int, struct prefix_ipv4 *, unsigned int);
