On Sun, Dec 22, 2019 at 10:06:40PM +0100, Remi Locherer wrote: > this is similar to ospfd's hello.c rev 1.23. > > OK? > > Remi > > > Index: hello.c > =================================================================== > RCS file: /cvs/src/usr.sbin/ospf6d/hello.c,v > retrieving revision 1.19 > diff -u -p -r1.19 hello.c > --- hello.c 11 Dec 2019 21:33:56 -0000 1.19 > +++ hello.c 22 Dec 2019 20:46:01 -0000 > @@ -173,10 +173,16 @@ recv_hello(struct iface *iface, struct i > nbr->dr.s_addr = hello.d_rtr; > nbr->bdr.s_addr = hello.bd_rtr; > nbr->priority = LSA_24_GETHI(ntohl(hello.opts)); > + /* XXX neighbor address shouldn't be stored on virtual links */ > + nbr->addr = *src; > + } > + > + if (memcmp(&nbr->addr, src, sizeof(struct in6_addr)) != 0) {
Can you use IN6_ARE_ADDR_EQUAL() macro instead of memcmp() to be consistent with other address comparison ? Otherwise OK denis@ > + log_warnx("%s: neighbor ID %s changed its address to %s", > + __func__, inet_ntoa(nbr->id), log_in6addr(src)); > + nbr->addr = *src; > } > > - /* actually the neighbor address shouldn't be stored on virtual links */ > - nbr->addr = *src; > nbr->options = opts; > > nbr_fsm(nbr, NBR_EVT_HELLO_RCVD); >