summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--usr.sbin/dvmrpd/dvmrp.h5
-rw-r--r--usr.sbin/dvmrpd/neighbor.c29
-rw-r--r--usr.sbin/dvmrpd/rde.c7
3 files changed, 9 insertions, 32 deletions
diff --git a/usr.sbin/dvmrpd/dvmrp.h b/usr.sbin/dvmrpd/dvmrp.h
index cc8e264df2c..b043e30644e 100644
--- a/usr.sbin/dvmrpd/dvmrp.h
+++ b/usr.sbin/dvmrpd/dvmrp.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: dvmrp.h,v 1.1 2006/06/01 14:12:20 norby Exp $ */
+/* $OpenBSD: dvmrp.h,v 1.2 2009/01/27 08:53:47 michele Exp $ */
/*
* Copyright (c) 2005, 2006 Esben Norby <norby@openbsd.org>
@@ -35,9 +35,6 @@
#define PRUNE_RETRANS_TIME 3 /* with exp. back off */
#define GRAFT_RETRANS_TIME 5 /* with exp. back off */
-#define DEFAULT_NBR_TMOUT 86400 /* 24 hours */
- /* remove neighbor completely */
-
#define DEFAULT_CACHE_LIFETIME 300
#define DEFAULT_METRIC 1
diff --git a/usr.sbin/dvmrpd/neighbor.c b/usr.sbin/dvmrpd/neighbor.c
index c92f67c48c7..e5ae5ccab18 100644
--- a/usr.sbin/dvmrpd/neighbor.c
+++ b/usr.sbin/dvmrpd/neighbor.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: neighbor.c,v 1.4 2008/12/02 13:42:44 michele Exp $ */
+/* $OpenBSD: neighbor.c,v 1.5 2009/01/27 08:53:47 michele Exp $ */
/*
* Copyright (c) 2005 Claudio Jeker <claudio@openbsd.org>
@@ -63,7 +63,6 @@ struct {
{NBR_STA_1_WAY, NBR_EVT_2_WAY_RCVD, NBR_ACT_STRT_ITIMER, NBR_STA_2_WAY},
{NBR_STA_ACTIVE, NBR_EVT_1_WAY_RCVD, NBR_ACT_RESET, NBR_STA_1_WAY},
{NBR_STA_ANY, NBR_EVT_KILL_NBR, NBR_ACT_DEL, NBR_STA_DOWN},
- {NBR_STA_ANY, NBR_EVT_LL_DOWN, NBR_ACT_DEL, NBR_STA_DOWN},
{NBR_STA_ANY, NBR_EVT_ITIMER, NBR_ACT_DEL, NBR_STA_DOWN},
{-1, NBR_EVT_NOTHING, NBR_ACT_NOTHING, 0},
};
@@ -227,9 +226,6 @@ nbr_new(u_int32_t nbr_id, struct iface *iface, int self)
int
nbr_del(struct nbr *nbr)
{
- log_debug("nbr_del: neighbor ID %s, peerid %lu", inet_ntoa(nbr->id),
- nbr->peerid);
-
dvmrpe_imsg_compose_rde(IMSG_NEIGHBOR_DOWN, nbr->peerid, 0, NULL, 0);
/* clear lists */
@@ -281,10 +277,7 @@ nbr_itimer(int fd, short event, void *arg)
log_debug("nbr_itimer: %s", inet_ntoa(nbr->id));
- if (nbr->state == NBR_STA_DOWN) {
- nbr_del(nbr);
- } else
- nbr_fsm(nbr, NBR_EVT_ITIMER);
+ nbr_fsm(nbr, NBR_EVT_ITIMER);
}
int
@@ -363,8 +356,6 @@ nbr_act_start_itimer(struct nbr *nbr)
int
nbr_act_delete(struct nbr *nbr)
{
- struct timeval tv;
-
log_debug("nbr_act_delete: neighbor ID %s", inet_ntoa(nbr->id));
/* stop timers */
@@ -374,16 +365,7 @@ nbr_act_delete(struct nbr *nbr)
return (-1);
}
- /* schedule kill timer */
- timerclear(&tv);
- 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));
- }
-
- return (nbr_act_clear_lists(nbr));
+ return (nbr_del(nbr));
}
int
@@ -423,10 +405,7 @@ nbr_to_ctl(struct nbr *nbr)
gettimeofday(&now, NULL);
if (evtimer_pending(&nbr->inactivity_timer, &tv)) {
timersub(&tv, &now, &res);
- if (nbr->state & NBR_STA_DOWN)
- nctl.dead_timer = DEFAULT_NBR_TMOUT - res.tv_sec;
- else
- nctl.dead_timer = res.tv_sec;
+ nctl.dead_timer = res.tv_sec;
} else
nctl.dead_timer = 0;
diff --git a/usr.sbin/dvmrpd/rde.c b/usr.sbin/dvmrpd/rde.c
index 578b9706f5c..4492e3e14c1 100644
--- a/usr.sbin/dvmrpd/rde.c
+++ b/usr.sbin/dvmrpd/rde.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: rde.c,v 1.9 2009/01/24 16:25:47 michele Exp $ */
+/* $OpenBSD: rde.c,v 1.10 2009/01/27 08:53:47 michele Exp $ */
/*
* Copyright (c) 2004, 2005 Claudio Jeker <claudio@openbsd.org>
@@ -165,6 +165,7 @@ rde_shutdown(void)
LIST_FOREACH(iface, &rdeconf->iface_list, entry) {
if_del(iface);
}
+ rde_nbr_free();
msgbuf_clear(&ibuf_dvmrpe->w);
free(ibuf_dvmrpe);
@@ -281,13 +282,13 @@ rde_dispatch_imsg(int fd, short event, void *bula)
fatalx("invalid size of OE request");
memcpy(&rn, imsg.data, sizeof(rn));
- if (rde_nbr_find(imsg.hdr.peerid))
+ if (rde_nbr_new(imsg.hdr.peerid, &rn) == NULL)
fatalx("rde_rispatch_imsg: "
"neighbor already exists");
- rde_nbr_new(imsg.hdr.peerid, &rn);
break;
case IMSG_NEIGHBOR_DOWN:
rde_nbr_del(rde_nbr_find(imsg.hdr.peerid));
+
break;
default:
log_debug("rde_dispatch_msg: unexpected imsg %d",