[arch-commits] Commit in dhcp/repos (9 files)
Christian Hesse
eworm at archlinux.org
Fri Nov 24 15:16:23 UTC 2017
Date: Friday, November 24, 2017 @ 15:16:22
Author: eworm
Revision: 310813
archrelease: copy trunk to testing-x86_64
Added:
dhcp/repos/testing-x86_64/
dhcp/repos/testing-x86_64/0001-dhcp-honor-expired.patch
(from rev 310812, dhcp/trunk/0001-dhcp-honor-expired.patch)
dhcp/repos/testing-x86_64/0002-iproute2.patch
(from rev 310812, dhcp/trunk/0002-iproute2.patch)
dhcp/repos/testing-x86_64/PKGBUILD
(from rev 310812, dhcp/trunk/PKGBUILD)
dhcp/repos/testing-x86_64/dhclient at .service
(from rev 310812, dhcp/trunk/dhclient at .service)
dhcp/repos/testing-x86_64/dhcp-sysusers.conf
(from rev 310812, dhcp/trunk/dhcp-sysusers.conf)
dhcp/repos/testing-x86_64/dhcp.install
(from rev 310812, dhcp/trunk/dhcp.install)
dhcp/repos/testing-x86_64/dhcpd4.service
(from rev 310812, dhcp/trunk/dhcpd4.service)
dhcp/repos/testing-x86_64/dhcpd6.service
(from rev 310812, dhcp/trunk/dhcpd6.service)
-------------------------------+
0001-dhcp-honor-expired.patch | 49 ++++++++++++++++++
0002-iproute2.patch | 13 ++++
PKGBUILD | 106 ++++++++++++++++++++++++++++++++++++++++
dhclient at .service | 10 +++
dhcp-sysusers.conf | 1
dhcp.install | 14 +++++
dhcpd4.service | 22 ++++++++
dhcpd6.service | 22 ++++++++
8 files changed, 237 insertions(+)
Copied: dhcp/repos/testing-x86_64/0001-dhcp-honor-expired.patch (from rev 310812, dhcp/trunk/0001-dhcp-honor-expired.patch)
===================================================================
--- testing-x86_64/0001-dhcp-honor-expired.patch (rev 0)
+++ testing-x86_64/0001-dhcp-honor-expired.patch 2017-11-24 15:16:22 UTC (rev 310813)
@@ -0,0 +1,49 @@
+diff -up dhcp-4.3.0a1/client/dhc6.c.honor-expired dhcp-4.3.0a1/client/dhc6.c
+--- dhcp-4.3.0a1/client/dhc6.c.honor-expired 2013-12-19 16:00:28.062183037 +0100
++++ dhcp-4.3.0a1/client/dhc6.c 2013-12-19 16:00:28.076182842 +0100
+@@ -1351,6 +1351,32 @@ start_info_request6(struct client_state
+ go_daemon();
+ }
+
++/* Run through the addresses in lease and return true if there's any unexpired.
++ * Return false otherwise.
++ */
++isc_boolean_t
++unexpired_address_in_lease(struct dhc6_lease *lease)
++{
++ struct dhc6_ia *ia;
++ struct dhc6_addr *addr;
++
++ for (ia = lease->bindings ; ia != NULL ; ia = ia->next) {
++ for (addr = ia->addrs ; addr != NULL ; addr = addr->next) {
++ if (addr->flags & DHC6_ADDR_EXPIRED)
++ continue;
++
++ if (addr->starts + addr->max_life > cur_time) {
++ return ISC_TRUE;
++ }
++ }
++ }
++
++ log_info("PRC: Previous lease is devoid of active addresses."
++ " Re-initializing.");
++
++ return ISC_FALSE;
++}
++
+ /*
+ * start_confirm6() kicks off an "init-reboot" version of the process, at
+ * startup to find out if old bindings are 'fair' and at runtime whenever
+@@ -1363,8 +1389,10 @@ start_confirm6(struct client_state *clie
+
+ /* If there is no active lease, there is nothing to check. */
+ if ((client->active_lease == NULL) ||
+- !active_prefix(client) ||
+- client->active_lease->released) {
++ !active_prefix(client) ||
++ client->active_lease->released ||
++ !unexpired_address_in_lease(client->active_lease)) {
++ dhc6_lease_destroy(&client->active_lease, MDL);
+ start_init6(client);
+ return;
+ }
Copied: dhcp/repos/testing-x86_64/0002-iproute2.patch (from rev 310812, dhcp/trunk/0002-iproute2.patch)
===================================================================
--- testing-x86_64/0002-iproute2.patch (rev 0)
+++ testing-x86_64/0002-iproute2.patch 2017-11-24 15:16:22 UTC (rev 310813)
@@ -0,0 +1,13 @@
+diff --git a/client/scripts/linux b/client/scripts/linux
+index 5fb16121..c4cef632 100755
+--- a/client/scripts/linux
++++ b/client/scripts/linux
+@@ -362,7 +362,7 @@ case "$reason" in
+ interface_up_wait_time=5
+ for i in $(seq 0 ${interface_up_wait_time})
+ do
+- ifconfig ${interface} | grep RUNNING >/dev/null 2>&1
++ ${ip} link show dev ${interface} | grep -q LOWER_UP 2>&1
+ if [ $? -eq 0 ]; then
+ break;
+ fi
Copied: dhcp/repos/testing-x86_64/PKGBUILD (from rev 310812, dhcp/trunk/PKGBUILD)
===================================================================
--- testing-x86_64/PKGBUILD (rev 0)
+++ testing-x86_64/PKGBUILD 2017-11-24 15:16:22 UTC (rev 310813)
@@ -0,0 +1,106 @@
+# $Id$
+# Maintainer: Felix Yan <felixonmars at archlinux.org>
+# Contributor: Daniel Isenmann <daniel @archlinux.org>
+
+pkgbase=dhcp
+pkgname=('dhcp' 'dhclient')
+
+# separate patch levels with a period to maintain proper versioning.
+pkgver=4.3.6
+pkgrel=4
+arch=('x86_64')
+license=('custom:isc-dhcp')
+url="https://www.isc.org/software/dhcp"
+makedepends=('bash' 'iproute2')
+validpgpkeys=('BE0E9748B718253A28BB89FFF1B11BF05CF02E57') # Internet Systems Consortium, Inc. (Signing key, 2017-2018) <codesign at isc.org>
+source=(ftp://ftp.isc.org/isc/${pkgbase}/${pkgver}/${pkgbase}-${pkgver}.tar.gz{,.asc}
+ dhcp-sysusers.conf
+ dhcpd4.service
+ dhcpd6.service
+ dhclient at .service
+ 0001-dhcp-honor-expired.patch
+ 0002-iproute2.patch)
+sha256sums=('a41eaf6364f1377fe065d35671d9cf82bbbc8f21207819b2b9f33f652aec6f1b'
+ 'SKIP'
+ 'b16083e6bb572ffacaa7cd97e7fde5fcfa1b6dbeb166f162e2ec6e8ec4b928d6'
+ '537b52307e2196775d79b7e7087fa7499189e26bc9a1737c9b75acd45a720920'
+ '9a2a9bdf25871dfe875ed39d92a4d97852f9ad6c38fa74bd16cbc18e85986d3f'
+ '259d004987b4759e0c9e1a8807a5baa3df74f1e0c57b058a9e1bc92ea41fcb6a'
+ '97088096c5d880ecd889f4875ba89cf8eaf564bec772038e8976c22bd4896b18'
+ '837a64189b949afae951655546967cc8f17f2f2cf370faabff00575364f0fcf7')
+
+prepare() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+
+ # Sourced from Fedora - required for NM
+ # https://bugzilla.gnome.org/show_bug.cgi?id=748268
+ patch -Np1 -i ../0001-dhcp-honor-expired.patch
+
+ # no ifconfig, use ip from iproute2
+ patch -Np1 -i ../0002-iproute2.patch
+}
+
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ ./configure \
+ --prefix=/usr \
+ --sbindir=/usr/bin \
+ --sysconfdir=/etc \
+ --enable-paranoia \
+ --with-srv-lease-file=/var/lib/dhcp/dhcpd.leases \
+ --with-srv6-lease-file=/var/lib/dhcp/dhcpd6.leases \
+ --with-cli-lease-file=/var/lib/dhclient/dhclient.leases \
+ --with-cli6-lease-file=/var/lib/dhclient/dhclient6.leases \
+ --enable-binary-leases
+
+ make -j1
+}
+
+package_dhcp(){
+ pkgdesc="A DHCP server, client, and relay agent"
+ depends=('glibc')
+ backup=('etc/dhcpd.conf' 'etc/dhcpd6.conf')
+ install=dhcp.install
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ install -d "${pkgdir}/var/lib/dhcp"
+
+ install -D -m644 "${srcdir}/dhcp-sysusers.conf" "${pkgdir}/usr/lib/sysusers.d/dhcp.conf"
+ install -D -m644 "${srcdir}/dhcpd4.service" "${pkgdir}/usr/lib/systemd/system/dhcpd4.service"
+ install -D -m644 "${srcdir}/dhcpd6.service" "${pkgdir}/usr/lib/systemd/system/dhcpd6.service"
+
+ # move back to config. This file is in backup array, so pacman will not overwrite a changed config.
+ mv "${pkgdir}/etc/dhcpd.conf.example" "${pkgdir}/etc/dhcpd.conf"
+ cp "${pkgdir}/etc/dhcpd.conf" "${pkgdir}/etc/dhcpd6.conf"
+
+ # Remove dhclient
+ make -C client DESTDIR="${pkgdir}" uninstall
+
+ # install license
+ install -m644 -D LICENSE "${pkgdir}/usr/share/licenses/dhcp/LICENSE"
+}
+
+package_dhclient(){
+ pkgdesc="A standalone DHCP client from the dhcp package"
+ depends=('glibc' 'bash' 'iproute2')
+ provides=('dhcp-client')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make -C client DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/dhclient"
+ mv "${pkgdir}/etc/dhclient.conf.example" "${pkgdir}/usr/share/dhclient/"
+
+ install -d "${pkgdir}/var/lib/dhclient"
+
+ # install dhclient linux script
+ install -m755 client/scripts/linux "${pkgdir}/usr/bin/dhclient-script"
+
+ # install license
+ install -m644 -D LICENSE "${pkgdir}/usr/share/licenses/dhclient/LICENSE"
+
+ # install systemd service unit
+ install -m644 -D "$srcdir/dhclient at .service" "${pkgdir}/usr/lib/systemd/system/dhclient at .service"
+}
Copied: dhcp/repos/testing-x86_64/dhclient at .service (from rev 310812, dhcp/trunk/dhclient at .service)
===================================================================
--- testing-x86_64/dhclient at .service (rev 0)
+++ testing-x86_64/dhclient at .service 2017-11-24 15:16:22 UTC (rev 310813)
@@ -0,0 +1,10 @@
+[Unit]
+Description=dhclient on %I
+Wants=network.target
+Before=network.target
+
+[Service]
+ExecStart=/usr/bin/dhclient -d %I
+
+[Install]
+WantedBy=multi-user.target
Copied: dhcp/repos/testing-x86_64/dhcp-sysusers.conf (from rev 310812, dhcp/trunk/dhcp-sysusers.conf)
===================================================================
--- testing-x86_64/dhcp-sysusers.conf (rev 0)
+++ testing-x86_64/dhcp-sysusers.conf 2017-11-24 15:16:22 UTC (rev 310813)
@@ -0,0 +1 @@
+u dhcp - "DHCP daemon" /
Copied: dhcp/repos/testing-x86_64/dhcp.install (from rev 310812, dhcp/trunk/dhcp.install)
===================================================================
--- testing-x86_64/dhcp.install (rev 0)
+++ testing-x86_64/dhcp.install 2017-11-24 15:16:22 UTC (rev 310813)
@@ -0,0 +1,14 @@
+post_install() {
+ [[ -f var/lib/dhcp/dhcpd.leases ]] || : >var/lib/dhcp/dhcpd.leases
+ [[ -f var/lib/dhcp/dhcpd6.leases ]] || : >var/lib/dhcp/dhcpd6.leases
+}
+
+post_upgrade() {
+ if (( $(vercmp $2 4.2.4.2) < 0 )); then
+ echo ">>> Lease directory moved from /var/state/dhcp"
+ echo " to /var/lib/dhcp. Move your old lease files"
+ echo " if you want to keep using them."
+ fi
+
+ post_install
+}
Copied: dhcp/repos/testing-x86_64/dhcpd4.service (from rev 310812, dhcp/trunk/dhcpd4.service)
===================================================================
--- testing-x86_64/dhcpd4.service (rev 0)
+++ testing-x86_64/dhcpd4.service 2017-11-24 15:16:22 UTC (rev 310813)
@@ -0,0 +1,22 @@
+[Unit]
+Description=IPv4 DHCP server
+After=network.target network-online.target
+Wants=network-online.target
+
+[Service]
+Type=forking
+PIDFile=/run/dhcpd4.pid
+ExecStart=/usr/bin/dhcpd -4 -q -user dhcp -cf /etc/dhcpd.conf -pf /run/dhcpd4.pid
+ProtectSystem=full
+ProtectHome=on
+KillSignal=SIGINT
+# We pull in network-online.target for a configured network connection.
+# However this is not guaranteed to be the network connection our
+# networks are configured for. So try to restart on failure with a delay
+# of two seconds. Rate limiting kicks in after 12 seconds.
+RestartSec=2s
+Restart=on-failure
+StartLimitInterval=12s
+
+[Install]
+WantedBy=multi-user.target
Copied: dhcp/repos/testing-x86_64/dhcpd6.service (from rev 310812, dhcp/trunk/dhcpd6.service)
===================================================================
--- testing-x86_64/dhcpd6.service (rev 0)
+++ testing-x86_64/dhcpd6.service 2017-11-24 15:16:22 UTC (rev 310813)
@@ -0,0 +1,22 @@
+[Unit]
+Description=IPv6 DHCP server
+After=network.target network-online.target
+Wants=network-online.target
+
+[Service]
+Type=forking
+PIDFile=/run/dhcpd6.pid
+ExecStart=/usr/bin/dhcpd -6 -q -user dhcp -cf /etc/dhcpd6.conf -pf /run/dhcpd6.pid
+ProtectSystem=full
+ProtectHome=on
+KillSignal=SIGINT
+# We pull in network-online.target for a configured network connection.
+# However this is not guaranteed to be the network connection our
+# networks are configured for. So try to restart on failure with a delay
+# of two seconds. Rate limiting kicks in after 12 seconds.
+RestartSec=2s
+Restart=on-failure
+StartLimitInterval=12s
+
+[Install]
+WantedBy=multi-user.target
More information about the arch-commits
mailing list