From fca6d1e606ca2f708d6de78a48c6a76eea591f0c Mon Sep 17 00:00:00 2001 From: sarthurdev <965089+sarthurdev@users.noreply.github.com> Date: Wed, 11 Mar 2026 12:23:05 +0100 Subject: kea: T7853: Offer subnet for any interface address Move repo prep to pre-build hook so patches can be applied and build using build.py --- scripts/package-build/isc-kea/.gitignore | 4 +- scripts/package-build/isc-kea/build.sh | 30 ----------- scripts/package-build/isc-kea/package.toml | 2 +- ...all-interface-addresses-for-matching-subn.patch | 59 ++++++++++++++++++++++ scripts/package-build/isc-kea/prebuild.sh | 27 ++++++++++ 5 files changed, 89 insertions(+), 33 deletions(-) delete mode 100755 scripts/package-build/isc-kea/build.sh create mode 100644 scripts/package-build/isc-kea/patches/isc-kea/0001-3162-Check-all-interface-addresses-for-matching-subn.patch create mode 100755 scripts/package-build/isc-kea/prebuild.sh (limited to 'scripts') diff --git a/scripts/package-build/isc-kea/.gitignore b/scripts/package-build/isc-kea/.gitignore index 14a6344c..39caf968 100644 --- a/scripts/package-build/isc-kea/.gitignore +++ b/scripts/package-build/isc-kea/.gitignore @@ -1,2 +1,2 @@ -isc-kea/ -kea-packaging/ +/isc-kea/ +/kea-packaging/ diff --git a/scripts/package-build/isc-kea/build.sh b/scripts/package-build/isc-kea/build.sh deleted file mode 100755 index b30804f5..00000000 --- a/scripts/package-build/isc-kea/build.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/sh - -SRC="isc-kea" - -# Fetch debian packaging repo -git clone https://gitlab.isc.org/isc-projects/kea-packaging.git -rm -rf isc-kea/debian -cp -r kea-packaging/debian isc-kea/ -rm -rf kea-packaging - -cd $SRC - -# Determine version from git tag -TAG=$(git describe --tags --exact-match) -VERSION="${TAG#Kea-}" - -# Modify debian files, add version, remove docs/manpages and unnecessary packages -sed -i "s/{VERSION}/$VERSION/g" debian/changelog -sed -i 's/{ISC_VERSION}/vyos/g' debian/changelog -sed -i 's/{ISC_VERSION}/vyos/g' debian/rules -sed -i '/meson compile -C build doc/d' debian/rules -sed -Ei '/^Package: isc-kea-(premium|subscriber)/,/^$/d' debian/control -sed -i '/usr\/share\/man/d' debian/*.install -sed -i '/usr\/share\/doc\/kea/d' debian/*.install -echo "usr/share/doc/kea/*" >> debian/not-installed -echo "usr/share/kea/meson-info/*" >> debian/not-installed -rm -rf debian/isc-kea-doc.install debian/isc-kea-subscriber* debian/isc-kea-premium* - -sudo mk-build-deps --install --tool 'apt-get --yes --no-install-recommends' -dpkg-buildpackage -uc -us -tc -b diff --git a/scripts/package-build/isc-kea/package.toml b/scripts/package-build/isc-kea/package.toml index 19924493..57bf393a 100644 --- a/scripts/package-build/isc-kea/package.toml +++ b/scripts/package-build/isc-kea/package.toml @@ -2,4 +2,4 @@ name = "isc-kea" commit_id = "Kea-3.0.2" scm_url = "https://gitlab.isc.org/isc-projects/kea.git" -build_cmd = "cd ..; ./build.sh" +pre_build_hook = "cd ..; ./prebuild.sh" diff --git a/scripts/package-build/isc-kea/patches/isc-kea/0001-3162-Check-all-interface-addresses-for-matching-subn.patch b/scripts/package-build/isc-kea/patches/isc-kea/0001-3162-Check-all-interface-addresses-for-matching-subn.patch new file mode 100644 index 00000000..57d700c3 --- /dev/null +++ b/scripts/package-build/isc-kea/patches/isc-kea/0001-3162-Check-all-interface-addresses-for-matching-subn.patch @@ -0,0 +1,59 @@ +From 7d4662a0e26fae27583883a8c8138b62792fc3cf Mon Sep 17 00:00:00 2001 +From: sarthurdev <965089+sarthurdev@users.noreply.github.com> +Date: Sat, 20 Sep 2025 23:00:20 +0200 +Subject: [PATCH] [#3162] Check all interface addresses for matching subnet + +--- + src/lib/dhcpsrv/cfg_subnets4.cc | 31 +++++++++++++++++++------------ + 1 file changed, 19 insertions(+), 12 deletions(-) + +diff --git a/src/lib/dhcpsrv/cfg_subnets4.cc b/src/lib/dhcpsrv/cfg_subnets4.cc +index 13286bb6d4..f25349f63a 100644 +--- a/src/lib/dhcpsrv/cfg_subnets4.cc ++++ b/src/lib/dhcpsrv/cfg_subnets4.cc +@@ -393,23 +393,30 @@ CfgSubnets4::selectSubnet(const SubnetSelector& selector) const { + if (subnet) { + return (subnet); + } else { +- // Let's try to get an address from the local interface and +- // try to match it to defined subnet. +- iface->getAddress4(address); ++ // Let's try to get addresses from the local interface and ++ // try to match one to a defined subnet. ++ for (auto const& addr : iface->getAddresses()) { ++ ++ // We only care about IPv4 here ++ if (!addr.get().isV4()) { ++ continue; ++ } ++ ++ address = addr.get(); ++ subnet = selectSubnet(address, selector.client_classes_); ++ ++ if (subnet) { ++ return (subnet); ++ } ++ } + } + } + + // Unable to find a suitable address to use for subnet selection. +- if (address.isV4Zero()) { +- LOG_DEBUG(dhcpsrv_logger, DHCPSRV_DBG_TRACE, +- DHCPSRV_SUBNET4_SELECT_NO_USABLE_ADDRESS); +- +- return (ConstSubnet4Ptr()); +- } ++ LOG_DEBUG(dhcpsrv_logger, DHCPSRV_DBG_TRACE, ++ DHCPSRV_SUBNET4_SELECT_NO_USABLE_ADDRESS); + +- // We have identified an address in the client's packet that can be +- // used for subnet selection. Match this packet with the subnets. +- return (selectSubnet(address, selector.client_classes_)); ++ return (ConstSubnet4Ptr()); + } + + ConstSubnet4Ptr +-- +2.50.1 (Apple Git-155) + diff --git a/scripts/package-build/isc-kea/prebuild.sh b/scripts/package-build/isc-kea/prebuild.sh new file mode 100755 index 00000000..7bd6d5b6 --- /dev/null +++ b/scripts/package-build/isc-kea/prebuild.sh @@ -0,0 +1,27 @@ +#!/bin/sh + +SRC="isc-kea" + +# Fetch debian packaging repo +git clone https://gitlab.isc.org/isc-projects/kea-packaging.git +rm -rf isc-kea/debian +cp -r kea-packaging/debian isc-kea/ +rm -rf kea-packaging + +cd $SRC + +# Determine version from git tag +TAG=$(git describe --tags --exact-match) +VERSION="${TAG#Kea-}" + +# Modify debian files, add version, remove docs/manpages and unnecessary packages +sed -i "s/{VERSION}/$VERSION/g" debian/changelog +sed -i 's/{ISC_VERSION}/vyos/g' debian/changelog +sed -i 's/{ISC_VERSION}/vyos/g' debian/rules +sed -i '/meson compile -C build doc/d' debian/rules +sed -Ei '/^Package: isc-kea-(premium|subscriber)/,/^$/d' debian/control +sed -i '/usr\/share\/man/d' debian/*.install +sed -i '/usr\/share\/doc\/kea/d' debian/*.install +echo "usr/share/doc/kea/*" >> debian/not-installed +echo "usr/share/kea/meson-info/*" >> debian/not-installed +rm -rf debian/isc-kea-doc.install debian/isc-kea-subscriber* debian/isc-kea-premium* -- cgit v1.2.3