mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-14 20:13:53 +00:00
zebra: convert interface ipv6 nd ra-hop-limit command to NB
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
This commit is contained in:
parent
224429da6f
commit
a4fee0cb52
@ -2379,6 +2379,25 @@ module frr-zebra {
|
|||||||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6)
|
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6)
|
||||||
- AdvRetransTimer";
|
- AdvRetransTimer";
|
||||||
}
|
}
|
||||||
|
leaf cur-hop-limit {
|
||||||
|
type uint8;
|
||||||
|
description
|
||||||
|
"The value to be placed in the Cur Hop Limit field in
|
||||||
|
the Router Advertisement messages sent by the router.
|
||||||
|
A value of zero means unspecified (by this router).
|
||||||
|
|
||||||
|
If this parameter is not configured, the device SHOULD
|
||||||
|
use the IANA-specified value for the default IPv4
|
||||||
|
Time to Live (TTL) parameter that was in effect at the
|
||||||
|
time of implementation.";
|
||||||
|
reference
|
||||||
|
"RFC 3232: Assigned Numbers: RFC 1700 is Replaced by
|
||||||
|
an On-line Database
|
||||||
|
RFC 4861: Neighbor Discovery for IP version 6 (IPv6)
|
||||||
|
- AdvCurHopLimit
|
||||||
|
IANA: IP Parameters
|
||||||
|
(https://www.iana.org/assignments/ip-parameters)";
|
||||||
|
}
|
||||||
leaf default-lifetime {
|
leaf default-lifetime {
|
||||||
type uint16 {
|
type uint16 {
|
||||||
range "0..9000";
|
range "0..9000";
|
||||||
|
@ -1573,49 +1573,24 @@ DEFUN (no_ipv6_nd_ra_fast_retrans,
|
|||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
DEFPY (ipv6_nd_ra_hop_limit,
|
DEFPY_YANG (ipv6_nd_ra_hop_limit,
|
||||||
ipv6_nd_ra_hop_limit_cmd,
|
ipv6_nd_ra_hop_limit_cmd,
|
||||||
"ipv6 nd ra-hop-limit (0-255)$hopcount",
|
"[no] ipv6 nd ra-hop-limit ![(0-255)$hopcount]",
|
||||||
|
NO_STR
|
||||||
"Interface IPv6 config commands\n"
|
"Interface IPv6 config commands\n"
|
||||||
"Neighbor discovery\n"
|
"Neighbor discovery\n"
|
||||||
"Advertisement Hop Limit\n"
|
"Advertisement Hop Limit\n"
|
||||||
"Advertisement Hop Limit in hops (default:64)\n")
|
"Advertisement Hop Limit in hops (default:64)\n")
|
||||||
{
|
{
|
||||||
VTY_DECLVAR_CONTEXT(interface, ifp);
|
if (!no)
|
||||||
struct zebra_if *zif = ifp->info;
|
nb_cli_enqueue_change(vty,
|
||||||
|
"./frr-zebra:zebra/ipv6-router-advertisements/cur-hop-limit",
|
||||||
if (if_is_loopback(ifp)) {
|
NB_OP_MODIFY, hopcount_str);
|
||||||
vty_out(vty,
|
else
|
||||||
"Cannot configure IPv6 Router Advertisements on this interface\n");
|
nb_cli_enqueue_change(vty,
|
||||||
return CMD_WARNING_CONFIG_FAILED;
|
"./frr-zebra:zebra/ipv6-router-advertisements/cur-hop-limit",
|
||||||
}
|
NB_OP_DESTROY, NULL);
|
||||||
|
return nb_cli_apply_changes(vty, NULL);
|
||||||
zif->rtadv.AdvCurHopLimit = hopcount;
|
|
||||||
|
|
||||||
return CMD_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
DEFPY (no_ipv6_nd_ra_hop_limit,
|
|
||||||
no_ipv6_nd_ra_hop_limit_cmd,
|
|
||||||
"no ipv6 nd ra-hop-limit [(0-255)]",
|
|
||||||
NO_STR
|
|
||||||
"Interface IPv6 config commands\n"
|
|
||||||
"Neighbor discovery\n"
|
|
||||||
"Advertisement Hop Limit\n"
|
|
||||||
"Advertisement Hop Limit in hops\n")
|
|
||||||
{
|
|
||||||
VTY_DECLVAR_CONTEXT(interface, ifp);
|
|
||||||
struct zebra_if *zif = ifp->info;
|
|
||||||
|
|
||||||
if (if_is_loopback(ifp)) {
|
|
||||||
vty_out(vty,
|
|
||||||
"Cannot configure IPv6 Router Advertisements on this interface\n");
|
|
||||||
return CMD_WARNING_CONFIG_FAILED;
|
|
||||||
}
|
|
||||||
|
|
||||||
zif->rtadv.AdvCurHopLimit = RTADV_DEFAULT_HOPLIMIT;
|
|
||||||
|
|
||||||
return CMD_SUCCESS;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DEFPY_YANG (ipv6_nd_ra_retrans_interval,
|
DEFPY_YANG (ipv6_nd_ra_retrans_interval,
|
||||||
@ -2740,7 +2715,6 @@ void rtadv_cmd_init(void)
|
|||||||
install_element(INTERFACE_NODE, &no_ipv6_nd_ra_fast_retrans_cmd);
|
install_element(INTERFACE_NODE, &no_ipv6_nd_ra_fast_retrans_cmd);
|
||||||
install_element(INTERFACE_NODE, &ipv6_nd_ra_retrans_interval_cmd);
|
install_element(INTERFACE_NODE, &ipv6_nd_ra_retrans_interval_cmd);
|
||||||
install_element(INTERFACE_NODE, &ipv6_nd_ra_hop_limit_cmd);
|
install_element(INTERFACE_NODE, &ipv6_nd_ra_hop_limit_cmd);
|
||||||
install_element(INTERFACE_NODE, &no_ipv6_nd_ra_hop_limit_cmd);
|
|
||||||
install_element(INTERFACE_NODE, &ipv6_nd_suppress_ra_cmd);
|
install_element(INTERFACE_NODE, &ipv6_nd_suppress_ra_cmd);
|
||||||
install_element(INTERFACE_NODE, &ipv6_nd_ra_interval_cmd);
|
install_element(INTERFACE_NODE, &ipv6_nd_ra_interval_cmd);
|
||||||
install_element(INTERFACE_NODE, &ipv6_nd_ra_lifetime_cmd);
|
install_element(INTERFACE_NODE, &ipv6_nd_ra_lifetime_cmd);
|
||||||
|
@ -588,6 +588,13 @@ const struct frr_yang_module_info frr_zebra_info = {
|
|||||||
.modify = lib_interface_zebra_ipv6_router_advertisements_retrans_timer_modify,
|
.modify = lib_interface_zebra_ipv6_router_advertisements_retrans_timer_modify,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.xpath = "/frr-interface:lib/interface/frr-zebra:zebra/ipv6-router-advertisements/cur-hop-limit",
|
||||||
|
.cbs = {
|
||||||
|
.modify = lib_interface_zebra_ipv6_router_advertisements_cur_hop_limit_modify,
|
||||||
|
.destroy = lib_interface_zebra_ipv6_router_advertisements_cur_hop_limit_destroy,
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.xpath = "/frr-interface:lib/interface/frr-zebra:zebra/ipv6-router-advertisements/default-lifetime",
|
.xpath = "/frr-interface:lib/interface/frr-zebra:zebra/ipv6-router-advertisements/default-lifetime",
|
||||||
.cbs = {
|
.cbs = {
|
||||||
|
@ -195,6 +195,10 @@ int lib_interface_zebra_ipv6_router_advertisements_reachable_time_modify(
|
|||||||
struct nb_cb_modify_args *args);
|
struct nb_cb_modify_args *args);
|
||||||
int lib_interface_zebra_ipv6_router_advertisements_retrans_timer_modify(
|
int lib_interface_zebra_ipv6_router_advertisements_retrans_timer_modify(
|
||||||
struct nb_cb_modify_args *args);
|
struct nb_cb_modify_args *args);
|
||||||
|
int lib_interface_zebra_ipv6_router_advertisements_cur_hop_limit_modify(
|
||||||
|
struct nb_cb_modify_args *args);
|
||||||
|
int lib_interface_zebra_ipv6_router_advertisements_cur_hop_limit_destroy(
|
||||||
|
struct nb_cb_destroy_args *args);
|
||||||
int lib_interface_zebra_ipv6_router_advertisements_default_lifetime_modify(
|
int lib_interface_zebra_ipv6_router_advertisements_default_lifetime_modify(
|
||||||
struct nb_cb_modify_args *args);
|
struct nb_cb_modify_args *args);
|
||||||
int lib_interface_zebra_ipv6_router_advertisements_default_lifetime_destroy(
|
int lib_interface_zebra_ipv6_router_advertisements_default_lifetime_destroy(
|
||||||
|
@ -2618,6 +2618,45 @@ int lib_interface_zebra_ipv6_router_advertisements_retrans_timer_modify(
|
|||||||
return NB_OK;
|
return NB_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* XPath: /frr-interface:lib/interface/frr-zebra:zebra/ipv6-router-advertisements/cur-hop-limit
|
||||||
|
*/
|
||||||
|
int lib_interface_zebra_ipv6_router_advertisements_cur_hop_limit_modify(
|
||||||
|
struct nb_cb_modify_args *args)
|
||||||
|
{
|
||||||
|
struct interface *ifp;
|
||||||
|
struct zebra_if *zif;
|
||||||
|
uint8_t limit;
|
||||||
|
|
||||||
|
if (args->event != NB_EV_APPLY)
|
||||||
|
return NB_OK;
|
||||||
|
|
||||||
|
ifp = nb_running_get_entry(args->dnode, NULL, true);
|
||||||
|
zif = ifp->info;
|
||||||
|
limit = yang_dnode_get_uint8(args->dnode, NULL);
|
||||||
|
|
||||||
|
zif->rtadv.AdvCurHopLimit = limit;
|
||||||
|
|
||||||
|
return NB_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
int lib_interface_zebra_ipv6_router_advertisements_cur_hop_limit_destroy(
|
||||||
|
struct nb_cb_destroy_args *args)
|
||||||
|
{
|
||||||
|
struct interface *ifp;
|
||||||
|
struct zebra_if *zif;
|
||||||
|
|
||||||
|
if (args->event != NB_EV_APPLY)
|
||||||
|
return NB_OK;
|
||||||
|
|
||||||
|
ifp = nb_running_get_entry(args->dnode, NULL, true);
|
||||||
|
zif = ifp->info;
|
||||||
|
|
||||||
|
zif->rtadv.AdvCurHopLimit = RTADV_DEFAULT_HOPLIMIT;
|
||||||
|
|
||||||
|
return NB_OK;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* XPath: /frr-interface:lib/interface/frr-zebra:zebra/ipv6-router-advertisements/default-lifetime
|
* XPath: /frr-interface:lib/interface/frr-zebra:zebra/ipv6-router-advertisements/default-lifetime
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user