diff --git a/doc/ipv6.texi b/doc/ipv6.texi
index cf87b97..d811623 100644
--- a/doc/ipv6.texi
+++ b/doc/ipv6.texi
@@ -4,7 +4,7 @@
 
 Quagga fully supports IPv6 routing.  As described so far, Quagga supports
 RIPng, OSPFv3 and BGP-4+.  You can give IPv6 addresses to an interface
-and configure static IPv6 routing information.  Quagga-IPv6 also provides
+and configure static IPv6 routing information.  Quagga IPv6 also provides
 automatic address configuration via a feature called @code{address
 auto configuration}.  To do it, the router must send router advertisement
 messages to the all nodes that exist on the network.
@@ -17,16 +17,102 @@
 @comment  node-name,  next,  previous,  up
 @section Router Advertisement
 
-@deffn {Interface Command} {ipv6 nd send-ra} {}
+@deffn {Interface Command} {no ipv6 nd supress-ra} {}
+Send router advertisment messages.
 @end deffn
 
-@deffn {Interface Command} {ipv6 nd prefix-advertisement @var{ipv6prefix}} {}
+@deffn {Interface Command} {ipv6 nd supress-ra} {}
+Don't send router advertisment messages.
+@end deffn
+
+@deffn {Interface Command} {ipv6 nd prefix @var{ipv6prefix} [@var{valid-lifetime}] [@var{preferred-lifetime}] [off-link] [no-autconfig]} {}
+Configuring the IPv6 prefix to include in router advertisements. Several prefix
+specific optional parameters and flags may follow:
+@itemize @bullet
+@item
+@var{valid-lifetime} - the length of time in seconds during what the prefix is
+valid for the purpose of on-link determination. Value @var{infinite} represents
+infinity (i.e. a value of all one bits (@code{0xffffffff})).
+
+Range: @code{<0-4294967295>}  Default: @code{2592000}
+
+@item
+@var{preferred-lifetime} - the length of time in seconds during what addresses
+generated from the prefix remain preferred. Value @var{infinite} represents
+infinity.
+
+Range: @code{<0-4294967295>}  Default: @code{604800}
+
+@item
+@var{off-link} - indicates that advertisement makes no statement about on-link or
+off-link properties of the prefix.
+
+Default: not set, i.e. this prefix can be used for on-link determination.
+
+@item
+@var{no-autoconfig} - indicates to hosts on the local link that the specified prefix
+cannot be used for IPv6 autoconfiguration.
+
+Default: not set, i.e. prefix can be used for autoconfiguration.
+@end itemize
+@end deffn
+
+@deffn {Interface Command} {ipv6 nd ra-interval SECONDS} {}
+@deffnx {Interface Command} {no ipv6 nd ra-interval} {}
+The  maximum  time allowed between sending unsolicited multicast router
+advertisements from the interface, in seconds. Must be no less than 3 seconds.
+
+Default: @code{600}
+@end deffn
+
+@deffn {Interface Command} {ipv6 nd ra-lifetime SECONDS} {}
+@deffnx {Interface Command} {no ipv6 nd ra-lifetime} {}
+The value to be placed in the Router Lifetime field of router advertisements
+sent from the interface, in seconds. Indicates the usefulness of the router
+as a default router on this interface. Setting the value to zero indicates
+that the router should not be considered a default router on this interface.
+Must be either zero or between value specified with @var{ipv6 nd ra-interval}
+(or default) and 9000 seconds.
+
+Default: @code{1800}
+@end deffn
+
+@deffn {Interface Command} {ipv6 nd reachable-time MILLISECONDS} {}
+@deffnx {Interface Command} {no ipv6 nd reachable-time} {}
+The value to be placed in the Reachable Time field in the Router Advertisement
+messages sent by the router, in milliseconds. The configured time enables the
+router to detect unavailable neighbors. The value zero means unspecified (by
+this router). Must be no greater than @code{3,600,000} milliseconds (1 hour).
+
+Default: @code{0}
+@end deffn
+
+@deffn {Interface Command} {ipv6 nd managed-config-flag} {}
+@deffnx {Interface Command} {no ipv6 nd managed-config-flag} {}
+Set/unset flag in IPv6 router advertisements which indicates to hosts that they
+should use managed (stateful) protocol for addresses autoconfiguration in
+addition to any addresses autoconfigured using stateless address
+autoconfiguration.
+
+Default: not set
+@end deffn
+
+@deffn {Interface Command} {ipv6 nd other-config-flag} {}
+@deffnx {Interface Command} {no ipv6 nd other-config-flag} {}
+Set/unset flag in IPv6 router advertisements which indicates to hosts that
+they should use administered (stateful) protocol to obtain autoconfiguration
+information other than addresses.
+
+Default: not set
 @end deffn
 
 @example
 @group
 interface eth0
