summaryrefslogtreecommitdiffstats
path: root/rc.inet1
diff options
context:
space:
mode:
authorRobby Workman <rworkman@slackware.com>2017-07-13 14:24:05 -0500
committerRobby Workman <rworkman@slackware.com>2017-07-14 00:35:12 -0500
commitc533543d40247ce6ab6d34bcf94aa8ab174bfc7e (patch)
tree20be85f40262b7f8d061e286cead191180f16d65 /rc.inet1
parent6281b5d47da57004b1d00f1a9946f5af6cca38a0 (diff)
downloadslacknetsetup-c533543d40247ce6ab6d34bcf94aa8ab174bfc7e.tar.xz
rc.inet1.*: Added support for IP address aliases
This is accomplished with a new parameter in rc.inet1.conf: IPALIASES[$index]="space separated list of addresses" The aliases are added with a /32 mask and a label of ${interface}:{$number} to remain compatible with net-tools. IP address aliases are supported for both statically configured interfaces and dhcp-configured interfaces, although they'll only be configured for dhcp if the dhcpcd call succeeds. * note: I don't what happens if dhcpcd gets IPv4LL address
Diffstat (limited to 'rc.inet1')
-rw-r--r--rc.inet118
1 files changed, 18 insertions, 0 deletions
diff --git a/rc.inet1 b/rc.inet1
index 871b38d..091dcfe 100644
--- a/rc.inet1
+++ b/rc.inet1
@@ -200,6 +200,15 @@ if_up() {
# 10 seconds should be a reasonable default DHCP timeout. 30 was too much.
echo "/etc/rc.d/rc.inet1: /sbin/dhcpcd -L -t ${DHCP_TIMEOUT[$i]:-10} ${DHCP_OPTIONS} ${1}" | $LOGGER
/sbin/dhcpcd -L -t ${DHCP_TIMEOUT[$i]:-10} ${DHCP_OPTIONS} ${1}
+ # If the dhcpcd call succeeds, add extra IP addresses, if defined, to interface
+ if [ "$?" == "0" -a ! -z "${IPALIASES[$1]}" ]; then
+ num=0
+ for ipalias in $(echo ${IPALIASES[$i]}); do
+ /sbin/ip address add ${ipalias}/32 dev ${1} label ${1}:${num} ;
+ num=$(($num + 1))
+ done
+ unset num
+ fi
else # bring up interface using a static IP address
if [ ! "${IPADDR[$i]}" = "" ]; then # skip unconfigured interfaces
# Determine broadcast address from the IP address and netmask:
@@ -211,6 +220,15 @@ if_up() {
if /sbin/ip link show dev ${1} | grep -wq "state DOWN" ; then
/sbin/ip link set dev ${1} up # Bring up interface
fi
+ # Add extra IP addresses, if defined, to interface
+ if [ ! -z "${IPALIASES[$i]}" ]; then
+ num=0
+ for ipalias in $(echo ${IPALIASES[$i]}); do
+ /sbin/ip address add ${ipalias}/32 dev ${1} label ${1}:${num} ;
+ num=$(($num + 1))
+ done
+ unset num
+ fi
else
if [ "$DEBUG_ETH_UP" = "yes" ]; then
echo "/etc/rc.d/rc.inet1: ${1} interface is not configured in /etc/rc.d/rc.inet1.conf" | $LOGGER