On Mon, Aug 27, 2018 at 12:11:43PM +0200, Claudio Jeker wrote: > This is in preparation for introducing as-sets (a fast lookup table for > when you want to make sure that your peering partner is realy only passing > you traffic he should). > > To make as-set possible lets do some cleanup beforehands. This mainly > removes one element from the filter_as struct, uses as_min for unary > operations and changes the way we pass the and check the neighbor-as. > as_compare() and aspath_match() now take the neighbor-as as last argument > and will match against it if AS_FLAG_NEIGHBORAS is set. Simplifies the > rde_filter_match() a fair bit. >
And here is the bgpctl diff needed for this change. -- :wq Claudio Index: bgpctl.c =================================================================== RCS file: /cvs/src/usr.sbin/bgpctl/bgpctl.c,v retrieving revision 1.210 diff -u -p -r1.210 bgpctl.c --- bgpctl.c 29 Jul 2018 13:02:01 -0000 1.210 +++ bgpctl.c 27 Aug 2018 12:02:44 -0000 @@ -159,7 +159,7 @@ main(int argc, char *argv[]) case IRRFILTER: if (!(res->flags & (F_IPV4|F_IPV6))) res->flags |= (F_IPV4|F_IPV6); - irr_main(res->as.as, res->flags, res->irr_outdir); + irr_main(res->as.as_min, res->flags, res->irr_outdir); break; case SHOW_MRT: if (pledge("stdio", NULL) == -1) @@ -2056,7 +2056,7 @@ show_mrt_dump(struct mrt_rib *mr, struct /* filter by AS */ if (req->as.type != AS_NONE && !aspath_match(mre->aspath, mre->aspath_len, - &req->as, req->as.as)) + &req->as, 0)) continue; if (req->flags & F_CTL_DETAIL) { @@ -2122,7 +2122,7 @@ network_mrt_dump(struct mrt_rib *mr, str /* filter by AS */ if (req->as.type != AS_NONE && !aspath_match(mre->aspath, mre->aspath_len, - &req->as, req->as.as)) + &req->as, 0)) continue; bzero(&net, sizeof(net)); Index: parser.c =================================================================== RCS file: /cvs/src/usr.sbin/bgpctl/parser.c,v retrieving revision 1.82 diff -u -p -r1.82 parser.c --- parser.c 10 Jul 2018 13:03:06 -0000 1.82 +++ parser.c 27 Aug 2018 12:01:46 -0000 @@ -614,7 +614,7 @@ match_token(int *argc, char **argv[], co } break; case ASNUM: - if (parse_asnum(word, wordlen, &res.as.as)) { + if (parse_asnum(word, wordlen, &res.as.as_min)) { match++; t = &table[i]; }