From 80fff9242afa4b4e146ccdfce570fda291f41fa8 Mon Sep 17 00:00:00 2001 From: bademux Date: Tue, 24 Jan 2023 18:46:58 +0100 Subject: [PATCH] main/postmarketos-initramfs: support custom IP addresses for USB net (MR 3349) [ci:skip-build] already built successfully in CI --- main/postmarketos-base-ui/APKBUILD | 6 +++--- ...-lib-NetworkManager-dispatcher.d-50-tethering.sh | 7 +++++-- main/postmarketos-initramfs/00-initramfs-base.files | 1 + main/postmarketos-initramfs/APKBUILD | 13 +++++++++---- main/postmarketos-initramfs/init.sh | 1 + main/postmarketos-initramfs/init_functions.sh | 13 +++++++------ main/postmarketos-initramfs/unudhcpd.conf | 6 ++++++ 7 files changed, 32 insertions(+), 15 deletions(-) create mode 100644 main/postmarketos-initramfs/unudhcpd.conf diff --git a/main/postmarketos-base-ui/APKBUILD b/main/postmarketos-base-ui/APKBUILD index 81234da82..6b4799b96 100644 --- a/main/postmarketos-base-ui/APKBUILD +++ b/main/postmarketos-base-ui/APKBUILD @@ -1,7 +1,7 @@ # Maintainer: Clayton Craft pkgname=postmarketos-base-ui -pkgver=12 -pkgrel=1 +pkgver=13 +pkgrel=0 pkgdesc="Meta package for minimal postmarketOS UI base" url="https://postmarketos.org" arch="noarch" @@ -205,7 +205,7 @@ d4b4c4fed2dee7266f6a87ae266691377593014943e2953e4cd87a59f3110f25bfb5f3f866cc8435 d1ddd43489e6016e3ffd716027ed2bae4a2ab5f213118bdbcb96750e267ab7c0367cd0e0e386300aa5550352653144f5caeddd790621fe0879f83ca1995bb65c rootfs-etc-tinydm.d-env-wayland.d-50-firefox-wayland.sh ecaa57d033a119a53a6574c27636b7c89d659d75ea48a973a6a4ff6f90e5d07202529fd489bfc9dfc7430f5b60f40612f6d5c06f7fab47e681b0a3112a874058 rootfs-etc-tinydm.d-env-wayland.d-50-sdl-wayland.sh 52d58729cbf3cd0318de633e8a8da74c7af246025a8c5746d5e7c854bdabbf27fa07d8558ffec92a30491cdb687fe4414de5adcddd7da5be3510f918fba463a2 rootfs-usr-lib-NetworkManager-dispatcher.d-50-dns-filter.sh -b344a64619aac5295342c597087ecf0614d4dfa0f7afd51f71dd2e9abc473ab9d08b22b3c075729e2f5e69f4e0e601ed3a9b76886c805650e02d6cc4643a7280 rootfs-usr-lib-NetworkManager-dispatcher.d-50-tethering.sh +515ede48ce1245e72b501e17e59986d04a26aab9a42881b44974253c7dec1db08658625157d23adb6f8f62fd78c3f93b71fee1894ad0c80d61be3f5f32d5b990 rootfs-usr-lib-NetworkManager-dispatcher.d-50-tethering.sh bf8db527c49fa724e640a90269ba2648a2555f5867b2adbfbd88d1f685261f757339757c09ee08f590c76de4bd3d0c73a47dea9bd340644dd4707e76152cefd1 rootfs-etc-profile.d-qt-mobile-controls.sh 6e193eca3961a78d47b4656892eae34d019d9317a255a201f5ea61e3300caff04c526a27cd98d0edc072b36e3eaf3a1768f4cd27c5e2be8b19c167d535c820a6 rootfs-etc-profile.d-qt-wayland.sh " diff --git a/main/postmarketos-base-ui/rootfs-usr-lib-NetworkManager-dispatcher.d-50-tethering.sh b/main/postmarketos-base-ui/rootfs-usr-lib-NetworkManager-dispatcher.d-50-tethering.sh index 6037419be..8dd742e32 100644 --- a/main/postmarketos-base-ui/rootfs-usr-lib-NetworkManager-dispatcher.d-50-tethering.sh +++ b/main/postmarketos-base-ui/rootfs-usr-lib-NetworkManager-dispatcher.d-50-tethering.sh @@ -1,4 +1,5 @@ #!/bin/sh -e +# shellcheck disable=SC1091 # Handle USB tethering with unudhcpd and NetworkManager while also # keeping SSH login over USB working when tethering is disabled. # @@ -9,8 +10,10 @@ # using UUID allows the user to change the connection name if they want to. con_uuid="83bd1823-feca-4c2b-9205-4b83dc792e1f" interface="usb0" -host_ip="172.16.42.1" -client_ip="172.16.42.2" + +[ -e /etc/unudhcpd.conf ] && . /etc/unudhcpd.conf +host_ip="${unudhcpd_host_ip:-172.16.42.1}" +client_ip="${unudhcpd_client_ip:-172.16.42.2}" # Skip if iface does not match if [ "$DEVICE_IFACE" != "$interface" ]; then diff --git a/main/postmarketos-initramfs/00-initramfs-base.files b/main/postmarketos-initramfs/00-initramfs-base.files index 64a63b6f1..78571d35a 100644 --- a/main/postmarketos-initramfs/00-initramfs-base.files +++ b/main/postmarketos-initramfs/00-initramfs-base.files @@ -2,6 +2,7 @@ /bin/busybox-extras /bin/sh /etc/deviceinfo +/etc/unudhcpd.conf /usr/share/misc/source_deviceinfo /usr/bin/unudhcpd /usr/sbin/kpartx diff --git a/main/postmarketos-initramfs/APKBUILD b/main/postmarketos-initramfs/APKBUILD index 555f63b31..9b2546784 100644 --- a/main/postmarketos-initramfs/APKBUILD +++ b/main/postmarketos-initramfs/APKBUILD @@ -1,7 +1,7 @@ # Maintainer: Oliver Smith # Co-Maintainer: Clayton Craft pkgname=postmarketos-initramfs -pkgver=1.3.1 +pkgver=1.4.0 pkgrel=0 pkgdesc="Base files for the postmarketOS initramfs / initramfs-extra" url="https://postmarketos.org" @@ -30,11 +30,15 @@ source=" 00-initramfs-extra-base.files init.sh init_functions.sh + unudhcpd.conf " arch="noarch" license="GPL-2.0-or-later" package() { + install -Dm644 "$srcdir/unudhcpd.conf" \ + "$pkgdir/etc/unudhcpd.conf" + install -Dm644 "$srcdir/init_functions.sh" \ "$pkgdir/usr/share/mkinitfs/init_functions.sh" @@ -66,8 +70,9 @@ package() { sha512sums=" bed319179bcd0b894d6267c7e73f2890db07bc07df71542936947dfb3bdb17fade8a7b4e7b577f278af4472464427bba07f75aff0a1e454a4167052c088f3b6a 00-default.modules 399da6e61993f48c8a62c956bb15d294cac10bf003d84257efdf4a213ebc87bb51cdcd75c4675f51c3be832146b8f21a7c769bf3e94f574a5067f001662632a1 00-initramfs-base.dirs -3bc73f3a0d1de210444d9c45fab51fd4520e38b43ffbb76368f8ff854b990aa2f21c6356840c5a48eb9808e834eb885a6d581639a60707c26abf66fc20b70db9 00-initramfs-base.files +db8ba79257ed2666628825f9f28ab27c8d8b55f631b27f28d59fa322aaea6488355ad169c4ec3ad7d080c42af2b3ad00cf35cc6186791d15c301c74350f2bf21 00-initramfs-base.files e984cd3033ce8752ebc71127828b964b46259a5263c2ebfab32c1394b674bcff464862ff00b8e920d3d31386c54ca0b94f84bc77580d275ecfeea33e76c07ef4 00-initramfs-extra-base.files -4e6f5b79b0bd6188bab9a96526f727780dda6be1c1e5fe04c3ce5a892bf0f92b7c7d0fc5809ac3eacc8121096a4815c6177a573f1b968752972f20460cc04ac6 init.sh -38416294fe58af8f687a85a3b20b285075cdb34da8aab6c96a778994ee3dd121d1bb29da71b8147b2a53f19b58eb3203f583ce261cbb05b4bd1987bc7c82b1d9 init_functions.sh +6605a4d92d36ce1fcb4d86536279d19eaa5308ed58067bf03427f2d82f772ca0c3df3bfbda9f4fff9cd91c1535f5802878a65eef3b9db16a43864e9ee4417675 init.sh +d77d880ff3558606131e99ee0dfc6a484853e13f0f355f2d38d9488fc6ed6e8bf7db1c177e23ac12d3b9fb4ed2de769da047f166f78d841d24b1119ac695342d init_functions.sh +ba3275a9af788c7c782322a22a0f144d5e50e3498ea6886486a29331f23ae89cd32d500a3635cfa7cab369afba92edc18aeca64ccbf0cd589061cce23d15b46c unudhcpd.conf " diff --git a/main/postmarketos-initramfs/init.sh b/main/postmarketos-initramfs/init.sh index 518d36e4b..c3d0b28c8 100644 --- a/main/postmarketos-initramfs/init.sh +++ b/main/postmarketos-initramfs/init.sh @@ -3,6 +3,7 @@ [ -e /hooks/10-verbose-initfs.sh ] && set -x +[ -e /etc/unudhcpd.conf ] && . /etc/unudhcpd.conf . ./init_functions.sh . /usr/share/misc/source_deviceinfo diff --git a/main/postmarketos-initramfs/init_functions.sh b/main/postmarketos-initramfs/init_functions.sh index 24bd46971..a8061a57f 100644 --- a/main/postmarketos-initramfs/init_functions.sh +++ b/main/postmarketos-initramfs/init_functions.sh @@ -1,6 +1,5 @@ #!/bin/sh # This file will be in /init_functions.sh inside the initramfs. -IP=172.16.42.1 ROOT_PARTITION_UNLOCKED=0 ROOT_PARTITION_RESIZED=0 @@ -586,15 +585,17 @@ start_unudhcpd() { return fi - echo "Starting unudhcpd" + local host_ip="${unudhcpd_host_ip:-172.16.42.1}" + local client_ip="${unudhcpd_client_ip:-172.16.42.2}" + echo "Starting unudhcpd with server ip $host_ip, client ip: $client_ip" # Get usb interface INTERFACE="" - ifconfig rndis0 "$IP" 2>/dev/null && INTERFACE=rndis0 + ifconfig rndis0 "$host_ip" 2>/dev/null && INTERFACE=rndis0 if [ -z $INTERFACE ]; then - ifconfig usb0 "$IP" 2>/dev/null && INTERFACE=usb0 + ifconfig usb0 "$host_ip" 2>/dev/null && INTERFACE=usb0 fi if [ -z $INTERFACE ]; then - ifconfig eth0 "$IP" 2>/dev/null && INTERFACE=eth0 + ifconfig eth0 "$host_ip" 2>/dev/null && INTERFACE=eth0 fi if [ -z $INTERFACE ]; then @@ -607,7 +608,7 @@ start_unudhcpd() { echo " Using interface $INTERFACE" echo " Starting the DHCP daemon" ( - unudhcpd -i "$INTERFACE" -s 172.16.42.1 -c 172.16.42.2 + unudhcpd -i "$INTERFACE" -s "$host_ip" -c "$client_ip" ) & } diff --git a/main/postmarketos-initramfs/unudhcpd.conf b/main/postmarketos-initramfs/unudhcpd.conf new file mode 100644 index 000000000..9fab1a84a --- /dev/null +++ b/main/postmarketos-initramfs/unudhcpd.conf @@ -0,0 +1,6 @@ +# This configuration file is used by the initramfs to run unudhcpd. +# It is *not* used directly by unudhcpd! +# Note: The initramfs must be recreated by running the 'mkinitfs' command +# for changes here to be applied/used during boot. +unudhcpd_host_ip=172.16.42.1 +unudhcpd_client_ip=172.16.42.2