blob: 2ebb780a826c45037e0c0c285599d68881f35700 (
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
|
# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-misc/quagga/quagga-0.99.9-r1.ebuild,v 1.3 2008/05/13 22:38:28 mrness Exp $
WANT_AUTOMAKE="latest"
WANT_AUTOCONF="latest"
inherit eutils multilib autotools linux-info
DESCRIPTION="A free routing daemon replacing Zebra supporting RIP, OSPF and BGP."
HOMEPAGE="http://quagga.net/"
SRC_URI="http://www.quagga.net/download/${P}.tar.gz
mirror://gentoo/${P}-patches-20070913.tar.gz"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ppc ~s390 ~sparc ~x86"
IUSE="caps ipv6 snmp pam tcpmd5 bgpas4 bgpclassless ospfapi realms multipath tcp-zebra"
RESTRICT="userpriv"
DEPEND="sys-libs/readline
caps? ( >=sys-libs/libcap-1.10-r9 )
snmp? ( net-analyzer/net-snmp )
pam? ( sys-libs/pam )"
RDEPEND="${DEPEND}
sys-apps/iproute2"
pkg_setup() {
if use tcpmd5 ; then
get_version || get_running_version
fi
return 0
}
src_unpack() {
unpack ${A}
cd "${S}" || die "source dir not found"
epatch "${WORKDIR}/patch/${P}-link-libcap.patch"
# AS4 support (original found at http://quagga.ncc.eurodata.de)
use bgpas4 && epatch "${WORKDIR}/patch/quagga-cvs20070909-as4-v09.patch"
if use tcpmd5 ; then
if kernel_is lt 2 6 20 ; then
# TCP MD5 for BGP patch for Linux (RFC 2385)
# original found at http://hasso.linux.ee/doku.php/english:network:rfc2385
epatch "${WORKDIR}/patch/ht-20050321-${PV}-bgp-md5_adapted.patch"
else
# TCP MD5 in-kernel support for kernels >=2.6.20 (by Leigh Brown)
# original found at http://www.solinno.co.uk/md5sig/quagga_linux-2.6.20_md5sig.diff
epatch "${WORKDIR}/patch/quagga_linux-2.6.20_md5sig_adapted.diff"
fi
fi
# Classless prefixes for BGP - http://hasso.linux.ee/doku.php/english:network:quagga
use bgpclassless && epatch "${WORKDIR}/patch/ht-20040304-classless-bgp_adapted.patch"
# Realms support (Calin Velea) - http://vcalinus.gemenii.ro/quaggarealms.html
use realms && epatch "${WORKDIR}/patch/${P}-realms.diff"
eautoreconf
}
src_compile() {
local myconf="--disable-static \
$(use_enable caps capabilities) \
$(use_enable snmp) \
$(use_with pam libpam) \
$(use_enable tcpmd5 tcp-md5) \
$(use_enable tcp-zebra)"
use ipv6 \
&& myconf="${myconf} --enable-ipv6 --enable-ripng --enable-ospf6d --enable-rtadv" \
|| myconf="${myconf} --disable-ipv6 --disable-ripngd --disable-ospf6d"
use ospfapi \
&& myconf="${myconf} --enable-opaque-lsa --enable-ospf-te --enable-ospfclient"
use realms && myconf="${myconf} --enable-realms"
use multipath && myconf="${myconf} --enable-multipath=0"
econf \
--enable-nssa \
--enable-user=quagga \
--enable-group=quagga \
--enable-vty-group=quagga \
--with-cflags="${CFLAGS}" \
--enable-vtysh \
--sysconfdir=/etc/quagga \
--enable-exampledir=/etc/quagga/samples \
--localstatedir=/var/run/quagga \
--libdir=/usr/$(get_libdir)/quagga \
${myconf} \
|| die "configure failed"
emake || die "make failed"
}
src_install() {
einstall \
localstatedir="${D}/var/run/quagga" \
sysconfdir="${D}/etc/quagga" \
exampledir="${D}/etc/quagga/samples" \
libdir="${D}/usr/$(get_libdir)/quagga" || die "make install failed"
dodir /var/run/quagga || die "failed to install /var/run/quagga"
local i MY_SERVICES_LIST="zebra ripd ospfd bgpd"
use ipv6 && MY_SERVICES_LIST="${MY_SERVICES_LIST} ripngd ospf6d"
for i in ${MY_SERVICES_LIST} ; do
newinitd "${FILESDIR}/${i}.init" ${i} || die "failed to install ${i} init.d script"
done
newconfd "${FILESDIR}/zebra.conf" zebra || die "failed to install zebra conf.d script"
if use pam; then
insinto /etc/pam.d
newins "${FILESDIR}/quagga.pam" quagga || die "failed to install pam.d file"
fi
newenvd "${FILESDIR}/quagga.env" 99quagga || die "failed to install env file"
}
pkg_preinst() {
enewgroup quagga
enewuser quagga -1 -1 /var/empty quagga
}
pkg_postinst() {
# empty dir for pid files for the new priv separation auth
#set proper owner/group/perms even if dir already existed
install -d -m0770 -o root -g quagga "${ROOT}/etc/quagga"
install -d -m0755 -o quagga -g quagga "${ROOT}/var/run/quagga"
einfo "Sample configuration files can be found in /etc/quagga/samples."
einfo "You have to create config files in /etc/quagga before"
einfo "starting one of the daemons."
if use tcpmd5; then
echo
if kernel_is lt 2 6 20; then
ewarn "TCP MD5 for BGP needs a patched kernel!"
ewarn "See http://hasso.linux.ee/doku.php/english:network:rfc2385 for more info."
else
CONFIG_CHECK="~TCP_MD5SIG"
local ERROR_TCP_MD5SIG="CONFIG_TCP_MD5SIG:\t missing TCP MD5 signature support (RFC2385)"
check_extra_config
fi
fi
}
|