--- src/sys/netinet/if_ether.c 2005/01/06 09:14:13 1.23 +++ src/sys/netinet/if_ether.c 2005/01/06 17:59:32 1.24 @@ -1,4 +1,54 @@ /* + * Copyright (c) 2004, 2005 The DragonFly Project. All rights reserved. + * + * This code is derived from software contributed to The DragonFly Project + * by Jeffrey M. Hsu. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of The DragonFly Project nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific, prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * Copyright (c) 2004, 2005 Jeffrey M. Hsu. All rights reserved. + * + * License terms: all terms for the DragonFly license above plus the following: + * + * 4. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * + * This product includes software developed by Jeffrey M. Hsu + * for the DragonFly Project. + * + * This requirement may be waived with permission from Jeffrey Hsu. + * Permission will be granted to any DragonFly user for free. + * This requirement will sunset and may be removed on Jan 31, 2006, + * after which the standard DragonFly license (as shown above) will + * apply. + */ + +/* * Copyright (c) 1982, 1986, 1988, 1993 * The Regents of the University of California. All rights reserved. * @@ -755,7 +805,7 @@ reply: sin.sin_len = sizeof sin; sin.sin_addr = itaddr; - rt = rtlookup((struct sockaddr *)&sin, 0, 0UL); + rt = rtpurelookup((struct sockaddr *)&sin); if (rt == NULL) { m_freem(m); return; @@ -867,12 +917,15 @@ static struct llinfo_arp * arplookup(in_addr_t addr, boolean_t create, boolean_t proxy) { struct rtentry *rt; - static struct sockaddr_inarp sin = { sizeof sin, AF_INET }; + struct sockaddr_inarp sin = { sizeof sin, AF_INET }; const char *why = NULL; sin.sin_addr.s_addr = addr; sin.sin_other = proxy ? SIN_PROXY : 0; - rt = rtlookup((struct sockaddr *)&sin, create, 0UL); + if (create) + rt = rtlookup((struct sockaddr *)&sin); + else + rt = rtpurelookup((struct sockaddr *)&sin); if (rt == NULL) return (NULL); rt->rt_refcnt--;