diff --git a/zebra/irdp.h b/zebra/irdp.h
index 1f0c1ec..9ce55e5 100644
--- a/zebra/irdp.h
+++ b/zebra/irdp.h
@@ -146,5 +146,12 @@
 extern int irdp_sock_init(void);
 extern void irdp_finish(void);
 extern void irdp_config_write (struct vty *, struct interface *);
+extern int irdp_send_thread(struct thread *t_advert);
+extern void irdp_advert_off(struct interface *ifp);
+extern void process_solicit (struct interface *ifp);
+extern int irdp_read_raw(struct thread *r);
+extern void send_packet(struct interface *ifp, struct stream *s,
+			u_int32_t dst, struct prefix *p, u_int32_t ttl);
+
 
 #endif /* _IRDP_H */
diff --git a/zebra/irdp_interface.c b/zebra/irdp_interface.c
index d982c23..8742b62 100644
--- a/zebra/irdp_interface.c
+++ b/zebra/irdp_interface.c
@@ -65,14 +65,19 @@
 /* Master of threads. */
 extern struct zebra_t zebrad;
 
-int in_cksum (void *ptr, int nbytes);
 extern int irdp_sock;
-int irdp_send_thread(struct thread *t_advert);
-char *inet_2a(u_int32_t a, char *b);
-void irdp_advert_off(struct interface *ifp);
 
+static const char *
+inet_2a(u_int32_t a, char *b)
+{
+  sprintf(b, "%u.%u.%u.%u",
+          (a    ) & 0xFF,
+          (a>> 8) & 0xFF,
+          (a>>16) & 0xFF,
+          (a>>24) & 0xFF);
+  return  b;
+}
 
-char b1[16], b2[16], b3[16], b4[16];  /* For inet_2a */
 
 static struct prefix *
 irdp_get_prefix(struct interface *ifp)
@@ -98,6 +103,7 @@
   struct ip_mreq m;
   struct prefix *p;
   int ret;
+  char b1[INET_ADDRSTRLEN];
 
   zi = ifp->info;
 
@@ -117,8 +123,8 @@
   if (ret < 0)
     zlog_warn ("IRDP: %s can't setsockopt %s: %s",
 	       add_leave == IP_ADD_MEMBERSHIP? "join group":"leave group", 
-               inet_2a(group, b1),
-               safe_strerror (errno));
+	       inet_2a(group, b1),
+	       safe_strerror (errno));
 
   return ret;
 }
@@ -129,6 +135,7 @@
   struct zebra_if *zi= ifp->info;
   struct irdp_interface *irdp = &zi->irdp;
   int ret;
+  char b1[INET_ADDRSTRLEN];
 
   ret = if_group (ifp, irdp_sock, INADDR_ALLRTRS_GROUP, IP_ADD_MEMBERSHIP);
   if (ret < 0) {
@@ -148,6 +155,7 @@
   struct zebra_if *zi= ifp->info;
   struct irdp_interface *irdp = &zi->irdp;
   int ret;
+  char b1[INET_ADDRSTRLEN];
 
   ret = if_group (ifp, irdp_sock, INADDR_ALLRTRS_GROUP, IP_DROP_MEMBERSHIP);
   if (ret < 0)
@@ -173,7 +181,7 @@
 }
 
 
-struct Adv *Adv_new (void)
+static struct Adv *Adv_new (void)
 {
   return XCALLOC (MTYPE_TMP, sizeof (struct Adv));
 }
@@ -338,6 +346,7 @@
   struct irdp_interface *irdp=&zi->irdp;
   struct Adv *adv;
   struct listnode *node;
+  char b1[INET_ADDRSTRLEN];
 
   if(irdp->flags & IF_ACTIVE || irdp->flags & IF_SHUTDOWN) {
 
diff --git a/zebra/irdp_main.c b/zebra/irdp_main.c
index 5510669..c297979 100644
--- a/zebra/irdp_main.c
+++ b/zebra/irdp_main.c
@@ -60,6 +60,7 @@
 #include "zebra/irdp.h"
 #include <netinet/ip_icmp.h>
 
+#include "checksum.h"
 #include "if.h"
 #include "sockunion.h"
 #include "log.h"
@@ -75,25 +76,6 @@
 /* Timer interval of irdp. */
 int irdp_timer_interval = IRDP_DEFAULT_INTERVAL;
 
-int irdp_read_raw(struct thread *r);
-int in_cksum (void *ptr, int nbytes);
-void send_packet(struct interface *ifp, 
-		 struct stream *s,
-		 u_int32_t dst,
-		 struct prefix *p,
-		 u_int32_t ttl);
-
-char *
-inet_2a(u_int32_t a, char *b)
-{
-  sprintf(b, "%u.%u.%u.%u", 
-          (a    ) & 0xFF,
-          (a>> 8) & 0xFF, 
-          (a>>16) & 0xFF, 
-          (a>>24) & 0xFF);
-  return  b;
-}
-
 int
 irdp_sock_init (void)
 {
diff --git a/zebra/irdp_packet.c b/zebra/irdp_packet.c
index 6003837..28dc171 100644
--- a/zebra/irdp_packet.c
+++ b/zebra/irdp_packet.c
@@ -59,6 +59,7 @@
 #include "zebra/irdp.h"
 #include <netinet/ip_icmp.h>
 #include "if.h"
+#include "checksum.h"
 #include "sockunion.h"
 #include "log.h"
 #include "sockopt.h"
@@ -67,12 +68,9 @@
 /* GLOBAL VARS */
 
 int irdp_sock = -1;
-char b1[16], b2[16], b3[16], b4[16];  /* For inet_2a */
 
 extern struct zebra_t zebrad;
 extern struct thread *t_irdp_raw;
-int in_cksum (void *ptr, int nbytes);
-void process_solicit (struct interface *ifp);
 
 static void
 parse_irdp_packet(char *p, 
@@ -231,7 +229,7 @@
   struct zebra_if *zi;
   struct irdp_interface *irdp;
   char buf[IRDP_RX_BUF];
-  int ret, ifindex;
+  int ret, ifindex = 0;
   
   int irdp_sock = THREAD_FD (r);
   t_irdp_raw = thread_add_read (zebrad.master, irdp_read_raw, NULL, irdp_sock);
