From owner-svn-src-user@FreeBSD.ORG Wed Dec 18 14:45:03 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id AB041F9B; Wed, 18 Dec 2013 14:45:03 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 7DEFE1441; Wed, 18 Dec 2013 14:45:03 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id rBIEj3VR034146; Wed, 18 Dec 2013 14:45:03 GMT (envelope-from ae@svn.freebsd.org) Received: (from ae@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id rBIEj3TE034145; Wed, 18 Dec 2013 14:45:03 GMT (envelope-from ae@svn.freebsd.org) Message-Id: <201312181445.rBIEj3TE034145@svn.freebsd.org> From: "Andrey V. Elsukov" Date: Wed, 18 Dec 2013 14:45:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r259553 - user/ae/inet6/sys/net X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Dec 2013 14:45:03 -0000 Author: ae Date: Wed Dec 18 14:45:03 2013 New Revision: 259553 URL: http://svnweb.freebsd.org/changeset/base/259553 Log: Update rtsock code to use sockaddr_in6 with jail's functions. Modified: user/ae/inet6/sys/net/rtsock.c Modified: user/ae/inet6/sys/net/rtsock.c ============================================================================== --- user/ae/inet6/sys/net/rtsock.c Wed Dec 18 14:40:32 2013 (r259552) +++ user/ae/inet6/sys/net/rtsock.c Wed Dec 18 14:45:03 2013 (r259553) @@ -508,7 +508,6 @@ rtm_get_jailed(struct rt_addrinfo *info, #ifdef INET6 case AF_INET6: { - struct in6_addr ia6; struct ifaddr *ifa; int found; @@ -519,35 +518,30 @@ rtm_get_jailed(struct rt_addrinfo *info, */ IF_ADDR_RLOCK(ifp); TAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) { - struct sockaddr *sa; - sa = ifa->ifa_addr; - if (sa->sa_family != AF_INET6) + if (ifa->ifa_addr->sa_family != AF_INET6) continue; - bcopy(&((struct sockaddr_in6 *)sa)->sin6_addr, - &ia6, sizeof(struct in6_addr)); - if (prison_check_ip6(cred, &ia6) == 0) { + if (prison_if(cred, ifa->ifa_addr) == 0) { found = 1; break; } } IF_ADDR_RUNLOCK(ifp); + bzero(&saun->sin6, sizeof(struct sockaddr_in6)); + saun->sin6.sin6_len = sizeof(struct sockaddr_in6); + saun->sin6.sin6_family = AF_INET6; if (!found) { /* * As a last resort return the 'default' jail address. */ - ia6 = ((struct sockaddr_in6 *)rt->rt_ifa->ifa_addr)-> - sin6_addr; - if (prison_get_ip6(cred, &ia6) != 0) + if (prison_get_ip6(cred, &saun->sin6) != 0) return (ESRCH); + } else { + struct sockaddr_in6 *sin6; + + sin6 = (struct sockaddr_in6 *)ifa->ifa_addr; + saun->sin6.sin6_addr = sin6->sin6_addr; + saun->sin6.sin6_scope_id = sin6->sin6_scope_id; } - bzero(&saun->sin6, sizeof(struct sockaddr_in6)); - saun->sin6.sin6_len = sizeof(struct sockaddr_in6); - saun->sin6.sin6_family = AF_INET6; - bcopy(&ia6, &saun->sin6.sin6_addr, sizeof(struct in6_addr)); - /* - saun->sin6.sin6_sin6_scope_id = in6_getscopezone(ifp, - in6_addrscope(&ia6)); - */ info->rti_info[RTAX_IFA] = (struct sockaddr *)&saun->sin6; break; }