From owner-svn-src-projects@freebsd.org Sat Dec 24 20:02:29 2016 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id DA7DEC8F1C1 for ; Sat, 24 Dec 2016 20:02:29 +0000 (UTC) (envelope-from ae@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 9CBEC16F5; Sat, 24 Dec 2016 20:02:29 +0000 (UTC) (envelope-from ae@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id uBOK2SMG001248; Sat, 24 Dec 2016 20:02:28 GMT (envelope-from ae@FreeBSD.org) Received: (from ae@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id uBOK2SbI001244; Sat, 24 Dec 2016 20:02:28 GMT (envelope-from ae@FreeBSD.org) Message-Id: <201612242002.uBOK2SbI001244@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ae set sender to ae@FreeBSD.org using -f From: "Andrey V. Elsukov" Date: Sat, 24 Dec 2016 20:02:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r310525 - projects/ipsec/sys/netipsec X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 24 Dec 2016 20:02:30 -0000 Author: ae Date: Sat Dec 24 20:02:28 2016 New Revision: 310525 URL: https://svnweb.freebsd.org/changeset/base/310525 Log: Move ipsec[46]_setsockaddrs() into subr_ipsec.c. These functions are needed for both ipsec.ko and tcpmd5.ko. Modified: projects/ipsec/sys/netipsec/ipsec.c projects/ipsec/sys/netipsec/ipsec.h projects/ipsec/sys/netipsec/ipsec6.h projects/ipsec/sys/netipsec/subr_ipsec.c Modified: projects/ipsec/sys/netipsec/ipsec.c ============================================================================== --- projects/ipsec/sys/netipsec/ipsec.c Sat Dec 24 17:42:34 2016 (r310524) +++ projects/ipsec/sys/netipsec/ipsec.c Sat Dec 24 20:02:28 2016 (r310525) @@ -260,14 +260,10 @@ static void ipsec_setspidx_inpcb(struct u_int); static void ipsec4_get_ulp(const struct mbuf *, struct secpolicyindex *, int); -static void ipsec4_setsockaddrs(const struct mbuf *, union sockaddr_union *, - union sockaddr_union *); static void ipsec4_setspidx_ipaddr(const struct mbuf *, struct secpolicyindex *); #ifdef INET6 static void ipsec6_get_ulp(const struct mbuf *m, struct secpolicyindex *, int); -static void ipsec6_setsockaddrs(const struct mbuf *, union sockaddr_union *, - union sockaddr_union *); static void ipsec6_setspidx_ipaddr(const struct mbuf *, struct secpolicyindex *); #endif @@ -475,61 +471,8 @@ ipsec_setspidx_inpcb(struct inpcb *inp, printf("%s: ", __func__); kdebug_secpolicyindex(spidx, NULL)); } -void -ipsec_setsockaddrs(const struct mbuf *m, union sockaddr_union *src, - union sockaddr_union *dst) -{ - struct ip *ip; - - IPSEC_ASSERT(m->m_len >= sizeof(*ip), ("unexpected mbuf len")); - - ip = mtod(m, struct ip *); - switch (ip->ip_v) { -#ifdef INET - case IPVERSION: - ipsec4_setsockaddrs(m, src, dst); - break; -#endif -#ifdef INET6 - case (IPV6_VERSION >> 4): - ipsec6_setsockaddrs(m, src, dst); - break; -#endif - default: - bzero(src, sizeof(*src)); - bzero(dst, sizeof(*dst)); - } -} - #ifdef INET static void -ipsec4_setsockaddrs(const struct mbuf *m, union sockaddr_union *src, - union sockaddr_union *dst) -{ - static const struct sockaddr_in template = { - sizeof (struct sockaddr_in), - AF_INET, - 0, { 0 }, { 0, 0, 0, 0, 0, 0, 0, 0 } - }; - - src->sin = template; - dst->sin = template; - - if (m->m_len < sizeof (struct ip)) { - m_copydata(m, offsetof(struct ip, ip_src), - sizeof (struct in_addr), - (caddr_t) &src->sin.sin_addr); - m_copydata(m, offsetof(struct ip, ip_dst), - sizeof (struct in_addr), - (caddr_t) &dst->sin.sin_addr); - } else { - const struct ip *ip = mtod(m, const struct ip *); - src->sin.sin_addr = ip->ip_src; - dst->sin.sin_addr = ip->ip_dst; - } -} - -static void ipsec4_get_ulp(const struct mbuf *m, struct secpolicyindex *spidx, int needport) { @@ -715,39 +658,6 @@ ipsec4_capability(struct mbuf *m, u_int #ifdef INET6 static void -ipsec6_setsockaddrs(const struct mbuf *m, union sockaddr_union *src, - union sockaddr_union *dst) -{ - struct ip6_hdr ip6buf; - const struct ip6_hdr *ip6; - - if (m->m_len >= sizeof(*ip6)) - ip6 = mtod(m, const struct ip6_hdr *); - else { - m_copydata(m, 0, sizeof(ip6buf), (caddr_t)&ip6buf); - ip6 = &ip6buf; - } - - bzero(&src->sin6, sizeof(struct sockaddr_in6)); - src->sin6.sin6_family = AF_INET6; - src->sin6.sin6_len = sizeof(struct sockaddr_in6); - bcopy(&ip6->ip6_src, &src->sin6.sin6_addr, sizeof(ip6->ip6_src)); - if (IN6_IS_SCOPE_LINKLOCAL(&ip6->ip6_src)) { - src->sin6.sin6_addr.s6_addr16[1] = 0; - src->sin6.sin6_scope_id = ntohs(ip6->ip6_src.s6_addr16[1]); - } - - bzero(&dst->sin6, sizeof(struct sockaddr_in6)); - dst->sin6.sin6_family = AF_INET6; - dst->sin6.sin6_len = sizeof(struct sockaddr_in6); - bcopy(&ip6->ip6_dst, &dst->sin6.sin6_addr, sizeof(ip6->ip6_dst)); - if (IN6_IS_SCOPE_LINKLOCAL(&ip6->ip6_dst)) { - dst->sin6.sin6_addr.s6_addr16[1] = 0; - dst->sin6.sin6_scope_id = ntohs(ip6->ip6_dst.s6_addr16[1]); - } -} - -static void ipsec6_get_ulp(const struct mbuf *m, struct secpolicyindex *spidx, int needport) { Modified: projects/ipsec/sys/netipsec/ipsec.h ============================================================================== --- projects/ipsec/sys/netipsec/ipsec.h Sat Dec 24 17:42:34 2016 (r310524) +++ projects/ipsec/sys/netipsec/ipsec.h Sat Dec 24 20:02:28 2016 (r310525) @@ -318,9 +318,8 @@ int ipsec_chkreplay(uint32_t, struct sec int ipsec_updatereplay(uint32_t, struct secasvar *); int ipsec_updateid(struct secasvar *, uint64_t *, uint64_t *); -void ipsec_setsockaddrs(const struct mbuf *, union sockaddr_union *, +void ipsec4_setsockaddrs(const struct mbuf *, union sockaddr_union *, union sockaddr_union *); - int ipsec4_in_reject(const struct mbuf *, struct inpcb *); int ipsec4_input(struct mbuf *, int, int); int ipsec4_forward(struct mbuf *); Modified: projects/ipsec/sys/netipsec/ipsec6.h ============================================================================== --- projects/ipsec/sys/netipsec/ipsec6.h Sat Dec 24 17:42:34 2016 (r310524) +++ projects/ipsec/sys/netipsec/ipsec6.h Sat Dec 24 20:02:28 2016 (r310525) @@ -62,6 +62,8 @@ struct inpcb; struct secpolicy *ipsec6_checkpolicy(const struct mbuf *, struct inpcb *, int *); +void ipsec6_setsockaddrs(const struct mbuf *, union sockaddr_union *, + union sockaddr_union *); int ipsec6_input(struct mbuf *, int, int); int ipsec6_in_reject(const struct mbuf *, struct inpcb *); int ipsec6_forward(struct mbuf *); Modified: projects/ipsec/sys/netipsec/subr_ipsec.c ============================================================================== --- projects/ipsec/sys/netipsec/subr_ipsec.c Sat Dec 24 17:42:34 2016 (r310524) +++ projects/ipsec/sys/netipsec/subr_ipsec.c Sat Dec 24 20:02:28 2016 (r310525) @@ -104,6 +104,69 @@ DECLARE_MODULE(ipsec_support, ipsec_supp SI_SUB_PROTO_DOMAIN, SI_ORDER_ANY); MODULE_VERSION(ipsec_support, 1); +#ifdef INET +void +ipsec4_setsockaddrs(const struct mbuf *m, union sockaddr_union *src, + union sockaddr_union *dst) +{ + static const struct sockaddr_in template = { + sizeof (struct sockaddr_in), + AF_INET, + 0, { 0 }, { 0, 0, 0, 0, 0, 0, 0, 0 } + }; + + src->sin = template; + dst->sin = template; + + if (m->m_len < sizeof (struct ip)) { + m_copydata(m, offsetof(struct ip, ip_src), + sizeof (struct in_addr), + (caddr_t) &src->sin.sin_addr); + m_copydata(m, offsetof(struct ip, ip_dst), + sizeof (struct in_addr), + (caddr_t) &dst->sin.sin_addr); + } else { + const struct ip *ip = mtod(m, const struct ip *); + src->sin.sin_addr = ip->ip_src; + dst->sin.sin_addr = ip->ip_dst; + } +} +#endif +#ifdef INET6 +void +ipsec6_setsockaddrs(const struct mbuf *m, union sockaddr_union *src, + union sockaddr_union *dst) +{ + struct ip6_hdr ip6buf; + const struct ip6_hdr *ip6; + + if (m->m_len >= sizeof(*ip6)) + ip6 = mtod(m, const struct ip6_hdr *); + else { + m_copydata(m, 0, sizeof(ip6buf), (caddr_t)&ip6buf); + ip6 = &ip6buf; + } + + bzero(&src->sin6, sizeof(struct sockaddr_in6)); + src->sin6.sin6_family = AF_INET6; + src->sin6.sin6_len = sizeof(struct sockaddr_in6); + bcopy(&ip6->ip6_src, &src->sin6.sin6_addr, sizeof(ip6->ip6_src)); + if (IN6_IS_SCOPE_LINKLOCAL(&ip6->ip6_src)) { + src->sin6.sin6_addr.s6_addr16[1] = 0; + src->sin6.sin6_scope_id = ntohs(ip6->ip6_src.s6_addr16[1]); + } + + bzero(&dst->sin6, sizeof(struct sockaddr_in6)); + dst->sin6.sin6_family = AF_INET6; + dst->sin6.sin6_len = sizeof(struct sockaddr_in6); + bcopy(&ip6->ip6_dst, &dst->sin6.sin6_addr, sizeof(ip6->ip6_dst)); + if (IN6_IS_SCOPE_LINKLOCAL(&ip6->ip6_dst)) { + dst->sin6.sin6_addr.s6_addr16[1] = 0; + dst->sin6.sin6_scope_id = ntohs(ip6->ip6_dst.s6_addr16[1]); + } +} +#endif + #ifdef TCP_SIGNATURE const int tcp_ipsec_support = 1; #else