diff --git a/zebra/ChangeLog b/zebra/ChangeLog
index 677643e..f215266 100644
--- a/zebra/ChangeLog
+++ b/zebra/ChangeLog
@@ -1,3 +1,11 @@
+2005-06-28 Paul Jakma <paul.jakma@sun.com>
+
+	* (global) Extern and static'ification, with related fixups
+	  of declarations, ensuring files include their own headers, etc.
+	  if_ioctl.c: (interface_info_ioctl) fix obvious arg mis-order in
+	  list loop
+	  
+
 2005-06-14 Paul Jakma <paul.jakma@sun.com>
 
 	* kernel_socket.c: consolidate the IFAM{ADDR,MASK}GET and 
diff --git a/zebra/connected.c b/zebra/connected.c
index 3ce5953..46d2aab 100644
--- a/zebra/connected.c
+++ b/zebra/connected.c
@@ -33,6 +33,7 @@
 #include "zebra/zserv.h"
 #include "zebra/redistribute.h"
 #include "zebra/interface.h"
+#include "zebra/connected.h"
 
 /* If same interface address is already exist... */
 struct connected *
@@ -88,7 +89,7 @@
 /* Add connected IPv4 route to the interface. */
 void
 connected_add_ipv4 (struct interface *ifp, int flags, struct in_addr *addr, 
-		    int prefixlen, struct in_addr *broad, char *label)
+		    u_char prefixlen, struct in_addr *broad, char *label)
 {
   struct prefix_ipv4 *p;
   struct connected *ifc;
@@ -226,7 +227,7 @@
 /* Delete connected IPv4 route to the interface. */
 void
 connected_delete_ipv4 (struct interface *ifp, int flags, struct in_addr *addr,
-		       int prefixlen, struct in_addr *broad, char *label)
+		       u_char prefixlen, struct in_addr *broad, char *label)
 {
   struct prefix_ipv4 p;
   struct connected *ifc;
diff --git a/zebra/connected.h b/zebra/connected.h
index 7bf13ba..726092a 100644
--- a/zebra/connected.h
+++ b/zebra/connected.h
@@ -23,37 +23,33 @@
 #ifndef _ZEBRA_CONNECTED_H
 #define _ZEBRA_CONNECTED_H
 
-struct connected *
+extern struct connected *
 connected_check_ipv4 (struct interface *ifp, struct prefix *p);
 
-void
+extern void
 connected_add_ipv4 (struct interface *ifp, int flags, struct in_addr *addr, 
-		    int prefixlen, struct in_addr *broad, char *label);
+		    u_char prefixlen, struct in_addr *broad, char *label);
 
-void
+extern void
 connected_delete_ipv4 (struct interface *ifp, int flags, struct in_addr *addr,
-		       int prefixlen, struct in_addr *broad, char *label);
+		       u_char prefixlen, struct in_addr *broad, char *label);
 
-void
-connected_up_ipv4 (struct interface *, struct connected *);
-void
-connected_down_ipv4 (struct interface *, struct connected *);
+extern void connected_up_ipv4 (struct interface *, struct connected *);
+extern void connected_down_ipv4 (struct interface *, struct connected *);
 
 #ifdef HAVE_IPV6
-struct connected *
+extern struct connected *
 connected_check_ipv6 (struct interface *ifp, struct prefix *p);
 
-void
+extern void
 connected_add_ipv6 (struct interface *ifp, struct in6_addr *address,
-		    int prefixlen, struct in6_addr *broad);
-void
+		    u_char prefixlen, struct in6_addr *broad);
+extern void
 connected_delete_ipv6 (struct interface *ifp, struct in6_addr *address,
-		       int prefixlen, struct in6_addr *broad);
-void
-connected_up_ipv6 (struct interface *, struct connected *);
+		       u_char prefixlen, struct in6_addr *broad);
 
-void
-connected_down_ipv6 (struct interface *ifp, struct connected *);
+extern void connected_up_ipv6 (struct interface *, struct connected *);
+extern void connected_down_ipv6 (struct interface *ifp, struct connected *);
 
 #endif /* HAVE_IPV6 */
 
diff --git a/zebra/debug.c b/zebra/debug.c
index fc99623..8575a66 100644
--- a/zebra/debug.c
+++ b/zebra/debug.c
@@ -201,7 +201,7 @@
   1
 };
 
-int
+static int
 config_write_debug (struct vty *vty)
 {
   int write = 0;
@@ -242,7 +242,7 @@
 }
 
 void
