diff --git a/zebra/ChangeLog b/zebra/ChangeLog
index b121b44..718de62 100644
--- a/zebra/ChangeLog
+++ b/zebra/ChangeLog
@@ -1,3 +1,15 @@
+2004-07-23 Sowmini Varadhan <Sowmini.Varadhan@Sun.COM>
+
+        * if_ioctl_solaris.c: HAVE_IPV6 ifdef fixups
+        * zserv.c: ditto
+        * ioctl_solaris.c: ditto.
+        * interface.c: cast for LLADDR
+        * interface.h: Add guards, include redistribute.h and remove
+          extraneous definitions of zebra_interface_{up,down}_update
+        * ioctl.h: Add AF_IOCTL define for non SOLARIS_IPV6
+        * redistribute.h: include dependent header, zserv.h
+        * zserv.h: include dependent header, rib.h
+
 2004-07-23 Paul Jakma <paul@dishone.st>
 
 	* irdp_main.c: use setsockopt_pktinfo_ipv4
diff --git a/zebra/if_ioctl_solaris.c b/zebra/if_ioctl_solaris.c
index 9441abe..c05883c 100644
--- a/zebra/if_ioctl_solaris.c
+++ b/zebra/if_ioctl_solaris.c
@@ -137,11 +137,22 @@
   for (n = 0; n < lifconf.lifc_len; n += sizeof (struct lifreq))
     {
       ifp = if_get_by_name (lifreq->lifr_name);
+
       if (lifreq->lifr_addr.ss_family == AF_INET)
         ifp->flags |= IFF_IPV4;
+
       if (lifreq->lifr_addr.ss_family == AF_INET6)
-        ifp->flags |= IFF_IPV6;
+        {
+#ifdef HAVE_IPV6
+          ifp->flags |= IFF_IPV6;
+#else
+          lifreq++;
+          continue;
+#endif /* HAVE_IPV6 */
+        }
+        
       if_add_update (ifp);
+
       interface_info_ioctl (ifp);
       if_get_addr (ifp, (struct sockaddr *) &lifreq->lifr_addr);
       lifreq++;
@@ -265,7 +276,8 @@
           dest_pnt = (char *) &SIN (&dest)->sin_addr;
         }
     }
-  else
+#ifdef HAVE_IPV6
+  else if (af == AF_INET6)
     {
       if (ifp->flags & IFF_POINTOPOINT)
         {
@@ -285,15 +297,17 @@
             }
         }
     }
-
+#endif /* HAVE_IPV6 */
 
   /* Set address to the interface. */
   if (af == AF_INET)
     connected_add_ipv4 (ifp, 0, &SIN (addr)->sin_addr, prefixlen,
                         (struct in_addr *) dest_pnt, NULL);
-  else
+#ifdef HAVE_IPV6
+  else if (af == AF_INET6)
     connected_add_ipv6 (ifp, &SIN6 (addr)->sin6_addr, prefixlen,
                         (struct in6_addr *) dest_pnt);
+#endif /* HAVE_IPV6 */
 
   return 0;
 }
@@ -319,6 +333,7 @@
 struct connected *
 if_lookup_linklocal (struct interface *ifp)
 {
+#ifdef HAVE_IPV6
   listnode node;
   struct connected *ifc;
 
@@ -333,5 +348,7 @@
           (IN6_IS_ADDR_LINKLOCAL (&ifc->address->u.prefix6)))
         return ifc;
     }
+#endif /* HAVE_IPV6 */
+
   return NULL;
 }
diff --git a/zebra/interface.c b/zebra/interface.c
index 3a7a591..bf84a69 100644
--- a/zebra/interface.c
+++ b/zebra/interface.c
@@ -543,8 +543,8 @@
       u_char *ptr;
 
       vty_out (vty, "  HWaddr: ");
-      for (i = 0, ptr = LLADDR (sdl); i < sdl->sdl_alen; i++, ptr++)
-	vty_out (vty, "%s%02x", i == 0 ? "" : ":", *ptr);
+      for (i = 0, ptr = (u_char *)LLADDR (sdl); i < sdl->sdl_alen; i++, ptr++)
+        vty_out (vty, "%s%02x", i == 0 ? "" : ":", *ptr);
       vty_out (vty, "%s", VTY_NEWLINE);
     }
 #else
diff --git a/zebra/interface.h b/zebra/interface.h
index c1f9f71..88049b4 100644
--- a/zebra/interface.h
+++ b/zebra/interface.h
@@ -19,6 +19,11 @@
  * 02111-1307, USA.  
  */
 
