diff --git a/lib/command.c b/lib/command.c
index f57cf5c..5d42933 100644
--- a/lib/command.c
+++ b/lib/command.c
@@ -718,6 +718,8 @@
   int state = STATE_START;
   int colons = 0, nums = 0, double_colon = 0;
   char *sp = NULL;
+  struct sockaddr_in6 sin6_dummy;
+  int ret;
 
   if (str == NULL)
     return partly_match;
@@ -725,6 +727,15 @@
   if (strspn (str, IPV6_ADDR_STR) != strlen (str))
     return no_match;
 
+  /* use inet_pton that has a better support,
+   * for example inet_pton can support the automatic addresses:
+   *  ::1.2.3.4
+   */
+  ret = inet_pton(AF_INET6, str, &sin6_dummy.sin6_addr);
+   
+  if (ret == 1)
+    return exact_match;
+
   while (*str != '\0')
     {
       switch (state)
diff --git a/lib/sockunion.c b/lib/sockunion.c
index 13b0be6..e4b311c 100644
--- a/lib/sockunion.c
+++ b/lib/sockunion.c
@@ -344,8 +344,13 @@
 	{
 #ifdef HAVE_SIN6_SCOPE_ID
 	  /* su.sin6.sin6_scope_id = ifindex; */
+#ifdef MUSICA
+	  su.sin6.sin6_scope_id = ifindex; 
+#endif
 #endif /* HAVE_SIN6_SCOPE_ID */
+#ifndef MUSICA
 	  SET_IN6_LINKLOCAL_IFINDEX (su.sin6.sin6_addr, ifindex);
+#endif
 	}
 #endif /* KAME */
       break;
diff --git a/lib/zebra.h b/lib/zebra.h
index 175eb6e..baad6d6 100644
--- a/lib/zebra.h
+++ b/lib/zebra.h
@@ -143,6 +143,10 @@
 #include <netinet/in_var.h>
 #endif /* HAVE_NETINET_IN_VAR_H */
 
+#ifdef HAVE_NETINET6_IN6_VAR_H
+#include <netinet6/in6_var.h>
+#endif /* HAVE_NETINET6_IN6_VAR_H */
+
 #ifdef HAVE_NETINET_IN6_VAR_H
 #include <netinet/in6_var.h>
 #endif /* HAVE_NETINET_IN6_VAR_H */
diff --git a/zebra/connected.c b/zebra/connected.c
index 5d1c6b6..280e423 100644
--- a/zebra/connected.c
+++ b/zebra/connected.c
@@ -263,8 +263,11 @@
   /* Apply mask to the network. */
   apply_mask_ipv6 (&p);
 
+#if ! defined (MUSICA) && ! defined (LINUX)
+  /* XXX: It is already done by rib_bogus_ipv6 within rib_add_ipv6 */
   if (IN6_IS_ADDR_UNSPECIFIED (&p.prefix))
     return;
+#endif
 
   rib_add_ipv6 (ZEBRA_ROUTE_CONNECT, 0, &p, NULL, ifp->ifindex, 0);
 
diff --git a/zebra/interface.h b/zebra/interface.h
index dbfa822..3ab624f 100644
--- a/zebra/interface.h
+++ b/zebra/interface.h
@@ -31,7 +31,9 @@
 
 /* Router advertisement feature. */
 #if (defined(LINUX_IPV6) && (defined(__GLIBC__) && __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1)) || defined(KAME)
-#define RTADV
+  #ifdef HAVE_RTADV
+    #define RTADV
+  #endif
 #endif
 
 #ifdef RTADV
diff --git a/zebra/ioctl.c b/zebra/ioctl.c
index 13afba2..3e5d1d2 100644
--- a/zebra/ioctl.c
+++ b/zebra/ioctl.c
@@ -474,8 +474,10 @@
 #endif
   memcpy (&addreq.ifra_prefixmask, &mask, sizeof (struct sockaddr_in6));
   
+#ifdef HAVE_IFRA_LIFETIME 
   addreq.ifra_lifetime.ia6t_pltime = ND6_INFINITE_LIFETIME; 
   addreq.ifra_lifetime.ia6t_vltime = ND6_INFINITE_LIFETIME; 
+#endif
 
   ret = if_ioctl_ipv6 (SIOCAIFADDR_IN6, (caddr_t) &addreq);
   if (ret < 0)
@@ -513,8 +515,10 @@
 #endif
   memcpy (&addreq.ifra_prefixmask, &mask, sizeof (struct sockaddr_in6));
 
+#ifdef HAVE_IFRA_LIFETIME
   addreq.ifra_lifetime.ia6t_pltime = ND6_INFINITE_LIFETIME; 
   addreq.ifra_lifetime.ia6t_vltime = ND6_INFINITE_LIFETIME; 
+#endif
 
   ret = if_ioctl_ipv6 (SIOCDIFADDR_IN6, (caddr_t) &addreq);
   if (ret < 0)
diff --git a/zebra/kernel_socket.c b/zebra/kernel_socket.c
index 1e915d1..17893a8 100644
--- a/zebra/kernel_socket.c
+++ b/zebra/kernel_socket.c
@@ -763,9 +763,8 @@
 
   thread_add_read (master, kernel_read, NULL, sock);
 
-#ifdef DEBUG
-  rtmsg_debug (&buf.r.rtm);
-#endif /* DEBUG */
+  if (IS_ZEBRA_DEBUG_KERNEL)
+    rtmsg_debug (&buf.r.rtm);
 
   rtm = &buf.r.rtm;
 
@@ -788,6 +787,8 @@
       break;
 #endif /* RTM_IFANNOUNCE */
     default:
+      if (IS_ZEBRA_DEBUG_KERNEL)
+        zlog_info("Unprocessed RTM_type: %d", rtm->rtm_type);
       break;
     }
   return 0;
diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c
index 74edfbb..d7f8bda 100644
--- a/zebra/zebra_rib.c
+++ b/zebra/zebra_rib.c
@@ -1539,8 +1539,14 @@
 rib_bogus_ipv6 (int type, struct prefix_ipv6 *p,
 		struct in6_addr *gate, unsigned int ifindex, int table)
 {
-  if (type == ZEBRA_ROUTE_CONNECT && IN6_IS_ADDR_UNSPECIFIED (&p->prefix))
+  if (type == ZEBRA_ROUTE_CONNECT && IN6_IS_ADDR_UNSPECIFIED (&p->prefix)) {
+#if defined (MUSICA) || defined (LINUX)
+    /* IN6_IS_ADDR_V4COMPAT(&p->prefix) */
+    if (p->prefixlen == 96)
+      return 0;
+#endif /* MUSICA */
     return 1;
+  }
   if (type == ZEBRA_ROUTE_KERNEL && IN6_IS_ADDR_UNSPECIFIED (&p->prefix)
       && p->prefixlen == 96 && gate && IN6_IS_ADDR_UNSPECIFIED (gate))
     {
diff --git a/zebra/zserv.c b/zebra/zserv.c
index 4753f57..ae1e044 100644
--- a/zebra/zserv.c
+++ b/zebra/zserv.c
@@ -448,6 +448,7 @@
 	{
 	  stream_putc (s, 1);
 
+	  /* XXX: Waht's about NEXTHOP_TYPE_IPV4_IFNAME ? */
 	  if (nexthop->type == NEXTHOP_TYPE_IPV4
 	      || nexthop->type == NEXTHOP_TYPE_IPV4_IFINDEX)
 	    stream_put_in_addr (s, &nexthop->gate.ipv4);
@@ -529,6 +530,8 @@
   return 0;
 }
 
+#if 0
+#warning oldies
 int
 zsend_ipv4_add (struct zserv *client, int type, int flags,
 		struct prefix_ipv4 *p, struct in_addr *nexthop,
@@ -610,8 +613,11 @@
 
   return 0;
 }
+#endif /* oldies */
 
 #ifdef HAVE_IPV6
+#if 0
+#warning oldies
 int
 zsend_ipv6_add (struct zserv *client, int type, int flags,
 		struct prefix_ipv6 *p, struct in6_addr *nexthop,
@@ -652,6 +658,7 @@
 
   return 0;
 }
+#endif /* oldies */
 
 int
 zsend_ipv6_add_multipath (struct zserv *client, struct prefix *p,
@@ -687,7 +694,9 @@
 	{
 	  stream_putc (s, 1);
 
-	  if (nexthop->type == NEXTHOP_TYPE_IPV6)
+	  if (nexthop->type == NEXTHOP_TYPE_IPV6
+	      || nexthop->type == NEXTHOP_TYPE_IPV6_IFINDEX
+	      || nexthop->type == NEXTHOP_TYPE_IPV6_IFNAME)
 	    stream_write (s, (u_char *) &nexthop->gate.ipv6, 16);
 	  else
 	    stream_write (s, (u_char *) &empty, 16);
@@ -711,6 +720,8 @@
   return 0;
 }
 
+#if 0
+#warning oldies
 int
 zsend_ipv6_delete (struct zserv *client, int type, int flags,
 		   struct prefix_ipv6 *p, struct in6_addr *nexthop,
@@ -751,6 +762,7 @@
 
   return 0;
 }
+#endif /* oldies */
 
 int
 zsend_ipv6_delete_multipath (struct zserv *client, struct prefix *p,
diff --git a/zebra/zserv.h b/zebra/zserv.h
index a083611..ec3c9f4 100644
--- a/zebra/zserv.h
+++ b/zebra/zserv.h
@@ -89,6 +89,8 @@
 int
 zsend_interface_down (struct zserv *, struct interface *);
 
+#if 0
+#warning oldies
 int
 zsend_ipv4_add (struct zserv *client, int type, int flags,
 		struct prefix_ipv4 *p, struct in_addr *nexthop,
@@ -98,6 +100,7 @@
 zsend_ipv4_delete (struct zserv *client, int type, int flags,
 		   struct prefix_ipv4 *p, struct in_addr *nexthop,
 		   unsigned int ifindex);
+#endif
 
 int
 zsend_ipv4_add_multipath (struct zserv *, struct prefix *, struct rib *);
@@ -106,6 +109,8 @@
 zsend_ipv4_delete_multipath (struct zserv *, struct prefix *, struct rib *);
 
 #ifdef HAVE_IPV6
+#if 0
+#warning oldies
 int
 zsend_ipv6_add (struct zserv *client, int type, int flags,
 		struct prefix_ipv6 *p, struct in6_addr *nexthop,
@@ -115,6 +120,7 @@
 zsend_ipv6_delete (struct zserv *client, int type, int flags,
 		   struct prefix_ipv6 *p, struct in6_addr *nexthop,
 		   unsigned int ifindex);
+#endif
 
 int
 zsend_ipv6_add_multipath (struct zserv *, struct prefix *, struct rib *);
