Deleted Added
full compact
rtsock.c (72786) rtsock.c (78064)
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 72786 2001-02-21 06:39:57Z rwatson $
34 * $FreeBSD: head/sys/net/rtsock.c 78064 2001-06-11 12:39:29Z ume $
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>

--- 525 unchanged lines hidden (view full) ---

568 register struct rt_addrinfo *rtinfo;
569{
570 register struct rt_msghdr *rtm;
571 register struct mbuf *m;
572 register int i;
573 register struct sockaddr *sa;
574 int len, dlen;
575
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>

--- 525 unchanged lines hidden (view full) ---

568 register struct rt_addrinfo *rtinfo;
569{
570 register struct rt_msghdr *rtm;
571 register struct mbuf *m;
572 register int i;
573 register struct sockaddr *sa;
574 int len, dlen;
575
576 m = m_gethdr(M_DONTWAIT, MT_DATA);
577 if (m == 0)
578 return (m);
579 switch (type) {
580
581 case RTM_DELADDR:
582 case RTM_NEWADDR:
583 len = sizeof(struct ifa_msghdr);
584 break;
585
586 case RTM_DELMADDR:
587 case RTM_NEWMADDR:
588 len = sizeof(struct ifma_msghdr);
589 break;
590
591 case RTM_IFINFO:
592 len = sizeof(struct if_msghdr);
593 break;
594
595 default:
596 len = sizeof(struct rt_msghdr);
597 }
576 switch (type) {
577
578 case RTM_DELADDR:
579 case RTM_NEWADDR:
580 len = sizeof(struct ifa_msghdr);
581 break;
582
583 case RTM_DELMADDR:
584 case RTM_NEWMADDR:
585 len = sizeof(struct ifma_msghdr);
586 break;
587
588 case RTM_IFINFO:
589 len = sizeof(struct if_msghdr);
590 break;
591
592 default:
593 len = sizeof(struct rt_msghdr);
594 }
598 if (len > MHLEN)
595 if (len > MCLBYTES)
599 panic("rt_msg1");
596 panic("rt_msg1");
597 m = m_gethdr(M_DONTWAIT, MT_DATA);
598 if (m && len > MHLEN) {
599 MCLGET(m, M_DONTWAIT);
600 if ((m->m_flags & M_EXT) == 0) {
601 m_free(m);
602 m = NULL;
603 }
604 }
605 if (m == 0)
606 return (m);
600 m->m_pkthdr.len = m->m_len = len;
601 m->m_pkthdr.rcvif = 0;
602 rtm = mtod(m, struct rt_msghdr *);
603 bzero((caddr_t)rtm, len);
604 for (i = 0; i < RTAX_MAX; i++) {
605 if ((sa = rtinfo->rti_info[i]) == NULL)
606 continue;
607 rtinfo->rti_addrs |= (1 << i);

--- 401 unchanged lines hidden ---
607 m->m_pkthdr.len = m->m_len = len;
608 m->m_pkthdr.rcvif = 0;
609 rtm = mtod(m, struct rt_msghdr *);
610 bzero((caddr_t)rtm, len);
611 for (i = 0; i < RTAX_MAX; i++) {
612 if ((sa = rtinfo->rti_info[i]) == NULL)
613 continue;
614 rtinfo->rti_addrs |= (1 << i);

--- 401 unchanged lines hidden ---