zebra: deal with irdp compile warnings

* zebra/irdp.h
  * irdp_send_thread(): move prototype to common header file
  * irdp_advert_off(): idem
  * process_solicit(): idem
  * irdp_read_raw(): idem
  * send_packet(): idem
* zebra/irdp_interface.c
  * inet_2a(): move function to where it is used
  * in_cksum(): lib/checksum.h already provides prototype
  * irdp_send_thread(): prototype moved away
  * inet_2a(): idem
  * irdp_advert_off(): idem
  * b1, b2, b3, b4: get rid of global buffers for inet_2a()
  * if_group(): add local buffer for inet_2a()
  * if_add_group(): idem
  * if_drop_group(): idem
  * irdp_config_write(): idem
  * Adv_new(): make static
* zebra/irdp_main.c
  * irdp_read_raw(): prototype moved away
  * send_packet(): idem
  * in_cksum(): lib/checksum.h already provides prototype
  * inet_2a(): function moved to irdp_interface.c
* zebra/irdp_packet.c
  * b1, b2, b3, b4: get rid of global buffers for inet_2a()
  * in_cksum(): lib/checksum.h already provides prototype
  * process_solicit(): prototype moved away
  * irdp_read_raw(): fix uninitialized variable
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);