rtsock.c (69781) | rtsock.c (71959) |
---|---|
1/* 2 * Copyright (c) 1988, 1991, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 17 unchanged lines hidden (view full) --- 26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31 * SUCH DAMAGE. 32 * 33 * @(#)rtsock.c 8.5 (Berkeley) 11/2/94 | 1/* 2 * Copyright (c) 1988, 1991, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 17 unchanged lines hidden (view full) --- 26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31 * SUCH DAMAGE. 32 * 33 * @(#)rtsock.c 8.5 (Berkeley) 11/2/94 |
34 * $FreeBSD: head/sys/net/rtsock.c 69781 2000-12-08 21:51:06Z dwmalone $ | 34 * $FreeBSD: head/sys/net/rtsock.c 71959 2001-02-03 11:46:35Z phk $ |
35 */ 36 37 38#include <sys/param.h> 39#include <sys/systm.h> 40#include <sys/kernel.h> 41#include <sys/sysctl.h> 42#include <sys/proc.h> --- 325 unchanged lines hidden (view full) --- 368 report: 369 dst = rt_key(rt); 370 gate = rt->rt_gateway; 371 netmask = rt_mask(rt); 372 genmask = rt->rt_genmask; 373 if (rtm->rtm_addrs & (RTA_IFP | RTA_IFA)) { 374 ifp = rt->rt_ifp; 375 if (ifp) { | 35 */ 36 37 38#include <sys/param.h> 39#include <sys/systm.h> 40#include <sys/kernel.h> 41#include <sys/sysctl.h> 42#include <sys/proc.h> --- 325 unchanged lines hidden (view full) --- 368 report: 369 dst = rt_key(rt); 370 gate = rt->rt_gateway; 371 netmask = rt_mask(rt); 372 genmask = rt->rt_genmask; 373 if (rtm->rtm_addrs & (RTA_IFP | RTA_IFA)) { 374 ifp = rt->rt_ifp; 375 if (ifp) { |
376 ifpaddr = ifp->if_addrhead.tqh_first->ifa_addr; | 376 ifpaddr = TAILQ_FIRST(&ifp->if_addrhead)->ifa_addr; |
377 ifaaddr = rt->rt_ifa->ifa_addr; 378 rtm->rtm_index = ifp->if_index; 379 } else { 380 ifpaddr = 0; 381 ifaaddr = 0; 382 } 383 } 384 len = rt_msg2(rtm->rtm_type, &info, (caddr_t)0, --- 385 unchanged lines hidden (view full) --- 770 for (pass = 1; pass < 3; pass++) { 771 bzero((caddr_t)&info, sizeof(info)); 772 if ((cmd == RTM_ADD && pass == 1) || 773 (cmd == RTM_DELETE && pass == 2)) { 774 register struct ifa_msghdr *ifam; 775 int ncmd = cmd == RTM_ADD ? RTM_NEWADDR : RTM_DELADDR; 776 777 ifaaddr = sa = ifa->ifa_addr; | 377 ifaaddr = rt->rt_ifa->ifa_addr; 378 rtm->rtm_index = ifp->if_index; 379 } else { 380 ifpaddr = 0; 381 ifaaddr = 0; 382 } 383 } 384 len = rt_msg2(rtm->rtm_type, &info, (caddr_t)0, --- 385 unchanged lines hidden (view full) --- 770 for (pass = 1; pass < 3; pass++) { 771 bzero((caddr_t)&info, sizeof(info)); 772 if ((cmd == RTM_ADD && pass == 1) || 773 (cmd == RTM_DELETE && pass == 2)) { 774 register struct ifa_msghdr *ifam; 775 int ncmd = cmd == RTM_ADD ? RTM_NEWADDR : RTM_DELADDR; 776 777 ifaaddr = sa = ifa->ifa_addr; |
778 ifpaddr = ifp->if_addrhead.tqh_first->ifa_addr; | 778 ifpaddr = TAILQ_FIRST(&ifp->if_addrhead)->ifa_addr; |
779 netmask = ifa->ifa_netmask; 780 brdaddr = ifa->ifa_dstaddr; 781 if ((m = rt_msg1(ncmd, &info)) == NULL) 782 continue; 783 ifam = mtod(m, struct ifa_msghdr *); 784 ifam->ifam_index = ifp->if_index; 785 ifam->ifam_metric = ifa->ifa_metric; 786 ifam->ifam_flags = ifa->ifa_flags; --- 36 unchanged lines hidden (view full) --- 823 struct ifnet *ifp = ifma->ifma_ifp; 824 struct ifma_msghdr *ifmam; 825 826 if (route_cb.any_count == 0) 827 return; 828 829 bzero((caddr_t)&info, sizeof(info)); 830 ifaaddr = ifma->ifma_addr; | 779 netmask = ifa->ifa_netmask; 780 brdaddr = ifa->ifa_dstaddr; 781 if ((m = rt_msg1(ncmd, &info)) == NULL) 782 continue; 783 ifam = mtod(m, struct ifa_msghdr *); 784 ifam->ifam_index = ifp->if_index; 785 ifam->ifam_metric = ifa->ifa_metric; 786 ifam->ifam_flags = ifa->ifa_flags; --- 36 unchanged lines hidden (view full) --- 823 struct ifnet *ifp = ifma->ifma_ifp; 824 struct ifma_msghdr *ifmam; 825 826 if (route_cb.any_count == 0) 827 return; 828 829 bzero((caddr_t)&info, sizeof(info)); 830 ifaaddr = ifma->ifma_addr; |
831 if (ifp && ifp->if_addrhead.tqh_first) 832 ifpaddr = ifp->if_addrhead.tqh_first->ifa_addr; | 831 if (ifp && TAILQ_FIRST(&ifp->if_addrhead)) 832 ifpaddr = TAILQ_FIRST(&ifp->if_addrhead)->ifa_addr; |
833 else 834 ifpaddr = NULL; 835 /* 836 * If a link-layer address is present, present it as a ``gateway'' 837 * (similarly to how ARP entries, e.g., are presented). 838 */ 839 gate = ifma->ifma_lladdr; 840 if ((m = rt_msg1(cmd, &info)) == NULL) --- 47 unchanged lines hidden (view full) --- 888 register struct walkarg *w; 889{ 890 register struct ifnet *ifp; 891 register struct ifaddr *ifa; 892 struct rt_addrinfo info; 893 int len, error = 0; 894 895 bzero((caddr_t)&info, sizeof(info)); | 833 else 834 ifpaddr = NULL; 835 /* 836 * If a link-layer address is present, present it as a ``gateway'' 837 * (similarly to how ARP entries, e.g., are presented). 838 */ 839 gate = ifma->ifma_lladdr; 840 if ((m = rt_msg1(cmd, &info)) == NULL) --- 47 unchanged lines hidden (view full) --- 888 register struct walkarg *w; 889{ 890 register struct ifnet *ifp; 891 register struct ifaddr *ifa; 892 struct rt_addrinfo info; 893 int len, error = 0; 894 895 bzero((caddr_t)&info, sizeof(info)); |
896 for (ifp = ifnet.tqh_first; ifp; ifp = ifp->if_link.tqe_next) { | 896 for (ifp = TAILQ_FIRST(&ifnet); ifp; ifp = TAILQ_NEXT(ifp, if_link)) { |
897 if (w->w_arg && w->w_arg != ifp->if_index) 898 continue; | 897 if (w->w_arg && w->w_arg != ifp->if_index) 898 continue; |
899 ifa = ifp->if_addrhead.tqh_first; | 899 ifa = TAILQ_FIRST(&ifp->if_addrhead); |
900 ifpaddr = ifa->ifa_addr; 901 len = rt_msg2(RTM_IFINFO, &info, (caddr_t)0, w); 902 ifpaddr = 0; 903 if (w->w_req && w->w_tmem) { 904 register struct if_msghdr *ifm; 905 906 ifm = (struct if_msghdr *)w->w_tmem; 907 ifm->ifm_index = ifp->if_index; 908 ifm->ifm_flags = (u_short)ifp->if_flags; 909 ifm->ifm_data = ifp->if_data; 910 ifm->ifm_addrs = info.rti_addrs; 911 error = SYSCTL_OUT(w->w_req,(caddr_t)ifm, len); 912 if (error) 913 return (error); 914 } | 900 ifpaddr = ifa->ifa_addr; 901 len = rt_msg2(RTM_IFINFO, &info, (caddr_t)0, w); 902 ifpaddr = 0; 903 if (w->w_req && w->w_tmem) { 904 register struct if_msghdr *ifm; 905 906 ifm = (struct if_msghdr *)w->w_tmem; 907 ifm->ifm_index = ifp->if_index; 908 ifm->ifm_flags = (u_short)ifp->if_flags; 909 ifm->ifm_data = ifp->if_data; 910 ifm->ifm_addrs = info.rti_addrs; 911 error = SYSCTL_OUT(w->w_req,(caddr_t)ifm, len); 912 if (error) 913 return (error); 914 } |
915 while ((ifa = ifa->ifa_link.tqe_next) != 0) { | 915 while ((ifa = TAILQ_NEXT(ifa, ifa_link)) != 0) { |
916 if (af && af != ifa->ifa_addr->sa_family) 917 continue; 918 if (curproc->p_prison && prison_if(curproc, ifa->ifa_addr)) 919 continue; 920 ifaaddr = ifa->ifa_addr; 921 netmask = ifa->ifa_netmask; 922 brdaddr = ifa->ifa_dstaddr; 923 len = rt_msg2(RTM_NEWADDR, &info, 0, w); --- 83 unchanged lines hidden --- | 916 if (af && af != ifa->ifa_addr->sa_family) 917 continue; 918 if (curproc->p_prison && prison_if(curproc, ifa->ifa_addr)) 919 continue; 920 ifaaddr = ifa->ifa_addr; 921 netmask = ifa->ifa_netmask; 922 brdaddr = ifa->ifa_dstaddr; 923 len = rt_msg2(RTM_NEWADDR, &info, 0, w); --- 83 unchanged lines hidden --- |