- ipv6 nd send-ra
- ipv6 nd prefix-advertisement 3ffe:506:5009::/64
+ no ipv6 nd supress-ra
+ ipv6 nd prefix 2001:0DB8:5009::/64
 @end group
 @end example
+
+For more information see @cite{RFC2462 (IPv6 Stateless Address Autoconfiguration)}
+and @cite{RFC2461 (Neighbor Discovery for IP Version 6 (IPv6))}.
diff --git a/zebra/ChangeLog b/zebra/ChangeLog
index 1b1e1a9..04619ae 100644
--- a/zebra/ChangeLog
+++ b/zebra/ChangeLog
@@ -1,3 +1,12 @@
+2004-05-18 Hasso Tepper <hasso@estpak.ee>
+
+	* rtadv.c: Removed "[no] ipv6 nd send-ra" command. Replaced "ipv6 nd
+	  prefix-advertisement" with "ipv6 nd prefix". Rewrite syntax of
+	  "ipv6 nd prefix" command to allow various combinations of parameters
+	  and flags. No defaults in configuration. Replaced on-link and
+	  autoconfig with off-link and no-autoconfig flags in command syntax.
+	  Cosmetic fixes in all commands. Documentation to reflect all changes.
+
 2004-05-11 Paul Jakma <paul@dishone.st>
 
 	* Makefile.am: support for IOCTL_METHOD, as per Sowmini's patch.
diff --git a/zebra/rtadv.c b/zebra/rtadv.c
index c98b11c..a09053d 100644
--- a/zebra/rtadv.c
+++ b/zebra/rtadv.c
@@ -232,7 +232,8 @@
       {
 	u_char buf[INET6_ADDRSTRLEN];
 
-	zlog_info ("DEBUG %s", inet_ntop (AF_INET6, &pinfo->nd_opt_pi_prefix, buf, INET6_ADDRSTRLEN));
+	zlog_info ("DEBUG %s", inet_ntop (AF_INET6, &pinfo->nd_opt_pi_prefix, 
+	           buf, INET6_ADDRSTRLEN));
 
       }
 #endif /* DEBUG */
@@ -550,7 +551,7 @@
 DEFUN (ipv6_nd_suppress_ra,
        ipv6_nd_suppress_ra_cmd,
        "ipv6 nd suppress-ra",
-       IP_STR
+       "Interface IPv6 config commands\n"
        "Neighbor discovery\n"
        "Suppress Router Advertisement\n")
 {
@@ -581,19 +582,11 @@
   return CMD_SUCCESS;
 }
 
-ALIAS (ipv6_nd_suppress_ra,
-       no_ipv6_nd_send_ra_cmd,
-       "no ipv6 nd send-ra",
-       NO_STR
-       IP_STR
-       "Neighbor discovery\n"
-       "Send Router Advertisement\n")
-
 DEFUN (no_ipv6_nd_suppress_ra,
        no_ipv6_nd_suppress_ra_cmd,
        "no ipv6 nd suppress-ra",
        NO_STR
-       IP_STR
+       "Interface IPv6 config commands\n"
        "Neighbor discovery\n"
        "Suppress Router Advertisement\n")
 {
@@ -624,17 +617,10 @@
   return CMD_SUCCESS;
 }
 
-ALIAS (no_ipv6_nd_suppress_ra,
-       ipv6_nd_send_ra_cmd,
-       "ipv6 nd send-ra",
-       IP_STR
-       "Neighbor discovery\n"
-       "Send Router Advertisement\n")
-
 DEFUN (ipv6_nd_ra_interval,
        ipv6_nd_ra_interval_cmd,
        "ipv6 nd ra-interval SECONDS",
-       IP_STR
+       "Interface IPv6 config commands\n"
        "Neighbor discovery\n"
        "Router Advertisement interval\n"
        "Router Advertisement interval in seconds\n")
@@ -665,7 +651,7 @@
        no_ipv6_nd_ra_interval_cmd,
        "no ipv6 nd ra-interval",
        NO_STR
