mirror of
https://github.com/unraid/webgui.git
synced 2026-01-06 01:29:54 -06:00
154 lines
4.7 KiB
Plaintext
154 lines
4.7 KiB
Plaintext
# Configuration file
|
|
#
|
|
# script: rc.inet1.conf
|
|
#
|
|
# This file contains the configuration settings for network interfaces.
|
|
# If USE_DHCP[interface] is set to "yes", this overrides any other settings.
|
|
# If you don't have an interface, leave the settings null ("").
|
|
#
|
|
# You can configure network interfaces other than eth0,eth1... by setting
|
|
# IFNAME[interface] to the interface's name. If IFNAME[interface] is unset
|
|
# or empty, it is assumed you're configuring eth<interface>.
|
|
#
|
|
# Adapted by Bergware for use in Unraid OS - December 2023
|
|
# - added functions to remove leading zeros in IPv4 and IPv6 addresses
|
|
|
|
# LimeTech - modified for Unraid OS
|
|
# Bergware - modified for Unraid OS, December 2023
|
|
|
|
# change this to "yes" for debugging output to stdout.
|
|
# Unfortunately, /sbin/hotplug seems to disable stdout so you'll only see debugging output when rc.inet1 is called directly.
|
|
|
|
DEBUG_ETH_UP=no
|
|
DHCP_DEBUG=no
|
|
|
|
# function to remove leading zeros in IPv4 address
|
|
unzero(){
|
|
local M Q
|
|
echo -n $(for Q in ${1//./ }; do printf "$M%x" "0x$Q"; M=.; done)
|
|
}
|
|
|
|
# function to remove leading zeros in IPv6 address
|
|
unzero6(){
|
|
local A M Q
|
|
A=${1/::/:-:}
|
|
echo -n $(for Q in ${A//:/ }; do [[ $Q != - ]] && printf "$M%x" "0x$Q" || printf ":"; M=:; done)
|
|
}
|
|
|
|
# Bergware - use associative format for multi-dimensional arrays
|
|
declare -A VLANID USE_DHCP IPADDR NETMASK GATEWAY METRIC USE_DHCP6 IPADDR6 NETMASK6 GATEWAY6 METRIC6 PRIVACY6 DESCRIPTION PROTOCOL
|
|
|
|
# LimeTech - read settings from config file
|
|
CFG=/boot/config/network.cfg
|
|
if [[ -s $CFG ]]; then
|
|
. <(fromdos <$CFG)
|
|
else
|
|
# default legacy settings
|
|
IPADDR=
|
|
NETMASK=
|
|
GATEWAY=
|
|
PROTOCOL=ipv4
|
|
USE_DHCP=yes
|
|
USE_DHCP6=
|
|
DHCP_KEEPRESOLV=no
|
|
DHCP6_KEEPRESOLV=no
|
|
BONDING=yes
|
|
BRIDGING=yes
|
|
fi
|
|
|
|
# init DHCP_KEEPRESOLV appropriately if not defined in network.cfg
|
|
if [[ $USE_DHCP == yes ]]; then
|
|
DHCP_HOSTNAME=$(hostname)
|
|
[[ -z $DHCP_KEEPRESOLV ]] && DHCP_KEEPRESOLV=no
|
|
else
|
|
DHCP_KEEPRESOLV=yes
|
|
fi
|
|
if [[ $USE_DHCP6 == yes ]]; then
|
|
DHCP_HOSTNAME=$(hostname)
|
|
[[ -z $DHCP6_KEEPRESOLV ]] && DHCP6_KEEPRESOLV=no
|
|
else
|
|
DHCP6_KEEPRESOLV=yes
|
|
fi
|
|
|
|
# default resolv.conf file
|
|
RESOLV=/etc/resolv.conf
|
|
echo -n >$RESOLV
|
|
echo -n >$RESOLV.head
|
|
echo -n >$RESOLV.tail
|
|
|
|
if [[ $DHCP_KEEPRESOLV == yes ]]; then
|
|
echo "# Generated by rc.inet1" >>$RESOLV
|
|
[[ -n $DNS_SERVER1 ]] && echo "nameserver $(unzero $DNS_SERVER1)" >>$RESOLV
|
|
[[ -n $DNS_SERVER2 ]] && echo "nameserver $(unzero $DNS_SERVER2)" >>$RESOLV
|
|
[[ -n $DNS_SERVER3 ]] && echo "nameserver $(unzero $DNS_SERVER3)" >>$RESOLV
|
|
[[ -n $DNS_SERVER4 ]] && echo "nameserver $(unzero $DNS_SERVER4)" >>$RESOLV
|
|
[[ $DHCP6_KEEPRESOLV == no ]] && cp -f $RESOLV $RESOLV.head
|
|
fi
|
|
if [[ $DHCP6_KEEPRESOLV == yes ]]; then
|
|
[[ $DHCP_KEEPRESOLV == no ]] && echo "# Generated by rc.inet1" >>$RESOLV
|
|
[[ -n $DNS6_SERVER1 ]] && echo "nameserver $(unzero6 $DNS6_SERVER1)" >>$RESOLV
|
|
[[ -n $DNS6_SERVER2 ]] && echo "nameserver $(unzero6 $DNS6_SERVER2)" >>$RESOLV
|
|
[[ -n $DNS6_SERVER3 ]] && echo "nameserver $(unzero6 $DNS6_SERVER3)" >>$RESOLV
|
|
[[ -n $DNS6_SERVER4 ]] && echo "nameserver $(unzero6 $DNS6_SERVER4)" >>$RESOLV
|
|
[[ $DHCP_KEEPRESOLV == no ]] && cp -f $RESOLV $RESOLV.tail
|
|
fi
|
|
|
|
make_cfg(){
|
|
[[ -s $CFG ]] && return
|
|
for VAR in "$@"; do
|
|
if [[ ${VAR:0:1} == '#' ]]; then
|
|
# add comment
|
|
echo -ne "$VAR\r\n" >>$CFG
|
|
elif [[ ${VAR: -1} == '#' ]]; then
|
|
# add global variable
|
|
VAR=${VAR::-1}
|
|
echo -ne "$VAR=\"${!VAR}\"\r\n" >>$CFG
|
|
else
|
|
# add interface variable
|
|
echo -ne "$VAR[0]=\"${!VAR}\"\r\n" >>$CFG
|
|
fi
|
|
done
|
|
}
|
|
|
|
if [[ -n $SYSNICS ]]; then
|
|
# Bergware - set number of interfaces as present in the system
|
|
MAXNICS=$SYSNICS
|
|
else
|
|
# Bergware - legacy configuration of first interface
|
|
if [[ $BONDING == yes && $BRIDGING == yes ]]; then
|
|
# both bonding and bridging selected
|
|
BONDNAME=bond0
|
|
BONDNICS=${BONDNICS:-eth0 eth1 eth2 eth3}
|
|
BONDING_MODE=${BONDING_MODE:-1}
|
|
BONDING_MIIMON=${BONDING_MIIMON:-100}
|
|
BRNAME=br0
|
|
BRNICS=bond0
|
|
BRSTP=no
|
|
BRFD=0
|
|
IFNAME=$BRNAME
|
|
SETTINGS="BONDNAME BONDNICS BONDING_MODE BONDING_MIIMON BRNAME BRNICS BRSTP BRFD"
|
|
elif [[ $BONDING == yes ]]; then
|
|
# bonding selected
|
|
BONDNAME=bond0
|
|
BONDNICS=${BONDNICS:-eth0 eth1 eth2 eth3}
|
|
BONDING_MODE=${BONDING_MODE:-1}
|
|
BONDING_MIIMON=${BONDING_MIIMON:-100}
|
|
IFNAME=$BONDNAME
|
|
SETTINGS="BONDNAME BONDNICS BONDING_MODE BONDING_MIIMON"
|
|
elif [[ $BRIDGING == yes ]]; then
|
|
# bridging selected
|
|
BRNAME=br0
|
|
BRNICS=eth0
|
|
BRSTP=no
|
|
BRFD=0
|
|
IFNAME=$BRNAME
|
|
SETTINGS="BRNAME BRNICS BRSTP BRFD"
|
|
else
|
|
# normal interface
|
|
IFNAME=eth0
|
|
fi
|
|
SYSNICS=1
|
|
MAXNICS=$SYSNICS
|
|
make_cfg "# Generated settings:" IFNAME DHCP_KEEPRESOLV# DHCP6_KEEPRESOLV# $SETTINGS PROTOCOL USE_DHCP USE_DHCP6 SYSNICS#
|
|
fi
|