summaryrefslogtreecommitdiffstats
path: root/sys/netinet/if_atm.c
diff options
context:
space:
mode:
authorharti <harti@FreeBSD.org>2003-08-05 14:59:06 +0000
committerharti <harti@FreeBSD.org>2003-08-05 14:59:06 +0000
commita00853028bf6ab555c105dde4b09bc90bd2649c1 (patch)
tree5917aff815b2c9afe29e7abef871033e067c77f6 /sys/netinet/if_atm.c
parent324045a3c2b6250be90ee641eeeca297a5b6f0db (diff)
downloadFreeBSD-src-a00853028bf6ab555c105dde4b09bc90bd2649c1.zip
FreeBSD-src-a00853028bf6ab555c105dde4b09bc90bd2649c1.tar.gz
When adding a channel for INET failed at the device level (ioctl) the
code used to call rtrequest(RTM_DELETE, ...). This is a problem, because the function that just has called us (route_output) is not really happy with the route it just is creating beeing ripped out from under it. Unfortunately we also cannot return an error from ifa_rtrequest. Therefore mark the route just as RTF_REJECT.
Diffstat (limited to 'sys/netinet/if_atm.c')
-rw-r--r--sys/netinet/if_atm.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/netinet/if_atm.c b/sys/netinet/if_atm.c
index 322484f..9156f91 100644
--- a/sys/netinet/if_atm.c
+++ b/sys/netinet/if_atm.c
@@ -162,8 +162,10 @@ failed:
rt->rt_flags &= ~RTF_LLINFO;
}
#endif
- rtrequest(RTM_DELETE, rt_key(rt), (struct sockaddr *)0,
- rt_mask(rt), 0, (struct rtentry **)0);
+ /* mark as invalid. We cannot RTM_DELETE the route from
+ * here, because the recursive call to rtrequest1 does
+ * not really work. */
+ rt->rt_flags |= RTF_REJECT;
break;
case RTM_DELETE:
OpenPOWER on IntegriCloud