-       IP_STR
+       "Interface IPv6 config commands\n"
        "Neighbor discovery\n"
        "Router Advertisement interval\n")
 {
@@ -685,7 +671,7 @@
 DEFUN (ipv6_nd_ra_lifetime,
        ipv6_nd_ra_lifetime_cmd,
        "ipv6 nd ra-lifetime SECONDS",
-       IP_STR
+       "Interface IPv6 config commands\n"
        "Neighbor discovery\n"
        "Router lifetime\n"
        "Router lifetime in seconds\n")
@@ -714,7 +700,7 @@
        no_ipv6_nd_ra_lifetime_cmd,
        "no ipv6 nd ra-lifetime",
        NO_STR
-       IP_STR
+       "Interface IPv6 config commands\n"
        "Neighbor discovery\n"
        "Router lifetime\n")
 {
@@ -732,7 +718,7 @@
 DEFUN (ipv6_nd_reachable_time,
        ipv6_nd_reachable_time_cmd,
        "ipv6 nd reachable-time MILLISECONDS",
-       IP_STR
+       "Interface IPv6 config commands\n"
        "Neighbor discovery\n"
        "Reachable time\n"
        "Reachable time in milliseconds\n")
@@ -761,7 +747,7 @@
        no_ipv6_nd_reachable_time_cmd,
        "no ipv6 nd reachable-time",
        NO_STR
-       IP_STR
+       "Interface IPv6 config commands\n"
        "Neighbor discovery\n"
        "Reachable time\n")
 {
@@ -779,7 +765,7 @@
 DEFUN (ipv6_nd_managed_config_flag,
        ipv6_nd_managed_config_flag_cmd,
        "ipv6 nd managed-config-flag",
-       IP_STR
+       "Interface IPv6 config commands\n"
        "Neighbor discovery\n"
        "Managed address configuration flag\n")
 {
@@ -798,7 +784,7 @@
        no_ipv6_nd_managed_config_flag_cmd,
        "no ipv6 nd managed-config-flag",
        NO_STR
-       IP_STR
+       "Interface IPv6 config commands\n"
        "Neighbor discovery\n"
        "Managed address configuration flag\n")
 {
@@ -816,7 +802,7 @@
 DEFUN (ipv6_nd_other_config_flag,
        ipv6_nd_other_config_flag_cmd,
        "ipv6 nd other-config-flag",
-       IP_STR
+       "Interface IPv6 config commands\n"
        "Neighbor discovery\n"
        "Other statefull configuration flag\n")
 {
@@ -835,7 +821,7 @@
        no_ipv6_nd_other_config_flag_cmd,
        "no ipv6 nd other-config-flag",
        NO_STR
-       IP_STR
+       "Interface IPv6 config commands\n"
        "Neighbor discovery\n"
        "Other statefull configuration flag\n")
 {
@@ -850,20 +836,24 @@
   return CMD_SUCCESS;
 }
 
-DEFUN (ipv6_nd_prefix_advertisement,
-       ipv6_nd_prefix_advertisement_cmd,
-       "ipv6 nd prefix-advertisement IPV6PREFIX VALID PREFERRED [onlink] [autoconfig]",
-       IP_STR
+DEFUN (ipv6_nd_prefix,
+       ipv6_nd_prefix_cmd,
+       "ipv6 nd prefix X:X::X:X/M (<0-4294967295>|infinite) "
+       "(<0-4294967295>|infinite) (off-link|) (no-autoconfig|)",
+       "Interface IPv6 config commands\n"
        "Neighbor discovery\n"
        "Prefix information\n"
        "IPv6 prefix\n"
        "Valid lifetime in seconds\n"
+       "Infinite valid lifetime\n"
        "Preferred lifetime in seconds\n"
-       "On link flag\n"
-       "Autonomous address-configuration flag\n")
+       "Infinite preferred lifetime\n"
+       "Do not use prefix for onlink determination\n"
+       "Do not use prefix for autoconfiguration\n")
 {
   int i;
   int ret;
+  int cursor = 1;
   struct interface *ifp;
   struct zebra_if *zebra_if;
   struct rtadv_prefix rp;
@@ -877,32 +867,43 @@
       vty_out (vty, "Malformed IPv6 prefix%s", VTY_NEWLINE);
       return CMD_WARNING;
     }
+  rp.AdvOnLinkFlag = 1;
+  rp.AdvAutonomousFlag = 1;
+  rp.AdvValidLifetime = RTADV_VALID_LIFETIME;
+  rp.AdvPreferredLifetime = RTADV_PREFERRED_LIFETIME;
 
-  if (argc == 1)
+  if (argc > 1)
     {
-      rp.AdvValidLifetime = RTADV_VALID_LIFETIME;
-      rp.AdvPreferredLifetime = RTADV_PREFERRED_LIFETIME;
-      rp.AdvOnLinkFlag = 1;
-      rp.AdvAutonomousFlag = 1;
-    }
-  else
-    {
-      rp.AdvValidLifetime = (u_int32_t) atol (argv[1]);
-      rp.AdvPreferredLifetime = (u_int32_t) atol (argv[2]);
-      if (rp.AdvPreferredLifetime > rp.AdvValidLifetime)
+      if ((isdigit(argv[1][0])) || strncmp (argv[1], "i", 1) == 0)
 	{
-	  vty_out (vty, "Invalid preferred lifetime%s", VTY_NEWLINE);
-	  return CMD_WARNING;
+	  if ( strncmp (argv[1], "i", 1) == 0)
+	    rp.AdvValidLifetime = UINT32_MAX;
+	  else
+	    rp.AdvValidLifetime = (u_int32_t) strtoll (argv[1],
+		(char **)NULL, 10);
+      
+	  if ( strncmp (argv[2], "i", 1) == 0)
+	    rp.AdvPreferredLifetime = UINT32_MAX;
+	  else
+	    rp.AdvPreferredLifetime = (u_int32_t) strtoll (argv[2],
+		(char **)NULL, 10);
+
+	  if (rp.AdvPreferredLifetime > rp.AdvValidLifetime)
+	    {
+	      vty_out (vty, "Invalid preferred lifetime%s", VTY_NEWLINE);
+	      return CMD_WARNING;
+	    }
+	  cursor = cursor + 2;
 	}
-
-      rp.AdvOnLinkFlag = 0;
-      rp.AdvAutonomousFlag = 0;
-      for (i = 3; i < argc; i++)
+      if (argc > cursor)
 	{
-	  if (! strcmp (argv[i], "onlink"))
-	    rp.AdvOnLinkFlag = 1;
-	  else if (! strcmp (argv[i], "autoconfig"))
-	    rp.AdvAutonomousFlag = 1;
+	  for (i = cursor; i < argc; i++)
+	    {
+	      if (strncmp (argv[i], "of", 2) == 0)
+		rp.AdvOnLinkFlag = 0;
+	      if (strncmp (argv[i], "no", 2) == 0)
+		rp.AdvAutonomousFlag = 0;
+	    }
 	}
     }
 
@@ -911,19 +912,113 @@
   return CMD_SUCCESS;
 }
 
-ALIAS (ipv6_nd_prefix_advertisement,
-       ipv6_nd_prefix_advertisement_no_val_cmd,
-       "ipv6 nd prefix-advertisement IPV6PREFIX",
-       IP_STR
+ALIAS (ipv6_nd_prefix,
+       ipv6_nd_prefix_val_rev_cmd,
+       "ipv6 nd prefix X:X::X:X/M (<0-4294967295>|infinite) "
+       "(<0-4294967295>|infinite) (no-autoconfig|) (off-link|)",
+       "Interface IPv6 config commands\n"
+       "Neighbor discovery\n"
+       "Prefix information\n"
+       "IPv6 prefix\n"
+       "Valid lifetime in seconds\n"
+       "Infinite valid lifetime\n"
+       "Preferred lifetime in seconds\n"
+       "Infinite preferred lifetime\n"
+       "Do not use prefix for autoconfiguration\n"
+       "Do not use prefix for onlink determination\n")
+
+ALIAS (ipv6_nd_prefix,
+       ipv6_nd_prefix_val_noauto_cmd,
+       "ipv6 nd prefix X:X::X:X/M (<0-4294967295>|infinite) "
+       "(<0-4294967295>|infinite) (no-autoconfig|)",
+       "Interface IPv6 config commands\n"
+       "Neighbor discovery\n"
+       "Prefix information\n"
+       "IPv6 prefix\n"
+       "Valid lifetime in seconds\n"
+       "Infinite valid lifetime\n"
+       "Preferred lifetime in seconds\n"
+       "Infinite preferred lifetime\n"
+       "Do not use prefix for autoconfigurationn")
+
+ALIAS (ipv6_nd_prefix,
+       ipv6_nd_prefix_val_offlink_cmd,
+       "ipv6 nd prefix X:X::X:X/M (<0-4294967295>|infinite) "
+       "(<0-4294967295>|infinite) (off-link|)",
+       "Interface IPv6 config commands\n"
+       "Neighbor discovery\n"
+       "Prefix information\n"
+       "IPv6 prefix\n"
+       "Valid lifetime in seconds\n"
+       "Infinite valid lifetime\n"
+       "Preferred lifetime in seconds\n"
+       "Infinite preferred lifetime\n"
+       "Do not use prefix for onlink determination\n")
+
+ALIAS (ipv6_nd_prefix,
+       ipv6_nd_prefix_val_cmd,
+       "ipv6 nd prefix X:X::X:X/M (<0-4294967295>|infinite) "
+       "(<0-4294967295>|infinite)",
+       "Interface IPv6 config commands\n"
+       "Neighbor discovery\n"
+       "Prefix information\n"
+       "IPv6 prefix\n"
+       "Valid lifetime in seconds\n"
+       "Infinite valid lifetime\n"
+       "Preferred lifetime in seconds\n"
+       "Infinite preferred lifetime\n")
+
+ALIAS (ipv6_nd_prefix,
+       ipv6_nd_prefix_noval_cmd,
+       "ipv6 nd prefix X:X::X:X/M (no-autoconfig|) (off-link|)",
+       "Interface IPv6 config commands\n"
+       "Neighbor discovery\n"
+       "Prefix information\n"
+       "IPv6 prefix\n"
+       "Do not use prefix for autoconfiguration\n"
+       "Do not use prefix for onlink determination\n")
+
+ALIAS (ipv6_nd_prefix,
+       ipv6_nd_prefix_noval_rev_cmd,
+       "ipv6 nd prefix X:X::X:X/M (off-link|) (no-autoconfig|)",
+       "Interface IPv6 config commands\n"
+       "Neighbor discovery\n"
+       "Prefix information\n"
+       "IPv6 prefix\n"
+       "Do not use prefix for onlink determination\n"
+       "Do not use prefix for autoconfiguration\n")
+
+ALIAS (ipv6_nd_prefix,
+       ipv6_nd_prefix_noval_noauto_cmd,
+       "ipv6 nd prefix X:X::X:X/M (no-autoconfig|)",
+       "Interface IPv6 config commands\n"
+       "Neighbor discovery\n"
+       "Prefix information\n"
+       "IPv6 prefix\n"
+       "Do not use prefix for autoconfiguration\n")
+
+ALIAS (ipv6_nd_prefix,
+       ipv6_nd_prefix_noval_offlink_cmd,
+       "ipv6 nd prefix X:X::X:X/M (off-link|)",
+       "Interface IPv6 config commands\n"
+       "Neighbor discovery\n"
+       "Prefix information\n"
+       "IPv6 prefix\n"
+       "Do not use prefix for onlink determination\n")
+
+ALIAS (ipv6_nd_prefix,
+       ipv6_nd_prefix_prefix_cmd,
+       "ipv6 nd prefix X:X::X:X/M",
+       "Interface IPv6 config commands\n"
        "Neighbor discovery\n"
        "Prefix information\n"
        "IPv6 prefix\n")
 
-DEFUN (no_ipv6_nd_prefix_advertisement,
-       no_ipv6_nd_prefix_advertisement_cmd,
-       "no ipv6 nd prefix-advertisement IPV6PREFIX",
+DEFUN (no_ipv6_nd_prefix,
+       no_ipv6_nd_prefix_cmd,
+       "no ipv6 nd prefix IPV6PREFIX",
        NO_STR
-       IP_STR
+       "Interface IPv6 config commands\n"
        "Neighbor discovery\n"
        "Prefix information\n"
        "IPv6 prefix\n")
@@ -996,16 +1091,26 @@
   for (node = listhead(zif->rtadv.AdvPrefixList); node; node = nextnode (node))
     {
       rprefix = getdata (node);
-      vty_out (vty, " ipv6 nd prefix-advertisement %s/%d %d %d",
+      vty_out (vty, " ipv6 nd prefix %s/%d",
 	       inet_ntop (AF_INET6, &rprefix->prefix.u.prefix6, 
 			  buf, INET6_ADDRSTRLEN),
-	       rprefix->prefix.prefixlen,
-	       rprefix->AdvValidLifetime,
-	       rprefix->AdvPreferredLifetime);
-      if (rprefix->AdvOnLinkFlag)
-	vty_out (vty, " onlink");
-      if (rprefix->AdvAutonomousFlag)
-	vty_out (vty, " autoconfig");
+	       rprefix->prefix.prefixlen);
+      if ((rprefix->AdvValidLifetime != RTADV_VALID_LIFETIME) || 
+	  (rprefix->AdvPreferredLifetime != RTADV_PREFERRED_LIFETIME))
+	{
+	  if (rprefix->AdvValidLifetime == UINT32_MAX)
+	    vty_out (vty, " infinite");
+	  else
+	    vty_out (vty, " %u", rprefix->AdvValidLifetime);
+	  if (rprefix->AdvPreferredLifetime == UINT32_MAX)
+	    vty_out (vty, " infinite");
+	  else
+	    vty_out (vty, " %u", rprefix->AdvPreferredLifetime);
+	}
+      if (!rprefix->AdvOnLinkFlag)
+	vty_out (vty, " off-link");
+      if (!rprefix->AdvAutonomousFlag)
+	vty_out (vty, " no-autoconfig");
       vty_out (vty, "%s", VTY_NEWLINE);
     }
 }
@@ -1020,7 +1125,8 @@
       if (! rtadv->ra_read)
 	rtadv->ra_read = thread_add_read (zebrad.master, rtadv_read, NULL, val);
       if (! rtadv->ra_timer)
-	rtadv->ra_timer = thread_add_event (zebrad.master, rtadv_timer, NULL, 0);
+	rtadv->ra_timer = thread_add_event (zebrad.master, rtadv_timer,
+	                                    NULL, 0);
       break;
     case RTADV_STOP:
       if (rtadv->ra_timer)
@@ -1036,7 +1142,8 @@
       break;
     case RTADV_TIMER:
       if (! rtadv->ra_timer)
-	rtadv->ra_timer = thread_add_timer (zebrad.master, rtadv_timer, NULL, val);
+	rtadv->ra_timer = thread_add_timer (zebrad.master, rtadv_timer, NULL,
+	                                    val);
       break;
     case RTADV_READ:
       if (! rtadv->ra_read)
@@ -1062,8 +1169,6 @@
 
   install_element (INTERFACE_NODE, &ipv6_nd_suppress_ra_cmd);
   install_element (INTERFACE_NODE, &no_ipv6_nd_suppress_ra_cmd);
-  install_element (INTERFACE_NODE, &ipv6_nd_send_ra_cmd);
-  install_element (INTERFACE_NODE, &no_ipv6_nd_send_ra_cmd);
   install_element (INTERFACE_NODE, &ipv6_nd_ra_interval_cmd);
   install_element (INTERFACE_NODE, &no_ipv6_nd_ra_interval_cmd);
   install_element (INTERFACE_NODE, &ipv6_nd_ra_lifetime_cmd);
@@ -1074,9 +1179,17 @@
   install_element (INTERFACE_NODE, &no_ipv6_nd_managed_config_flag_cmd);
   install_element (INTERFACE_NODE, &ipv6_nd_other_config_flag_cmd);
   install_element (INTERFACE_NODE, &no_ipv6_nd_other_config_flag_cmd);
-  install_element (INTERFACE_NODE, &ipv6_nd_prefix_advertisement_cmd);
-  install_element (INTERFACE_NODE, &ipv6_nd_prefix_advertisement_no_val_cmd);
-  install_element (INTERFACE_NODE, &no_ipv6_nd_prefix_advertisement_cmd);
+  install_element (INTERFACE_NODE, &ipv6_nd_prefix_cmd);
+  install_element (INTERFACE_NODE, &ipv6_nd_prefix_val_rev_cmd);
+  install_element (INTERFACE_NODE, &ipv6_nd_prefix_val_noauto_cmd);
+  install_element (INTERFACE_NODE, &ipv6_nd_prefix_val_offlink_cmd);
+  install_element (INTERFACE_NODE, &ipv6_nd_prefix_val_cmd);
+  install_element (INTERFACE_NODE, &ipv6_nd_prefix_noval_cmd);
+  install_element (INTERFACE_NODE, &ipv6_nd_prefix_noval_rev_cmd);
+  install_element (INTERFACE_NODE, &ipv6_nd_prefix_noval_noauto_cmd);
+  install_element (INTERFACE_NODE, &ipv6_nd_prefix_noval_offlink_cmd);
+  install_element (INTERFACE_NODE, &ipv6_nd_prefix_prefix_cmd);
+  install_element (INTERFACE_NODE, &no_ipv6_nd_prefix_cmd);
 }
 
 int