+#ifndef _ZEBRA_INTERFACE_H
+#define _ZEBRA_INTERFACE_H
+
+#include "redistribute.h"
+
 #ifdef HAVE_IRDP
 #include "zebra/irdp.h"
 #endif
@@ -169,8 +174,6 @@
 void if_up (struct interface *);
 void if_down (struct interface *);
 void if_refresh (struct interface *);
-void zebra_interface_up_update (struct interface *ifp);
-void zebra_interface_down_update (struct interface *ifp);
 
 #ifdef HAVE_PROC_NET_DEV
 int ifstat_update_proc ();
@@ -189,3 +192,5 @@
 #ifdef BSDI
 int if_kvm_get_mtu (struct interface *);
 #endif /* BSDI */
+
+#endif /* _ZEBRA_INTERFACE_H */
diff --git a/zebra/ioctl.h b/zebra/ioctl.h
index eadc69a..a82c312 100644
--- a/zebra/ioctl.h
+++ b/zebra/ioctl.h
@@ -49,6 +49,10 @@
 #define AF_IOCTL(af, request, buffer) \
         ((af) == AF_INET? if_ioctl(request, buffer) : \
                           if_ioctl_ipv6(request, buffer))
+#else /* SOLARIS_IPV6 */
+
+#define AF_IOCTL(af, request, buffer)  if_ioctl(request, buffer)
+
 #endif /* SOLARIS_IPV6 */
 
 #endif /* _ZEBRA_IOCTL_H */
diff --git a/zebra/ioctl_solaris.c b/zebra/ioctl_solaris.c
index 805a9ca..7b4dde3 100644
--- a/zebra/ioctl_solaris.c
+++ b/zebra/ioctl_solaris.c
@@ -80,10 +80,11 @@
   return 0;
 }
 
-#ifdef HAVE_IPV6
+
 int
 if_ioctl_ipv6 (u_long request, caddr_t buffer)
 {
+#ifdef HAVE_IPV6
   int sock;
   int ret = 0;
   int err = 0;
@@ -116,9 +117,10 @@
       errno = err;
       return ret;
     }
+#endif /* HAVE_IPV6 */
+
   return 0;
 }
-#endif /* HAVE_IPV6 */
 
 /*
  * get interface metric
@@ -134,8 +136,10 @@
 
   if (ifp->flags & IFF_IPV4)
     ret = AF_IOCTL (AF_INET, SIOCGLIFMETRIC, (caddr_t) & lifreq);
+#ifdef SOLARIS_IPV6
   else if (ifp->flags & IFF_IPV6)
     ret = AF_IOCTL (AF_INET6, SIOCGLIFMETRIC, (caddr_t) & lifreq);
+#endif /* SOLARIS_IPV6 */
   else
     ret = -1;
     
@@ -171,10 +175,13 @@
         }
     }
 
-
+#ifdef HAVE_IPV6
   if ((ifp->flags & IFF_IPV6) == 0)
-
+    return;
+    
+  memset(&lifreq, 0, sizeof(lifreq));
   lifreq_set_name (&lifreq, ifp);
+
   ret = AF_IOCTL (AF_INET6, SIOCGLIFMTU, (caddr_t) & lifreq);
   if (ret < 0)
     {
@@ -185,6 +192,7 @@
     {
       ifp->mtu6 = lifreq.lifr_metric;
     }
+#endif /* HAVE_IPV6 */
 }
 
 /* Set up interface's address, netmask (and broadcast? ).
diff --git a/zebra/redistribute.h b/zebra/redistribute.h
index 8b45cf3..14b92b0 100644
--- a/zebra/redistribute.h
+++ b/zebra/redistribute.h
@@ -24,6 +24,7 @@
 #define _ZEBRA_REDISTRIBUTE_H
 
 #include "table.h"
+#include "zserv.h"
 
 void zebra_redistribute_add (int, struct zserv *, int);
 void zebra_redistribute_delete (int, struct zserv *, int);
diff --git a/zebra/zserv.h b/zebra/zserv.h
index f043099..90e85f6 100644
--- a/zebra/zserv.h
+++ b/zebra/zserv.h
@@ -22,6 +22,8 @@
 #ifndef _ZEBRA_ZSERV_H
 #define _ZEBRA_ZSERV_H
 
+#include "rib.h"
+
 /* Default port information. */
 #define ZEBRA_PORT                    2600
 #define ZEBRA_VTY_PORT                2601
