Claudio Jeker(cje...@diehard.n-r-g.com) on 2019.06.21 10:22:23 +0200: > For a diff I'm working on I need to have a peer id that is never used. > Because of this I changed the way we allocate peer ids a little bit by > introducing a few defines and using them instead. > > OK?
read ok. > -- > :wq Claudio > > Index: bgpd.h > =================================================================== > RCS file: /cvs/src/usr.sbin/bgpd/bgpd.h,v > retrieving revision 1.387 > diff -u -p -r1.387 bgpd.h > --- bgpd.h 17 Jun 2019 21:17:04 -0000 1.387 > +++ bgpd.h 21 Jun 2019 07:52:34 -0000 > @@ -397,6 +397,12 @@ struct peer_config { > u_int8_t flags; > }; > > +#define PEER_ID_NONE 0 > +#define PEER_ID_SELF 1 > +#define PEER_ID_STATIC_MIN 2 /* exclude self */ > +#define PEER_ID_STATIC_MAX (UINT_MAX / 2) > +#define PEER_ID_DYN_MAX UINT_MAX > + > #define PEERFLAG_TRANS_AS 0x01 > #define PEERFLAG_LOG_UPDATES 0x02 > > Index: parse.y > =================================================================== > RCS file: /cvs/src/usr.sbin/bgpd/parse.y,v > retrieving revision 1.391 > diff -u -p -r1.391 parse.y > --- parse.y 17 Jun 2019 13:35:42 -0000 1.391 > +++ parse.y 21 Jun 2019 07:49:58 -0000 > @@ -3952,7 +3952,7 @@ find_prefixset(char *name, struct prefix > int > get_id(struct peer *newpeer) > { > - static u_int32_t id = 1; > + static u_int32_t id = PEER_ID_STATIC_MIN; > struct peer *p = NULL; > > /* check if the peer already existed before */ > @@ -3982,7 +3982,7 @@ get_id(struct peer *newpeer) > } > > /* else new one */ > - if (id < UINT_MAX / 2) { > + if (id < PEER_ID_STATIC_MAX) { > newpeer->conf.id = id++; > return (0); > } > Index: rde.c > =================================================================== > RCS file: /cvs/src/usr.sbin/bgpd/rde.c,v > retrieving revision 1.471 > diff -u -p -r1.471 rde.c > --- rde.c 20 Jun 2019 13:18:19 -0000 1.471 > +++ rde.c 21 Jun 2019 07:46:38 -0000 > @@ -3322,7 +3322,7 @@ peer_init(u_int32_t hashsize) > bzero(&pc, sizeof(pc)); > snprintf(pc.descr, sizeof(pc.descr), "LOCAL"); > > - peerself = peer_add(0, &pc); > + peerself = peer_add(PEER_ID_SELF, &pc); > if (peerself == NULL) > fatalx("peer_init add self"); > > Index: session.c > =================================================================== > RCS file: /cvs/src/usr.sbin/bgpd/session.c,v > retrieving revision 1.385 > diff -u -p -r1.385 session.c > --- session.c 17 Jun 2019 21:17:04 -0000 1.385 > +++ session.c 21 Jun 2019 07:52:53 -0000 > @@ -2947,7 +2947,7 @@ getpeerbyip(struct bgpd_config *c, struc > if ((newpeer = malloc(sizeof(struct peer))) == NULL) > fatal(NULL); > memcpy(newpeer, loose, sizeof(struct peer)); > - for (id = UINT_MAX; id > UINT_MAX / 2; id--) { > + for (id = PEER_ID_DYN_MAX; id > PEER_ID_STATIC_MAX; id--) { > RB_FOREACH(p, peer_head, &conf->peers) > if (p->conf.id == id) > break; >