]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: Disallow ebgp-multihop on swpX peers
authorQuentin Young <qlyoung@cumulusnetworks.com>
Tue, 12 Jul 2016 21:13:24 +0000 (21:13 +0000)
committerQuentin Young <qlyoung@cumulusnetworks.com>
Tue, 12 Jul 2016 21:13:24 +0000 (21:13 +0000)
Disallow setting ebgp-multihop on peers directly
connected via an interface.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
bgpd/bgp_vty.c
bgpd/bgpd.h

index 5dff63e8c2e8d430fd0d6c8e127ca7bcaa26a807..b1a3116be360b1b6a40ebc75a7e468563ae84a4a 100644 (file)
@@ -304,6 +304,9 @@ bgp_vty_return (struct vty *vty, int ret)
     case BGP_ERR_INVALID_FOR_DYNAMIC_PEER:
       str = "Operation not allowed on a dynamic neighbor";
       break;
+    case BGP_ERR_INVALID_FOR_DIRECT_PEER:
+      str = "Operation not allowed on a directly connected neighbor";
+      break;
     }
   if (str)
     {
@@ -4434,6 +4437,9 @@ peer_ebgp_multihop_set_vty (struct vty *vty, const char *ip_str,
   if (! peer)
     return CMD_WARNING;
 
+  if (peer->conf_if)
+    return bgp_vty_return (vty, BGP_ERR_INVALID_FOR_DIRECT_PEER);
+
   if (! ttl_str)
     ttl = MAXTTL;
   else
index 0c6aa6b21a21437382edfb4dcc2ec0355833af0c..2acdaed3311aacb6f6b4de97b08b4bb4ecfe3ab1 100644 (file)
@@ -1120,6 +1120,7 @@ enum bgp_clear_type
 #define BGP_ERR_DYNAMIC_NEIGHBORS_RANGE_NOT_FOUND -31
 #define BGP_ERR_INVALID_FOR_DYNAMIC_PEER        -32
 #define BGP_ERR_MAX                             -33
+#define BGP_ERR_INVALID_FOR_DIRECT_PEER         -34
 
 /*
  * Enumeration of different policy kinds a peer can be configured with.