On Fri, Feb 25, 2022 at 11:15:49AM +0100, Claudio Jeker wrote: > For add-path send the Adj-RIB-Out needs to handle multiple paths per > prefix. The Adj-RIB-Out stores the prefixes on RB trees and so extend > the lookup function to include the path_id (which will be path_id_tx). > > For now the path_id_tx in the Adj-RIB-Out is forced to 0 since > up_generate_updates() is not ready to handle more than one path per prefix. > > This mainly adjusts the bgpctl interface and the internals. Some functions > are renamed to start with prefix_adjout_ like all other prefix functions > opertating on the Adj-RIB-Out.
ok > +/* > + * Lookup a prefix without considering path_id in the peer prefix_index. > + * Returns NULL if not found. > + */ > +struct prefix * > +prefix_adjout_lookup(struct rde_peer *peer, struct bgpd_addr *prefix, > + int prefixlen) > +{ > + struct prefix xp, *np; > + struct pt_entry *pte; > + > + memset(&xp, 0, sizeof(xp)); > + pte = pt_fill(prefix, prefixlen); > + xp.pt = pte; I don't understand the benefit of the pte variable, but other lookup functions do the same, so I guess it's better to be consistent. > + > + np = RB_NFIND(prefix_index, &peer->adj_rib_out, &xp); Two spaces after = > + if (np != NULL && pt_prefix_cmp(np->pt, xp.pt) != 0) > + return NULL; > + return np; > +}