-zebra_debug_init ()
+zebra_debug_init (void)
 {
   zebra_debug_event = 0;
   zebra_debug_packet = 0;
diff --git a/zebra/debug.h b/zebra/debug.h
index 6eaa957..96b7d8f 100644
--- a/zebra/debug.h
+++ b/zebra/debug.h
@@ -47,6 +47,6 @@
 extern unsigned long zebra_debug_packet;
 extern unsigned long zebra_debug_kernel;
 
-void zebra_debug_init ();
+extern void zebra_debug_init (void);
 
 #endif /* _ZEBRA_DEBUG_H */
diff --git a/zebra/if_ioctl.c b/zebra/if_ioctl.c
index 24c4cd7..66d8327 100644
--- a/zebra/if_ioctl.c
+++ b/zebra/if_ioctl.c
@@ -33,8 +33,8 @@
 #include "zebra/interface.h"
 
 /* Interface looking up using infamous SIOCGIFCONF. */
-int
-interface_list_ioctl ()
+static int
+interface_list_ioctl (void)
 {
   int ret;
   int sock;
@@ -131,7 +131,7 @@
 }
 
 /* Get interface's index by ioctl. */
-int
+static int
 if_get_index (struct interface *ifp)
 {
 #if defined(HAVE_IF_NAMETOINDEX)
@@ -176,7 +176,7 @@
 }
 
 #ifdef SIOCGIFHWADDR
-int
+static int
 if_get_hwaddr (struct interface *ifp)
 {
   int ret;
@@ -210,8 +210,8 @@
 #ifdef HAVE_GETIFADDRS
 #include <ifaddrs.h>
 
-int
-if_getaddrs ()
+static int
+if_getaddrs (void)
 {
   int ret;
   struct ifaddrs *ifap;
@@ -412,7 +412,7 @@
   struct listnode *node, *nnode;
   struct interface *ifp;
   
-  for (ALL_LIST_ELEMENTS (iflist, ifp, node, nnode))
+  for (ALL_LIST_ELEMENTS (iflist, node, nnode, ifp))
     {
       if_get_index (ifp);
 #ifdef SIOCGIFHWADDR
diff --git a/zebra/interface.c b/zebra/interface.c
index bd31fb4..8032614 100644
--- a/zebra/interface.c
+++ b/zebra/interface.c
@@ -43,7 +43,7 @@
 
 
 /* Called when new interface is added. */
-int
+static int
 if_zebra_new_hook (struct interface *ifp)
 {
   struct zebra_if *zebra_if;
@@ -89,7 +89,7 @@
 }
 
 /* Called when interface is deleted. */
-int
+static int
 if_zebra_delete_hook (struct interface *ifp)
 {
   struct zebra_if *zebra_if;
@@ -189,7 +189,7 @@
 
 /* Wake up configured address if it is not in current kernel
    address. */
-void
+static void
 if_addr_wakeup (struct interface *ifp)
 {
   struct listnode *node, *nnode;
@@ -490,7 +490,7 @@
 }
 
 /* Printout flag information into vty */
-void
+static void
 if_flag_dump_vty (struct vty *vty, unsigned long flag)
 {
   int separator = 0;
@@ -530,7 +530,7 @@
 }
 
 /* Output prefix string to vty. */
-int
+static int
 prefix_vty_out (struct vty *vty, struct prefix *p)
 {
   char str[INET6_ADDRSTRLEN];
@@ -541,7 +541,7 @@
 }
 
 /* Dump if address information to vty. */
-void
+static void
 connected_dump_vty (struct vty *vty, struct connected *connected)
 {
   struct prefix *p;
@@ -585,7 +585,7 @@
 
 #ifdef RTADV
 /* Dump interface ND information to vty. */
-void
+static void
 nd_dump_vty (struct vty *vty, struct interface *ifp)
 {
   struct zebra_if *zif;
@@ -630,7 +630,7 @@
 #endif /* RTADV */
 
 /* Interface's information print out to vty interface. */
-void
+static void
 if_dump_vty (struct vty *vty, struct interface *ifp)
 {
 #ifdef HAVE_SOCKADDR_DL
@@ -813,7 +813,7 @@
 }
 
 /* Check supported address family. */
-int
+static int
 if_supported_family (int family)
 {
   if (family == AF_INET)
@@ -1141,7 +1141,7 @@
        "Set bandwidth informational parameter\n"
        "Bandwidth in kilobits\n")
 
-int
+static int
 ip_address_install (struct vty *vty, struct interface *ifp,
 		    const char *addr_str, const char *peer_str,
 		    const char *label)
@@ -1226,7 +1226,7 @@
   return CMD_SUCCESS;
 }
 
-int
+static int
 ip_address_uninstall (struct vty *vty, struct interface *ifp,
 		      const char *addr_str, const char *peer_str,
 		      const char *label)
@@ -1337,7 +1337,7 @@
 #endif /* HAVE_NETLINK */
 
 #ifdef HAVE_IPV6
-int
+static int
 ipv6_address_install (struct vty *vty, struct interface *ifp,
 		      const char *addr_str, const char *peer_str,
 		      const char *label, int secondary)
@@ -1415,7 +1415,7 @@
   return CMD_SUCCESS;
 }
 
-int
+static int
 ipv6_address_uninstall (struct vty *vty, struct interface *ifp,
 			const char *addr_str, const char *peer_str,
 			const char *label, int secondry)
@@ -1497,7 +1497,7 @@
 }
 #endif /* HAVE_IPV6 */
 
-int
+static int
 if_config_write (struct vty *vty)
 {
   struct listnode *node;
@@ -1571,7 +1571,7 @@
 
 /* Allocate and initialize interface vector. */
 void
-zebra_if_init ()
+zebra_if_init (void)
 {
   /* Initialize interface and new hook. */
   if_init ();
diff --git a/zebra/interface.h b/zebra/interface.h
index 0033f7d..0083cba 100644
--- a/zebra/interface.h
+++ b/zebra/interface.h
@@ -203,30 +203,30 @@
 
 };
 
-void if_delete_update (struct interface *ifp);
-void if_add_update (struct interface *ifp);
-void if_up (struct interface *);
-void if_down (struct interface *);
-void if_refresh (struct interface *);
-int if_subnet_add (struct interface *, struct connected *);
-int if_subnet_delete (struct interface *, struct connected *);
+extern void if_delete_update (struct interface *ifp);
+extern void if_add_update (struct interface *ifp);
+extern void if_up (struct interface *);
+extern void if_down (struct interface *);
+extern void if_refresh (struct interface *);
+extern int if_subnet_add (struct interface *, struct connected *);
+extern int if_subnet_delete (struct interface *, struct connected *);
 
 #ifdef HAVE_PROC_NET_DEV
-int ifstat_update_proc ();
+extern int ifstat_update_proc (void);
 #endif /* HAVE_PROC_NET_DEV */
 #ifdef HAVE_NET_RT_IFLIST
-void ifstat_update_sysctl ();
+extern void ifstat_update_sysctl (void);
 
 #endif /* HAVE_NET_RT_IFLIST */
 #ifdef HAVE_PROC_NET_DEV
-int interface_list_proc ();
+extern int interface_list_proc (void);
 #endif /* HAVE_PROC_NET_DEV */
 #ifdef HAVE_PROC_NET_IF_INET6
-int ifaddr_proc_ipv6 ();
+extern int ifaddr_proc_ipv6 (void);
 #endif /* HAVE_PROC_NET_IF_INET6 */
 
 #ifdef BSDI
-int if_kvm_get_mtu (struct interface *);
+extern int if_kvm_get_mtu (struct interface *);
 #endif /* BSDI */
 
 #endif /* _ZEBRA_INTERFACE_H */
diff --git a/zebra/ioctl.c b/zebra/ioctl.c
index 56de810..4137acf 100644
--- a/zebra/ioctl.c
+++ b/zebra/ioctl.c
@@ -75,7 +75,7 @@
 }
 
 #ifdef HAVE_IPV6
-int
+static int
 if_ioctl_ipv6 (u_long request, caddr_t buffer)
 {
   int sock;
diff --git a/zebra/ioctl.h b/zebra/ioctl.h
index a82c312..5d9e09f 100644
--- a/zebra/ioctl.h
+++ b/zebra/ioctl.h
@@ -24,27 +24,27 @@
 #define _ZEBRA_IOCTL_H
 
 /* Prototypes. */
-void ifreq_set_name (struct ifreq *, struct interface *);
-int if_ioctl (u_long, caddr_t);
+extern void ifreq_set_name (struct ifreq *, struct interface *);
+extern int if_ioctl (u_long, caddr_t);
 
-int if_set_flags (struct interface *, unsigned long);
-int if_unset_flags (struct interface *, unsigned long);
-void if_get_flags (struct interface *);
+extern int if_set_flags (struct interface *, unsigned long);
+extern int if_unset_flags (struct interface *, unsigned long);
+extern void if_get_flags (struct interface *);
 
-int if_set_prefix (struct interface *, struct connected *);
-int if_unset_prefix (struct interface *, struct connected *);
+extern int if_set_prefix (struct interface *, struct connected *);
+extern int if_unset_prefix (struct interface *, struct connected *);
 
-void if_get_metric (struct interface *);
-void if_get_mtu (struct interface *);
+extern void if_get_metric (struct interface *);
+extern void if_get_mtu (struct interface *);
 
 #ifdef HAVE_IPV6
-int if_prefix_add_ipv6 (struct interface *, struct connected *);
-int if_prefix_delete_ipv6 (struct interface *, struct connected *);
+extern int if_prefix_add_ipv6 (struct interface *, struct connected *);
+extern int if_prefix_delete_ipv6 (struct interface *, struct connected *);
 #endif /* HAVE_IPV6 */
 
 #ifdef SOLARIS_IPV6
-int if_ioctl_ipv6(u_long, caddr_t);
-struct connected *if_lookup_linklocal( struct interface *);
+extern int if_ioctl_ipv6(u_long, caddr_t);
+extern struct connected *if_lookup_linklocal( struct interface *);
 
 #define AF_IOCTL(af, request, buffer) \
         ((af) == AF_INET? if_ioctl(request, buffer) : \
diff --git a/zebra/ipforward.h b/zebra/ipforward.h
index a772337..8a935c1 100644
--- a/zebra/ipforward.h
+++ b/zebra/ipforward.h
@@ -22,14 +22,14 @@
 #ifndef _ZEBRA_IPFORWARD_H
 #define _ZEBRA_IPFORWARD_H
 
-int ipforward ();
-int ipforward_on ();
-int ipforward_off ();
+extern int ipforward (void);
+extern int ipforward_on (void);
+extern int ipforward_off (void);
 
 #ifdef HAVE_IPV6
-int ipforward_ipv6 ();
-int ipforward_ipv6_on ();
-int ipforward_ipv6_off ();
+extern int ipforward_ipv6 (void);
+extern int ipforward_ipv6_on (void);
+extern int ipforward_ipv6_off (void);
 #endif /* HAVE_IPV6 */
 
 #endif /* _ZEBRA_IPFORWARD_H */
diff --git a/zebra/ipforward_proc.c b/zebra/ipforward_proc.c
index f83d88c..7384613 100644
--- a/zebra/ipforward_proc.c
+++ b/zebra/ipforward_proc.c
@@ -25,6 +25,8 @@
 #include "log.h"
 #include "privs.h"
 
+#include "zebra/ipforward.h"
+
 extern struct zebra_privs_t zserv_privs;
 
 char proc_net_snmp[] = "/proc/net/snmp";
@@ -39,7 +41,7 @@
 }
 
 int
-ipforward ()
+ipforward (void)
 {
   FILE *fp;
   int ipforwarding = 0;
@@ -72,7 +74,7 @@
 char proc_ipv4_forwarding[] = "/proc/sys/net/ipv4/ip_forward";
 
 int
-ipforward_on ()
+ipforward_on (void)
 {
   FILE *fp;
   
@@ -98,7 +100,7 @@
 }
 
 int
-ipforward_off ()
+ipforward_off (void)
 {
   FILE *fp;
 
@@ -127,7 +129,7 @@
 char proc_ipv6_forwarding[] = "/proc/sys/net/ipv6/conf/all/forwarding";
 
 int
-ipforward_ipv6 ()
+ipforward_ipv6 (void)
 {
   FILE *fp;
   char buf[5];
@@ -146,7 +148,7 @@
 }
 
 int
-ipforward_ipv6_on ()
+ipforward_ipv6_on (void)
 {
   FILE *fp;
 
@@ -172,7 +174,7 @@
 }
 
 int
-ipforward_ipv6_off ()
+ipforward_ipv6_off (void)
 {
   FILE *fp;
 
diff --git a/zebra/ipforward_solaris.c b/zebra/ipforward_solaris.c
index 3ad2c40..4aa1b79 100644
--- a/zebra/ipforward_solaris.c
+++ b/zebra/ipforward_solaris.c
@@ -25,6 +25,7 @@
 #include "prefix.h"
 
 #include "privs.h"
+#include "zebra/ipforward.h"
 
 /*
 ** Solaris should define IP_DEV_NAME in <inet/ip.h>, but we'll save
@@ -126,37 +127,37 @@
   return solaris_nd(ND_GET, parameter, 0);
 }
 int
-ipforward()
+ipforward(void)
 {
   return solaris_nd_get("ip_forwarding");
 }
 
 int
-ipforward_on ()
+ipforward_on (void)
 {
   (void) solaris_nd_set("ip_forwarding", 1);
   return ipforward();
 }
 
 int
-ipforward_off ()
+ipforward_off (void)
 {
   (void) solaris_nd_set("ip_forwarding", 0);
   return ipforward();
 }
 #ifdef HAVE_IPV6
-int ipforward_ipv6()
+int ipforward_ipv6(void)
 {
   return solaris_nd_get("ip6_forwarding");
 }
 int
-ipforward_ipv6_on ()
+ipforward_ipv6_on (void)
 {
   (void) solaris_nd_set("ip6_forwarding", 1);
   return ipforward_ipv6();
 }
 int
-ipforward_ipv6_off ()
+ipforward_ipv6_off (void)
 {
   (void) solaris_nd_set("ip6_forwarding", 0);
   return ipforward_ipv6();
diff --git a/zebra/ipforward_sysctl.c b/zebra/ipforward_sysctl.c
index a8d0d8c..185aee3 100644
--- a/zebra/ipforward_sysctl.c
+++ b/zebra/ipforward_sysctl.c
@@ -21,6 +21,7 @@
 
 #include <zebra.h>
 #include "privs.h"
+#include "zebra/ipforward.h"
 
 #ifdef NRL
 #include <netinet6/in6.h>
@@ -42,7 +43,7 @@
 };
 
 int
-ipforward ()
+ipforward (void)
 {
   size_t len;
   int ipforwarding = 0;
@@ -57,7 +58,7 @@
 }
 
 int
-ipforward_on ()
+ipforward_on (void)
 {
   size_t len;
   int ipforwarding = 1;
@@ -78,7 +79,7 @@
 }
 
 int
-ipforward_off ()
+ipforward_off (void)
 {
   size_t len;
   int ipforwarding = 0;
@@ -115,7 +116,7 @@
 }; 
 
 int
-ipforward_ipv6 ()
+ipforward_ipv6 (void)
 {
   size_t len;
   int ip6forwarding = 0;
@@ -136,7 +137,7 @@
 }
 
 int
-ipforward_ipv6_on ()
+ipforward_ipv6_on (void)
 {
   size_t len;
   int ip6forwarding = 1;
@@ -157,7 +158,7 @@
 }
 
 int
-ipforward_ipv6_off ()
+ipforward_ipv6_off (void)
 {
   size_t len;
   int ip6forwarding = 0;
diff --git a/zebra/main.c b/zebra/main.c
index 540bf31..acfde80 100644
--- a/zebra/main.c
+++ b/zebra/main.c
@@ -37,6 +37,7 @@
 #include "zebra/debug.h"
 #include "zebra/router-id.h"
 #include "zebra/irdp.h"
+#include "zebra/rtadv.h"
 
 /* Zebra instance */
 struct zebra_t zebrad =
@@ -149,7 +150,7 @@
 }
 
 /* SIGHUP handler. */
-void 
+static void 
 sighup (void)
 {
   zlog_info ("SIGHUP received");
@@ -159,7 +160,7 @@
 }
 
 /* SIGINT handler. */
-void
+static void
 sigint (void)
 {
   /* Decrared in rib.c */
@@ -177,7 +178,7 @@
 }
 
 /* SIGUSR1 handler. */
-void
+static void
 sigusr1 (void)
 {
   zlog_rotate (NULL);
@@ -215,8 +216,6 @@
   char *config_file = NULL;
   char *progname;
   struct thread thread;
-  void rib_weed_tables ();
-  void zebra_vty_init ();
 
   /* Set umask before anything for security */
   umask (0027);
diff --git a/zebra/redistribute.h b/zebra/redistribute.h
index 14b92b0..9e78dfd 100644
--- a/zebra/redistribute.h
+++ b/zebra/redistribute.h
@@ -26,25 +26,25 @@
 #include "table.h"
 #include "zserv.h"
 
-void zebra_redistribute_add (int, struct zserv *, int);
-void zebra_redistribute_delete (int, struct zserv *, int);
+extern void zebra_redistribute_add (int, struct zserv *, int);
+extern void zebra_redistribute_delete (int, struct zserv *, int);
 
-void zebra_redistribute_default_add (int, struct zserv *, int);
-void zebra_redistribute_default_delete (int, struct zserv *, int);
+extern void zebra_redistribute_default_add (int, struct zserv *, int);
+extern void zebra_redistribute_default_delete (int, struct zserv *, int);
 
-void redistribute_add (struct prefix *, struct rib *);
-void redistribute_delete (struct prefix *, struct rib *);
+extern void redistribute_add (struct prefix *, struct rib *);
+extern void redistribute_delete (struct prefix *, struct rib *);
 
-void zebra_interface_up_update (struct interface *);
-void zebra_interface_down_update (struct interface *);
+extern void zebra_interface_up_update (struct interface *);
+extern void zebra_interface_down_update (struct interface *);
 
-void zebra_interface_add_update (struct interface *);
-void zebra_interface_delete_update (struct interface *);
+extern void zebra_interface_add_update (struct interface *);
+extern void zebra_interface_delete_update (struct interface *);
 
-void zebra_interface_address_add_update (struct interface *,
-					 struct connected *);
-void zebra_interface_address_delete_update (struct interface *,
-					    struct connected *c);
+extern void zebra_interface_address_add_update (struct interface *,
+					 	struct connected *);
+extern void zebra_interface_address_delete_update (struct interface *,
+						   struct connected *c);
 
 #endif /* _ZEBRA_REDISTRIBUTE_H */
 
diff --git a/zebra/rib.h b/zebra/rib.h
index 1e6393e..dbd2a6b 100644
--- a/zebra/rib.h
+++ b/zebra/rib.h
@@ -201,70 +201,67 @@
   struct route_table *stable[AFI_MAX][SAFI_MAX];
 };
 
-struct nexthop *nexthop_ifindex_add (struct rib *, unsigned int);
-struct nexthop *nexthop_ifname_add (struct rib *, char *);
-struct nexthop *nexthop_blackhole_add (struct rib *);
-struct nexthop *nexthop_ipv4_add (struct rib *, struct in_addr *);
+extern struct nexthop *nexthop_ifindex_add (struct rib *, unsigned int);
+extern struct nexthop *nexthop_ifname_add (struct rib *, char *);
+extern struct nexthop *nexthop_blackhole_add (struct rib *);
+extern struct nexthop *nexthop_ipv4_add (struct rib *, struct in_addr *);
 #ifdef HAVE_IPV6
-struct nexthop *nexthop_ipv6_add (struct rib *, struct in6_addr *);
+extern struct nexthop *nexthop_ipv6_add (struct rib *, struct in6_addr *);
 #endif /* HAVE_IPV6 */
 
-struct vrf *vrf_lookup (u_int32_t);
-struct route_table *vrf_table (afi_t afi, safi_t safi, u_int32_t id);
-struct route_table *vrf_static_table (afi_t afi, safi_t safi, u_int32_t id);
+extern struct vrf *vrf_lookup (u_int32_t);
+extern struct route_table *vrf_table (afi_t afi, safi_t safi, u_int32_t id);
+extern struct route_table *vrf_static_table (afi_t afi, safi_t safi, u_int32_t id);
 
-int
-rib_add_ipv4 (int type, int flags, struct prefix_ipv4 *p, 
-	      struct in_addr *gate, unsigned int ifindex, u_int32_t vrf_id,
-	      u_int32_t, u_char);
+extern int rib_add_ipv4 (int type, int flags, struct prefix_ipv4 *p, 
+			 struct in_addr *gate, unsigned int ifindex, 
+			 u_int32_t vrf_id, u_int32_t, u_char);
 
-int
-rib_add_ipv4_multipath (struct prefix_ipv4 *, struct rib *);
+extern int rib_add_ipv4_multipath (struct prefix_ipv4 *, struct rib *);
 
-int
-rib_delete_ipv4 (int type, int flags, struct prefix_ipv4 *p,
-		 struct in_addr *gate, unsigned int ifindex, u_int32_t);
+extern int rib_delete_ipv4 (int type, int flags, struct prefix_ipv4 *p,
+		            struct in_addr *gate, unsigned int ifindex, 
+		            u_int32_t);
 
-struct rib *
-rib_match_ipv4 (struct in_addr);
+extern struct rib *rib_match_ipv4 (struct in_addr);
 
-struct rib *
-rib_lookup_ipv4 (struct prefix_ipv4 *);
+extern struct rib *rib_lookup_ipv4 (struct prefix_ipv4 *);
 
-void rib_update ();
-void rib_sweep_route ();
-void rib_close ();
-void rib_init ();
+extern void rib_update (void);
+extern void rib_weed_tables (void);
+extern void rib_sweep_route (void);
+extern void rib_close (void);
+extern void rib_init (void);
 
-int
+extern int
 static_add_ipv4 (struct prefix *p, struct in_addr *gate, const char *ifname,
        u_char flags, u_char distance, u_int32_t vrf_id);
 
-int
+extern int
 static_delete_ipv4 (struct prefix *p, struct in_addr *gate, const char *ifname,
 		    u_char distance, u_int32_t vrf_id);
 
 #ifdef HAVE_IPV6
-int
+extern int
 rib_add_ipv6 (int type, int flags, struct prefix_ipv6 *p,
 	      struct in6_addr *gate, unsigned int ifindex, u_int32_t vrf_id);
 
-int
+extern int
 rib_delete_ipv6 (int type, int flags, struct prefix_ipv6 *p,
 		 struct in6_addr *gate, unsigned int ifindex, u_int32_t vrf_id);
 
-struct rib *rib_lookup_ipv6 (struct in6_addr *);
+extern struct rib *rib_lookup_ipv6 (struct in6_addr *);
 
-struct rib *rib_match_ipv6 (struct in6_addr *);
+extern struct rib *rib_match_ipv6 (struct in6_addr *);
 
 extern struct route_table *rib_table_ipv6;
 
-int
+extern int
 static_add_ipv6 (struct prefix *p, u_char type, struct in6_addr *gate,
 		 const char *ifname, u_char flags, u_char distance,
 		 u_int32_t vrf_id);
 
-int
+extern int
 static_delete_ipv6 (struct prefix *p, u_char type, struct in6_addr *gate,
 		    const char *ifname, u_char distance, u_int32_t vrf_id);
 
diff --git a/zebra/router-id.c b/zebra/router-id.c
index 6194582..c73b65b 100644
--- a/zebra/router-id.c
+++ b/zebra/router-id.c
@@ -38,6 +38,7 @@
 #include "rib.h"
 
 #include "zebra/zserv.h"
+#include "zebra/router-id.h"
 
 static struct list rid_all_sorted_list;
 static struct list rid_lo_sorted_list;
@@ -228,7 +229,7 @@
   return CMD_SUCCESS;
 }
 
-int
+static int
 router_id_cmp (void *a, void *b)
 {
   unsigned int A, B;
diff --git a/zebra/rt.h b/zebra/rt.h
index faaddab..e902b21 100644
--- a/zebra/rt.h
+++ b/zebra/rt.h
@@ -23,17 +23,17 @@
 #ifndef _ZEBRA_RT_H
 #define _ZEBRA_RT_H
 
-int kernel_add_ipv4 (struct prefix *, struct rib *);
-int kernel_delete_ipv4 (struct prefix *, struct rib *);
-int kernel_add_route (struct prefix_ipv4 *, struct in_addr *, int, int);
-int kernel_address_add_ipv4 (struct interface *, struct connected *);
-int kernel_address_delete_ipv4 (struct interface *, struct connected *);
+extern int kernel_add_ipv4 (struct prefix *, struct rib *);
+extern int kernel_delete_ipv4 (struct prefix *, struct rib *);
+extern int kernel_add_route (struct prefix_ipv4 *, struct in_addr *, int, int);
+extern int kernel_address_add_ipv4 (struct interface *, struct connected *);
+extern int kernel_address_delete_ipv4 (struct interface *, struct connected *);
 
 #ifdef HAVE_IPV6
-int kernel_add_ipv6 (struct prefix *, struct rib *);
-int kernel_delete_ipv6 (struct prefix *, struct rib *);
-int kernel_delete_ipv6_old (struct prefix_ipv6 *dest, struct in6_addr *gate,
-			    unsigned int index, int flags, int table);
+extern int kernel_add_ipv6 (struct prefix *, struct rib *);
+extern int kernel_delete_ipv6 (struct prefix *, struct rib *);
+extern int kernel_delete_ipv6_old (struct prefix_ipv6 *dest, struct in6_addr *gate,
+			    	  unsigned int index, int flags, int table);
 
 #endif /* HAVE_IPV6 */
 
diff --git a/zebra/rt_ioctl.c b/zebra/rt_ioctl.c
index a8e9e52..f4997e2 100644
--- a/zebra/rt_ioctl.c
+++ b/zebra/rt_ioctl.c
@@ -26,19 +26,21 @@
 #include "log.h"
 #include "if.h"
 
+#include "zebra/zserv.h"
 #include "zebra/rib.h"
 #include "zebra/debug.h"
+#include "zebra/rt.h"
 
 /* Initialize of kernel interface.  There is no kernel communication
    support under ioctl().  So this is dummy stub function. */
 void
-kernel_init ()
+kernel_init (void)
 {
   return;
 }
 
 /* Dummy function of routing socket. */
-void
+static void
 kernel_read (int sock)
 {
   return;
@@ -160,7 +162,7 @@
 }
 
 /* Interface to ioctl route message. */
-int
+static int
 kernel_ioctl_ipv4 (u_long cmd, struct prefix *p, struct rib *rib, int family)
 {
   int ret;
@@ -360,7 +362,7 @@
 #include <linux/ipv6_route.h>
 #endif
 
-int
+static int
 kernel_ioctl_ipv6 (u_long type, struct prefix_ipv6 *dest, struct in6_addr *gate,
 		   int index, int flags)
 {
@@ -421,7 +423,7 @@
   return ret;
 }
 
-int
+static int
 kernel_ioctl_ipv6_multipath (u_long cmd, struct prefix *p, struct rib *rib,
 			     int family)
 {
@@ -551,7 +553,7 @@
 /* Delete IPv6 route from the kernel. */
 int
 kernel_delete_ipv6_old (struct prefix_ipv6 *dest, struct in6_addr *gate,
-		    int index, int flags, int table)
+		    unsigned int index, int flags, int table)
 {
   return kernel_ioctl_ipv6 (SIOCDELRT, dest, gate, index, flags);
 }
diff --git a/zebra/rtadv.c b/zebra/rtadv.c
index 3e22398..83c3e77 100644
--- a/zebra/rtadv.c
+++ b/zebra/rtadv.c
@@ -62,10 +62,10 @@
 enum rtadv_event {RTADV_START, RTADV_STOP, RTADV_TIMER, 
 		  RTADV_TIMER_MSEC, RTADV_READ};
 
-void rtadv_event (enum rtadv_event, int);
+static void rtadv_event (enum rtadv_event, int);
 
-int if_join_all_router (int, struct interface *);
-int if_leave_all_router (int, struct interface *);
+static int if_join_all_router (int, struct interface *);
+static int if_leave_all_router (int, struct interface *);
 
 /* Structure which hold status of router advertisement. */
 struct rtadv
@@ -81,8 +81,8 @@
 
 struct rtadv *rtadv = NULL;
 
-struct rtadv *
-rtadv_new ()
+static struct rtadv *
+rtadv_new (void)
 {
   struct rtadv *new;
   new = XMALLOC (MTYPE_TMP, sizeof (struct rtadv));
@@ -90,13 +90,13 @@
   return new;
 }
 
-void
+static void
 rtadv_free (struct rtadv *rtadv)
 {
   XFREE (MTYPE_TMP, rtadv);
 }
 
-int
+static int
 rtadv_recv_packet (int sock, u_char *buf, int buflen,
 		   struct sockaddr_in6 *from, unsigned int *ifindex,
 		   int *hoplimit)
@@ -149,7 +149,7 @@
 #define RTADV_MSG_SIZE 4096
 
 /* Send router advertisement packet. */
-void
+static void
 rtadv_send_packet (int sock, struct interface *ifp)
 {
   struct msghdr msg;
@@ -333,7 +333,7 @@
     }
 }
 
-int
+static int
 rtadv_timer (struct thread *thread)
 {
   struct listnode *node, *nnode;
@@ -373,7 +373,7 @@
   return 0;
 }
 
-void
+static void
 rtadv_process_solicit (struct interface *ifp)
 {
   zlog_info ("Router solicitation received on %s", ifp->name);
@@ -381,13 +381,13 @@
   rtadv_send_packet (rtadv->sock, ifp);
 }
 
-void
-rtadv_process_advert ()
+static void
+rtadv_process_advert (void)
 {
   zlog_info ("Router advertisement received");
 }
 
-void
+static void
 rtadv_process_packet (u_char *buf, unsigned int len, unsigned int ifindex, int hoplimit)
 {
   struct icmp6_hdr *icmph;
@@ -444,7 +444,7 @@
   return;
 }
 
-int
+static int
 rtadv_read (struct thread *thread)
 {
   int sock;
@@ -473,7 +473,7 @@
   return 0;
 }
 
-int
+static int
 rtadv_make_socket (void)
 {
   int sock;
@@ -526,7 +526,7 @@
   return sock;
 }
 
-struct rtadv_prefix *
+static struct rtadv_prefix *
 rtadv_prefix_new ()
 {
   struct rtadv_prefix *new;
@@ -537,13 +537,13 @@
   return new;
 }
 
-void
+static void
 rtadv_prefix_free (struct rtadv_prefix *rtadv_prefix)
 {
   XFREE (MTYPE_RTADV_PREFIX, rtadv_prefix);
 }
 
-struct rtadv_prefix *
+static struct rtadv_prefix *
 rtadv_prefix_lookup (struct list *rplist, struct prefix *p)
 {
   struct listnode *node;
@@ -555,7 +555,7 @@
   return NULL;
 }
 
-struct rtadv_prefix *
+static struct rtadv_prefix *
 rtadv_prefix_get (struct list *rplist, struct prefix *p)
 {
   struct rtadv_prefix *rprefix;
@@ -571,7 +571,7 @@
   return rprefix;
 }
 
-void
+static void
 rtadv_prefix_set (struct zebra_if *zif, struct rtadv_prefix *rp)
 {
   struct rtadv_prefix *rprefix;
@@ -586,7 +586,7 @@
   rprefix->AdvRouterAddressFlag = rp->AdvRouterAddressFlag;
 }
 
-int
+static int
 rtadv_prefix_reset (struct zebra_if *zif, struct rtadv_prefix *rp)
 {
   struct rtadv_prefix *rprefix;
@@ -1448,7 +1448,7 @@
 }
 
 
-void
+static void
 rtadv_event (enum rtadv_event event, int val)
 {
   switch (event)
@@ -1493,7 +1493,7 @@
 }
 
 void
-rtadv_init ()
+rtadv_init (void)
 {
   int sock;
 
@@ -1542,7 +1542,7 @@
   install_element (INTERFACE_NODE, &no_ipv6_nd_prefix_cmd);
 }
 
-int
+static int
 if_join_all_router (int sock, struct interface *ifp)
 {
   int ret;
@@ -1563,7 +1563,7 @@
   return 0;
 }
 
-int
+static int
 if_leave_all_router (int sock, struct interface *ifp)
 {
   int ret;
@@ -1586,7 +1586,7 @@
 
 #else
 void
-rtadv_init ()
+rtadv_init (void)
 {
   /* Empty.*/;
 }
diff --git a/zebra/rtadv.h b/zebra/rtadv.h
index d52c2c0..c2855a3 100644
--- a/zebra/rtadv.h
+++ b/zebra/rtadv.h
@@ -52,7 +52,8 @@
 
 };
 
-void rtadv_config_write (struct vty *, struct interface *);
+extern void rtadv_config_write (struct vty *, struct interface *);
+extern void rtadv_init (void);
 
 /* draft-ietf-mip6-mipext-advapi-03 */
 
diff --git a/zebra/rtread_proc.c b/zebra/rtread_proc.c
index 491fc98..ab3891a 100644
--- a/zebra/rtread_proc.c
+++ b/zebra/rtread_proc.c
@@ -27,6 +27,9 @@
 #include "if.h"
 #include "rib.h"
 
+#include "zebra/zserv.h"
+#include "zebra/rt.h"
+
 /* Proc file system to read IPv4 routing table. */
 #ifndef _PATH_PROCNET_ROUTE
 #define _PATH_PROCNET_ROUTE      "/proc/net/route"
@@ -44,8 +47,8 @@
 #define RT_BUFSIZ 1024
 
 /* Kernel routing table read up by /proc filesystem. */
-int
-proc_route_read ()
+static int
+proc_route_read (void)
 {
   FILE *fp;
   char buf[RT_BUFSIZ];
@@ -101,7 +104,7 @@
 }
 
 #ifdef HAVE_IPV6
-int
+static int
 proc_ipv6_route_read ()
 {
   FILE *fp;
@@ -162,7 +165,7 @@
 #endif /* HAVE_IPV6 */
 
 void
-route_read ()
+route_read (void)
 {
   proc_route_read ();
 #ifdef HAVE_IPV6
diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c
index a8aaef3..da6a3a8 100644
--- a/zebra/zebra_rib.c
+++ b/zebra/zebra_rib.c
@@ -71,7 +71,7 @@
 vector vrf_vector;
 
 /* Allocate new VRF.  */
-struct vrf *
+static struct vrf *
 vrf_alloc (const char *name)
 {
   struct vrf *vrf;
@@ -92,7 +92,7 @@
 }
 
 /* Free VRF.  */
-void
+static void
 vrf_free (struct vrf *vrf)
 {
   if (vrf->name)
@@ -108,7 +108,7 @@
 }
 
 /* Lookup VRF by name.  */
-struct vrf *
+static struct vrf *
 vrf_lookup_by_name (char *name)
 {
   unsigned int i;
@@ -122,8 +122,8 @@
 }
 
 /* Initialize VRF.  */
-void
-vrf_init ()
+static void
+vrf_init (void)
 {
   struct vrf *default_table;
 
@@ -164,7 +164,7 @@
 }
 
 /* Add nexthop to the end of the list.  */
-void
+static void
 nexthop_add (struct rib *rib, struct nexthop *nexthop)
 {
   struct nexthop *last;
@@ -181,7 +181,7 @@
 }
 
 /* Delete specified nexthop from the list. */
-void
+static void
 nexthop_delete (struct rib *rib, struct nexthop *nexthop)
 {
   if (nexthop->next)
@@ -194,7 +194,7 @@
 }
 
 /* Free nexthop. */
-void
+static void
 nexthop_free (struct nexthop *nexthop)
 {
   if (nexthop->ifname)
@@ -247,7 +247,7 @@
   return nexthop;
 }
 
-struct nexthop *
+static struct nexthop *
 nexthop_ipv4_ifindex_add (struct rib *rib, struct in_addr *ipv4, 
 			  unsigned int ifindex)
 {
@@ -280,7 +280,7 @@
   return nexthop;
 }
 
-struct nexthop *
+static struct nexthop *
 nexthop_ipv6_ifname_add (struct rib *rib, struct in6_addr *ipv6,
 			 char *ifname)
 {
@@ -297,7 +297,7 @@
   return nexthop;
 }
 
-struct nexthop *
+static struct nexthop *
 nexthop_ipv6_ifindex_add (struct rib *rib, struct in6_addr *ipv6,
 			  unsigned int ifindex)
 {
@@ -332,7 +332,7 @@
 
 /* If force flag is not set, do not modify falgs at all for uninstall
    the route from FIB. */
-int
+static int
 nexthop_active_ipv4 (struct rib *rib, struct nexthop *nexthop, int set,
 		     struct route_node *top)
 {
@@ -429,7 +429,7 @@
 #ifdef HAVE_IPV6
 /* If force flag is not set, do not modify falgs at all for uninstall
    the route from FIB. */
-int
+static int
 nexthop_active_ipv6 (struct rib *rib, struct nexthop *nexthop, int set,
 		     struct route_node *top)
 {
@@ -685,7 +685,7 @@
 }
 #endif /* HAVE_IPV6 */
 
-int
+static int
 nexthop_active_check (struct route_node *rn, struct rib *rib,
 		      struct nexthop *nexthop, int set)
 {
@@ -757,7 +757,7 @@
   return CHECK_FLAG (nexthop->flags, NEXTHOP_FLAG_ACTIVE);
 }
 
-int
+static int
 nexthop_active_update (struct route_node *rn, struct rib *rib, int set)
 {
   struct nexthop *nexthop;
@@ -816,7 +816,7 @@
   return rib;
 }
 
-void
+static void
 rib_install_kernel (struct route_node *rn, struct rib *rib)
 {
   int ret = 0;
@@ -842,7 +842,7 @@
 }
 
 /* Uninstall the route from kernel. */
-int
+static int
 rib_uninstall_kernel (struct route_node *rn, struct rib *rib)
 {
   int ret = 0;
@@ -867,7 +867,7 @@
 }
 
 /* Uninstall the route from kernel. */
-void
+static void
 rib_uninstall (struct route_node *rn, struct rib *rib)
 {
   if (CHECK_FLAG (rib->flags, ZEBRA_FLAG_SELECTED))
@@ -880,7 +880,7 @@
 }
 
 /* Core function for processing routing information base. */
-wq_item_status
+static wq_item_status
 rib_process (struct zebra_queue_node_t *qnode)
 {
   struct rib *rib;
@@ -999,7 +999,7 @@
 }
 
 /* Add work queue item to work queue and schedule processing */
-void
+static void
 rib_queue_add_qnode (struct zebra_t *zebra, struct zebra_queue_node_t *qnode)
 {
   route_lock_node (qnode->node);
@@ -1025,7 +1025,7 @@
 }
 
 /* Add route node and rib to work queue and schedule processing */
-void
+static void
 rib_queue_add (struct zebra_t *zebra, struct route_node *rn, struct rib *del)
 {
  struct zebra_queue_node_t *qnode;
@@ -1051,7 +1051,7 @@
 }
 
 /* free zebra_queue_node_t */
-void
+static void
 rib_queue_qnode_del (struct zebra_queue_node_t *qnode)
 {
   route_unlock_node (qnode->node);
@@ -1063,7 +1063,7 @@
 }
 
 /* initialise zebra rib work queue */
-void
+static void
 rib_queue_init (struct zebra_t *zebra)
 {
   assert (zebra);
@@ -1088,7 +1088,7 @@
 }
 
 /* Add RIB to head of the route node. */
-void
+static void
 rib_addnode (struct route_node *rn, struct rib *rib)
 {
   struct rib *head;
@@ -1105,7 +1105,7 @@
   rn->info = rib;
 }
 
-void
+static void
 rib_delnode (struct route_node *rn, struct rib *rib)
 {
   assert (rn && rib);
@@ -1418,7 +1418,7 @@
 }
 
 /* Install static route into rib. */
-void
+static void
 static_install_ipv4 (struct prefix *p, struct static_ipv4 *si)
 {
   struct rib *rib;
@@ -1489,7 +1489,7 @@
     }
 }
 
-int
+static int
 static_ipv4_nexthop_same (struct nexthop *nexthop, struct static_ipv4 *si)
 {
   if (nexthop->type == NEXTHOP_TYPE_IPV4
@@ -1507,7 +1507,7 @@
 }
 
 /* Uninstall static route from RIB. */
-void
+static void
 static_uninstall_ipv4 (struct prefix *p, struct static_ipv4 *si)
 {
   struct route_node *rn;
@@ -1725,7 +1725,7 @@
 
 
 #ifdef HAVE_IPV6
-int
+static int
 rib_bogus_ipv6 (int type, struct prefix_ipv6 *p,
 		struct in6_addr *gate, unsigned int ifindex, int table)
 {
@@ -1967,7 +1967,7 @@
 }
 
 /* Install static route into rib. */
-void
+static void
 static_install_ipv6 (struct prefix *p, struct static_ipv6 *si)
 {
   struct rib *rib;
@@ -2039,7 +2039,7 @@
     }
 }
 
-int
+static int
 static_ipv6_nexthop_same (struct nexthop *nexthop, struct static_ipv6 *si)
 {
   if (nexthop->type == NEXTHOP_TYPE_IPV6
@@ -2058,7 +2058,7 @@
   return 0;;
 }
 
-void
+static void
 static_uninstall_ipv6 (struct prefix *p, struct static_ipv6 *si)
 {
   struct route_table *table;
@@ -2250,7 +2250,7 @@
 
 /* RIB update function. */
 void
-rib_update ()
+rib_update (void)
 {
   struct route_node *rn;
   struct route_table *table;
@@ -2269,21 +2269,21 @@
 }
 
 /* Interface goes up. */
-void
+static void
 rib_if_up (struct interface *ifp)
 {
   rib_update ();
 }
 
 /* Interface goes down. */
-void
+static void
 rib_if_down (struct interface *ifp)
 {
   rib_update ();
 }
 
 /* Remove all routes which comes from non main table.  */
-void
+static void
 rib_weed_table (struct route_table *table)
 {
   struct route_node *rn;
@@ -2304,14 +2304,14 @@
 
 /* Delete all routes from non main table. */
 void
-rib_weed_tables ()
+rib_weed_tables (void)
 {
   rib_weed_table (vrf_table (AFI_IP, SAFI_UNICAST, 0));
   rib_weed_table (vrf_table (AFI_IP6, SAFI_UNICAST, 0));
 }
 
 /* Delete self installed routes after zebra is relaunched.  */
-void
+static void
 rib_sweep_table (struct route_table *table)
 {
   struct route_node *rn;
@@ -2337,14 +2337,14 @@
 
 /* Sweep all RIB tables.  */
 void
-rib_sweep_route ()
+rib_sweep_route (void)
 {
   rib_sweep_table (vrf_table (AFI_IP, SAFI_UNICAST, 0));
   rib_sweep_table (vrf_table (AFI_IP6, SAFI_UNICAST, 0));
 }
 
 /* Close RIB and clean up kernel routes. */
-void
+static void
 rib_close_table (struct route_table *table)
 {
   struct route_node *rn;
@@ -2360,7 +2360,7 @@
 
 /* Close all RIB tables.  */
 void
-rib_close ()
+rib_close (void)
 {
   rib_close_table (vrf_table (AFI_IP, SAFI_UNICAST, 0));
   rib_close_table (vrf_table (AFI_IP6, SAFI_UNICAST, 0));
@@ -2368,7 +2368,7 @@
 
 /* Routing information base initialize. */
 void
-rib_init ()
+rib_init (void)
 {
   rib_queue_init (&zebrad);
   /* VRF initialization.  */
diff --git a/zebra/zebra_vty.c b/zebra/zebra_vty.c
index 9830e5b..ad91d95 100644
--- a/zebra/zebra_vty.c
+++ b/zebra/zebra_vty.c
@@ -27,8 +27,10 @@
 #include "table.h"
 #include "rib.h"
 
+#include "zebra/zserv.h"
+
 /* Return route type string for VTY output.  */
-const char *
+static const char *
 route_type_str (u_char type)
 {
   switch (type)
@@ -59,7 +61,7 @@
 };
 
 /* Return route type string for VTY output.  */
-char
+static const char
 route_type_char (u_char type)
 {
   switch (type)
@@ -90,7 +92,7 @@
 };
 
 /* General fucntion for static route. */
-int
+static int
 zebra_static_ipv4 (struct vty *vty, int add_cmd, const char *dest_str,
 		   const char *mask_str, const char *gate_str,
 		   const char *flag_str, const char *distance_str)
@@ -535,7 +537,7 @@
 }
 
 /* New RIB.  Detailed information for IPv4 route. */
-void
+static void
 vty_show_ip_route_detail (struct vty *vty, struct route_node *rn)
 {
   struct rib *rib;
@@ -641,7 +643,7 @@
     }
 }
 
-void
+static void
 vty_show_ip_route (struct vty *vty, struct route_node *rn, struct rib *rib)
 {
   struct nexthop *nexthop;
@@ -1008,7 +1010,7 @@
   return CMD_SUCCESS;
 }
 
-void
+static void
 zebra_show_ip_route (struct vty *vty, struct vrf *vrf)
 {
   vty_out (vty, "IP routing table name is %s(%d)%s",
@@ -1059,7 +1061,7 @@
 }
 
 /* Write IPv4 static route configuration. */
-int
+static int
 static_config_ipv4 (struct vty *vty)
 {
   struct route_node *rn;
@@ -1115,7 +1117,7 @@
 
 #ifdef HAVE_IPV6
 /* General fucntion for IPv6 static route. */
-int
+static int
 static_ipv6_func (struct vty *vty, int add_cmd, const char *dest_str,
 		  const char *gate_str, const char *ifname,
 		  const char *flag_str, const char *distance_str)
@@ -1420,7 +1422,7 @@
 }
 
 /* New RIB.  Detailed information for IPv6 route. */
-void
+static void
 vty_show_ipv6_route_detail (struct vty *vty, struct route_node *rn)
 {
   struct rib *rib;
@@ -1535,7 +1537,7 @@
     }
 }
 
-void
+static void
 vty_show_ipv6_route (struct vty *vty, struct route_node *rn,
 		     struct rib *rib)
 {
@@ -1867,7 +1869,7 @@
 
 
 /* Write IPv6 static route configuration. */
-int
+static int
 static_config_ipv6 (struct vty *vty)
 {
   struct route_node *rn;
@@ -1921,7 +1923,7 @@
 #endif /* HAVE_IPV6 */
 
 /* Static ip route configuration write function. */
-int
+static int
 zebra_ip_config (struct vty *vty)
 {
   int write = 0;
@@ -1939,7 +1941,7 @@
 
 /* Route VTY.  */
 void
-zebra_vty_route_init ()
+zebra_vty_init (void)
 {
   install_node (&ip_node, zebra_ip_config);
 
@@ -2014,9 +2016,3 @@
   install_element (ENABLE_NODE, &show_ipv6_route_prefix_longer_cmd);
 #endif /* HAVE_IPV6 */
 }
-
-void
-zebra_vty_init ()
-{
-  zebra_vty_route_init ();
-}
diff --git a/zebra/zserv.c b/zebra/zserv.c
index 17e7888..f08f7ce 100644
--- a/zebra/zserv.c
+++ b/zebra/zserv.c
@@ -1729,7 +1729,7 @@
 
 /* Initialisation of zebra and installation of commands. */
 void
-zebra_init ()
+zebra_init (void)
 {
   /* Client list init. */
   zebrad.client_list = list_new ();
diff --git a/zebra/zserv.h b/zebra/zserv.h
index 6627015..8e67c60 100644
--- a/zebra/zserv.h
+++ b/zebra/zserv.h
@@ -85,25 +85,26 @@
 #define PSIZE(a) (((a) + 7) / (8))
 
 /* Prototypes. */
-void zebra_init ();
-void zebra_if_init ();
-void hostinfo_get ();
-void rib_init ();
-void interface_list ();
-void kernel_init ();
-void route_read ();
-void rtadv_init ();
-void zebra_snmp_init ();
+extern void zebra_init (void);
+extern void zebra_if_init (void);
+extern void hostinfo_get (void);
+extern void rib_init (void);
+extern void interface_list (void);
+extern void kernel_init (void);
+extern void route_read (void);
+extern void zebra_snmp_init (void);
+extern void zebra_vty_init (void);
 
-int zsend_interface_add (struct zserv *, struct interface *);
+extern int zsend_interface_add (struct zserv *, struct interface *);
 #if (defined(RTM_IFANNOUNCE) || defined(HAVE_NETLINK))
-int zsend_interface_delete (struct zserv *, struct interface *);
+extern int zsend_interface_delete (struct zserv *, struct interface *);
 #endif
-int zsend_interface_address (int, struct zserv *, struct interface *,
-                             struct connected *);
-int zsend_interface_update (int, struct zserv *, struct interface *);
-int zsend_route_multipath (int, struct zserv *, struct prefix *, struct rib *);
-int zsend_router_id_update(struct zserv *, struct prefix *);
+extern int zsend_interface_address (int, struct zserv *, struct interface *,
+                                    struct connected *);
+extern int zsend_interface_update (int, struct zserv *, struct interface *);
+extern int zsend_route_multipath (int, struct zserv *, struct prefix *, 
+                                  struct rib *);
+extern int zsend_router_id_update(struct zserv *, struct prefix *);
 
 extern pid_t pid;
 extern pid_t old_pid;
