summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ripngd/ripng_zebra.c198
1 files changed, 74 insertions, 124 deletions
diff --git a/ripngd/ripng_zebra.c b/ripngd/ripng_zebra.c
index c931a291..8e766062 100644
--- a/ripngd/ripng_zebra.c
+++ b/ripngd/ripng_zebra.c
@@ -217,7 +217,8 @@ static struct {
{ZEBRA_ROUTE_CONNECT, 1, "connected"},
{ZEBRA_ROUTE_STATIC, 1, "static"},
{ZEBRA_ROUTE_OSPF6, 1, "ospf6"},
- {ZEBRA_ROUTE_BGP, 1, "bgp"},
+ {ZEBRA_ROUTE_BGP, 2, "bgp"},
+ {ZEBRA_ROUTE_BABEL, 2, "babel"},
{0, 0, NULL}
};
@@ -289,198 +290,147 @@ DEFUN (no_ripng_redistribute_ripng,
DEFUN (ripng_redistribute_type,
ripng_redistribute_type_cmd,
- "redistribute (kernel|connected|static|ospf6|bgp)",
- "Redistribute information from another routing protocol\n"
- "Kernel routes\n"
- "Connected\n"
- "Static routes\n"
- "Open Shortest Path First (OSPFv3)\n"
- "Border Gateway Protocol (BGP)\n")
+ "redistribute " QUAGGA_REDIST_STR_RIPNGD,
+ "Redistribute\n"
+ QUAGGA_REDIST_HELP_STR_RIPNGD)
{
- int i;
+ int type;
- for(i = 0; redist_type[i].str; i++)
+ type = proto_redistnum(AFI_IP6, argv[0]);
+
+ if (type < 0)
{
- if (strncmp (redist_type[i].str, argv[0],
- redist_type[i].str_min_len) == 0)
- {
- zclient_redistribute (ZEBRA_REDISTRIBUTE_ADD, zclient, redist_type[i].type);
- return CMD_SUCCESS;
- }
+ vty_out(vty, "Invalid type %s%s", argv[0], VTY_NEWLINE);
+ return CMD_WARNING;
}
- vty_out(vty, "Invalid type %s%s", argv[0],
- VTY_NEWLINE);
-
- return CMD_WARNING;
+ zclient_redistribute (ZEBRA_REDISTRIBUTE_ADD, zclient, type);
+ return CMD_SUCCESS;
}
DEFUN (no_ripng_redistribute_type,
no_ripng_redistribute_type_cmd,
- "no redistribute (kernel|connected|static|ospf6|bgp)",
+ "no redistribute " QUAGGA_REDIST_STR_RIPNGD,
NO_STR
- "Redistribute information from another routing protocol\n"
- "Kernel routes\n"
- "Connected\n"
- "Static routes\n"
- "Open Shortest Path First (OSPFv3)\n"
- "Border Gateway Protocol (BGP)\n")
+ "Redistribute\n"
+ QUAGGA_REDIST_HELP_STR_RIPNGD)
{
- int i;
+ int type;
- for (i = 0; redist_type[i].str; i++)
+ type = proto_redistnum(AFI_IP6, argv[0]);
+
+ if (type < 0)
{
- if (strncmp(redist_type[i].str, argv[0],
- redist_type[i].str_min_len) == 0)
- {
- ripng_redistribute_metric_unset (redist_type[i].type);
- ripng_redistribute_routemap_unset (redist_type[i].type);
- return ripng_redistribute_unset (redist_type[i].type);
- }
+ vty_out(vty, "Invalid type %s%s", argv[0], VTY_NEWLINE);
+ return CMD_WARNING;
}
- vty_out(vty, "Invalid type %s%s", argv[0],
- VTY_NEWLINE);
-
- return CMD_WARNING;
+ ripng_redistribute_metric_unset (type);
+ ripng_redistribute_routemap_unset (type);
+ return ripng_redistribute_unset (type);
}
DEFUN (ripng_redistribute_type_metric,
ripng_redistribute_type_metric_cmd,
- "redistribute (kernel|connected|static|ospf6|bgp) metric <0-16>",
- "Redistribute information from another routing protocol\n"
- "Kernel routes\n"
- "Connected\n"
- "Static routes\n"
- "Open Shortest Path First (OSPFv3)\n"
- "Border Gateway Protocol (BGP)\n"
+ "redistribute " QUAGGA_REDIST_STR_RIPNGD " metric <0-16>",
+ "Redistribute\n"
+ QUAGGA_REDIST_HELP_STR_RIPNGD
"Metric\n"
"Metric value\n")
{
- int i;
+ int type;
int metric;
metric = atoi (argv[1]);
+ type = proto_redistnum(AFI_IP6, argv[0]);
- for (i = 0; redist_type[i].str; i++) {
- if (strncmp(redist_type[i].str, argv[0],
- redist_type[i].str_min_len) == 0)
- {
- ripng_redistribute_metric_set (redist_type[i].type, metric);
- zclient_redistribute (ZEBRA_REDISTRIBUTE_ADD, zclient, redist_type[i].type);
- return CMD_SUCCESS;
- }
- }
-
- vty_out(vty, "Invalid type %s%s", argv[0],
- VTY_NEWLINE);
+ if (type < 0)
+ {
+ vty_out(vty, "Invalid type %s%s", argv[0], VTY_NEWLINE);
+ return CMD_WARNING;
+ }
- return CMD_WARNING;
+ ripng_redistribute_metric_set (type, metric);
+ zclient_redistribute (ZEBRA_REDISTRIBUTE_ADD, zclient, type);
+ return CMD_SUCCESS;
}
ALIAS (no_ripng_redistribute_type,
no_ripng_redistribute_type_metric_cmd,
- "no redistribute (kernel|connected|static|ospf6|bgp) metric <0-16>",
+ "no redistribute " QUAGGA_REDIST_STR_RIPNGD " metric <0-16>",
NO_STR
- "Redistribute information from another routing protocol\n"
- "Kernel routes\n"
- "Connected\n"
- "Static routes\n"
- "Open Shortest Path First (OSPFv3)\n"
- "Border Gateway Protocol (BGP)\n"
+ "Redistribute\n"
+ QUAGGA_REDIST_HELP_STR_RIPNGD
"Metric\n"
"Metric value\n")
DEFUN (ripng_redistribute_type_routemap,
ripng_redistribute_type_routemap_cmd,
- "redistribute (kernel|connected|static|ospf6|bgp) route-map WORD",
- "Redistribute information from another routing protocol\n"
- "Kernel routes\n"
- "Connected\n"
- "Static routes\n"
- "Open Shortest Path First (OSPFv3)\n"
- "Border Gateway Protocol (BGP)\n"
+ "redistribute " QUAGGA_REDIST_STR_RIPNGD " route-map WORD",
+ "Redistribute\n"
+ QUAGGA_REDIST_HELP_STR_RIPNGD
"Route map reference\n"
"Pointer to route-map entries\n")
{
- int i;
+ int type;
- for (i = 0; redist_type[i].str; i++) {
- if (strncmp(redist_type[i].str, argv[0],
- redist_type[i].str_min_len) == 0)
- {
- ripng_redistribute_routemap_set (redist_type[i].type, argv[1]);
- zclient_redistribute (ZEBRA_REDISTRIBUTE_ADD, zclient, redist_type[i].type);
- return CMD_SUCCESS;
- }
- }
+ type = proto_redistnum(AFI_IP6, argv[0]);
- vty_out(vty, "Invalid type %s%s", argv[0],
- VTY_NEWLINE);
+ if (type < 0)
+ {
+ vty_out(vty, "Invalid type %s%s", argv[0], VTY_NEWLINE);
+ return CMD_WARNING;
+ }
- return CMD_WARNING;
+ ripng_redistribute_routemap_set (type, argv[1]);
+ zclient_redistribute (ZEBRA_REDISTRIBUTE_ADD, zclient, type);
+ return CMD_SUCCESS;
}
ALIAS (no_ripng_redistribute_type,
no_ripng_redistribute_type_routemap_cmd,
- "no redistribute (kernel|connected|static|ospf6|bgp) route-map WORD",
+ "no redistribute " QUAGGA_REDIST_STR_RIPNGD " route-map WORD",
NO_STR
- "Redistribute information from another routing protocol\n"
- "Kernel routes\n"
- "Connected\n"
- "Static routes\n"
- "Open Shortest Path First (OSPFv3)\n"
- "Border Gateway Protocol (BGP)\n"
+ "Redistribute\n"
+ QUAGGA_REDIST_HELP_STR_RIPNGD
"Route map reference\n"
"Pointer to route-map entries\n")
DEFUN (ripng_redistribute_type_metric_routemap,
ripng_redistribute_type_metric_routemap_cmd,
- "redistribute (kernel|connected|static|ospf6|bgp) metric <0-16> route-map WORD",
- "Redistribute information from another routing protocol\n"
- "Kernel routes\n"
- "Connected\n"
- "Static routes\n"
- "Open Shortest Path First (OSPFv3)\n"
- "Border Gateway Protocol (BGP)\n"
+ "redistribute " QUAGGA_REDIST_STR_RIPNGD " metric <0-16> route-map WORD",
+ "Redistribute\n"
+ QUAGGA_REDIST_HELP_STR_RIPNGD
"Metric\n"
"Metric value\n"
"Route map reference\n"
"Pointer to route-map entries\n")
{
- int i;
+ int type;
int metric;
+ type = proto_redistnum(AFI_IP6, argv[0]);
metric = atoi (argv[1]);
- for (i = 0; redist_type[i].str; i++) {
- if (strncmp(redist_type[i].str, argv[0],
- redist_type[i].str_min_len) == 0)
- {
- ripng_redistribute_metric_set (redist_type[i].type, metric);
- ripng_redistribute_routemap_set (redist_type[i].type, argv[2]);
- zclient_redistribute (ZEBRA_REDISTRIBUTE_ADD, zclient, redist_type[i].type);
- return CMD_SUCCESS;
- }
- }
-
- vty_out(vty, "Invalid type %s%s", argv[0],
- VTY_NEWLINE);
+ if (type < 0)
+ {
+ vty_out(vty, "Invalid type %s%s", argv[0], VTY_NEWLINE);
+ return CMD_WARNING;
+ }
- return CMD_WARNING;
+ ripng_redistribute_metric_set (type, metric);
+ ripng_redistribute_routemap_set (type, argv[2]);
+ zclient_redistribute (ZEBRA_REDISTRIBUTE_ADD, zclient, type);
+ return CMD_SUCCESS;
}
ALIAS (no_ripng_redistribute_type,
no_ripng_redistribute_type_metric_routemap_cmd,
- "no redistribute (kernel|connected|static|ospf6|bgp) metric <0-16> route-map WORD",
+ "no redistribute " QUAGGA_REDIST_STR_RIPNGD " metric <0-16> route-map WORD",
NO_STR
- "Redistribute information from another routing protocol\n"
- "Kernel routes\n"
- "Connected\n"
- "Static routes\n"
- "Open Shortest Path First (OSPFv3)\n"
- "Border Gateway Protocol (BGP)\n"
+ "Redistribute\n"
+ QUAGGA_REDIST_HELP_STR_RIPNGD
"Route map reference\n"
"Pointer to route-map entries\n")