summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/ipv6.texi96
-rw-r--r--zebra/ChangeLog9
-rw-r--r--zebra/rtadv.c269
3 files changed, 291 insertions, 83 deletions
diff --git a/doc/ipv6.texi b/doc/ipv6.texi
index cf87b97a..d811623d 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 @@ messages to the all nodes that exist on the network.
@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 1b1e1a99..04619aeb 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 c98b11cf..a09053d6 100644
--- a/zebra/rtadv.c
+++ b/zebra/rtadv.c
@@ -232,7 +232,8 @@ rtadv_send_packet (int sock, struct interface *ifp)
{
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 @@ rtadv_prefix_reset (struct zebra_if *zif, struct rtadv_prefix *rp)
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 @@ DEFUN (ipv6_nd_suppress_ra,
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 @@ DEFUN (no_ipv6_nd_suppress_ra,
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 @@ DEFUN (no_ipv6_nd_ra_interval,
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 (no_ipv6_nd_ra_interval,
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 @@ DEFUN (no_ipv6_nd_ra_lifetime,
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 (no_ipv6_nd_ra_lifetime,
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 @@ DEFUN (no_ipv6_nd_reachable_time,
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 (no_ipv6_nd_reachable_time,
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 @@ DEFUN (no_ipv6_nd_managed_config_flag,
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 (no_ipv6_nd_managed_config_flag,
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 @@ DEFUN (no_ipv6_nd_other_config_flag,
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 @@ DEFUN (no_ipv6_nd_other_config_flag,
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 @@ DEFUN (ipv6_nd_prefix_advertisement,
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 @@ DEFUN (ipv6_nd_prefix_advertisement,
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 @@ rtadv_config_write (struct vty *vty, struct interface *ifp)
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 @@ rtadv_event (enum rtadv_event event, int val)
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 @@ rtadv_event (enum rtadv_event event, int val)
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 @@ rtadv_init ()
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 @@ rtadv_init ()
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