diff options
Diffstat (limited to 'meta-networking/recipes-connectivity/dhcp')
7 files changed, 229 insertions, 0 deletions
diff --git a/meta-networking/recipes-connectivity/dhcp/dhcp-relay_4.4.3p1.bb b/meta-networking/recipes-connectivity/dhcp/dhcp-relay_4.4.3p1.bb new file mode 100644 index 0000000000..e5f7e0334f --- /dev/null +++ b/meta-networking/recipes-connectivity/dhcp/dhcp-relay_4.4.3p1.bb @@ -0,0 +1,72 @@ +SECTION = "console/network" +SUMMARY = "Internet Software Consortium DHCP Relay Agent" +DESCRIPTION = "A DHCP relay agent passes DHCP requests from one \ +LAN to another, so that a DHCP server is not needed on every LAN." + +HOMEPAGE = "http://www.isc.org/" + +LICENSE = "MPL-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=c463f4afde26d9eb60f14f50aeb85f8f" + +DEPENDS = "openssl libcap zlib" + +SRC_URI = "https://downloads.isc.org/isc/dhcp/4.4.3-P1/dhcp-4.4.3-P1.tar.gz \ + file://default-relay \ + file://init-relay \ + file://dhcrelay.service \ + file://0001-Makefile.am-only-build-dhcrelay.patch \ + file://0002-bind-Makefile.in-disable-backtrace.patch \ + file://0003-bind-Makefile.in-regenerate-configure.patch \ + " + +SRC_URI[sha256sum] = "0ac416bb55997ca8632174fd10737fd61cdb8dba2752160a335775bc21dc73c7" + +UPSTREAM_CHECK_URI = "http://ftp.isc.org/isc/dhcp/" +UPSTREAM_CHECK_REGEX = "(?P<pver>\d+\.\d+\.(\d+?))/" + +S = "${WORKDIR}/dhcp-4.4.3-P1" + +inherit autotools-brokensep systemd pkgconfig + +SYSTEMD_SERVICE:${PN} = "dhcrelay.service" +SYSTEMD_AUTO_ENABLE:${PN} = "disable" + +CFLAGS += "-D_GNU_SOURCE -fcommon" +LDFLAGS:append = " -pthread" + +BIND_EXTRA_CONFIG = "\ + --build=${BUILD_SYS} \ + --host=${HOST_SYS} \ + --target=${TARGET_SYS} \ +" + +EXTRA_OECONF = "--with-bind-extra-config="${BIND_EXTRA_CONFIG}" \ + --enable-paranoia \ + --disable-static \ + --enable-libtool \ + --with-randomdev=/dev/random \ + " + +# Enable shared libs per dhcp README +do_configure:prepend () { + cp configure.ac+lt configure.ac +} + +do_install:append () { + install -Dm 0644 ${WORKDIR}/default-relay ${D}${sysconfdir}/default/dhcp-relay + + if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then + install -d ${D}${systemd_unitdir}/system + install -m 0644 ${WORKDIR}/dhcrelay.service ${D}${systemd_unitdir}/system + sed -i -e 's,@SBINDIR@,${sbindir},g' ${D}${systemd_unitdir}/system/dhcrelay.service + sed -i -e 's,@SYSCONFDIR@,${sysconfdir},g' ${D}${systemd_unitdir}/system/dhcrelay.service + else + install -d ${D}${sysconfdir}/init.d + install -m 0755 ${WORKDIR}/init-relay ${D}${sysconfdir}/init.d/dhcp-relay + fi +} + +PARALLEL_MAKE = "" + +# dhcp-relay contains a bundled "bind", thus their dev packages conflict each other +RCONFLICTS:${PN}-dev = "bind-dev" diff --git a/meta-networking/recipes-connectivity/dhcp/files/0001-Makefile.am-only-build-dhcrelay.patch b/meta-networking/recipes-connectivity/dhcp/files/0001-Makefile.am-only-build-dhcrelay.patch new file mode 100644 index 0000000000..5320d7c9e9 --- /dev/null +++ b/meta-networking/recipes-connectivity/dhcp/files/0001-Makefile.am-only-build-dhcrelay.patch @@ -0,0 +1,30 @@ +From 4fd67b6adb7c1d8524ba17d1a0b3894f901555a9 Mon Sep 17 00:00:00 2001 +From: Yi Zhao <yi.zhao@windriver.com> +Date: Thu, 13 May 2021 15:23:16 +0800 +Subject: [PATCH] Makefile.am: only build dhcrelay + +Drop client and server build as we don't need them. + +Upstream-Status: Inappropriate [embedded specific] + +Signed-off-by: Yi Zhao <yi.zhao@windriver.com> +--- + Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index ed692a5..34f9772 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -38,7 +38,7 @@ endif + + # Use an autoconf substitution vs an automake conditional here + # to fool automake when the bind directory does not exist. +-SUBDIRS = @BINDSUBDIR@ includes tests common omapip client dhcpctl relay server ++SUBDIRS = @BINDSUBDIR@ includes common omapip relay + + DIST_SUBDIRS = $(SUBDIRS) keama + +-- +2.25.1 + diff --git a/meta-networking/recipes-connectivity/dhcp/files/0002-bind-Makefile.in-disable-backtrace.patch b/meta-networking/recipes-connectivity/dhcp/files/0002-bind-Makefile.in-disable-backtrace.patch new file mode 100644 index 0000000000..631a640ecc --- /dev/null +++ b/meta-networking/recipes-connectivity/dhcp/files/0002-bind-Makefile.in-disable-backtrace.patch @@ -0,0 +1,31 @@ +From 6c6bbfe6b33e5c7e46a4260d656593dbe610fd8a Mon Sep 17 00:00:00 2001 +From: Yi Zhao <yi.zhao@windriver.com> +Date: Tue, 8 Jun 2021 10:13:57 +0800 +Subject: [PATCH] bind/Makefile.in: disable backtrace + +Fixes build error for qemuarm on musl: +libisc.so: undefined reference to `_Unwind_GetIP' + +Upstream-Status: Inappropriate [embedded specific] + +Signed-off-by: Yi Zhao <yi.zhao@windriver.com> +--- + bind/Makefile.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/bind/Makefile.in b/bind/Makefile.in +index 2e60091..533d55c 100644 +--- a/bind/Makefile.in ++++ b/bind/Makefile.in +@@ -22,7 +22,7 @@ prefix = @prefix@ + exec_prefix = @exec_prefix@ + + bindconfig = --without-openssl --without-libxml2 --without-libjson \ +- --without-gssapi --disable-threads --without-lmdb \ ++ --without-gssapi --disable-threads --without-lmdb --disable-backtrace \ + --includedir=@includedir@ --libdir=@libdir@ --without-python\ + @BINDLT@ @BINDIOMUX@ @BINDCONFIG@ --enable-full-report + +-- +2.25.1 + diff --git a/meta-networking/recipes-connectivity/dhcp/files/0003-bind-Makefile.in-regenerate-configure.patch b/meta-networking/recipes-connectivity/dhcp/files/0003-bind-Makefile.in-regenerate-configure.patch new file mode 100644 index 0000000000..71be0276a3 --- /dev/null +++ b/meta-networking/recipes-connectivity/dhcp/files/0003-bind-Makefile.in-regenerate-configure.patch @@ -0,0 +1,30 @@ +From 6ca1b224032355521b35471d222d0b09c08369a0 Mon Sep 17 00:00:00 2001 +From: Yi Zhao <yi.zhao@windriver.com> +Date: Thu, 27 May 2021 11:38:36 +0800 +Subject: [PATCH] bind/Makefile.in: regenerate configure + +Run autogen.sh to regenerate configure. + +Upstream-Status: Inappropriate [embedded specific] + +Signed-off-by: Yi Zhao <yi.zhao@windriver.com> +--- + bind/Makefile.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/bind/Makefile.in b/bind/Makefile.in +index 533d55c..fdffe15 100644 +--- a/bind/Makefile.in ++++ b/bind/Makefile.in +@@ -55,7 +55,7 @@ bind1: + else \ + echo Configuring BIND libraries for DHCP. ; \ + rm -rf ${cleandirs} ${cleanfiles} ; \ +- (cd ${bindsrcdir} && \ ++ (cd ${bindsrcdir} && ./autogen.sh && \ + ./configure ${bindconfig} > ${binddir}/configure.log); \ + fi + +-- +2.25.1 + diff --git a/meta-networking/recipes-connectivity/dhcp/files/default-relay b/meta-networking/recipes-connectivity/dhcp/files/default-relay new file mode 100644 index 0000000000..7961f014be --- /dev/null +++ b/meta-networking/recipes-connectivity/dhcp/files/default-relay @@ -0,0 +1,12 @@ +# Defaults for dhcp-relay initscript +# sourced by /etc/init.d/dhcp-relay + +# What servers should the DHCP relay forward requests to? +# e.g: SERVERS="192.168.0.1" +SERVERS="" + +# On what interfaces should the DHCP relay (dhrelay) serve DHCP requests? +INTERFACES="" + +# Additional options that are passed to the DHCP relay daemon? +OPTIONS="" diff --git a/meta-networking/recipes-connectivity/dhcp/files/dhcrelay.service b/meta-networking/recipes-connectivity/dhcp/files/dhcrelay.service new file mode 100644 index 0000000000..15ff927d34 --- /dev/null +++ b/meta-networking/recipes-connectivity/dhcp/files/dhcrelay.service @@ -0,0 +1,10 @@ +[Unit] +Description=DHCP Relay Agent Daemon +After=network.target + +[Service] +EnvironmentFile=@SYSCONFDIR@/default/dhcp-relay +ExecStart=@SBINDIR@/dhcrelay -d --no-pid -q $SERVERS + +[Install] +WantedBy=multi-user.target diff --git a/meta-networking/recipes-connectivity/dhcp/files/init-relay b/meta-networking/recipes-connectivity/dhcp/files/init-relay new file mode 100644 index 0000000000..019a7e84cf --- /dev/null +++ b/meta-networking/recipes-connectivity/dhcp/files/init-relay @@ -0,0 +1,44 @@ +#!/bin/sh +# +# $Id: dhcp3-relay,v 1.1 2004/04/16 15:41:08 ml Exp $ +# + +# It is not safe to start if we don't have a default configuration... +if [ ! -f /etc/default/dhcp-relay ]; then + echo "/etc/default/dhcp-relay does not exist! - Aborting..." + echo "create this file to fix the problem." + exit 1 +fi + +# Read init script configuration (interfaces the daemon should listen on +# and the DHCP server we should forward requests to.) +. /etc/default/dhcp-relay + +# Build command line for interfaces (will be passed to dhrelay below.) +IFCMD="" +if test "$INTERFACES" != ""; then + for I in $INTERFACES; do + IFCMD=${IFCMD}"-i "${I}" " + done +fi + +DHCRELAYPID=/var/run/dhcrelay.pid + +case "$1" in + start) + start-stop-daemon -S -x /usr/sbin/dhcrelay -- -q $OPTIONS $IFCMD $SERVERS + ;; + stop) + start-stop-daemon -K -x /usr/sbin/dhcrelay + ;; + restart | force-reload) + $0 stop + sleep 2 + $0 start + ;; + *) + echo "Usage: /etc/init.d/dhcp-relay {start|stop|restart|force-reload}" + exit 1 +esac + +exit 0 |