diff options
Diffstat (limited to 'straper/db/public/network/etc-network')
9 files changed, 460 insertions, 0 deletions
diff --git a/straper/db/public/network/etc-network/if-down.d/postfix b/straper/db/public/network/etc-network/if-down.d/postfix new file mode 100755 index 0000000..9db2b8b --- /dev/null +++ b/straper/db/public/network/etc-network/if-down.d/postfix @@ -0,0 +1,3 @@ +#! /bin/sh +# update postfix copy of resolv.conf (picked up automatically); only default instance is handled +[ lo != "$IFACE" ] && cp -pLu /etc/resolv.conf /var/spool/postfix/etc/resolv.conf 2>/dev/null || : diff --git a/straper/db/public/network/etc-network/if-down.d/resolved b/straper/db/public/network/etc-network/if-down.d/resolved new file mode 100755 index 0000000..5c603d8 --- /dev/null +++ b/straper/db/public/network/etc-network/if-down.d/resolved @@ -0,0 +1,26 @@ +#!/bin/sh +# +# Script fragment to make ifupdown supply DNS information to resolved +# + +case "$ADDRFAM" in + inet|inet6) : ;; + *) exit 0 ;; +esac + +if systemctl is-enabled systemd-resolved > /dev/null 2>&1; then + interface=$IFACE + if [ ! "$interface" ]; then + return + fi + ifindex=$(cat "/sys/class/net/$interface/ifindex") + if [ ! "$ifindex" ]; then + return + fi + mystatedir=/run/network + statedir=/run/systemd/resolve/netif + rm -f "$mystatedir/isc-dhcp-v4-$interface" "$mystatedir/isc-dhcp-v6-$interface" "$mystatedir/ifupdown-inet-$interface" "$mystatedir/ifupdown-inet6-$interface" "$statedir/$ifindex" + if systemctl --quiet is-active systemd-resolved; then + resolvectl revert "$ifindex" || true + fi +fi diff --git a/straper/db/public/network/etc-network/if-post-down.d/wireless-tools b/straper/db/public/network/etc-network/if-post-down.d/wireless-tools new file mode 100755 index 0000000..7ddf29f --- /dev/null +++ b/straper/db/public/network/etc-network/if-post-down.d/wireless-tools @@ -0,0 +1,78 @@ +#!/bin/sh + +IWCONFIG=/usr/sbin/iwconfig + +if [ ! -x $IWCONFIG ]; then + exit 0 +fi + +# check if this is a 802.11 device we're supposed to be effecting +case "${IF_WIRELESS:-enable}" in + wireless-tools|iwconfig) + # *we* and not some other 802.11 tool should be used + ;; + true|yes|enable|1) + # 802.11 should be used on this device, check for extensions + $IWCONFIG $IFACE >/dev/null 2>&1 || exit 0 + ;; + *) + exit 0 + ;; +esac + +apply_settings() +{ + if [ -n "$IF_WIRELESS_MODE" ]; then + $IWCONFIG "$IFACE" mode auto + fi + + if [ -n "$IF_WIRELESS_AP" ]; then + $IWCONFIG "$IFACE" ap off + fi + + if [ -n "$IF_WIRELESS_RATE" ]; then + $IWCONFIG "$IFACE" rate auto + fi + + if [ -n "$IF_WIRELESS_RTS" ]; then + $IWCONFIG "$IFACE" rts auto + fi + + if [ -n "$IF_WIRELESS_FRAG" ]; then + $IWCONFIG "$IFACE" frag auto + fi + + if [ -n "$IF_WIRELESS_POWER" ]; then + $IWCONFIG "$IFACE" power off + fi + + if [ -n "$IF_WIRELESS_TXPOWER" ]; then + $IWCONFIG "$IFACE" txpower auto + fi + + if [ -n "$IF_WIRELESS_ENC" ]; then + $IWCONFIG "$IFACE" enc off + fi + + if [ -n "$IF_WIRELESS_KEY" ]; then + $IWCONFIG "$IFACE" key off + fi + + if [ -n "$IF_WIRELESS_DEFAULTKEY" ]; then + $IWCONFIG "$IFACE" key off + fi + + if [ -n "$IF_WIRELESS_NWID" ]; then + $IWCONFIG "$IFACE" nwid off + fi + + if [ -n "$IF_WIRELESS_ESSID" ]; then + $IWCONFIG "$IFACE" essid any + fi + + if [ -n "$IF_WIRELESS_COMMIT" ]; then + $IWCONFIG "$IFACE" commit + fi +} + +apply_settings 2>/dev/null diff --git a/straper/db/public/network/etc-network/if-pre-up.d/ethtool b/straper/db/public/network/etc-network/if-pre-up.d/ethtool new file mode 100755 index 0000000..6c1d5de --- /dev/null +++ b/straper/db/public/network/etc-network/if-pre-up.d/ethtool @@ -0,0 +1,14 @@ +#!/bin/sh + +ETHTOOL=/usr/sbin/ethtool + +test -x $ETHTOOL || exit 0 + +[ "$IFACE" != "lo" ] || exit 0 + +# Gather together the mixed bag of settings applied with -s/--change +SETTINGS="\ +${IF_ETHERNET_PORT:+ port $IF_ETHERNET_PORT}\ +${IF_DRIVER_MESSAGE_LEVEL:+ msglvl $IF_DRIVER_MESSAGE_LEVEL}\ +" +[ -z "$SETTINGS" ] || $ETHTOOL --change "$IFACE" $SETTINGS diff --git a/straper/db/public/network/etc-network/if-pre-up.d/wireless-tools b/straper/db/public/network/etc-network/if-pre-up.d/wireless-tools new file mode 100755 index 0000000..fcabb34 --- /dev/null +++ b/straper/db/public/network/etc-network/if-pre-up.d/wireless-tools @@ -0,0 +1,143 @@ +#!/bin/sh + +IWCONFIG=/sbin/iwconfig + +if [ ! -x $IWCONFIG ]; then + exit 0 +fi + +# check if this is a 802.11 device we're supposed to be effecting +case "${IF_WIRELESS:-enable}" in + wireless-tools|iwconfig) + # *we* and not some other 802.11 tool should be used + ;; + true|yes|enable|1) + # 802.11 should be used on this device, check for extensions + $IWCONFIG $IFACE >/dev/null 2>&1 || exit 0 + ;; + *) + exit 0 + ;; +esac + +# The wireless driver madness: +# +# - Some drivers want everything to be configured before bringing the interface up +# - Some drivers want everything to be configured after bringing the interface up +# - Some drivers want some parameters before, other parameters after bringing the interface up +# +# So, we try to set every parameter when the interface is still down, +# and remember which ones failed to be configured properly. +# If some failed, we bring the interface up, and try the failed ones again. + +apply_settings() +{ + if [ -n "$IF_WIRELESS_SENS" ]; then + $IWCONFIG "$IFACE" sens $IF_WIRELESS_SENS && IF_WIRELESS_SENS= || FAIL=true + fi + + if [ -n "$IF_WIRELESS_MODE" ]; then + $IWCONFIG "$IFACE" mode $IF_WIRELESS_MODE && IF_WIRELESS_MODE= || FAIL=true + fi + + if [ -n "$IF_WIRELESS_AP" ]; then + $IWCONFIG "$IFACE" ap $IF_WIRELESS_AP && IF_WIRELESS_AP= || FAIL=true + fi + + if [ -n "$IF_WIRELESS_RATE" ]; then + $IWCONFIG "$IFACE" rate $IF_WIRELESS_RATE && IF_WIRELESS_RATE= || FAIL=true + fi + + if [ -n "$IF_WIRELESS_RTS" ]; then + $IWCONFIG "$IFACE" rts $IF_WIRELESS_RTS && IF_WIRELESS_RTS= || FAIL=true + fi + + if [ -n "$IF_WIRELESS_FRAG" ]; then + $IWCONFIG "$IFACE" frag $IF_WIRELESS_FRAG && IF_WIRELESS_FRAG= || FAIL=true + fi + + if [ -n "$IF_WIRELESS_POWER" ]; then + $IWCONFIG "$IFACE" power $IF_WIRELESS_POWER && IF_WIRELESS_POWER= || FAIL=true + fi + + if [ -n "$IF_WIRELESS_POWERPERIOD" ]; then + $IWCONFIG "$IFACE" power period $IF_WIRELESS_POWERPERIOD && IF_WIRELESS_POWERPERIOD= || FAIL=true + fi + + if [ -n "$IF_WIRELESS_POWERTIMEOUT" ]; then + $IWCONFIG "$IFACE" power timeout $IF_WIRELESS_POWERTIMEOUT && IF_WIRELESS_POWERTIMEOUT= || FAIL=true + fi + + if [ -n "$IF_WIRELESS_TXPOWER" ]; then + $IWCONFIG "$IFACE" txpower $IF_WIRELESS_TXPOWER && IF_WIRELESS_TXPOWER= || FAIL=true + fi + + if [ -n "$IF_WIRELESS_RETRY" ]; then + $IWCONFIG "$IFACE" retry $IF_WIRELESS_RETRY && IF_WIRELESS_RETRY= || FAIL=true + fi + + if [ -n "$IF_WIRELESS_ENC" ]; then + eval $IWCONFIG "$IFACE" enc $IF_WIRELESS_ENC && IF_WIRELESS_ENC= || FAIL=true + fi + + if [ -n "$IF_WIRELESS_DEFAULTKEY" ]; then + $IWCONFIG "$IFACE" key ["$IF_WIRELESS_DEFAULTKEY"] && IF_WIRELESS_DEFAULTKEY= || FAIL=true + fi + + if [ -n "$IF_WIRELESS_KEYMODE" ]; then + $IWCONFIG "$IFACE" key "$IF_WIRELESS_KEYMODE" && IF_WIRELESS_KEYMODE= || FAIL=true + fi + + if [ -n "$IF_WIRELESS_KEY" ]; then + eval $IWCONFIG "$IFACE" key $IF_WIRELESS_KEY && IF_WIRELESS_KEY= || FAIL=true + fi + + if [ -n "$IF_WIRELESS_KEY1" ]; then + $IWCONFIG "$IFACE" key [1] "$IF_WIRELESS_KEY1" && IF_WIRELESS_KEY1= || FAIL=true + fi + + if [ -n "$IF_WIRELESS_KEY2" ]; then + $IWCONFIG "$IFACE" key [2] "$IF_WIRELESS_KEY2" && IF_WIRELESS_KEY2= || FAIL=true + fi + + if [ -n "$IF_WIRELESS_KEY3" ]; then + $IWCONFIG "$IFACE" key [3] "$IF_WIRELESS_KEY3" && IF_WIRELESS_KEY3= || FAIL=true + fi + + if [ -n "$IF_WIRELESS_KEY4" ]; then + $IWCONFIG "$IFACE" key [4] "$IF_WIRELESS_KEY4" && IF_WIRELESS_KEY4= || FAIL=true + fi + + if [ -n "$IF_WIRELESS_FREQ" ]; then + $IWCONFIG "$IFACE" freq $IF_WIRELESS_FREQ && IF_WIRELESS_FREQ= || FAIL=true + fi + + if [ -n "$IF_WIRELESS_CHANNEL" ]; then + $IWCONFIG "$IFACE" channel $IF_WIRELESS_CHANNEL && IF_WIRELESS_CHANNEL= || FAIL=true + fi + + if [ -n "$IF_WIRELESS_NICK" ]; then + $IWCONFIG "$IFACE" nick "$IF_WIRELESS_NICK" && IF_WIRELESS_NICK= || FAIL=true + fi + + if [ -n "$IF_WIRELESS_NWID" ]; then + $IWCONFIG "$IFACE" nwid "$IF_WIRELESS_NWID" && IF_WIRELESS_NWID= || FAIL=true + fi + + if [ -n "$IF_WIRELESS_ESSID" ]; then + $IWCONFIG "$IFACE" essid "$IF_WIRELESS_ESSID" && IF_WIRELESS_ESSID= || FAIL=true + fi + + if [ -n "$IF_WIRELESS_COMMIT" ]; then + $IWCONFIG "$IFACE" commit && IF_WIRELESS_COMMIT= || FAIL=true + fi +} + +FAIL= +apply_settings 2>/dev/null + +if [ -n "$FAIL" ]; then + FAIL= + ip link set dev "$IFACE" up + apply_settings +fi diff --git a/straper/db/public/network/etc-network/if-up.d/ethtool b/straper/db/public/network/etc-network/if-up.d/ethtool new file mode 100755 index 0000000..05b56d7 --- /dev/null +++ b/straper/db/public/network/etc-network/if-up.d/ethtool @@ -0,0 +1,55 @@ +#!/bin/sh + +ETHTOOL=/usr/sbin/ethtool + +test -x $ETHTOOL || exit 0 + +[ "$IFACE" != "lo" ] || exit 0 + +# Find settings with a given prefix and print them as they appeared in +# /etc/network/interfaces, only with the prefix removed. +# This actually prints each name and value on a separate line, but that +# doesn't matter to the shell. +gather_settings () { + set | sed -n " +/^IF_$1[A-Za-z0-9_]*=/ { + h; # hold line + s/^IF_$1//; s/=.*//; s/_/-/g; # get name without prefix + y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/; # lower-case + p; + g; # restore line + s/^[^=]*=//; s/^'\(.*\)'/\1/; # get value + p; +}" +} + +# Gather together the mixed bag of settings applied with -s/--change +SETTINGS="\ +${IF_LINK_SPEED:+ speed $IF_LINK_SPEED}\ +${IF_LINK_DUPLEX:+ duplex $IF_LINK_DUPLEX}\ +" + +# WOL has an optional pass-key +set -- $IF_ETHERNET_WOL +SETTINGS="$SETTINGS${1:+ wol $1}${2:+ sopass $2}" + +# Autonegotiation can be on|off or an advertising mask +case "$IF_ETHERNET_AUTONEG" in +'') ;; +on|off) SETTINGS="$SETTINGS autoneg $IF_ETHERNET_AUTONEG" ;; +*) SETTINGS="$SETTINGS autoneg on advertise $IF_ETHERNET_AUTONEG" ;; +esac + +[ -z "$SETTINGS" ] || $ETHTOOL --change "$IFACE" $SETTINGS + +SETTINGS="$(gather_settings ETHERNET_PAUSE_)" +[ -z "$SETTINGS" ] || $ETHTOOL --pause "$IFACE" $SETTINGS + +SETTINGS="$(gather_settings HARDWARE_IRQ_COALESCE_)" +[ -z "$SETTINGS" ] || $ETHTOOL --coalesce "$IFACE" $SETTINGS + +SETTINGS="$(gather_settings HARDWARE_DMA_RING_)" +[ -z "$SETTINGS" ] || $ETHTOOL --set-ring "$IFACE" $SETTINGS + +SETTINGS="$(gather_settings OFFLOAD_)" +[ -z "$SETTINGS" ] || $ETHTOOL --offload "$IFACE" $SETTINGS diff --git a/straper/db/public/network/etc-network/if-up.d/postfix b/straper/db/public/network/etc-network/if-up.d/postfix new file mode 100755 index 0000000..9db2b8b --- /dev/null +++ b/straper/db/public/network/etc-network/if-up.d/postfix @@ -0,0 +1,3 @@ +#! /bin/sh +# update postfix copy of resolv.conf (picked up automatically); only default instance is handled +[ lo != "$IFACE" ] && cp -pLu /etc/resolv.conf /var/spool/postfix/etc/resolv.conf 2>/dev/null || : diff --git a/straper/db/public/network/etc-network/if-up.d/resolved b/straper/db/public/network/etc-network/if-up.d/resolved new file mode 100755 index 0000000..e79f997 --- /dev/null +++ b/straper/db/public/network/etc-network/if-up.d/resolved @@ -0,0 +1,131 @@ +#!/bin/sh +# +# Script fragment to make ifupdown supply DNS information to resolved +# + +case "$ADDRFAM" in + inet|inet6) : ;; + *) exit 0 ;; +esac + +if systemctl is-enabled systemd-resolved > /dev/null 2>&1; then + interface=$IFACE + if [ ! "$interface" ]; then + return + fi + # TODO handle lo interface settings + if [ "$interface" = "lo" ]; then + return + fi + ifindex=$(cat "/sys/class/net/$interface/ifindex") + if [ ! "$ifindex" ]; then + return + fi + mystatedir=/run/network + mkdir -p $mystatedir + + statedir=/run/systemd/resolve/netif + mkdir -p $statedir + chown systemd-resolve:systemd-resolve $statedir + + oldstate="$(mktemp)" + # ignore errors due to nonexistent file + md5sum "$mystatedir/isc-dhcp-v4-$interface" "$mystatedir/isc-dhcp-v6-$interface" "$mystatedir/ifupdown-inet-$interface" "$mystatedir/ifupdown-inet6-$interface" > "$oldstate" 2> /dev/null || true + + NEW_DEFAULT_ROUTE=$IF_DNS_DEFAULT_ROUTE + NEW_DNS=$(echo $IF_DNS_NAMESERVERS $IF_DNS_NAMESERVER) + NEW_DOMAINS=$(echo $IF_DNS_DOMAIN $IF_DNS_SEARCH) + DNS=DNS + DOMAINS=DOMAINS + if [ "$ADDRFAM" = "inet6" ]; then + DNS=DNS6 + DOMAINS=DOMAINS6 + fi + if [ -n "$NEW_DNS" ]; then + cat <<EOF >"$mystatedir/ifupdown-${ADDRFAM}-$interface" +$DNS="$NEW_DNS" +EOF + if [ -n "$NEW_DOMAINS" ]; then + cat <<EOF >>"$mystatedir/ifupdown-${ADDRFAM}-$interface" +$DOMAINS="$NEW_DOMAINS" +EOF + fi + fi + case "$NEW_DEFAULT_ROUTE" in + 1|yes|true|on) NEW_DEFAULT_ROUTE=yes ;; + 0|no|false|off) NEW_DEFAULT_ROUTE=no ;; + *) NEW_DEFAULT_ROUTE= ;; + esac + if [ -n "$NEW_DEFAULT_ROUTE" ]; then + cat <<EOF >>"$mystatedir/ifupdown-${ADDRFAM}-$interface" +DEFAULT_ROUTE="$NEW_DEFAULT_ROUTE" +EOF + fi + + newstate="$(mktemp)" + # ignore errors due to nonexistent file + md5sum "$mystatedir/isc-dhcp-v4-$interface" "$mystatedir/isc-dhcp-v6-$interface" "$mystatedir/ifupdown-inet-$interface" "$mystatedir/ifupdown-inet6-$interface" > "$newstate" 2> /dev/null || true + if ! cmp --silent "$oldstate" "$newstate" 2>/dev/null; then + unset DNS DNS6 DOMAINS DOMAINS6 DEFAULT_ROUTE + # v4 first + if [ -e "$mystatedir/isc-dhcp-v4-$interface" ]; then + . "$mystatedir/isc-dhcp-v4-$interface" + fi + # v4 manual config overrides + if [ -e "$mystatedir/ifupdown-inet-$interface" ]; then + . "$mystatedir/ifupdown-inet-$interface" + fi + # v6 preffered + if [ -e "$mystatedir/isc-dhcp-v6-$interface" ]; then + . "$mystatedir/isc-dhcp-v6-$interface" + fi + # v6 manual config overrides + if [ -e "$mystatedir/ifupdown-inet6-$interface" ]; then + . "$mystatedir/ifupdown-inet6-$interface" + fi + resolvectl_failed= + if [ "$DNS" ] || [ "$DNS6" ] ; then + cat <<EOF >"$statedir/$ifindex" +# This is private data. Do not parse. +LLMNR=yes +MDNS=no +SERVERS=$(echo $DNS6 $DNS) +DOMAINS=$(echo $DOMAINS6 $DOMAINS) +EOF + if [ -n "$DEFAULT_ROUTE" ]; then + cat <<EOF >>"$statedir/$ifindex" +DEFAULT_ROUTE=$DEFAULT_ROUTE +EOF + fi + chown systemd-resolve:systemd-resolve "$statedir/$ifindex" + # In addition to creating the state file (needed if we run before + # resolved is started), also feed the information directly to + # resolved. + if systemctl --quiet is-active systemd-resolved; then + resolvectl llmnr "$ifindex" yes || resolvectl_failed=$? + resolvectl mdns "$ifindex" no || resolvectl_failed=$? + if [ "$DOMAINS6" ] || [ "$DOMAINS" ]; then + resolvectl domain "$ifindex" $DOMAINS6 $DOMAINS || resolvectl_failed=$? + else + resolvectl domain "$ifindex" "" || resolvectl_failed=$? + fi + resolvectl dns "$ifindex" $DNS6 $DNS || resolvectl_failed=$? + if [ "$DEFAULT_ROUTE" ]; then + resolvectl default-route "$ifindex" $DEFAULT_ROUTE || resolvectl_failed=$? + fi + fi + else + rm -f "$statedir/$ifindex" + if systemctl --quiet is-active systemd-resolved; then + resolvectl revert "$ifindex" || resolvectl_failed=$? + fi + fi + + # resolved was running, but without dbus, it means state files + # will not be read & resolvectl commands failed, restart it + if [ "$resolvectl_failed" ]; then + systemctl try-restart systemd-resolved + fi + fi + rm -f "$oldstate" "$newstate" +fi diff --git a/straper/db/public/network/etc-network/interfaces b/straper/db/public/network/etc-network/interfaces new file mode 100644 index 0000000..4abc807 --- /dev/null +++ b/straper/db/public/network/etc-network/interfaces @@ -0,0 +1,7 @@ +auto lo +iface lo inet loopback + +auto enx00e04c2e4828 +iface enx00e04c2e4828 inet dhcp + + |
