From ecb4d3d05f89eabc8020bb6563d903164e3002a1 Mon Sep 17 00:00:00 2001 From: ru Date: Wed, 17 Oct 2001 18:07:05 +0000 Subject: Pull post-4.4BSD change to sys/net/route.c from BSD/OS 4.2. Have sys/net/route.c:rtrequest1(), which takes ``rt_addrinfo *'' as the argument. Pass rt_addrinfo all the way down to rtrequest1 and ifa->ifa_rtrequest. 3rd argument of ifa->ifa_rtrequest is now ``rt_addrinfo *'' instead of ``sockaddr *'' (almost noone is using it anyways). Benefit: the following command now works. Previously we needed two route(8) invocations, "add" then "change". # route add -inet6 default ::1 -ifp gif0 Remove unsafe typecast in rtrequest(), from ``rtentry *'' to ``sockaddr *''. It was introduced by 4.3BSD-Reno and never corrected. Obtained from: BSD/OS, NetBSD MFC after: 1 month PR: kern/28360 --- sys/net/route.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'sys/net/route.h') diff --git a/sys/net/route.h b/sys/net/route.h index ae3753b..1a38ceb 100644 --- a/sys/net/route.h +++ b/sys/net/route.h @@ -248,6 +248,9 @@ struct rt_msghdr { struct rt_addrinfo { int rti_addrs; struct sockaddr *rti_info[RTAX_MAX]; + int rti_flags; + struct ifaddr *rti_ifa; + struct ifnet *rti_ifp; }; struct route_cb { @@ -273,6 +276,7 @@ extern struct radix_node_head *rt_tables[AF_MAX+1]; struct ifmultiaddr; void route_init __P((void)); +int rt_getifa __P((struct rt_addrinfo *)); void rt_ifmsg __P((struct ifnet *)); void rt_missmsg __P((int, struct rt_addrinfo *, int, int)); void rt_newaddrmsg __P((int, struct ifaddr *, int, struct rtentry *)); @@ -290,6 +294,7 @@ void rtredirect __P((struct sockaddr *, struct sockaddr *, struct sockaddr *, int, struct sockaddr *, struct rtentry **)); int rtrequest __P((int, struct sockaddr *, struct sockaddr *, struct sockaddr *, int, struct rtentry **)); +int rtrequest1 __P((int, struct rt_addrinfo *, struct rtentry **)); #endif #endif -- cgit v1.1