diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2019-12-16 15:13:24 +0000 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2019-12-16 15:16:46 +0000 |
commit | d8d56f3702cefbfb5433283d1a5ac53e0884198c (patch) | |
tree | cea4aa010c11daead199eba37b201d7311d4106e /main/busybox | |
parent | bc557fb7c8ba59c3ddd5f8c246290a5b91c0102f (diff) | |
download | aports-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/APKBUILD | 11 | ||||
-rw-r--r-- | main/busybox/default.script | 157 |
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 + |