summaryrefslogtreecommitdiff
blob: 9c529ee08bd95523a1f9a661fe132dd938fcfe8a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-firewall/ipsec-tools/ipsec-tools-0.7.3-r1.ebuild,v 1.7 2012/05/13 11:01:34 swift Exp $

EAPI="4"

inherit eutils flag-o-matic autotools linux-info

DESCRIPTION="A port of KAME's IPsec utilities to the Linux-2.6 IPsec implementation"
HOMEPAGE="http://ipsec-tools.sourceforge.net/"
SRC_URI="mirror://sourceforge/${PN}/${P}.tar.bz2"

LICENSE="BSD"
SLOT="0"
KEYWORDS="~amd64 ~ppc ~sparc ~x86"
IUSE="hybrid iconv idea ipv6 kerberos ldap nat pam rc5 readline selinux"

DEPEND_COMMON="
	selinux? ( sys-libs/libselinux )
	readline? ( sys-libs/readline )
	pam? ( sys-libs/pam )
	ldap? ( net-nds/openldap )
	kerberos? ( virtual/krb5 )
	>=dev-libs/openssl-0.9.8
	iconv? ( virtual/libiconv )"
#	radius? ( net-dialup/gnuradius )

RDEPEND="${DEPEND_COMMON}
	selinux? ( sec-policy/selinux-ipsec )"

DEPEND="${DEPEND_COMMON}
	>=sys-kernel/linux-headers-2.6.30"

pkg_setup() {
	get_version
	if kernel_is -ge 2 6 19 ; then
		einfo "Checking for suitable kernel configuration (Networking | Networking support | Networking options)"

		if use nat; then
			CONFIG_CHECK="${CONFIG_CHECK} ~NETFILTER_XT_MATCH_POLICY"
			export WARNING_NETFILTER_XT_MATCH_POLICY="NAT support may fail weirdly unless you enable this option in your kernel"
		fi

		for i in XFRM_USER NET_KEY; do
			CONFIG_CHECK="${CONFIG_CHECK} ~${i}"
			eval "export WARNING_${i}='No tunnels will be available at all (${i})'"
		done

		for i in INET_IPCOMP INET_AH INET_ESP \
			INET_XFRM_MODE_TRANSPORT \
			INET_XFRM_MODE_TUNNEL \
			INET_XFRM_MODE_BEET ; do
			CONFIG_CHECK="${CONFIG_CHECK} ~${i}"
			eval "export WARNING_${i}='IPv4 tunnels will not be available (${i})'"
		done

		for i in INET6_IPCOMP INET6_AH INET6_ESP \
			INET6_XFRM_MODE_TRANSPORT \
			INET6_XFRM_MODE_TUNNEL \
			INET6_XFRM_MODE_BEET ; do
			CONFIG_CHECK="${CONFIG_CHECK} ~${i}"
			eval "export WARNING_${i}='IPv6 tunnels will not be available (${i})'"
		done

		CONFIG_CHECK="${CONFIG_CHECK} ~CRYPTO_NULL"
		export WARNING_CRYPTO_NULL="Unencrypted tunnels will not be available (CRYPTO_NULL)"
		export CONFIG_CHECK

		check_extra_config
	else
		eerror "You must have a kernel >=2.6.19 to run ipsec-tools."
		eerror "Building now, assuming that you will run on a different kernel"
	fi
}

src_prepare() {
	# fix for bug #76741
	sed -i 's:#include <sys/sysctl.h>::' src/racoon/pfkey.c src/setkey/setkey.c || die
	# fix for bug #124813
	sed -i 's:-Werror::g' "${S}"/configure.ac || die
	# Fixing duplicate specification of vmbuf.h #300161
	epatch "${FILESDIR}"/${PN}-duplicate-header.patch
	# fix for building with gcc-4.6
	sed -i 's: -R: -Wl,-R:' "${S}"/configure.ac || die

	AT_M4DIR="${S}" eautoreconf
	epunt_cxx
}

src_configure() {
	# fix for bug #61025
	filter-flags -march=c3

	myconf="--with-kernel-headers=/usr/include \
			--enable-dependency-tracking \
			--enable-dpd \
			--enable-frag \
			--enable-stats \
			--enable-fastquit \
			--enable-stats \
			--enable-adminport \
			$(use_enable ipv6) \
			$(use_enable rc5) \
			$(use_enable idea) \
			$(use_with readline)
			$(use_enable kerberos gssapi) \
			$(use_with ldap libldap) \
			$(use_with pam libpam)"

#	we do not want broken-natt from the kernel
#	myconf="${myconf} $(use_enable broken-natt)"
	use nat && myconf="${myconf} --enable-natt --enable-natt-versions=yes"

	# we only need security-context when using selinux
	myconf="${myconf} $(use_enable selinux security-context)"

	# enable mode-cfg and xauth support
	if use pam; then
		myconf="${myconf} --enable-hybrid"
	else
		myconf="${myconf} $(use_enable hybrid)"
	fi

	# dev-libs/libiconv is hard masked
	#use iconv && myconf="${myconf} $(use_with iconv libiconv)"

	# the default (/usr/include/openssl/) is OK for Gentoo, leave it
	# myconf="${myconf} $(use_with ssl openssl )"

	# No way to get it compiling with freeradius or gnuradius
	# We would need libradius which only exists on FreeBSD

	# See bug #77369
	#myconf="${myconf} --enable-samode-unspec"

	econf ${myconf}
}

src_compile() {
	emake -j1
}

src_install() {
	emake DESTDIR="${D}" install
	keepdir /var/lib/racoon
	newconfd "${FILESDIR}"/racoon.conf.d racoon
	newinitd "${FILESDIR}"/racoon.init.d racoon

	dodoc ChangeLog README NEWS
	dodoc -r src/racoon/samples
	dodoc src/racoon/doc/*

	docinto setkey
	dodoc src/setkey/sample.cf

	dodir /etc/racoon

	# RFC are only available from CVS for the moment, see einfo below
	#docinto "rfc"
	#dodoc ${S}/src/racoon/rfc/*
}

pkg_postinst() {
	if use nat; then
		elog
		elog " You have enabled the nat traversal functionnality."
		elog " Nat versions wich are enabled by default are 00,02,rfc"
		elog " you can find those drafts in the CVS repository:"
		elog "cvs -d anoncvs@anoncvs.netbsd.org:/cvsroot co ipsec-tools"
		elog
		elog "If you feel brave enough and you know what you are"
		elog "doing, you can consider emerging this ebuild"
		elog "with"
		elog "EXTRA_ECONF=\"--enable-natt-versions=08,07,06\""
		elog
	fi;

	if use ldap; then
		elog
		elog " You have enabled ldap support with {$PN}."
		elog " The man page does NOT contain any information on it yet."
		elog " Consider to use a more recent version or CVS"
		elog
	fi;

	elog
	elog "Please have a look in /usr/share/doc/${P} and visit"
	elog "http://www.netbsd.org/Documentation/network/ipsec/"
	elog "to find a lot of information on how to configure this great tool."
	elog
}

# vim: set foldmethod=marker nowrap :