diff options
author | Ruslan Ermilov <ru@FreeBSD.org> | 2001-10-17 18:07:05 +0000 |
---|---|---|
committer | Ruslan Ermilov <ru@FreeBSD.org> | 2001-10-17 18:07:05 +0000 |
commit | 8071913df2dce4a8c721eeecb338c9fb7d0f8485 (patch) | |
tree | 6e9f67b95d216263dd912c61fa5f86b94ce2d728 /sys/net/route.h | |
parent | 9082264160f2b068718592bfd97e86af60a9bf2e (diff) | |
download | src-8071913df2dce4a8c721eeecb338c9fb7d0f8485.tar.gz src-8071913df2dce4a8c721eeecb338c9fb7d0f8485.zip |
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
Notes
Notes:
svn path=/head/; revision=85074
Diffstat (limited to 'sys/net/route.h')
-rw-r--r-- | sys/net/route.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/net/route.h b/sys/net/route.h index ae3753bce55b..1a38ceb36cfd 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 |