]> git.proxmox.com Git - mirror_frr.git/blobdiff - bgpd/bgpd.c
Merge branch 'master' of https://github.com/dwalton76/frr into bgpd-ipv4-plus-label...
[mirror_frr.git] / bgpd / bgpd.c
index 65b53be653642a0f5307c903f0682237fd10e38d..5359734efe317be29526377b5af5ac2b3acca243 100644 (file)
@@ -1756,6 +1756,11 @@ non_peergroup_activate_af (struct peer *peer, afi_t afi, safi_t safi)
       return 1;
     }
 
+  /* Do not activate a peer for both SAFI_UNICAST and SAFI_LABELED_UNICAST */
+  if ((safi == SAFI_UNICAST && peer->afc[afi][SAFI_LABELED_UNICAST]) ||
+      (safi == SAFI_LABELED_UNICAST && peer->afc[afi][SAFI_UNICAST]))
+    return BGP_ERR_PEER_SAFI_CONFLICT;
+
   /* Nothing to do if we've already activated this peer */
   if (peer->afc[afi][safi])
     return 0;
@@ -1815,6 +1820,12 @@ peer_activate (struct peer *peer, afi_t afi, safi_t safi)
    * peer-group as well */
   if (CHECK_FLAG (peer->sflags, PEER_STATUS_GROUP))
     {
+
+      /* Do not activate a peer for both SAFI_UNICAST and SAFI_LABELED_UNICAST */
+      if ((safi == SAFI_UNICAST && peer->afc[afi][SAFI_LABELED_UNICAST]) ||
+          (safi == SAFI_LABELED_UNICAST && peer->afc[afi][SAFI_UNICAST]))
+        return BGP_ERR_PEER_SAFI_CONFLICT;
+
       peer->afc[afi][safi] = 1;
       group = peer->group;