summaryrefslogtreecommitdiff
path: root/usr.sbin/dvmrpd/rde.c
diff options
context:
space:
mode:
authorMichele Marchetto <michele@cvs.openbsd.org>2009-04-16 20:11:13 +0000
committerMichele Marchetto <michele@cvs.openbsd.org>2009-04-16 20:11:13 +0000
commitf1afa167968d41d3e1f4e207258ae903ea8e6170 (patch)
treedd9bfee4d7c701bb1a7c8d2870e865e9b0037306 /usr.sbin/dvmrpd/rde.c
parent53a57edf4fd09c7d8a6e6f38bf1f299be55f51ab (diff)
Notify the rde when a neighbor goes down.
When this happens we have to rebuild the list of downstream interfaces. ok claudio@
Diffstat (limited to 'usr.sbin/dvmrpd/rde.c')
-rw-r--r--usr.sbin/dvmrpd/rde.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/usr.sbin/dvmrpd/rde.c b/usr.sbin/dvmrpd/rde.c
index 92aac1e4a81..2f40a042370 100644
--- a/usr.sbin/dvmrpd/rde.c
+++ b/usr.sbin/dvmrpd/rde.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: rde.c,v 1.14 2009/04/11 10:21:20 michele Exp $ */
+/* $OpenBSD: rde.c,v 1.15 2009/04/16 20:11:12 michele Exp $ */
/*
* Copyright (c) 2004, 2005 Claudio Jeker <claudio@openbsd.org>
@@ -193,6 +193,7 @@ rde_dispatch_imsg(int fd, short event, void *bula)
struct imsgbuf *ibuf = bula;
struct imsg imsg;
struct route_report rr;
+ struct nbr_msg nm;
int i, n, connected = 0;
struct iface *iface;
@@ -297,6 +298,14 @@ rde_dispatch_imsg(int fd, short event, void *bula)
rde_group_list_remove(iface, mfc.group);
break;
+ case IMSG_NBR_DEL:
+ if (imsg.hdr.len - IMSG_HEADER_SIZE != sizeof(nm))
+ fatalx("invalid size of OE request");
+
+ memcpy(&nm, imsg.data, sizeof(nm));
+ srt_expire_nbr(nm.address, nm.ifindex);
+
+ break;
case IMSG_RECV_PRUNE:
if (imsg.hdr.len - IMSG_HEADER_SIZE != sizeof(p))
fatalx("invalid size of OE request");