summaryrefslogtreecommitdiff
path: root/zebra/interface.c
diff options
context:
space:
mode:
authorIgor Ryzhov <iryzhov@nfware.com>2024-01-24 23:04:23 +0200
committerIgor Ryzhov <iryzhov@nfware.com>2024-01-28 23:28:40 +0200
commit390081329874c4fd8b4a15ffa2a090275b5fc8ac (patch)
tree632835cad70bf321e2f0d2acaf9d59c11a3925fe /zebra/interface.c
parent42d6b864cdce2e4477a14eae639bc22aa9fc1118 (diff)
zebra: convert to mgmtd
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
Diffstat (limited to 'zebra/interface.c')
-rw-r--r--zebra/interface.c974
1 files changed, 0 insertions, 974 deletions
diff --git a/zebra/interface.c b/zebra/interface.c
index 62ff676f48..cba052dff6 100644
--- a/zebra/interface.c
+++ b/zebra/interface.c
@@ -18,7 +18,6 @@
#include "log.h"
#include "zclient.h"
#include "vrf.h"
-#include "lib/northbound_cli.h"
#include "zebra/rtadv.h"
#include "zebra_ns.h"
@@ -37,7 +36,6 @@
#include "zebra/zebra_vxlan.h"
#include "zebra/zebra_errors.h"
#include "zebra/zebra_evpn_mh.h"
-#include "zebra/zebra_nb.h"
DEFINE_MTYPE_STATIC(ZEBRA, ZINFO, "Zebra Interface Information");
@@ -3685,36 +3683,6 @@ void if_arp(struct interface *ifp, bool enable)
if_refresh(ifp);
}
-DEFPY_YANG (multicast_new,
- multicast_new_cmd,
- "[no] multicast <enable$on|disable$off>",
- NO_STR
- "Control multicast flag on interface\n"
- "Set multicast flag on interface\n"
- "Unset multicast flag on interface\n")
-{
- if (!no)
- nb_cli_enqueue_change(vty, "./frr-zebra:zebra/multicast",
- NB_OP_CREATE, on ? "true" : "false");
- else
- nb_cli_enqueue_change(vty, "./frr-zebra:zebra/multicast",
- NB_OP_DESTROY, NULL);
-
- return nb_cli_apply_changes(vty, NULL);
-}
-
-void lib_interface_zebra_multicast_cli_write(struct vty *vty,
- const struct lyd_node *dnode,
- bool show_defaults)
-{
- bool multicast = yang_dnode_get_bool(dnode, NULL);
-
- if (multicast)
- vty_out(vty, " multicast enable\n");
- else
- vty_out(vty, " multicast disable\n");
-}
-
int if_multicast_set(struct interface *ifp)
{
struct zebra_if *if_data;
@@ -3733,47 +3701,6 @@ int if_multicast_set(struct interface *ifp)
return 0;
}
-DEFUN_HIDDEN (multicast,
- multicast_cmd,
- "multicast",
- "Set multicast flag to interface\n")
-{
- nb_cli_enqueue_change(vty, "./frr-zebra:zebra/multicast",
- NB_OP_CREATE, "true");
-
- return nb_cli_apply_changes(vty, NULL);
-}
-
-DEFPY_YANG (mpls,
- mpls_cmd,
- "[no] mpls <enable$on|disable$off>",
- NO_STR
- MPLS_STR
- "Set mpls to be on for the interface\n"
- "Set mpls to be off for the interface\n")
-{
- if (!no)
- nb_cli_enqueue_change(vty, "./frr-zebra:zebra/mpls",
- NB_OP_CREATE, on ? "true" : "false");
- else
- nb_cli_enqueue_change(vty, "./frr-zebra:zebra/mpls",
- NB_OP_DESTROY, NULL);
-
- return nb_cli_apply_changes(vty, NULL);
-}
-
-void lib_interface_zebra_mpls_cli_write(struct vty *vty,
- const struct lyd_node *dnode,
- bool show_defaults)
-{
- bool mpls = yang_dnode_get_bool(dnode, NULL);
-
- if (mpls)
- vty_out(vty, " mpls enable\n");
- else
- vty_out(vty, " mpls disable\n");
-}
-
int if_multicast_unset(struct interface *ifp)
{
struct zebra_if *if_data;
@@ -3792,18 +3719,6 @@ int if_multicast_unset(struct interface *ifp)
return 0;
}
-DEFUN_HIDDEN (no_multicast,
- no_multicast_cmd,
- "no multicast",
- NO_STR
- "Unset multicast flag to interface\n")
-{
- nb_cli_enqueue_change(vty, "./frr-zebra:zebra/multicast",
- NB_OP_CREATE, "false");
-
- return nb_cli_apply_changes(vty, NULL);
-}
-
int if_linkdetect(struct interface *ifp, bool detect)
{
int if_was_operative;
@@ -3827,30 +3742,6 @@ int if_linkdetect(struct interface *ifp, bool detect)
return 0;
}
-DEFPY_YANG (linkdetect,
- linkdetect_cmd,
- "[no] link-detect",
- NO_STR
- "Enable link detection on interface\n")
-{
- nb_cli_enqueue_change(vty, "./frr-zebra:zebra/link-detect",
- NB_OP_CREATE, no ? "false" : "true");
-
- return nb_cli_apply_changes(vty, NULL);
-}
-
-void lib_interface_zebra_link_detect_cli_write(struct vty *vty,
- const struct lyd_node *dnode,
- bool show_defaults)
-{
- bool link_detect = yang_dnode_get_bool(dnode, NULL);
-
- if (!link_detect)
- vty_out(vty, " no link-detect\n");
- else if (show_defaults)
- vty_out(vty, " link-detect\n");
-}
-
int if_shutdown(struct interface *ifp)
{
struct zebra_if *if_data;
@@ -3870,30 +3761,6 @@ int if_shutdown(struct interface *ifp)
return 0;
}
-DEFPY_YANG (shutdown_if,
- shutdown_if_cmd,
- "[no] shutdown",
- NO_STR
- "Shutdown the selected interface\n")
-{
- nb_cli_enqueue_change(vty, "./frr-zebra:zebra/enabled",
- NB_OP_CREATE, no ? "true" : "false");
-
- return nb_cli_apply_changes(vty, NULL);
-}
-
-void lib_interface_zebra_enabled_cli_write(struct vty *vty,
- const struct lyd_node *dnode,
- bool show_defaults)
-{
- bool enabled = yang_dnode_get_bool(dnode, NULL);
-
- if (!enabled)
- vty_out(vty, " shutdown\n");
- else if (show_defaults)
- vty_out(vty, " no shutdown\n");
-}
-
int if_no_shutdown(struct interface *ifp)
{
struct zebra_if *if_data;
@@ -3918,39 +3785,6 @@ int if_no_shutdown(struct interface *ifp)
return 0;
}
-DEFPY_YANG (bandwidth_if,
- bandwidth_if_cmd,
- "[no] bandwidth ![(1-100000)]$bw",
- NO_STR
- "Set bandwidth informational parameter\n"
- "Bandwidth in megabits\n")
-{
- if (!no)
- nb_cli_enqueue_change(vty, "./frr-zebra:zebra/bandwidth",
- NB_OP_CREATE, bw_str);
- else
- nb_cli_enqueue_change(vty, "./frr-zebra:zebra/bandwidth",
- NB_OP_DESTROY, NULL);
-
- return nb_cli_apply_changes(vty, NULL);
-}
-
-void lib_interface_zebra_bandwidth_cli_write(struct vty *vty,
- const struct lyd_node *dnode,
- bool show_defaults)
-{
- uint32_t bandwidth = yang_dnode_get_uint32(dnode, NULL);
-
- vty_out(vty, " bandwidth %u\n", bandwidth);
-}
-
-struct cmd_node link_params_node = {
- .name = "link-params",
- .node = LINK_PARAMS_NODE,
- .parent_node = INTERFACE_NODE,
- .prompt = "%s(config-link-params)# ",
-};
-
void link_param_cmd_set_uint32(struct interface *ifp, uint32_t *field,
uint32_t type, uint32_t value)
{
@@ -3995,600 +3829,6 @@ void link_param_cmd_unset(struct interface *ifp, uint32_t type)
zebra_interface_parameters_update(ifp);
}
-DEFUN_YANG_NOSH (link_params,
- link_params_cmd,
- "link-params",
- LINK_PARAMS_STR)
-{
- int ret;
-
- nb_cli_enqueue_change(vty, "./frr-zebra:zebra/link-params", NB_OP_CREATE, NULL);
-
- ret = nb_cli_apply_changes(vty, NULL);
- if (ret == CMD_SUCCESS) {
- char xpath[XPATH_MAXLEN];
- snprintf(xpath, sizeof(xpath), "%s/frr-zebra:zebra/link-params", VTY_CURR_XPATH);
- VTY_PUSH_XPATH(LINK_PARAMS_NODE, xpath);
- }
-
- return ret;
-}
-
-DEFUN_NOSH (exit_link_params,
- exit_link_params_cmd,
- "exit-link-params",
- "Exit from Link Params configuration mode\n")
-{
- cmd_exit(vty);
- return CMD_SUCCESS;
-}
-
-void lib_interface_zebra_link_params_cli_write(struct vty *vty,
- const struct lyd_node *dnode,
- bool show_defaults)
-{
- vty_out(vty, " link-params\n");
-}
-
-void lib_interface_zebra_link_params_cli_write_end(struct vty *vty,
- const struct lyd_node *dnode)
-{
- vty_out(vty, " exit-link-params\n");
-}
-
-DEFUN_YANG (no_link_params,
- no_link_params_cmd,
- "no link-params",
- NO_STR
- LINK_PARAMS_STR)
-{
- nb_cli_enqueue_change(vty, "./frr-zebra:zebra/link-params", NB_OP_DESTROY, NULL);
-
- return nb_cli_apply_changes(vty, NULL);
-}
-
-/* Specific Traffic Engineering parameters commands */
-DEFUN_HIDDEN (link_params_enable,
- link_params_enable_cmd,
- "enable",
- "Activate link parameters on this interface\n")
-{
- vty_out(vty, "This command is deprecated. Link parameters are activated when \"link-params\" node is entered.\n");
-
- return CMD_SUCCESS;
-}
-
-DEFUN_NOSH (no_link_params_enable,
- no_link_params_enable_cmd,
- "no enable",
- NO_STR
- "Disable link parameters on this interface\n")
-{
- int ret;
-
- vty_out(vty, "This command is deprecated. To disable link parameters use \"no link-params\" in the interface node.\n");
-
- nb_cli_enqueue_change(vty, ".", NB_OP_DESTROY, NULL);
-
- ret = nb_cli_apply_changes(vty, NULL);
- if (ret == CMD_SUCCESS)
- cmd_exit(vty);
-
- return ret;
-}
-
-/* STANDARD TE metrics */
-DEFPY_YANG (link_params_metric,
- link_params_metric_cmd,
- "[no] metric ![(0-4294967295)]$metric",
- NO_STR
- "Link metric for MPLS-TE purpose\n"
- "Metric value in decimal\n")
-{
- if (!no)
- nb_cli_enqueue_change(vty, "./metric", NB_OP_MODIFY, metric_str);
- else
- nb_cli_enqueue_change(vty, "./metric", NB_OP_DESTROY, NULL);
-
- return nb_cli_apply_changes(vty, NULL);
-}
-
-void lib_interface_zebra_link_params_metric_cli_write(
- struct vty *vty, const struct lyd_node *dnode, bool show_defaults)
-{
- uint32_t metric = yang_dnode_get_uint32(dnode, NULL);
-
- vty_out(vty, " metric %u\n", metric);
-}
-
-DEFPY_YANG (link_params_maxbw,
- link_params_maxbw_cmd,
- "max-bw BANDWIDTH",
- "Maximum bandwidth that can be used\n"
- "Bytes/second (IEEE floating point format)\n")
-{
- char value[YANG_VALUE_MAXLEN];
- float bw;
-
- if (sscanf(bandwidth, "%g", &bw) != 1) {
- vty_out(vty, "Invalid bandwidth value\n");
- return CMD_WARNING_CONFIG_FAILED;
- }
-
- snprintf(value, sizeof(value), "%a", bw);
-
- nb_cli_enqueue_change(vty, "./max-bandwidth", NB_OP_MODIFY, value);
-
- return nb_cli_apply_changes(vty, NULL);
-}
-
-void lib_interface_zebra_link_params_max_bandwidth_cli_write(
- struct vty *vty, const struct lyd_node *dnode, bool show_defaults)
-{
- float max_bandwidth = yang_dnode_get_bandwidth_ieee_float32(dnode, NULL);
-
- vty_out(vty, " max-bw %g\n", max_bandwidth);
-}
-
-DEFPY_YANG (link_params_max_rsv_bw,
- link_params_max_rsv_bw_cmd,
- "max-rsv-bw BANDWIDTH",
- "Maximum bandwidth that may be reserved\n"
- "Bytes/second (IEEE floating point format)\n")
-{
- char value[YANG_VALUE_MAXLEN];
- float bw;
-
- if (sscanf(bandwidth, "%g", &bw) != 1) {
- vty_out(vty, "Invalid bandwidth value\n");
- return CMD_WARNING_CONFIG_FAILED;
- }
-
- snprintf(value, sizeof(value), "%a", bw);
-
- nb_cli_enqueue_change(vty, "./max-reservable-bandwidth", NB_OP_MODIFY,
- value);
-
- return nb_cli_apply_changes(vty, NULL);
-}
-
-void lib_interface_zebra_link_params_max_reservable_bandwidth_cli_write(
- struct vty *vty, const struct lyd_node *dnode, bool show_defaults)
-{
- float max_reservable_bandwidth =
- yang_dnode_get_bandwidth_ieee_float32(dnode, NULL);
-
- vty_out(vty, " max-rsv-bw %g\n", max_reservable_bandwidth);
-}
-
-DEFPY_YANG (link_params_unrsv_bw,
- link_params_unrsv_bw_cmd,
- "unrsv-bw (0-7)$priority BANDWIDTH",
- "Unreserved bandwidth at each priority level\n"
- "Priority\n"
- "Bytes/second (IEEE floating point format)\n")
-{
- char xpath[XPATH_MAXLEN];
- char value[YANG_VALUE_MAXLEN];
- float bw;
-
- if (sscanf(bandwidth, "%g", &bw) != 1) {
- vty_out(vty, "Invalid bandwidth value\n");
- return CMD_WARNING_CONFIG_FAILED;
- }
-
- snprintf(xpath, sizeof(xpath),
- "./unreserved-bandwidths/unreserved-bandwidth[priority='%s']/unreserved-bandwidth",
- priority_str);
- snprintf(value, sizeof(value), "%a", bw);
-
- nb_cli_enqueue_change(vty, xpath, NB_OP_MODIFY, value);
-
- return nb_cli_apply_changes(vty, NULL);
-}
-
-void lib_interface_zebra_link_params_unreserved_bandwidths_unreserved_bandwidth_cli_write(
- struct vty *vty, const struct lyd_node *dnode, bool show_defaults)
-{
- uint8_t priority = yang_dnode_get_uint8(dnode, "priority");
- float unreserved_bandwidth =
- yang_dnode_get_bandwidth_ieee_float32(dnode,
- "unreserved-bandwidth");
-
- vty_out(vty, " unrsv-bw %u %g\n", priority, unreserved_bandwidth);
-}
-
-DEFPY_YANG(link_params_admin_grp, link_params_admin_grp_cmd,
- "admin-grp BITPATTERN",
- "Administrative group membership\n"
- "32-bit Hexadecimal value (e.g. 0xa1)\n")
-{
- int idx_bitpattern = 1;
- unsigned long value;
- char value_str[11];
-
- if (sscanf(argv[idx_bitpattern]->arg, "0x%lx", &value) != 1) {
- vty_out(vty, "link_params_admin_grp: fscanf: %s\n",
- safe_strerror(errno));
- return CMD_WARNING_CONFIG_FAILED;
- }
-
- if (value > 0xFFFFFFFF) {
- vty_out(vty, "value must be not be superior to 0xFFFFFFFF\n");
- return CMD_WARNING_CONFIG_FAILED;
- }
-
- snprintf(value_str, sizeof(value_str), "%ld", value);
-
- nb_cli_enqueue_change(
- vty, "./legacy-admin-group",
- NB_OP_MODIFY, value_str);
-
- return nb_cli_apply_changes(vty, NULL);
-}
-
-DEFPY_YANG(no_link_params_admin_grp, no_link_params_admin_grp_cmd,
- "no admin-grp",
- NO_STR "Disable Administrative group membership on this interface\n")
-{
- nb_cli_enqueue_change(
- vty, "./legacy-admin-group",
- NB_OP_DESTROY, NULL);
-
- return nb_cli_apply_changes(vty, NULL);
-}
-
-/* RFC5392 & RFC5316: INTER-AS */
-DEFPY_YANG (link_params_inter_as,
- link_params_inter_as_cmd,
- "[no] neighbor ![A.B.C.D$ip as (1-4294967295)$as]",
- NO_STR
- "Configure remote ASBR information (Neighbor IP address and AS number)\n"
- "Remote IP address in dot decimal A.B.C.D\n"
- "Remote AS number\n"
- "AS number in the range <1-4294967295>\n")
-{
- if (!no) {
- nb_cli_enqueue_change(vty, "./neighbor", NB_OP_CREATE, NULL);
- nb_cli_enqueue_change(vty, "./neighbor/remote-as", NB_OP_MODIFY,
- as_str);
- nb_cli_enqueue_change(vty, "./neighbor/ipv4-remote-id",
- NB_OP_MODIFY, ip_str);
- } else {
- nb_cli_enqueue_change(vty, "./neighbor", NB_OP_DESTROY, NULL);
- }
-
- return nb_cli_apply_changes(vty, NULL);
-}
-
-void lib_interface_zebra_link_params_neighbor_cli_write(
- struct vty *vty, const struct lyd_node *dnode, bool show_defaults)
-{
- uint32_t remote_as = yang_dnode_get_uint32(dnode, "remote-as");
- const char *ipv4_remote_id = yang_dnode_get_string(dnode,
- "ipv4-remote-id");
-
- vty_out(vty, " neighbor %s as %u\n", ipv4_remote_id, remote_as);
-}
-
-/* RFC7471: OSPF Traffic Engineering (TE) Metric extensions &
- * draft-ietf-isis-metric-extensions-07.txt */
-DEFPY_YANG (link_params_delay,
- link_params_delay_cmd,
- "[no] delay ![(0-16777215)$delay [min (0-16777215)$min max (0-16777215)$max]]",
- NO_STR
- "Unidirectional Average Link Delay\n"
- "Average delay in micro-second as decimal (0...16777215)\n"
- "Minimum delay\n"
- "Minimum delay in micro-second as decimal (0...16777215)\n"
- "Maximum delay\n"
- "Maximum delay in micro-second as decimal (0...16777215)\n")
-{
- if (!no) {
- nb_cli_enqueue_change(vty, "./delay", NB_OP_MODIFY, delay_str);
- if (min_str && max_str) {
- nb_cli_enqueue_change(vty, "./min-max-delay",
- NB_OP_CREATE, NULL);
- nb_cli_enqueue_change(vty, "./min-max-delay/delay-min",
- NB_OP_MODIFY, min_str);
- nb_cli_enqueue_change(vty, "./min-max-delay/delay-max",
- NB_OP_MODIFY, max_str);
- } else {
- nb_cli_enqueue_change(vty, "./min-max-delay",
- NB_OP_DESTROY, NULL);
- }
- } else {
- nb_cli_enqueue_change(vty, "./delay", NB_OP_DESTROY, NULL);
- nb_cli_enqueue_change(vty, "./min-max-delay", NB_OP_DESTROY,
- NULL);
- }
-
- return nb_cli_apply_changes(vty, NULL);
-}
-
-void lib_interface_zebra_link_params_delay_cli_write(
- struct vty *vty, const struct lyd_node *dnode, bool show_defaults)
-{
- uint32_t delay = yang_dnode_get_uint32(dnode, NULL);
-
- vty_out(vty, " delay %u", delay);
-
- if (yang_dnode_exists(dnode, "../min-max-delay")) {
- uint32_t delay_min =
- yang_dnode_get_uint32(dnode,
- "../min-max-delay/delay-min");
- uint32_t delay_max =
- yang_dnode_get_uint32(dnode,
- "../min-max-delay/delay-max");
-
- vty_out(vty, " min %u max %u", delay_min, delay_max);
- }
-
- vty_out(vty, "\n");
-}
-
-DEFPY_YANG (link_params_delay_var,
- link_params_delay_var_cmd,
- "[no] delay-variation ![(0-16777215)$delay_var]",
- NO_STR
- "Unidirectional Link Delay Variation\n"
- "delay variation in micro-second as decimal (0...16777215)\n")
-{
- if (!no)
- nb_cli_enqueue_change(vty, "./delay-variation", NB_OP_MODIFY,
- delay_var_str);
- else
- nb_cli_enqueue_change(vty, "./delay-variation", NB_OP_DESTROY,
- NULL);
-
- return nb_cli_apply_changes(vty, NULL);
-}
-
-void lib_interface_zebra_link_params_delay_variation_cli_write(
- struct vty *vty, const struct lyd_node *dnode, bool show_defaults)
-{
- uint32_t delay_variation = yang_dnode_get_uint32(dnode, NULL);
-
- vty_out(vty, " delay-variation %u\n", delay_variation);
-}
-
-DEFPY_YANG(
- link_params_pkt_loss, link_params_pkt_loss_cmd,
- "[no] packet-loss ![PERCENTAGE]",
- NO_STR
- "Unidirectional Link Packet Loss\n"
- "percentage of total traffic by 0.000003% step and less than 50.331642%\n")
-{
- if (!no)
- nb_cli_enqueue_change(vty, "./packet-loss", NB_OP_MODIFY,
- percentage);
- else
- nb_cli_enqueue_change(vty, "./packet-loss", NB_OP_DESTROY, NULL);
-
- return nb_cli_apply_changes(vty, NULL);
-}
-
-void lib_interface_zebra_link_params_packet_loss_cli_write(
- struct vty *vty, const struct lyd_node *dnode, bool show_defaults)
-{
- double packet_loss = yang_dnode_get_dec64(dnode, NULL);
-
- vty_out(vty, " packet-loss %lf\n", packet_loss);
-}
-
-DEFPY_YANG (link_params_res_bw,
- link_params_res_bw_cmd,
- "[no] res-bw ![BANDWIDTH]",
- NO_STR
- "Unidirectional Residual Bandwidth\n"
- "Bytes/second (IEEE floating point format)\n")
-{
- char value[YANG_VALUE_MAXLEN];
- float bw;
-
- if (!no) {
- if (sscanf(bandwidth, "%g", &bw) != 1) {
- vty_out(vty, "Invalid bandwidth value\n");
- return CMD_WARNING_CONFIG_FAILED;
- }
-
- snprintf(value, sizeof(value), "%a", bw);
-
- nb_cli_enqueue_change(vty, "./residual-bandwidth", NB_OP_MODIFY,
- value);
- } else {
- nb_cli_enqueue_change(vty, "./residual-bandwidth",
- NB_OP_DESTROY, NULL);
- }
-
- return nb_cli_apply_changes(vty, NULL);
-}
-
-void lib_interface_zebra_link_params_residual_bandwidth_cli_write(
- struct vty *vty, const struct lyd_node *dnode, bool show_defaults)
-{
- float residual_bandwidth = yang_dnode_get_bandwidth_ieee_float32(dnode,
- NULL);
-
- vty_out(vty, " res-bw %g\n", residual_bandwidth);
-}
-
-DEFPY_YANG (link_params_ava_bw,
- link_params_ava_bw_cmd,
- "[no] ava-bw ![BANDWIDTH]",
- NO_STR
- "Unidirectional Available Bandwidth\n"
- "Bytes/second (IEEE floating point format)\n")
-{
- char value[YANG_VALUE_MAXLEN];
- float bw;
-
- if (!no) {
- if (sscanf(bandwidth, "%g", &bw) != 1) {
- vty_out(vty, "Invalid bandwidth value\n");
- return CMD_WARNING_CONFIG_FAILED;
- }
-
- snprintf(value, sizeof(value), "%a", bw);
-
- nb_cli_enqueue_change(vty, "./available-bandwidth",
- NB_OP_MODIFY, value);
- } else {
- nb_cli_enqueue_change(vty, "./available-bandwidth",
- NB_OP_DESTROY, NULL);
- }
-
- return nb_cli_apply_changes(vty, NULL);
-}
-
-void lib_interface_zebra_link_params_available_bandwidth_cli_write(
- struct vty *vty, const struct lyd_node *dnode, bool show_defaults)
-{
- float available_bandwidth = yang_dnode_get_bandwidth_ieee_float32(dnode,
- NULL);
-
- vty_out(vty, " ava-bw %g\n", available_bandwidth);
-}
-
-DEFPY_YANG (link_params_use_bw,
- link_params_use_bw_cmd,
- "[no] use-bw ![BANDWIDTH]",
- NO_STR
- "Unidirectional Utilised Bandwidth\n"
- "Bytes/second (IEEE floating point format)\n")
-{
- char value[YANG_VALUE_MAXLEN];
- float bw;
-
- if (!no) {
- if (sscanf(bandwidth, "%g", &bw) != 1) {
- vty_out(vty, "Invalid bandwidth value\n");
- return CMD_WARNING_CONFIG_FAILED;
- }
-
- snprintf(value, sizeof(value), "%a", bw);
-
- nb_cli_enqueue_change(vty, "./utilized-bandwidth", NB_OP_MODIFY,
- value);
- } else {
- nb_cli_enqueue_change(vty, "./utilized-bandwidth",
- NB_OP_DESTROY, NULL);
- }
-
- return nb_cli_apply_changes(vty, NULL);
-}
-
-void lib_interface_zebra_link_params_utilized_bandwidth_cli_write(
- struct vty *vty, const struct lyd_node *dnode, bool show_defaults)
-{
- float utilized_bandwidth = yang_dnode_get_bandwidth_ieee_float32(dnode,
- NULL);
-
- vty_out(vty, " use-bw %g\n", utilized_bandwidth);
-}
-
-static int ag_change(struct vty *vty, int argc, struct cmd_token **argv,
- const char *xpath_base, bool no, int start_idx)
-{
- char xpath[XPATH_MAXLEN];
-
- for (int i = start_idx; i < argc; i++) {
- snprintf(xpath, XPATH_MAXLEN, "%s[.='%s']", xpath_base,
- argv[i]->arg);
- nb_cli_enqueue_change(vty, xpath,
- no ? NB_OP_DESTROY : NB_OP_CREATE, NULL);
- }
- return nb_cli_apply_changes(vty, NULL);
-}
-
-/*
- * XPath:
- * /frr-interface:lib/interface/frr-zebra:zebra/link-params/affinities/affinity
- */
-DEFPY_YANG(link_params_affinity, link_params_affinity_cmd,
- "[no] affinity NAME...",
- NO_STR
- "Interface affinities\n"
- "Affinity names\n")
-{
- return ag_change(vty, argc, argv,
- "./affinities/affinity",
- no, no ? 2 : 1);
-}
-
-
-/*
- * XPath:
- * /frr-interface:lib/interface/frr-zebra:zebra/link-params/affinities/affinity-mode
- */
-DEFPY_YANG(link_params_affinity_mode, link_params_affinity_mode_cmd,
- "affinity-mode <standard|extended|both>$affmode",
- "Interface affinity mode\n"
- "Standard Admin-Group only RFC3630,5305,5329\n"
- "Extended Admin-Group only RFC7308 (default)\n"
- "Standard and extended Admin-Group format\n")
-{
- const char *xpath = "./affinity-mode";
-
- nb_cli_enqueue_change(vty, xpath, NB_OP_MODIFY, affmode);
-
- return nb_cli_apply_changes(vty, NULL);
-}
-
-DEFPY_YANG(no_link_params_affinity_mode, no_link_params_affinity_mode_cmd,
- "no affinity-mode [<standard|extended|both>]",
- NO_STR
- "Interface affinity mode\n"
- "Standard Admin-Group only RFC3630,5305,5329\n"
- "Extended Admin-Group only RFC7308 (default)\n"
- "Standard and extended Admin-Group format\n")
-{
- const char *xpath = "./affinity-mode";
-
- nb_cli_enqueue_change(vty, xpath, NB_OP_MODIFY, "extended");
-
- return nb_cli_apply_changes(vty, NULL);
-}
-
-static int ag_iter_cb(const struct lyd_node *dnode, void *arg)
-{
- struct vty *vty = (struct vty *)arg;
-
- vty_out(vty, " %s", yang_dnode_get_string(dnode, "."));
- return YANG_ITER_CONTINUE;
-}
-
-void cli_show_legacy_admin_group(struct vty *vty, const struct lyd_node *dnode,
- bool show_defaults)
-{
- vty_out(vty, " admin-grp 0x%x\n",
- yang_dnode_get_uint32(dnode, NULL));
-}
-
-void cli_show_affinity_mode(struct vty *vty, const struct lyd_node *dnode,
- bool show_defaults)
-{
- enum affinity_mode affinity_mode = yang_dnode_get_enum(dnode, ".");
-
- if (affinity_mode == AFFINITY_MODE_STANDARD)
- vty_out(vty, " affinity-mode standard\n");
- else if (affinity_mode == AFFINITY_MODE_BOTH)
- vty_out(vty, " affinity-mode both\n");
- else if (affinity_mode == AFFINITY_MODE_EXTENDED && show_defaults)
- vty_out(vty, " affinity-mode extended\n");
-}
-
-void cli_show_affinity(struct vty *vty, const struct lyd_node *dnode,
- bool show_defaults)
-{
- if (!yang_dnode_exists(dnode, "affinity"))
- return;
-
- vty_out(vty, " affinity");
- yang_dnode_iterate(ag_iter_cb, vty, dnode, "affinity");
- vty_out(vty, "\n");
-}
-
void if_ip_address_install(struct interface *ifp, struct prefix *prefix,
const char *label, struct prefix *pp)
{
@@ -4668,144 +3908,6 @@ void if_ip_address_uninstall(struct interface *ifp, struct prefix *prefix,
UNSET_FLAG(ifc->conf, ZEBRA_IFC_QUEUED);
}
-#ifdef HAVE_NETLINK
-DEFPY_YANG (ip_address,
- ip_address_cmd,
- "[no] ip address A.B.C.D/M [label LINE$label]",
- NO_STR
- "Interface Internet Protocol config commands\n"
- "Set the IP address of an interface\n"
- "IP address (e.g. 10.0.0.1/8)\n"
- "Label of this address\n"
- "Label\n")
-#else
-DEFPY_YANG (ip_address,
- ip_address_cmd,
- "[no] ip address A.B.C.D/M",
- NO_STR
- "Interface Internet Protocol config commands\n"
- "Set the IP address of an interface\n"
- "IP address (e.g. 10.0.0.1/8)\n")
-#endif
-{
- char ip[INET_ADDRSTRLEN + 3];
- char *mask;
-
- if (no) {
- nb_cli_enqueue_change(vty, ".", NB_OP_DESTROY, NULL);
- } else {
- nb_cli_enqueue_change(vty, ".", NB_OP_CREATE, NULL);
-#ifdef HAVE_NETLINK
- if (label)
- nb_cli_enqueue_change(vty, "./label", NB_OP_MODIFY,
- label);
- else
- nb_cli_enqueue_change(vty, "./label", NB_OP_DESTROY,
- NULL);
-#endif
- }
-
- strlcpy(ip, address_str, sizeof(ip));
-
- mask = strchr(ip, '/');
- *mask = 0;
- mask++;
-
- return nb_cli_apply_changes(vty,
- "./frr-zebra:zebra/ipv4-addrs[ip='%s'][prefix-length='%s']",
- ip, mask);
-}
-
-void lib_interface_zebra_ipv4_addrs_cli_write(struct vty *vty,
- const struct lyd_node *dnode,
- bool show_defaults)
-{
- const char *ip = yang_dnode_get_string(dnode, "ip");
- uint8_t prefix_length = yang_dnode_get_uint8(dnode, "prefix-length");
-
- vty_out(vty, " ip address %s/%u", ip, prefix_length);
-
- if (yang_dnode_exists(dnode, "label")) {
- const char *label = yang_dnode_get_string(dnode, "label");
- vty_out(vty, " label %s", label);
- }
-
- vty_out(vty, "\n");
-}
-
-#ifdef HAVE_NETLINK
-DEFPY_YANG (ip_address_peer,
- ip_address_peer_cmd,
- "[no] ip address A.B.C.D peer A.B.C.D/M [label LINE$label]",
- NO_STR
- "Interface Internet Protocol config commands\n"
- "Set the IP address of an interface\n"
- "Local IP (e.g. 10.0.0.1) for P-t-P address\n"
- "Specify P-t-P address\n"
- "Peer IP address (e.g. 10.0.0.1/8)\n"
- "Label of this address\n"
- "Label\n")
-#else
-DEFPY_YANG (ip_address_peer,
- ip_address_peer_cmd,
- "[no] ip address A.B.C.D peer A.B.C.D/M",
- NO_STR
- "Interface Internet Protocol config commands\n"
- "Set the IP address of an interface\n"
- "Local IP (e.g. 10.0.0.1) for P-t-P address\n"
- "Specify P-t-P address\n"
- "Peer IP address (e.g. 10.0.0.1/8)\n")
-#endif
-{
- char peer_ip[INET_ADDRSTRLEN + 3];
- char *peer_mask;
-
- if (no) {
- nb_cli_enqueue_change(vty, ".", NB_OP_DESTROY, NULL);
- } else {
- nb_cli_enqueue_change(vty, ".", NB_OP_CREATE, NULL);
-#ifdef HAVE_NETLINK
- if (label)
- nb_cli_enqueue_change(vty, "./label", NB_OP_MODIFY,
- label);
- else
- nb_cli_enqueue_change(vty, "./label", NB_OP_DESTROY,
- NULL);
-#endif
- }
-
- strlcpy(peer_ip, peer_str, sizeof(peer_ip));
-
- peer_mask = strchr(peer_ip, '/');
- *peer_mask = 0;
- peer_mask++;
-
- return nb_cli_apply_changes(
- vty,
- "./frr-zebra:zebra/ipv4-p2p-addrs[ip='%s'][peer-ip='%s'][peer-prefix-length='%s']",
- address_str, peer_ip, peer_mask);
-}
-
-void lib_interface_zebra_ipv4_p2p_addrs_cli_write(struct vty *vty,
- const struct lyd_node *dnode,
- bool show_defaults)
-{
- const char *ip = yang_dnode_get_string(dnode, "ip");
- const char *peer_ip = yang_dnode_get_string(dnode, "peer-ip");
- uint8_t peer_prefix_length = yang_dnode_get_uint8(dnode,
- "peer-prefix-length");
-
- vty_out(vty, " ip address %s peer %s/%u", ip, peer_ip,
- peer_prefix_length);
-
- if (yang_dnode_exists(dnode, "label")) {
- const char *label = yang_dnode_get_string(dnode, "label");
- vty_out(vty, " label %s", label);
- }
-
- vty_out(vty, "\n");
-}
-
void if_ipv6_address_install(struct interface *ifp, struct prefix *prefix)
{
struct zebra_if *if_data;
@@ -4872,43 +3974,6 @@ void if_ipv6_address_uninstall(struct interface *ifp, struct prefix *prefix)
UNSET_FLAG(ifc->conf, ZEBRA_IFC_QUEUED);
}
-DEFPY_YANG (ipv6_address,
- ipv6_address_cmd,
- "[no] ipv6 address X:X::X:X/M",
- NO_STR
- "Interface IPv6 config commands\n"
- "Set the IP address of an interface\n"
- "IPv6 address (e.g. 3ffe:506::1/48)\n")
-{
- char ip[INET6_ADDRSTRLEN + 4];
- char *mask;
-
- if (no)
- nb_cli_enqueue_change(vty, ".", NB_OP_DESTROY, NULL);
- else
- nb_cli_enqueue_change(vty, ".", NB_OP_CREATE, NULL);
-
- strlcpy(ip, address_str, sizeof(ip));
-
- mask = strchr(ip, '/');
- *mask = 0;
- mask++;
-
- return nb_cli_apply_changes(vty,
- "./frr-zebra:zebra/ipv6-addrs[ip='%s'][prefix-length='%s']",
- ip, mask);
-}
-
-void lib_interface_zebra_ipv6_addrs_cli_write(struct vty *vty,
- const struct lyd_node *dnode,
- bool show_defaults)
-{
- const char *ip = yang_dnode_get_string(dnode, "ip");
- uint8_t prefix_length = yang_dnode_get_uint8(dnode, "prefix-length");
-
- vty_out(vty, " ipv6 address %s/%u\n", ip, prefix_length);
-}
-
/* Allocate and initialize interface vector. */
void zebra_if_init(void)
{
@@ -4916,10 +3981,6 @@ void zebra_if_init(void)
hook_register_prio(if_add, 0, if_zebra_new_hook);
hook_register_prio(if_del, 0, if_zebra_delete_hook);
- /* Install configuration write function. */
- if_cmd_init_default();
- install_node(&link_params_node);
-
install_element(VIEW_NODE, &show_interface_cmd);
install_element(VIEW_NODE, &show_interface_vrf_all_cmd);
install_element(VIEW_NODE, &show_interface_name_vrf_cmd);
@@ -4927,39 +3988,4 @@ void zebra_if_init(void)
install_element(ENABLE_NODE, &show_interface_desc_cmd);
install_element(ENABLE_NODE, &show_interface_desc_vrf_all_cmd);
- install_element(INTERFACE_NODE, &multicast_new_cmd);
- install_element(INTERFACE_NODE, &multicast_cmd);
- install_element(INTERFACE_NODE, &no_multicast_cmd);
- install_element(INTERFACE_NODE, &mpls_cmd);
- install_element(INTERFACE_NODE, &linkdetect_cmd);
- install_element(INTERFACE_NODE, &shutdown_if_cmd);
- install_element(INTERFACE_NODE, &bandwidth_if_cmd);
- install_element(INTERFACE_NODE, &ip_address_cmd);
- install_element(INTERFACE_NODE, &ip_address_peer_cmd);
- install_element(INTERFACE_NODE, &ipv6_address_cmd);
- install_element(INTERFACE_NODE, &link_params_cmd);
- install_element(INTERFACE_NODE, &no_link_params_cmd);
- install_default(LINK_PARAMS_NODE);
- install_element(LINK_PARAMS_NODE, &link_params_enable_cmd);
- install_element(LINK_PARAMS_NODE, &no_link_params_enable_cmd);
- install_element(LINK_PARAMS_NODE, &link_params_metric_cmd);
- install_element(LINK_PARAMS_NODE, &link_params_maxbw_cmd);
- install_element(LINK_PARAMS_NODE, &link_params_max_rsv_bw_cmd);
- install_element(LINK_PARAMS_NODE, &link_params_unrsv_bw_cmd);
- install_element(LINK_PARAMS_NODE, &link_params_admin_grp_cmd);
- install_element(LINK_PARAMS_NODE, &no_link_params_admin_grp_cmd);
- install_element(LINK_PARAMS_NODE, &link_params_inter_as_cmd);
- install_element(LINK_PARAMS_NODE, &link_params_delay_cmd);
- install_element(LINK_PARAMS_NODE, &link_params_delay_var_cmd);
- install_element(LINK_PARAMS_NODE, &link_params_pkt_loss_cmd);
- install_element(LINK_PARAMS_NODE, &link_params_ava_bw_cmd);
- install_element(LINK_PARAMS_NODE, &link_params_res_bw_cmd);
- install_element(LINK_PARAMS_NODE, &link_params_use_bw_cmd);
- install_element(LINK_PARAMS_NODE, &link_params_affinity_cmd);
- install_element(LINK_PARAMS_NODE, &link_params_affinity_mode_cmd);
- install_element(LINK_PARAMS_NODE, &no_link_params_affinity_mode_cmd);
- install_element(LINK_PARAMS_NODE, &exit_link_params_cmd);
-
- /* setup EVPN MH elements */
- zebra_evpn_interface_init();
}