On Thu, Feb 24, 2022 at 02:08:13PM +0100, Claudio Jeker wrote:
> This is one small step closer to support add-path send side.
> We store the path_id_tx on the prefix and we can adjust a few places to
> make use of that field. Now it is always 0 so nothing changes in the end
> apart from removing some XXX comments.
ok tb
>
> --
> :wq Claudio
>
> Index: rde.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/bgpd/rde.c,v
> retrieving revision 1.534
> diff -u -p -r1.534 rde.c
> --- rde.c 6 Feb 2022 09:51:19 -0000 1.534
> +++ rde.c 24 Feb 2022 13:01:13 -0000
> @@ -2422,7 +2422,7 @@ rde_dump_rib_as(struct prefix *p, struct
> }
> } else {
> if (peer_has_add_path(peer, p->pt->aid, CAPA_AP_SEND)) {
> - rib.path_id = 0; /* XXX add-path send */
> + rib.path_id = p->path_id_tx;
> rib.flags |= F_PREF_PATH_ID;
> }
> }
> @@ -2507,12 +2507,16 @@ rde_dump_filter(struct prefix *p, struct
> if ((req->flags & F_CTL_INVALID) &&
> (asp->flags & F_ATTR_PARSE_ERR) == 0)
> return;
> - /*
> - * XXX handle out specially since then we want to match against our
> - * path ids.
> - */
> - if ((req->flags & F_CTL_HAS_PATHID) && req->path_id != p->path_id)
> - return;
> + if ((req->flags & F_CTL_HAS_PATHID)) {
> + /* Match against the transmit path id if adjout is used. */
> + if (adjout) {
> + if (req->path_id != p->path_id_tx)
> + return;
> + } else {
> + if (req->path_id != p->path_id)
> + return;
> + }
> + }
> if (req->as.type != AS_UNDEF &&
> !aspath_match(asp->aspath, &req->as, 0))
> return;
> Index: rde_update.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/bgpd/rde_update.c,v
> retrieving revision 1.132
> diff -u -p -r1.132 rde_update.c
> --- rde_update.c 6 Feb 2022 09:51:19 -0000 1.132
> +++ rde_update.c 24 Feb 2022 13:01:13 -0000
> @@ -632,8 +632,7 @@ up_dump_prefix(u_char *buf, int len, str
> if (peer_has_add_path(peer, p->pt->aid, CAPA_AP_SEND)) {
> if (len <= wpos + (int)sizeof(pathid))
> break;
> - /* XXX add-path send side */
> - pathid = 0;
> + pathid = htonl(p->path_id_tx);
> memcpy(buf + wpos, &pathid, sizeof(pathid));
> wpos += sizeof(pathid);
> }
>