]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: only allow unicast|multicast SAFIs in VRF/View (i.e., non-core) BGP instances
authorLou Berger <lberger@labn.net>
Mon, 9 Oct 2017 13:45:17 +0000 (09:45 -0400)
committerLou Berger <lberger@labn.net>
Mon, 9 Oct 2017 15:21:03 +0000 (11:21 -0400)
Signed-off-by: Lou Berger <lberger@labn.net>
bgpd/bgp_vty.c

index 355d1037b8b472985f0175b281c7f13c639bcf97..37ab294c60104d6b3f1765dd8b260a3810d9c9c9 100644 (file)
@@ -6045,7 +6045,13 @@ DEFUN_NOSH (address_family_ipv4_safi,
 {
 
        if (argc == 3) {
+               VTY_DECLVAR_CONTEXT(bgp, bgp);
                safi_t safi = bgp_vty_safi_from_str(argv[2]->text);
+               if (bgp->inst_type != BGP_INSTANCE_TYPE_DEFAULT &&
+                   safi != SAFI_UNICAST && safi != SAFI_MULTICAST) {
+                       vty_out(vty, "Only Unicast and Multicast SAFIs supported in non-core instances.\n");
+                       return CMD_WARNING_CONFIG_FAILED;
+               }
                vty->node = bgp_node_type(AFI_IP, safi);
        } else
                vty->node = BGP_IPV4_NODE;
@@ -6061,7 +6067,13 @@ DEFUN_NOSH (address_family_ipv6_safi,
        BGP_SAFI_WITH_LABEL_HELP_STR)
 {
        if (argc == 3) {
+               VTY_DECLVAR_CONTEXT(bgp, bgp);
                safi_t safi = bgp_vty_safi_from_str(argv[2]->text);
+               if (bgp->inst_type != BGP_INSTANCE_TYPE_DEFAULT &&
+                   safi != SAFI_UNICAST && safi != SAFI_MULTICAST) {
+                       vty_out(vty, "Only Unicast and Multicast SAFIs supported in non-core instances.\n");
+                       return CMD_WARNING_CONFIG_FAILED;
+               }
                vty->node = bgp_node_type(AFI_IP6, safi);
        } else
                vty->node = BGP_IPV6_NODE;
@@ -6100,6 +6112,11 @@ DEFUN_NOSH (address_family_evpn,
        "Address Family\n"
        "Address Family modifier\n")
 {
+       VTY_DECLVAR_CONTEXT(bgp, bgp);
+       if (bgp->inst_type != BGP_INSTANCE_TYPE_DEFAULT) {
+               vty_out(vty, "Only Unicast and Multicast SAFIs supported in non-core instances.\n");
+               return CMD_WARNING_CONFIG_FAILED;
+       }
        vty->node = BGP_EVPN_NODE;
        return CMD_SUCCESS;
 }