>
>
> @@ -473,41 +473,32 @@ bgp_info_cmp (struct bgp *bgp, struct
>> bgp_info *new, struct bgp_info *exist,
>> existm = exist->extra->igpmetric;
>>
>> if (newm < existm)
>> - ret = 1;
>> + return -1;
>> if (newm > existm)
>> - ret = 0;
>> + return 1;
>>
>> /* 9. Maximum path check. */
>> - if (newm == existm)
>> + if (bgp_mpath_is_configured (bgp, afi, safi))
>> {
>> if (bgp_flag_check(bgp, BGP_FLAG_ASPATH_MULTIPATH_RELAX))
>> {
>> -
>> - /*
>> - * For the two paths, all comparison steps till IGP
>> metric
>> - * have succeeded - including AS_PATH hop count. Since
>> 'bgp
>> - * bestpath as-path multipath-relax' knob is on, we
>> don't need
>> - * an exact match of AS_PATH. Thus, mark the paths are
>> equal.
>> - * That will trigger both these paths to get into the
>> multipath
>> - * array.
>> - */
>> - *paths_eq = 1;
>> + /*
>> + * For the two paths, all comparison steps till IGP
>> metric
>> + * have succeeded - including AS_PATH hop count.
>> Since 'bgp
>> + * bestpath as-path multipath-relax' knob is on, we
>> don't need
>> + * an exact match of AS_PATH. Thus, mark the paths
>> are equal.
>> + * That will trigger both these paths to get into the
>> multipath
>> + * array.
>> + */
>> + return 0;
>>
>
>
> I don't follow how bestpath selection is working when max-paths is
>> enabled. Say we have two paths who only differ by router-id...we still need
>> to get to step #11 to determine which is the winner.
>>
>
> This had me scratching my head a bit initially too.
>
> The original mpath code allows best-path selection to continue on, to find
> a 'winner', but then rolls them together if paths_eq was set to 1 anyway.
>
> So, if mpath says they are equal, there's no point continuing on to pick a
> 'winner' cause mpath is going to treat them as equal and combine them. So,
> it can just return "equal" at this point.
>
I'm not following you....we still need to pick the real bestpath so that we
know what set of attributes to send, filter on, etc. With the code above
if max-paths is enabled we will never make it past step #11.
Daniel
_______________________________________________
Quagga-dev mailing list
[email protected]
https://lists.quagga.net/mailman/listinfo/quagga-dev