aboutsummaryrefslogtreecommitdiffstats
path: root/main/busybox
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2019-12-16 15:13:24 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2019-12-16 15:16:46 +0000
commitd8d56f3702cefbfb5433283d1a5ac53e0884198c (patch)
treecea4aa010c11daead199eba37b201d7311d4106e /main/busybox
parentbc557fb7c8ba59c3ddd5f8c246290a5b91c0102f (diff)
downloadaports-d8d56f3702cefbfb5433283d1a5ac53e0884198c.tar.bz2
aports-d8d56f3702cefbfb5433283d1a5ac53e0884198c.tar.xz
main/busybox-initscripts: move default.script to main/busybox
fixes #10586
Diffstat (limited to 'main/busybox')
-rw-r--r--main/busybox/APKBUILD11
-rw-r--r--main/busybox/default.script157
2 files changed, 166 insertions, 2 deletions
diff --git a/main/busybox/APKBUILD b/main/busybox/APKBUILD
index a94231c181..af91880261 100644
--- a/main/busybox/APKBUILD
+++ b/main/busybox/APKBUILD
@@ -3,7 +3,7 @@
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=busybox
pkgver=1.31.1
-pkgrel=4
+pkgrel=5
pkgdesc="Size optimized toolbox of many common UNIX utilities"
url="https://busybox.net/"
arch="all"
@@ -41,6 +41,7 @@ source="https://busybox.net/downloads/busybox-$pkgver.tar.bz2
bbsuid.c
dad.if-up
ssl_client.c
+ default.script
"
# secfixes:
@@ -163,6 +164,11 @@ tty9
tty10
tty11
EOF
+
+ # script for udhcpc
+ install -Dm755 "$srcdir"/default.script \
+ "$pkgdir"/usr/share/udhcpc/default.script
+
}
extras() {
@@ -220,4 +226,5 @@ aa93095e20de88730f526c6f463cef711b290b9582cdbd8c1ba2bd290019150cbeaa7007c2e15f03
5f9739b9d0c1ba5d77e3153c373593a1bcb813cf466f951b00a2a040262e5077fb13c1a7aa17d67d1533a473bfcacc1a22833b7f491b4dde9dcb5638ad585f9a busyboxconfig-extras
0becc2186d6c32fb0c401cf7bc0e46268b38ce8892db33be1daf40273024c1c02d518283f44086a313a2ccef34230a1d945ec148cc173f26e6aa9d88a7426e54 bbsuid.c
b993ce589685d5d1f806153d0b7f71657f2d37556654ec60884130a40f09acc4944a13e0a4d02914000bedd779e5a35da08c760fed5f7ca5b601243aff7ba2c9 dad.if-up
-646ad9aefe3596d0170d92c8506ca1846e43b5b83cbef97ae565f15ffa7b14665a8c7061bc69c608c043f834c134c5d63f042509f8999031e89163508a868e46 ssl_client.c"
+646ad9aefe3596d0170d92c8506ca1846e43b5b83cbef97ae565f15ffa7b14665a8c7061bc69c608c043f834c134c5d63f042509f8999031e89163508a868e46 ssl_client.c
+788e3525af419dadff5a46f672b9356a1d9f8a3360523e8e247b926a67180212a002adb2499293d3455cce67a95ed8e2c27f9327ae1a5271f6e7f320dc1c2b98 default.script"
diff --git a/main/busybox/default.script b/main/busybox/default.script
new file mode 100644
index 0000000000..8c786f8740
--- /dev/null
+++ b/main/busybox/default.script
@@ -0,0 +1,157 @@
+#!/bin/sh
+
+# script for udhcpc
+# Copyright (c) 2008 Natanael Copa <natanael.copa@gmail.com>
+
+UDHCPC="/etc/udhcpc"
+UDHCPC_CONF="$UDHCPC/udhcpc.conf"
+
+RESOLV_CONF="/etc/resolv.conf"
+[ -f $UDHCPC_CONF ] && . $UDHCPC_CONF
+
+export broadcast
+export dns
+export domain
+export interface
+export ip
+export mask
+export metric
+export router
+export subnet
+
+export PATH=/usr/bin:/bin:/usr/sbin:/sbin
+
+run_scripts() {
+ local dir=$1
+ if [ -d $dir ]; then
+ for i in $dir/*; do
+ [ -f $i ] && $i
+ done
+ fi
+}
+
+deconfig() {
+ ip -4 addr flush dev $interface
+}
+
+is_wifi() {
+ test -e /sys/class/net/$interface/phy80211
+}
+
+if_index() {
+ if [ -e /sys/class/net/$interface/ifindex ]; then
+ cat /sys/class/net/$interface/ifindex
+ else
+ ip -4 link show dev $interface | head -n1 | cut -d: -f1
+ fi
+}
+
+calc_metric() {
+ local base=
+ if is_wifi; then
+ base=300
+ else
+ base=200
+ fi
+ echo $(( $base + $(if_index) ))
+}
+
+routes() {
+ [ -z "$router" ] && return
+ for i in $NO_GATEWAY; do
+ [ "$i" = "$interface" ] && return
+ done
+ local gw= num=
+ while ip -4 route del default via dev $interface 2>/dev/null; do
+ :
+ done
+ num=0
+ for gw in $router; do
+ if [ "$subnet" = "255.255.255.255" ]; then
+ # special case for /32 subnets:
+ # /32 instructs kernel to always use routing for all outgoing packets
+ # (they can never be sent to local subnet - there is no local subnet for /32).
+ # Used in datacenters, avoids the need for private ip-addresses between two hops.
+ ip -4 route add $gw dev $interface
+ fi
+ ip -4 route add 0.0.0.0/0 via $gw dev $interface \
+ metric $(( $num + ${IF_METRIC:-$(calc_metric)} ))
+ num=$(( $num + 1 ))
+ done
+}
+
+resolvconf() {
+ local i
+ [ -n "$IF_PEER_DNS" ] && [ "$IF_PEER_DNS" != "yes" ] && return
+ if [ "$RESOLV_CONF" = "no" ] || [ "$RESOLV_CONF" = "NO" ] \
+ || [ -z "$RESOLV_CONF" ]; then
+ return
+ fi
+ for i in $NO_DNS; do
+ [ "$i" = "$interface" ] && return
+ done
+ echo -n > "$RESOLV_CONF.$$"
+ if [ -n "$search" ]; then
+ echo "search $search" >> "$RESOLV_CONF.$$"
+ elif [ -n "$domain" ]; then
+ echo "search $domain" >> "$RESOLV_CONF.$$"
+ fi
+ for i in $dns; do
+ echo "nameserver $i" >> "$RESOLV_CONF.$$"
+ done
+ chmod a+r "$RESOLV_CONF.$$"
+ mv "$RESOLV_CONF.$$" "$RESOLV_CONF"
+}
+
+bound() {
+ ip -4 addr add $ip/$mask ${broadcast:+broadcast $broadcast} dev $interface
+ ip -4 link set dev $interface up
+ routes
+ resolvconf
+}
+
+renew() {
+ if ! ip -4 addr show dev $interface | grep $ip/$mask; then
+ ip -4 addr flush dev $interface
+ ip -4 addr add $ip/$mask ${broadcast:+broadcast $broadcast} dev $interface
+ fi
+
+ local i
+ for i in $router; do
+ if ! ip -4 route show | grep ^default | grep $i; then
+ routes
+ break
+ fi
+ done
+
+ if ! grep "^search $domain"; then
+ resolvconf
+ return
+ fi
+ for i in $dns; do
+ if ! grep "^nameserver $i"; then
+ resolvconf
+ return
+ fi
+ done
+}
+
+case "$1" in
+ deconfig|renew|bound)
+ run_scripts $UDHCPC/pre-$1
+ $1
+ run_scripts $UDHCPC/post-$1
+ ;;
+ leasefail)
+ echo "udhcpc failed to get a DHCP lease" >&2
+ ;;
+ nak)
+ echo "udhcpc received DHCP NAK" >&2
+ ;;
+ *)
+ echo "Error: this script should be called from udhcpc" >&2
+ exit 1
+ ;;
+esac
+exit 0
+