summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorclaudio <claudio@openbsd.org>2006-02-23 15:25:18 +0000
committerclaudio <claudio@openbsd.org>2006-02-23 15:25:18 +0000
commit1dc6957cdea8f72cdee5bd149002f858af087fe5 (patch)
tree27973cd94e287f9f191fa93259e17592e9956973
parentUpdate struct rt_msghdr. rtm_use is deprecated and is now know as rtm_fmask. (diff)
downloadwireguard-openbsd-1dc6957cdea8f72cdee5bd149002f858af087fe5.tar.xz
wireguard-openbsd-1dc6957cdea8f72cdee5bd149002f858af087fe5.zip
Use the new rtm_fmask feature to reset blackhole and reject routes on
RTM_CHANGE. Until now it was not possible to get rid of these flags. Until now a fib decouple, fib couple combo was needed to get rid from blackholed routes. OK henning@
-rw-r--r--usr.sbin/bgpd/kroute.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/usr.sbin/bgpd/kroute.c b/usr.sbin/bgpd/kroute.c
index fb15eaf33d7..bc33dddef2d 100644
--- a/usr.sbin/bgpd/kroute.c
+++ b/usr.sbin/bgpd/kroute.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: kroute.c,v 1.143 2006/01/31 15:22:15 claudio Exp $ */
+/* $OpenBSD: kroute.c,v 1.144 2006/02/23 15:25:18 claudio Exp $ */
/*
* Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org>
@@ -1738,6 +1738,8 @@ send_rtmsg(int fd, int action, struct kroute *kroute)
r.hdr.rtm_flags |= RTF_BLACKHOLE;
if (kroute->flags & F_REJECT)
r.hdr.rtm_flags |= RTF_REJECT;
+ if (action == RTM_CHANGE) /* reset these flags on change */
+ r.hdr.rtm_fmask = RTF_REJECT|RTF_BLACKHOLE;
r.hdr.rtm_seq = kr_state.rtseq++; /* overflow doesn't matter */
r.hdr.rtm_addrs = RTA_DST|RTA_GATEWAY|RTA_NETMASK|RTA_LABEL;
r.prefix.sin_len = sizeof(r.prefix);