On Tue, Nov 02, 2021 at 05:27:11PM +0000, Stuart Henderson wrote: > I've recently started seeing a number of flaps with ospfd/ospf6d > with invalid seq nums / "seq num mismatch, bad flags" logged. > Not quite sure what's going yet as they must be occurring on > various local switched segments on one nic and also on ethernet > wan circuits direct to router on a separate pcie nic, anyway > it's made it clear that very few of the log messages relating > to neighbours identify which interface is involved. > > I don't know if it makes sense to commit or not, but there's a > diff below adding the interface wherever the neighbour ID is logged > if anyone's interested (same changes to both ospfd and ospf6d). > > > Nov 2 11:29:30 ospfd[78532]: recv_db_description: neighbor ID xxxxxxxxxx.2: > invalid seq num, mine 20d22487 his 20d22485 > Nov 2 11:29:30 ospf6d[89545]: recv_db_description: neighbor ID > xxxxxxxxxx.2: invalid seq num, mine 4cabc5c1 his 4cabc5c0 > Nov 2 11:29:34 ospf6d[89545]: recv_db_description: neighbor ID > xxxxxxxxxx.1: invalid seq num, mine 98360a5 his 98360a4 > Nov 2 11:29:34 ospfd[78532]: recv_db_description: neighbor ID xxxxxxxxxx.1: > invalid seq num, mine f708c646 his f708c645 > Nov 2 11:29:38 ospfd[78532]: recv_db_description: neighbor ID > xxxxxxxxxx.11: invalid seq num, mine e4068bcc his e4068bcb > Nov 2 11:30:06 ospf6d[89545]: recv_db_description: neighbor ID > xxxxxxxxxx.3: seq num mismatch, bad flags > Nov 2 11:30:14 ospf6d[89545]: recv_db_description: neighbor ID > xxxxxxxxxx.1: invalid seq num, mine 98360ae his 98360ad > Nov 2 11:30:14 ospfd[78532]: recv_db_description: neighbor ID xxxxxxxxxx.1: > invalid seq num, mine f708c64f his f708c64e > Nov 2 11:30:22 ospfd[78532]: recv_db_description: neighbor ID xxxxxxxxxx.2: > invalid seq num, mine 20d22493 his 20d22490 > Nov 2 11:30:22 ospfd[78532]: recv_db_description: neighbor ID xxxxxxxxxx.2: > invalid seq num, mine 20d22493 his 20d22492 > Nov 2 11:30:39 ospfd[78532]: recv_db_description: neighbor ID xxxxxxxxxx.2: > invalid seq num, mine 20d2249c his 20d2249b > Nov 2 11:30:59 ospf6d[89545]: recv_db_description: neighbor ID > xxxxxxxxxx.11: seq num mismatch, bad flags > Nov 2 11:30:59 ospfd[78532]: recv_db_description: neighbor ID > xxxxxxxxxx.11: seq num mismatch, bad flags > Nov 2 11:31:09 ospfd[78532]: recv_db_description: neighbor ID xxxxxxxxxx.1: > invalid seq num, mine f708c65c his f708c65b >
I think this addition makes sense. Over which link a neighbor is connected can only be looked up via ospfctl. It's valuable having this info in the logs when analysing past events. Diff reads fine, applies and compiles. OK remi > > Index: ospf6d/database.c > =================================================================== > RCS file: /cvs/src/usr.sbin/ospf6d/database.c,v > retrieving revision 1.20 > diff -u -p -r1.20 database.c > --- ospf6d/database.c 15 Jul 2020 14:47:41 -0000 1.20 > +++ ospf6d/database.c 2 Nov 2021 17:11:38 -0000 > @@ -60,9 +60,9 @@ send_db_description(struct nbr *nbr) > case NBR_STA_INIT: > case NBR_STA_2_WAY: > case NBR_STA_SNAP: > - log_debug("send_db_description: neighbor ID %s: " > + log_debug("send_db_description: neighbor ID %s (%s): " > "cannot send packet in state %s", inet_ntoa(nbr->id), > - nbr_state_name(nbr->state)); > + nbr->iface->name, nbr_state_name(nbr->state)); > goto fail; > case NBR_STA_XSTRT: > bits |= OSPF_DBD_MS | OSPF_DBD_M | OSPF_DBD_I; > @@ -160,8 +160,8 @@ recv_db_description(struct nbr *nbr, cha > int dupe = 0; > > if (len < sizeof(dd_hdr)) { > - log_warnx("recv_db_description: neighbor ID %s: " > - "bad packet size", inet_ntoa(nbr->id)); > + log_warnx("recv_db_description: neighbor ID %s (%s): " > + "bad packet size", inet_ntoa(nbr->id), nbr->iface->name); > return; > } > memcpy(&dd_hdr, buf, sizeof(dd_hdr)); > @@ -170,9 +170,10 @@ recv_db_description(struct nbr *nbr, cha > > /* db description packet sanity checks */ > if (ntohs(dd_hdr.iface_mtu) > nbr->iface->mtu) { > - log_warnx("recv_db_description: neighbor ID %s: " > + log_warnx("recv_db_description: neighbor ID %s (%s): " > "invalid MTU %d expected %d", inet_ntoa(nbr->id), > - ntohs(dd_hdr.iface_mtu), nbr->iface->mtu); > + nbr->iface->name, ntohs(dd_hdr.iface_mtu), > + nbr->iface->mtu); > return; > } > > @@ -180,8 +181,9 @@ recv_db_description(struct nbr *nbr, cha > nbr->last_rx_bits == dd_hdr.bits && > ntohl(dd_hdr.dd_seq_num) == nbr->dd_seq_num - nbr->dd_master ? > 1 : 0) { > - log_debug("recv_db_description: dupe from neighbor ID %s", > - inet_ntoa(nbr->id)); > + log_debug("recv_db_description: dupe from " > + "neighbor ID %s (%s)", inet_ntoa(nbr->id), > + nbr->iface->name); > dupe = 1; > } > > @@ -190,9 +192,9 @@ recv_db_description(struct nbr *nbr, cha > case NBR_STA_ATTEMPT: > case NBR_STA_2_WAY: > case NBR_STA_SNAP: > - log_debug("recv_db_description: neighbor ID %s: " > + log_debug("recv_db_description: neighbor ID %s (%s): " > "packet ignored in state %s", inet_ntoa(nbr->id), > - nbr_state_name(nbr->state)); > + nbr->iface->name, nbr_state_name(nbr->state)); > return; > case NBR_STA_INIT: > /* evaluate dr and bdr after issuing a 2-Way event */ > @@ -222,10 +224,10 @@ recv_db_description(struct nbr *nbr, cha > /* M only case: we are master */ > if (ntohl(dd_hdr.dd_seq_num) != nbr->dd_seq_num) { > log_warnx("recv_db_description: " > - "neighbor ID %s: " > + "neighbor ID %s (%s): " > "invalid seq num, mine %x his %x", > - inet_ntoa(nbr->id), nbr->dd_seq_num, > - ntohl(dd_hdr.dd_seq_num)); > + inet_ntoa(nbr->id), nbr->iface->name, > + nbr->dd_seq_num, ntohl(dd_hdr.dd_seq_num)); > return; > } > nbr->dd_seq_num++; > @@ -241,9 +243,10 @@ recv_db_description(struct nbr *nbr, cha > } > } else { > /* ignore packet */ > - log_debug("recv_db_description: neighbor ID %s: " > + log_debug("recv_db_description: neighbor ID %s (%s): " > "packet ignored in state %s (bad flags)", > - inet_ntoa(nbr->id), nbr_state_name(nbr->state)); > + inet_ntoa(nbr->id), nbr->iface->name, > + nbr_state_name(nbr->state)); > } > break; > case NBR_STA_XCHNG: > @@ -251,16 +254,17 @@ recv_db_description(struct nbr *nbr, cha > case NBR_STA_FULL: > if (dd_hdr.bits & OSPF_DBD_I || > !(dd_hdr.bits & OSPF_DBD_MS) == !nbr->dd_master) { > - log_warnx("recv_db_description: neighbor ID %s: " > - "seq num mismatch, bad flags", inet_ntoa(nbr->id)); > + log_warnx("recv_db_description: neighbor ID %s (%s): " > + "seq num mismatch, bad flags", inet_ntoa(nbr->id), > + nbr->iface->name); > nbr_fsm(nbr, NBR_EVT_SEQ_NUM_MIS); > return; > } > > if (nbr->last_rx_options != dd_hdr.opts) { > - log_warnx("recv_db_description: neighbor ID %s: " > + log_warnx("recv_db_description: neighbor ID %s (%s): " > "seq num mismatch, bad options", > - inet_ntoa(nbr->id)); > + inet_ntoa(nbr->id), nbr->iface->name); > nbr_fsm(nbr, NBR_EVT_SEQ_NUM_MIS); > return; > } > @@ -273,10 +277,10 @@ recv_db_description(struct nbr *nbr, cha > } > > if (nbr->state != NBR_STA_XCHNG) { > - log_warnx("recv_db_description: neighbor ID %s: " > + log_warnx("recv_db_description: neighbor ID %s (%s): " > "invalid seq num, mine %x his %x", > - inet_ntoa(nbr->id), nbr->dd_seq_num, > - ntohl(dd_hdr.dd_seq_num)); > + inet_ntoa(nbr->id), nbr->iface->name, > + nbr->dd_seq_num, ntohl(dd_hdr.dd_seq_num)); > nbr_fsm(nbr, NBR_EVT_SEQ_NUM_MIS); > return; > } > @@ -286,10 +290,10 @@ recv_db_description(struct nbr *nbr, cha > /* master */ > if (ntohl(dd_hdr.dd_seq_num) != nbr->dd_seq_num) { > log_warnx("recv_db_description: " > - "neighbor ID %s: " > + "neighbor ID %s (%s): " > "invalid seq num, mine %x his %x, master", > - inet_ntoa(nbr->id), nbr->dd_seq_num, > - ntohl(dd_hdr.dd_seq_num)); > + inet_ntoa(nbr->id), nbr->iface->name, > + nbr->dd_seq_num, ntohl(dd_hdr.dd_seq_num)); > nbr_fsm(nbr, NBR_EVT_SEQ_NUM_MIS); > return; > } > @@ -298,10 +302,10 @@ recv_db_description(struct nbr *nbr, cha > /* slave */ > if (ntohl(dd_hdr.dd_seq_num) != nbr->dd_seq_num + 1) { > log_warnx("recv_db_description: " > - "neighbor ID %s: " > + "neighbor ID %s (%s): " > "invalid seq num, mine %x his %x, slave", > - inet_ntoa(nbr->id), nbr->dd_seq_num, > - ntohl(dd_hdr.dd_seq_num)); > + inet_ntoa(nbr->id), nbr->iface->name, > + nbr->dd_seq_num, ntohl(dd_hdr.dd_seq_num)); > nbr_fsm(nbr, NBR_EVT_SEQ_NUM_MIS); > return; > } > @@ -385,8 +389,9 @@ db_tx_timer(int fd, short event, void *a > send_db_description(nbr); > break; > default: > - log_debug("db_tx_timer: neighbor ID %s: unknown neighbor state", > - inet_ntoa(nbr->id)); > + log_debug("db_tx_timer: neighbor ID %s (%s): " > + "unknown neighbor state", > + inet_ntoa(nbr->id), nbr->iface->name); > break; > } > > Index: ospf6d/kroute.c > =================================================================== > RCS file: /cvs/src/usr.sbin/ospf6d/kroute.c,v > retrieving revision 1.65 > diff -u -p -r1.65 kroute.c > --- ospf6d/kroute.c 10 Sep 2020 05:18:16 -0000 1.65 > +++ ospf6d/kroute.c 2 Nov 2021 17:11:38 -0000 > @@ -1107,7 +1107,7 @@ send_rtmsg(int fd, int action, struct kr > /* > * We don't have an interface address in that network, > * so we install a cloning route. The kernel will then > - * do neigbor discovery. > + * do neighbor discovery. > */ > bzero(&ifp, sizeof(ifp)); > ifp.addr.sdl_len = sizeof(struct sockaddr_dl); > Index: ospf6d/lsack.c > =================================================================== > RCS file: /cvs/src/usr.sbin/ospf6d/lsack.c,v > retrieving revision 1.8 > diff -u -p -r1.8 lsack.c > --- ospf6d/lsack.c 28 Dec 2019 09:25:24 -0000 1.8 > +++ ospf6d/lsack.c 2 Nov 2021 17:11:38 -0000 > @@ -105,8 +105,8 @@ recv_ls_ack(struct nbr *nbr, char *buf, > case NBR_STA_XSTRT: > case NBR_STA_SNAP: > log_debug("recv_ls_ack: packet ignored in state %s, " > - "neighbor ID %s", nbr_state_name(nbr->state), > - inet_ntoa(nbr->id)); > + "neighbor ID %s (%s)", nbr_state_name(nbr->state), > + inet_ntoa(nbr->id), nbr->iface->name); > break; > case NBR_STA_XCHNG: > case NBR_STA_LOAD: > @@ -127,7 +127,8 @@ recv_ls_ack(struct nbr *nbr, char *buf, > } > if (len > 0) { > log_warnx("recv_ls_ack: bad packet size, " > - "neighbor ID %s", inet_ntoa(nbr->id)); > + "neighbor ID %s (%s)", inet_ntoa(nbr->id), > + nbr->iface->name); > return; > } > break; > @@ -141,8 +142,8 @@ lsa_hdr_check(struct nbr *nbr, struct ls > { > /* invalid age */ > if ((ntohs(lsa_hdr->age) < 1) || (ntohs(lsa_hdr->age) > MAX_AGE)) { > - log_debug("lsa_hdr_check: invalid age, neighbor ID %s", > - inet_ntoa(nbr->id)); > + log_debug("lsa_hdr_check: invalid age, neighbor ID %s (%s)", > + inet_ntoa(nbr->id), nbr->iface->name); > return (0); > } > > @@ -157,15 +158,17 @@ lsa_hdr_check(struct nbr *nbr, struct ls > case LSA_TYPE_EXTERNAL: > break; > default: > - log_debug("lsa_hdr_check: invalid LSA type %d, neighbor ID %s", > - lsa_hdr->type, inet_ntoa(nbr->id)); > + log_debug("lsa_hdr_check: invalid LSA type %d, " > + "neighbor ID %s (%s)", > + lsa_hdr->type, inet_ntoa(nbr->id), nbr->iface->name); > return (0); > } > > /* invalid sequence number */ > if (ntohl(lsa_hdr->seq_num) == RESV_SEQ_NUM) { > - log_debug("ls_hdr_check: invalid seq num, neighbor ID %s", > - inet_ntoa(nbr->id)); > + log_debug("ls_hdr_check: invalid seq num, " > + "neighbor ID %s (%s)", inet_ntoa(nbr->id), > + nbr->iface->name); > return (0); > } > > Index: ospf6d/lsreq.c > =================================================================== > RCS file: /cvs/src/usr.sbin/ospf6d/lsreq.c,v > retrieving revision 1.12 > diff -u -p -r1.12 lsreq.c > --- ospf6d/lsreq.c 19 Jan 2021 09:53:11 -0000 1.12 > +++ ospf6d/lsreq.c 2 Nov 2021 17:11:38 -0000 > @@ -96,8 +96,8 @@ recv_ls_req(struct nbr *nbr, char *buf, > case NBR_STA_XSTRT: > case NBR_STA_SNAP: > log_debug("recv_ls_req: packet ignored in state %s, " > - "neighbor ID %s", nbr_state_name(nbr->state), > - inet_ntoa(nbr->id)); > + "neighbor ID %s (%s)", nbr_state_name(nbr->state), > + inet_ntoa(nbr->id), nbr->iface->name); > break; > case NBR_STA_XCHNG: > case NBR_STA_LOAD: > @@ -209,7 +209,8 @@ ls_req_tx_timer(int fd, short event, voi > return; > default: > log_debug("ls_req_tx_timer: unknown neighbor state, " > - "neighbor ID %s", inet_ntoa(nbr->id)); > + "neighbor ID %s (%s)", inet_ntoa(nbr->id), > + nbr->iface->name); > break; > } > > Index: ospf6d/lsupdate.c > =================================================================== > RCS file: /cvs/src/usr.sbin/ospf6d/lsupdate.c,v > retrieving revision 1.20 > diff -u -p -r1.20 lsupdate.c > --- ospf6d/lsupdate.c 19 Jan 2021 09:53:11 -0000 1.20 > +++ ospf6d/lsupdate.c 2 Nov 2021 17:11:38 -0000 > @@ -243,8 +243,9 @@ recv_ls_update(struct nbr *nbr, char *bu > u_int32_t nlsa; > > if (len < sizeof(nlsa)) { > - log_warnx("recv_ls_update: bad packet size, neighbor ID %s", > - inet_ntoa(nbr->id)); > + log_warnx("recv_ls_update: bad packet size, " > + "neighbor ID %s (%s)", inet_ntoa(nbr->id), > + nbr->iface->name); > return; > } > memcpy(&nlsa, buf, sizeof(nlsa)); > @@ -260,8 +261,8 @@ recv_ls_update(struct nbr *nbr, char *bu > case NBR_STA_XSTRT: > case NBR_STA_SNAP: > log_debug("recv_ls_update: packet ignored in state %s, " > - "neighbor ID %s", nbr_state_name(nbr->state), > - inet_ntoa(nbr->id)); > + "neighbor ID %s (%s)", nbr_state_name(nbr->state), > + inet_ntoa(nbr->id), nbr->iface->name); > break; > case NBR_STA_XCHNG: > case NBR_STA_LOAD: > @@ -269,13 +270,15 @@ recv_ls_update(struct nbr *nbr, char *bu > for (; nlsa > 0 && len > 0; nlsa--) { > if (len < sizeof(lsa)) { > log_warnx("recv_ls_update: bad packet size, " > - "neighbor ID %s", inet_ntoa(nbr->id)); > + "neighbor ID %s (%s)", inet_ntoa(nbr->id), > + nbr->iface->name); > return; > } > memcpy(&lsa, buf, sizeof(lsa)); > if (len < ntohs(lsa.len)) { > log_warnx("recv_ls_update: bad packet size, " > - "neighbor ID %s", inet_ntoa(nbr->id)); > + "neighbor ID %s (%s)", inet_ntoa(nbr->id), > + nbr->iface->name); > return; > } > ospfe_imsg_compose_rde(IMSG_LS_UPD, nbr->peerid, 0, > @@ -285,7 +288,8 @@ recv_ls_update(struct nbr *nbr, char *bu > } > if (nlsa > 0 || len > 0) { > log_warnx("recv_ls_update: bad packet size, " > - "neighbor ID %s", inet_ntoa(nbr->id)); > + "neighbor ID %s (%s)", inet_ntoa(nbr->id), > + nbr->iface->name); > return; > } > break; > @@ -497,8 +501,8 @@ ls_retrans_timer(int fd, short event, vo > if (nlsa == 0) { > /* something bad happened retry later */ > log_warnx("ls_retrans_timer: sending LS update " > - "to neighbor ID %s failed", > - inet_ntoa(nbr->id)); > + "to neighbor ID %s (%s) failed", > + inet_ntoa(nbr->id), nbr->iface->name); > log_debug("ls_retrans_timer: type: %04x len: > %u", > ntohs(le->le_ref->hdr.type), > le->le_ref->len); > Index: ospf6d/neighbor.c > =================================================================== > RCS file: /cvs/src/usr.sbin/ospf6d/neighbor.c,v > retrieving revision 1.17 > diff -u -p -r1.17 neighbor.c > --- ospf6d/neighbor.c 22 Jun 2020 18:18:20 -0000 1.17 > +++ ospf6d/neighbor.c 2 Nov 2021 17:11:38 -0000 > @@ -136,9 +136,10 @@ nbr_fsm(struct nbr *nbr, enum nbr_event > > if (nbr_fsm_tbl[i].state == -1) { > /* event outside of the defined fsm, ignore it. */ > - log_warnx("nbr_fsm: neighbor ID %s, " > + log_warnx("nbr_fsm: neighbor ID %s (%s), " > "event %s not expected in state %s", > - inet_ntoa(nbr->id), nbr_event_names[event], > + inet_ntoa(nbr->id), nbr->iface->name, > + nbr_event_names[event], > nbr_state_name(old_state)); > return (0); > } > @@ -184,8 +185,9 @@ nbr_fsm(struct nbr *nbr, enum nbr_event > } > > if (ret) { > - log_warnx("nbr_fsm: error changing state for neighbor ID %s, " > - "event %s, state %s", inet_ntoa(nbr->id), > + log_warnx("nbr_fsm: error changing state for neighbor " > + "ID %s (%s), event %s, state %s", > + inet_ntoa(nbr->id), nbr->iface->name, > nbr_event_names[event], nbr_state_name(old_state)); > return (-1); > } > @@ -218,10 +220,11 @@ nbr_fsm(struct nbr *nbr, enum nbr_event > if_fsm(nbr->iface, IF_EVT_NBR_CHNG); > > log_debug("nbr_fsm: event %s resulted in action %s and " > - "changing state for neighbor ID %s from %s to %s", > + "changing state for neighbor ID %s (%s) from %s to %s", > nbr_event_names[event], > nbr_action_names[nbr_fsm_tbl[i].action], > - inet_ntoa(nbr->id), nbr_state_name(old_state), > + inet_ntoa(nbr->id), nbr->iface->name, > + nbr_state_name(old_state), > nbr_state_name(nbr->state)); > > if (nbr->iface->type == IF_TYPE_VIRTUALLINK) { > @@ -437,8 +440,9 @@ nbr_adj_timer(int fd, short event, void > return; > > if (nbr->state & NBR_STA_ACTIVE && nbr->state != NBR_STA_FULL) { > - log_warnx("nbr_adj_timer: failed to form adjacency with %s", > - inet_ntoa(nbr->id)); > + log_warnx("nbr_adj_timer: failed to form adjacency with " > + "neighbor ID %s on interface %s", > + inet_ntoa(nbr->id), nbr->iface->name); > nbr_fsm(nbr, NBR_EVT_ADJTMOUT); > } > } > @@ -527,7 +531,8 @@ nbr_act_snapshot(struct nbr *nbr) > /* we need to wait for the old snapshot to finish */ > if (nbr->dd_snapshot) { > log_debug("nbr_act_snapshot: giving up, old snapshot running " > - "for neigbor ID %s", inet_ntoa(nbr->id)); > + "for neighbor ID %s (%s)", inet_ntoa(nbr->id), > + nbr->iface->name); > return (nbr_act_restart_dd(nbr)); > } > ospfe_imsg_compose_rde(IMSG_DB_SNAPSHOT, nbr->peerid, 0, NULL, 0); > @@ -615,8 +620,9 @@ nbr_act_delete(struct nbr *nbr) > tv.tv_sec = DEFAULT_NBR_TMOUT; > > if (evtimer_add(&nbr->inactivity_timer, &tv)) { > - log_warnx("nbr_act_delete: error scheduling neighbor ID %s " > - "for removal", inet_ntoa(nbr->id)); > + log_warnx("nbr_act_delete: error scheduling " > + "neighbor ID %s (%s) for removal", > + inet_ntoa(nbr->id), nbr->iface->name); > } > > return (nbr_act_clear_lists(nbr)); > @@ -640,7 +646,8 @@ nbr_act_clear_lists(struct nbr *nbr) > int > nbr_act_hello_check(struct nbr *nbr) > { > - log_debug("nbr_act_hello_check: neighbor ID %s", inet_ntoa(nbr->id)); > + log_debug("nbr_act_hello_check: neighbor ID %s (%s)", > + inet_ntoa(nbr->id), nbr->iface->name); > > return (-1); > } > Index: ospfd/database.c > =================================================================== > RCS file: /cvs/src/usr.sbin/ospfd/database.c,v > retrieving revision 1.34 > diff -u -p -r1.34 database.c > --- ospfd/database.c 15 Jul 2019 18:26:39 -0000 1.34 > +++ ospfd/database.c 2 Nov 2021 17:11:38 -0000 > @@ -62,9 +62,9 @@ send_db_description(struct nbr *nbr) > case NBR_STA_INIT: > case NBR_STA_2_WAY: > case NBR_STA_SNAP: > - log_debug("send_db_description: neighbor ID %s: " > + log_debug("send_db_description: neighbor ID %s (%s): " > "cannot send packet in state %s", inet_ntoa(nbr->id), > - nbr_state_name(nbr->state)); > + nbr->iface->name, nbr_state_name(nbr->state)); > goto fail; > case NBR_STA_XSTRT: > bits |= OSPF_DBD_MS | OSPF_DBD_M | OSPF_DBD_I; > @@ -166,8 +166,8 @@ recv_db_description(struct nbr *nbr, cha > int dupe = 0; > > if (len < sizeof(dd_hdr)) { > - log_warnx("recv_db_description: neighbor ID %s: " > - "bad packet size", inet_ntoa(nbr->id)); > + log_warnx("recv_db_description: neighbor ID %s (%s): " > + "bad packet size", inet_ntoa(nbr->id), nbr->iface->name); > return; > } > memcpy(&dd_hdr, buf, sizeof(dd_hdr)); > @@ -176,9 +176,10 @@ recv_db_description(struct nbr *nbr, cha > > /* db description packet sanity checks */ > if (ntohs(dd_hdr.iface_mtu) > nbr->iface->mtu) { > - log_warnx("recv_db_description: neighbor ID %s: " > + log_warnx("recv_db_description: neighbor ID %s (%s): " > "invalid MTU %d expected %d", inet_ntoa(nbr->id), > - ntohs(dd_hdr.iface_mtu), nbr->iface->mtu); > + nbr->iface->name, ntohs(dd_hdr.iface_mtu), > + nbr->iface->mtu); > return; > } > > @@ -186,8 +187,9 @@ recv_db_description(struct nbr *nbr, cha > nbr->last_rx_bits == dd_hdr.bits && > ntohl(dd_hdr.dd_seq_num) == nbr->dd_seq_num - nbr->dd_master ? > 1 : 0) { > - log_debug("recv_db_description: dupe from neighbor ID %s", > - inet_ntoa(nbr->id)); > + log_debug("recv_db_description: dupe from " > + "neighbor ID %s (%s)", inet_ntoa(nbr->id), > + nbr->iface->name); > dupe = 1; > } > > @@ -196,9 +198,9 @@ recv_db_description(struct nbr *nbr, cha > case NBR_STA_ATTEMPT: > case NBR_STA_2_WAY: > case NBR_STA_SNAP: > - log_debug("recv_db_description: neighbor ID %s: " > + log_debug("recv_db_description: neighbor ID %s (%s): " > "packet ignored in state %s", inet_ntoa(nbr->id), > - nbr_state_name(nbr->state)); > + nbr->iface->name, nbr_state_name(nbr->state)); > return; > case NBR_STA_INIT: > /* evaluate dr and bdr after issuing a 2-Way event */ > @@ -212,10 +214,10 @@ recv_db_description(struct nbr *nbr, cha > return; > nbr->capa_options = dd_hdr.opts; > if ((nbr->capa_options & nbr->options) != nbr->options) { > - log_warnx("recv_db_description: neighbor ID %s " > + log_warnx("recv_db_description: neighbor ID %s (%s) " > "sent inconsistent options %x vs. %x", > - inet_ntoa(nbr->id), nbr->capa_options, > - nbr->options); > + inet_ntoa(nbr->id), nbr->iface->name, > + nbr->capa_options, nbr->options); > } > /* > * check bits: either I,M,MS or only M > @@ -235,10 +237,10 @@ recv_db_description(struct nbr *nbr, cha > /* M only case: we are master */ > if (ntohl(dd_hdr.dd_seq_num) != nbr->dd_seq_num) { > log_warnx("recv_db_description: " > - "neighbor ID %s: " > + "neighbor ID %s (%s): " > "invalid seq num, mine %x his %x", > - inet_ntoa(nbr->id), nbr->dd_seq_num, > - ntohl(dd_hdr.dd_seq_num)); > + inet_ntoa(nbr->id), nbr->iface->name, > + nbr->dd_seq_num, ntohl(dd_hdr.dd_seq_num)); > return; > } > nbr->dd_seq_num++; > @@ -254,9 +256,10 @@ recv_db_description(struct nbr *nbr, cha > } > } else { > /* ignore packet */ > - log_debug("recv_db_description: neighbor ID %s: " > + log_debug("recv_db_description: neighbor ID %s (%s): " > "packet ignored in state %s (bad flags)", > - inet_ntoa(nbr->id), nbr_state_name(nbr->state)); > + inet_ntoa(nbr->id), nbr->iface->name, > + nbr_state_name(nbr->state)); > } > break; > case NBR_STA_XCHNG: > @@ -264,16 +267,17 @@ recv_db_description(struct nbr *nbr, cha > case NBR_STA_FULL: > if (dd_hdr.bits & OSPF_DBD_I || > !(dd_hdr.bits & OSPF_DBD_MS) == !nbr->dd_master) { > - log_warnx("recv_db_description: neighbor ID %s: " > - "seq num mismatch, bad flags", inet_ntoa(nbr->id)); > + log_warnx("recv_db_description: neighbor ID %s (%s): " > + "seq num mismatch, bad flags", inet_ntoa(nbr->id), > + nbr->iface->name); > nbr_fsm(nbr, NBR_EVT_SEQ_NUM_MIS); > return; > } > > if (nbr->last_rx_options != dd_hdr.opts) { > - log_warnx("recv_db_description: neighbor ID %s: " > + log_warnx("recv_db_description: neighbor ID %s (%s): " > "seq num mismatch, bad options", > - inet_ntoa(nbr->id)); > + inet_ntoa(nbr->id), nbr->iface->name); > nbr_fsm(nbr, NBR_EVT_SEQ_NUM_MIS); > return; > } > @@ -286,10 +290,10 @@ recv_db_description(struct nbr *nbr, cha > } > > if (nbr->state != NBR_STA_XCHNG) { > - log_warnx("recv_db_description: neighbor ID %s: " > + log_warnx("recv_db_description: neighbor ID %s (%s): " > "invalid seq num, mine %x his %x", > - inet_ntoa(nbr->id), nbr->dd_seq_num, > - ntohl(dd_hdr.dd_seq_num)); > + inet_ntoa(nbr->id), nbr->iface->name, > + nbr->dd_seq_num, ntohl(dd_hdr.dd_seq_num)); > nbr_fsm(nbr, NBR_EVT_SEQ_NUM_MIS); > return; > } > @@ -299,10 +303,10 @@ recv_db_description(struct nbr *nbr, cha > /* master */ > if (ntohl(dd_hdr.dd_seq_num) != nbr->dd_seq_num) { > log_warnx("recv_db_description: " > - "neighbor ID %s: " > + "neighbor ID %s (%s): " > "invalid seq num, mine %x his %x, master", > - inet_ntoa(nbr->id), nbr->dd_seq_num, > - ntohl(dd_hdr.dd_seq_num)); > + inet_ntoa(nbr->id), nbr->iface->name, > + nbr->dd_seq_num, ntohl(dd_hdr.dd_seq_num)); > nbr_fsm(nbr, NBR_EVT_SEQ_NUM_MIS); > return; > } > @@ -311,10 +315,10 @@ recv_db_description(struct nbr *nbr, cha > /* slave */ > if (ntohl(dd_hdr.dd_seq_num) != nbr->dd_seq_num + 1) { > log_warnx("recv_db_description: " > - "neighbor ID %s: " > + "neighbor ID %s (%s): " > "invalid seq num, mine %x his %x, slave", > - inet_ntoa(nbr->id), nbr->dd_seq_num, > - ntohl(dd_hdr.dd_seq_num)); > + inet_ntoa(nbr->id), nbr->iface->name, > + nbr->dd_seq_num, ntohl(dd_hdr.dd_seq_num)); > nbr_fsm(nbr, NBR_EVT_SEQ_NUM_MIS); > return; > } > @@ -398,8 +402,9 @@ db_tx_timer(int fd, short event, void *a > send_db_description(nbr); > break; > default: > - log_debug("db_tx_timer: neighbor ID %s: unknown neighbor state", > - inet_ntoa(nbr->id)); > + log_debug("db_tx_timer: neighbor ID %s (%s): " > + "unknown neighbor state", > + inet_ntoa(nbr->id), nbr->iface->name); > break; > } > > Index: ospfd/lsack.c > =================================================================== > RCS file: /cvs/src/usr.sbin/ospfd/lsack.c,v > retrieving revision 1.22 > diff -u -p -r1.22 lsack.c > --- ospfd/lsack.c 15 Jul 2019 18:26:39 -0000 1.22 > +++ ospfd/lsack.c 2 Nov 2021 17:11:38 -0000 > @@ -111,8 +111,8 @@ recv_ls_ack(struct nbr *nbr, char *buf, > case NBR_STA_XSTRT: > case NBR_STA_SNAP: > log_debug("recv_ls_ack: packet ignored in state %s, " > - "neighbor ID %s", nbr_state_name(nbr->state), > - inet_ntoa(nbr->id)); > + "neighbor ID %s (%s)", nbr_state_name(nbr->state), > + inet_ntoa(nbr->id), nbr->iface->name); > break; > case NBR_STA_XCHNG: > case NBR_STA_LOAD: > @@ -133,7 +133,8 @@ recv_ls_ack(struct nbr *nbr, char *buf, > } > if (len > 0) { > log_warnx("recv_ls_ack: bad packet size, " > - "neighbor ID %s", inet_ntoa(nbr->id)); > + "neighbor ID %s (%s)", inet_ntoa(nbr->id), > + nbr->iface->name); > return; > } > break; > @@ -147,8 +148,8 @@ lsa_hdr_check(struct nbr *nbr, struct ls > { > /* invalid age */ > if ((ntohs(lsa_hdr->age) < 1) || (ntohs(lsa_hdr->age) > MAX_AGE)) { > - log_debug("lsa_hdr_check: invalid age, neighbor ID %s", > - inet_ntoa(nbr->id)); > + log_debug("lsa_hdr_check: invalid age, neighbor ID %s (%s)", > + inet_ntoa(nbr->id), nbr->iface->name); > return (0); > } > > @@ -161,15 +162,17 @@ lsa_hdr_check(struct nbr *nbr, struct ls > case LSA_TYPE_EXTERNAL: > break; > default: > - log_debug("lsa_hdr_check: invalid LSA type %d, neighbor ID %s", > - lsa_hdr->type, inet_ntoa(nbr->id)); > + log_debug("lsa_hdr_check: invalid LSA type %d, " > + "neighbor ID %s (%s)", > + lsa_hdr->type, inet_ntoa(nbr->id), nbr->iface->name); > return (0); > } > > /* invalid sequence number */ > if (ntohl(lsa_hdr->seq_num) == RESV_SEQ_NUM) { > - log_debug("ls_hdr_check: invalid seq num, neighbor ID %s", > - inet_ntoa(nbr->id)); > + log_debug("ls_hdr_check: invalid seq num, " > + "neighbor ID %s (%s)", inet_ntoa(nbr->id), > + nbr->iface->name); > return (0); > } > > Index: ospfd/lsreq.c > =================================================================== > RCS file: /cvs/src/usr.sbin/ospfd/lsreq.c,v > retrieving revision 1.22 > diff -u -p -r1.22 lsreq.c > --- ospfd/lsreq.c 19 Jan 2021 09:25:53 -0000 1.22 > +++ ospfd/lsreq.c 2 Nov 2021 17:11:38 -0000 > @@ -99,8 +99,8 @@ recv_ls_req(struct nbr *nbr, char *buf, > case NBR_STA_XSTRT: > case NBR_STA_SNAP: > log_debug("recv_ls_req: packet ignored in state %s, " > - "neighbor ID %s", nbr_state_name(nbr->state), > - inet_ntoa(nbr->id)); > + "neighbor ID %s (%s)", nbr_state_name(nbr->state), > + inet_ntoa(nbr->id), nbr->iface->name); > break; > case NBR_STA_XCHNG: > case NBR_STA_LOAD: > @@ -212,7 +212,8 @@ ls_req_tx_timer(int fd, short event, voi > return; > default: > log_debug("ls_req_tx_timer: unknown neighbor state, " > - "neighbor ID %s", inet_ntoa(nbr->id)); > + "neighbor ID %s (%s)", inet_ntoa(nbr->id), > + nbr->iface->name); > break; > } > > Index: ospfd/lsupdate.c > =================================================================== > RCS file: /cvs/src/usr.sbin/ospfd/lsupdate.c,v > retrieving revision 1.49 > diff -u -p -r1.49 lsupdate.c > --- ospfd/lsupdate.c 19 Jan 2021 09:25:53 -0000 1.49 > +++ ospfd/lsupdate.c 2 Nov 2021 17:11:38 -0000 > @@ -238,8 +238,9 @@ recv_ls_update(struct nbr *nbr, char *bu > u_int32_t nlsa; > > if (len < sizeof(nlsa)) { > - log_warnx("recv_ls_update: bad packet size, neighbor ID %s", > - inet_ntoa(nbr->id)); > + log_warnx("recv_ls_update: bad packet size, " > + "neighbor ID %s (%s)", inet_ntoa(nbr->id), > + nbr->iface->name); > return; > } > memcpy(&nlsa, buf, sizeof(nlsa)); > @@ -255,8 +256,8 @@ recv_ls_update(struct nbr *nbr, char *bu > case NBR_STA_XSTRT: > case NBR_STA_SNAP: > log_debug("recv_ls_update: packet ignored in state %s, " > - "neighbor ID %s", nbr_state_name(nbr->state), > - inet_ntoa(nbr->id)); > + "neighbor ID %s (%s)", nbr_state_name(nbr->state), > + inet_ntoa(nbr->id), nbr->iface->name); > break; > case NBR_STA_XCHNG: > case NBR_STA_LOAD: > @@ -264,13 +265,15 @@ recv_ls_update(struct nbr *nbr, char *bu > for (; nlsa > 0 && len > 0; nlsa--) { > if (len < sizeof(lsa)) { > log_warnx("recv_ls_update: bad packet size, " > - "neighbor ID %s", inet_ntoa(nbr->id)); > + "neighbor ID %s (%s)", inet_ntoa(nbr->id), > + nbr->iface->name); > return; > } > memcpy(&lsa, buf, sizeof(lsa)); > if (len < ntohs(lsa.len)) { > log_warnx("recv_ls_update: bad packet size, " > - "neighbor ID %s", inet_ntoa(nbr->id)); > + "neighbor ID %s (%s)", inet_ntoa(nbr->id), > + nbr->iface->name); > return; > } > ospfe_imsg_compose_rde(IMSG_LS_UPD, nbr->peerid, 0, > @@ -280,7 +283,8 @@ recv_ls_update(struct nbr *nbr, char *bu > } > if (nlsa > 0 || len > 0) { > log_warnx("recv_ls_update: bad packet size, " > - "neighbor ID %s", inet_ntoa(nbr->id)); > + "neighbor ID %s (%s)", inet_ntoa(nbr->id), > + nbr->iface->name); > return; > } > break; > @@ -491,8 +495,8 @@ ls_retrans_timer(int fd, short event, vo > if (nlsa == 0) { > /* something bad happened retry later */ > log_warnx("ls_retrans_timer: sending LS update " > - "to neighbor ID %s failed", > - inet_ntoa(nbr->id)); > + "to neighbor ID %s (%s) failed", > + inet_ntoa(nbr->id), nbr->iface->name); > TAILQ_REMOVE(&nbr->ls_retrans_list, le, entry); > nbr->ls_ret_cnt--; > le->le_when = nbr->iface->rxmt_interval; > Index: ospfd/neighbor.c > =================================================================== > RCS file: /cvs/src/usr.sbin/ospfd/neighbor.c,v > retrieving revision 1.49 > diff -u -p -r1.49 neighbor.c > --- ospfd/neighbor.c 19 Nov 2019 09:55:55 -0000 1.49 > +++ ospfd/neighbor.c 2 Nov 2021 17:11:38 -0000 > @@ -136,9 +136,10 @@ nbr_fsm(struct nbr *nbr, enum nbr_event > > if (nbr_fsm_tbl[i].state == -1) { > /* event outside of the defined fsm, ignore it. */ > - log_warnx("nbr_fsm: neighbor ID %s, " > + log_warnx("nbr_fsm: neighbor ID %s (%s), " > "event %s not expected in state %s", > - inet_ntoa(nbr->id), nbr_event_names[event], > + inet_ntoa(nbr->id), nbr->iface->name, > + nbr_event_names[event], > nbr_state_name(old_state)); > return (0); > } > @@ -184,8 +185,9 @@ nbr_fsm(struct nbr *nbr, enum nbr_event > } > > if (ret) { > - log_warnx("nbr_fsm: error changing state for neighbor ID %s, " > - "event %s, state %s", inet_ntoa(nbr->id), > + log_warnx("nbr_fsm: error changing state for neighbor " > + "ID %s (%s), event %s, state %s", > + inet_ntoa(nbr->id), nbr->iface->name, > nbr_event_names[event], nbr_state_name(old_state)); > return (-1); > } > @@ -217,10 +219,11 @@ nbr_fsm(struct nbr *nbr, enum nbr_event > if_fsm(nbr->iface, IF_EVT_NBR_CHNG); > > log_debug("nbr_fsm: event %s resulted in action %s and " > - "changing state for neighbor ID %s from %s to %s", > + "changing state for neighbor ID %s (%s) from %s to %s", > nbr_event_names[event], > nbr_action_names[nbr_fsm_tbl[i].action], > - inet_ntoa(nbr->id), nbr_state_name(old_state), > + inet_ntoa(nbr->id), nbr->iface->name, > + nbr_state_name(old_state), > nbr_state_name(nbr->state)); > > if (nbr->iface->type == IF_TYPE_VIRTUALLINK) { > @@ -523,7 +526,8 @@ nbr_act_snapshot(struct nbr *nbr) > /* we need to wait for the old snapshot to finish */ > if (nbr->dd_snapshot) { > log_debug("nbr_act_snapshot: giving up, old snapshot running " > - "for neigbor ID %s", inet_ntoa(nbr->id)); > + "for neighbor ID %s (%s)", inet_ntoa(nbr->id), > + nbr->iface->name); > return (nbr_act_restart_dd(nbr)); > } > ospfe_imsg_compose_rde(IMSG_NEIGHBOR_CAPA, nbr->peerid, 0, > @@ -616,8 +620,9 @@ nbr_act_delete(struct nbr *nbr) > tv.tv_sec = DEFAULT_NBR_TMOUT; > > if (evtimer_add(&nbr->inactivity_timer, &tv)) { > - log_warnx("nbr_act_delete: error scheduling neighbor ID %s " > - "for removal", inet_ntoa(nbr->id)); > + log_warnx("nbr_act_delete: error scheduling " > + "neighbor ID %s (%s) for removal", > + inet_ntoa(nbr->id), nbr->iface->name); > } > > return (nbr_act_clear_lists(nbr)); > @@ -641,7 +646,8 @@ nbr_act_clear_lists(struct nbr *nbr) > int > nbr_act_hello_check(struct nbr *nbr) > { > - log_debug("nbr_act_hello_check: neighbor ID %s", inet_ntoa(nbr->id)); > + log_debug("nbr_act_hello_check: neighbor ID %s (%s)", > + inet_ntoa(nbr->id), nbr->iface->name); > > return (-1); > } >