Deleted Added
full compact
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 ---