]> git.proxmox.com Git - mirror_frr.git/blobdiff - bgpd/bgp_nht.c
Merge pull request #8942 from ton31337/fix/cleanups_2
[mirror_frr.git] / bgpd / bgp_nht.c
index 4c72bd9f456b01ccda4ddca1327eae028741429d..eb00a4641c8393d6d43a2e3a288cfe94d2743dda 100644 (file)
@@ -793,7 +793,18 @@ static int make_prefix(int afi, struct bgp_path_info *pi, struct prefix *p)
                                || IN6_IS_ADDR_LINKLOCAL(
                                        &pi->attr->mp_nexthop_global)))
                                p->u.prefix6 = pi->attr->mp_nexthop_local;
-                       else
+                       /* If we receive MR_REACH with (GA)::(LL)
+                        * then check for route-map to choose GA or LL
+                        */
+                       else if (pi->attr->mp_nexthop_len
+                                == BGP_ATTR_NHLEN_IPV6_GLOBAL_AND_LL) {
+                               if (pi->attr->mp_nexthop_prefer_global)
+                                       p->u.prefix6 =
+                                               pi->attr->mp_nexthop_global;
+                               else
+                                       p->u.prefix6 =
+                                               pi->attr->mp_nexthop_local;
+                       } else
                                p->u.prefix6 = pi->attr->mp_nexthop_global;
                        p->prefixlen = IPV6_MAX_BITLEN;
                }