aboutsummaryrefslogtreecommitdiffstats
path: root/sysconfig/network-scripts/ifup-aliases
diff options
context:
space:
mode:
authorColin Guthrie <colin@mageia.org>2012-10-28 20:16:00 +0000
committerColin Guthrie <colin@mageia.org>2012-10-28 20:16:00 +0000
commit5b2ce4ba3ff6cf5d7df7f5760107ff2f3e7dbe6f (patch)
treeec8a31bfe3ca67db6c5f31e1e34e59708fdfe557 /sysconfig/network-scripts/ifup-aliases
parent35326f41a29186a00331117c4419a904c6563c7c (diff)
parentbf95e22c4164b82112d043169495a71d1bfa0068 (diff)
downloadinitscripts-5b2ce4ba3ff6cf5d7df7f5760107ff2f3e7dbe6f.tar
initscripts-5b2ce4ba3ff6cf5d7df7f5760107ff2f3e7dbe6f.tar.gz
initscripts-5b2ce4ba3ff6cf5d7df7f5760107ff2f3e7dbe6f.tar.bz2
initscripts-5b2ce4ba3ff6cf5d7df7f5760107ff2f3e7dbe6f.tar.xz
initscripts-5b2ce4ba3ff6cf5d7df7f5760107ff2f3e7dbe6f.zip
Merge tag 'initscripts-9.41-1' into mga-41
Tag as initscripts-9.41-1 Conflicts: .gitignore Makefile inittab po/xgettext_sh.py prefdm rc.d/init.d/functions rc.d/init.d/halt rc.d/init.d/killall rc.d/init.d/netfs rc.d/init.d/network rc.d/init.d/single rc.d/rc rc.d/rc.local rc.d/rc.sysinit service src/console_check.c src/console_init.c sysconfig.txt sysconfig/network-scripts/ifdown sysconfig/network-scripts/ifdown-eth sysconfig/network-scripts/ifup sysconfig/network-scripts/ifup-eth sysconfig/network-scripts/ifup-ippp sysconfig/network-scripts/network-functions systemd/system/fedora-wait-storage.service udev/rules.d/10-console.rules Merge Notes: 1. prefdm: We are keeping the current prefdm script which parses /etc/sysconfig/desktop to find the current preferred dm. We also keep the hunk in sysconfig.txt which relates to the afore mentioned file. Longer term, we should drop this and move to per-dm units. 2. sysconfig/network-scripts/ifup-ippp is still removed at our end... is there a replacement? 3. I used our /sbin/service as it varies quite a lot from fedora. I'd be tempted to drop our custom version in favour of upstream (s/libexec/lib/) 4. ifup/ifdown NM wrappers have been included - previously we just printed a "Device is manged by NM skipping.." message. CONFLICT (modify/delete): udev/rules.d/10-console.rules deleted in initscripts-9.41-1 and modified in HEAD. Version HEAD of udev/rules.d/10-console.rules left in tree. Auto-merging systemd/system/fedora-wait-storage.service CONFLICT (content): Merge conflict in systemd/system/fedora-wait-storage.service Auto-merging systemd/fedora-storage-init Auto-merging sysconfig/network-scripts/network-functions CONFLICT (content): Merge conflict in sysconfig/network-scripts/network-functions Removing sysconfig/network-scripts/net.hotplug Auto-merging sysconfig/network-scripts/ifup-sit Auto-merging sysconfig/network-scripts/ifup-post Auto-merging sysconfig/network-scripts/ifup-plusb CONFLICT (modify/delete): sysconfig/network-scripts/ifup-ippp deleted in HEAD and modified in initscripts-9.41-1. Version initscripts-9.41-1 of sysconfig/network-scripts/ifup-ippp left in tree. Auto-merging sysconfig/network-scripts/ifup-eth CONFLICT (content): Merge conflict in sysconfig/network-scripts/ifup-eth Auto-merging sysconfig/network-scripts/ifup CONFLICT (content): Merge conflict in sysconfig/network-scripts/ifup Auto-merging sysconfig/network-scripts/ifdown-sit Auto-merging sysconfig/network-scripts/ifdown-post Auto-merging sysconfig/network-scripts/ifdown-eth CONFLICT (content): Merge conflict in sysconfig/network-scripts/ifdown-eth Auto-merging sysconfig/network-scripts/ifdown CONFLICT (content): Merge conflict in sysconfig/network-scripts/ifdown Auto-merging sysconfig.txt CONFLICT (content): Merge conflict in sysconfig.txt Removing src/testdinit Removing src/testd.c Removing src/securetty.c Removing src/securetty.8 Removing src/getkey.c Removing src/getkey.1 Removing src/fstab-decode.c Removing src/fstab-decode.8 CONFLICT (modify/delete): src/console_init.c deleted in initscripts-9.41-1 and modified in HEAD. Version HEAD of src/console_init.c left in tree. CONFLICT (modify/delete): src/console_check.c deleted in initscripts-9.41-1 and modified in HEAD. Version HEAD of src/console_check.c left in tree. Auto-merging service CONFLICT (content): Merge conflict in service CONFLICT (modify/delete): rc.d/rc.sysinit deleted in initscripts-9.41-1 and modified in HEAD. Version HEAD of rc.d/rc.sysinit left in tree. CONFLICT (modify/delete): rc.d/rc.local deleted in initscripts-9.41-1 and modified in HEAD. Version HEAD of rc.d/rc.local left in tree. CONFLICT (modify/delete): rc.d/rc deleted in initscripts-9.41-1 and modified in HEAD. Version HEAD of rc.d/rc left in tree. CONFLICT (modify/delete): rc.d/init.d/single deleted in initscripts-9.41-1 and modified in HEAD. Version HEAD of rc.d/init.d/single left in tree. Auto-merging rc.d/init.d/network CONFLICT (content): Merge conflict in rc.d/init.d/network CONFLICT (modify/delete): rc.d/init.d/netfs deleted in initscripts-9.41-1 and modified in HEAD. Version HEAD of rc.d/init.d/netfs left in tree. Auto-merging rc.d/init.d/netconsole CONFLICT (modify/delete): rc.d/init.d/killall deleted in initscripts-9.41-1 and modified in HEAD. Version HEAD of rc.d/init.d/killall left in tree. CONFLICT (modify/delete): rc.d/init.d/halt deleted in initscripts-9.41-1 and modified in HEAD. Version HEAD of rc.d/init.d/halt left in tree. Auto-merging rc.d/init.d/functions CONFLICT (content): Merge conflict in rc.d/init.d/functions CONFLICT (modify/delete): prefdm deleted in initscripts-9.41-1 and modified in HEAD. Version HEAD of prefdm left in tree. Auto-merging ppp/ip-up.ipv6to4 CONFLICT (modify/delete): po/xgettext_sh.py deleted in HEAD and modified in initscripts-9.41-1. Version initscripts-9.41-1 of po/xgettext_sh.py left in tree. Removing inittab.upstart Removing inittab.systemd Removing inittab.s390 Auto-merging inittab CONFLICT (content): Merge conflict in inittab Removing init/tty.conf Removing init/start-ttys.conf Removing init/splash-manager.conf Removing init/serial.conf Removing init/rcS.conf Removing init/rcS-sulogin.conf Removing init/rc.conf Removing init/quit-plymouth.conf Removing init/prefdm.conf Removing init/plymouth-shutdown.conf Removing init/control-alt-delete.conf Removing crypttab.5 Removing README-init Removing NetworkManager/dispatcher.d/05-netfs Auto-merging Makefile CONFLICT (content): Merge conflict in Makefile Auto-merging .gitignore CONFLICT (content): Merge conflict in .gitignore Automatic merge failed; fix conflicts and then commit the result.
Diffstat (limited to 'sysconfig/network-scripts/ifup-aliases')
-rwxr-xr-xsysconfig/network-scripts/ifup-aliases130
1 files changed, 47 insertions, 83 deletions
diff --git a/sysconfig/network-scripts/ifup-aliases b/sysconfig/network-scripts/ifup-aliases
index fc21c7b6..a647044f 100755
--- a/sysconfig/network-scripts/ifup-aliases
+++ b/sysconfig/network-scripts/ifup-aliases
@@ -74,43 +74,34 @@ parent_device=$device
cd /etc/sysconfig/network-scripts
. ./network-functions
-# Grab the current configuration of any running aliases device info is placed
-# into variables in the form: rdev_$DEVICE_addr, dev_$DEVICE_mb and
-# rdevip_$IPGLOP. A list of all the devices is created in rdev_LIST.
-
-eval $(LC_ALL= LANG= /sbin/ifconfig | LC_ALL=C sed -n '
-# Alias name: store the number in TMP, ignore the following address if the
-# device name does not match. This may leave a hanging ||, so dummy X=x
-# comands are used to ignore a possible previous condition.
-/^[^[:space:]]*:[0-9A-Za-z_]*/ {
- s|^\([^:]*\):\([0-9A-Za-z_]*\).*$|X=x; TMP="\2"; [ "$device" != "\1" ] \|\| |p
- b
-}
-# Non-alias device: always ignore the following address
-/^[^[:space:]]/ {
- s|^.*$|X=x; true \|\| |p
- b
-}
-# Address: Preceded by a device name, which was converted into
-# condition ||
-# So this triggers only for $device.
-# Add a trailing || (which will be swallowed by X=x) to keep the syntax
-# correct.
-/inet addr:[0-9]*\.[0-9]*\.[0-9]*\.[0-9]* *Bcast:[0-9.]* *Mask:[0-9.]*/ {
- s|^.*inet addr:\(\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)\) *Bcast:\([0-9.]*\) *Mask:\([0-9.]*\).*$|eval "rdev_${TMP}_addr=\1; rdev_${TMP}_mb=\7_\6; rdevip_\2_\3_\4_\5=${TMP}; rdev_LIST=\\"\\$rdev_LIST \\${TMP}\\"; " \|\| |p
- b
-}') X=x
-
-if [ -z "$rdev_LIST" ]; then
- no_devices_are_up=yes
-fi
-
-##for DEVNUM in $rdev_LIST ; do
-##eval "
-##echo \"rdev_${DEVNUM}_addr = \$rdev_${DEVNUM}_addr\"
-##echo \"rdev_${DEVNUM}_mb = \$rdev_${DEVNUM}_mb\" ";
-##done
-##echo ""; echo "-----"; echo ""
+# Grab the current configuration of any running aliases, place device info
+# into variables of the form:
+# rdev_<index>_addr = <ip address>
+# rdev_<index>_pb = <prefix>_<broadcast>
+# rdevip_<ipaddress> = <index>
+# Example:
+# rdev_0_addr=192.168.1.1
+# rdev_0_pb=24_192.16.1.255
+# rdevip_192_168_1_1=0
+#
+# A list of all the devices is created in rdev_LIST.
+
+eval $( ip addr show $device label $device:* | \
+ awk 'BEGIN { COUNT=0;LAST_DEV="" } /inet / {
+# Split IP address into address/prefix
+ split($2,IPADDR,"/");
+# Create A_B_C_D IP address form
+ IP_ADDR=IPADDR[1];
+ gsub(/\./,"_",IP_ADDR);
+# Split device into device:index
+ split($NF,DEV,":");
+# Update last device
+ LAST_DEV=LAST_DEV " " DEV[2];
+ printf("rdev_%s_addr=%s\nrdevip_%s=%s\nrdev_%s_pb=%s_%s\nrdev_LIST=\"%s\"\n",
+ DEV[2],IPADDR[1],IP_ADDR,DEV[2],DEV[2],IPADDR[2],$4,LAST_DEV);
+ } END {
+ if(LAST_DEV == "") print "no_devices_are_up=yes"
+ }' );
#
# Store configuration of the parent device and network
@@ -130,6 +121,7 @@ eval ` (
}
eval ` (
. ./$PARENTCONFIG;
+ echo default_PREFIX=$PREFIX\;;
echo default_NETMASK=$NETMASK\;;
echo default_BROADCAST=$BROADCAST\;;
echo default_GATEWAY=$GATEWAY\;;
@@ -141,6 +133,7 @@ function ini_env ()
{
DEVICE=""
IPADDR=""
+ PREFIX=$default_PREFIX
NETMASK=$default_NETMASK
BROADCAST=$default_BROADCAST
GATEWAY=$default_GATEWAY
@@ -150,9 +143,8 @@ function ini_env ()
function is_default_gateway ()
{
- LC_ALL=C /sbin/route -n \
- | awk '$1 == "0.0.0.0" && $2 == "'"$1"'" { found = 1; }
- END { exit found == 0; }'
+ LC_ALL=C /sbin/ip route ls default scope global \
+ | awk '$3 == "'"$1"'" { found = 1; } END { exit found == 0; }'
}
#
@@ -193,37 +185,17 @@ function new_interface ()
return 1
fi
- if [ -z "$NETMASK" ]; then
- eval $(/bin/ipcalc --netmask ${IPADDR})
+ if [ -z "$NETMASK" -a -z "$PREFIX" ]; then
+ net_log $"error iN $FILE: didn't specify netmask or prefix"
fi
- if [ -z "$BROADCAST" -o "$BROADCAST" = "$default_BROADCAST" ]; then
- eval $(/bin/ipcalc --broadcast ${IPADDR} ${NETMASK})
- nma=$NETMASK; nmb=${nma#*.}; nmc=${nmb#*.};
- NMGLOP="${nma%%.*}_${nmb%%.*}_${nmc%%.*}_${nmc#*.}";
- if [ ${nma%%.*} -eq 0 ]; then ipnm_a=0; else ipnm_a=${ipa%%.*}; fi
- if [ ${nmb%%.*} -eq 0 ]; then ipnm_b=0; else ipnm_b=${ipb%%.*}; fi
- if [ ${nmc%%.*} -eq 0 ]; then ipnm_c=0; else ipnm_c=${ipc%%.*}; fi
- if [ ${nmc#*.} -eq 0 ]; then ipnm_d=0; else ipnm_d=${ipc#*.}; fi
- CACHENAME="${NMGLOP}_${ipnm_a}_${ipnm_b}_${ipnm_c}_${ipnm_d}"
- eval "
- if [ -z \"\$bcastcache_${CACHENAME}\" ]; then
- eval $(/bin/ipcalc --broadcast $IPADDR $NETMASK)
- bcastcache_${CACHENAME}=\$BROADCAST
- else
- BROADCAST=\$bcastcache_${CACHENAME}
- fi
- ";
+ if [ -z "$PREFIX" ]; then
+ eval $(/bin/ipcalc --prefix ${IPADDR} ${NETMASK})
fi
-##echo "";
-##echo "----------------------------"
-##echo "device = $DEVICE"
-##echo "ipaddr = $IPADDR"
-##echo "netmask = $NETMASK"
-##echo "broadcast = $BROADCAST"
-##echo "devnum = $DEVNUM";
-##echo "";
+ if [ -z "$BROADCAST" -o "$BROADCAST" = "$default_BROADCAST" ]; then
+ eval $(/bin/ipcalc --broadcast ${IPADDR}/${PREFIX})
+ fi
if [ "$no_devices_are_up" = "yes" ]; then
setup_this=yes
@@ -233,7 +205,7 @@ function new_interface ()
eval "
rdev_addr=\$rdev_${DEVNUM}_addr;
- rdev_mb=\$rdev_${DEVNUM}_mb;
+ rdev_pb=\$rdev_${DEVNUM}_pb;
rdev_mark=\$rdev_${DEVNUM}_mark;
rdevip=\$rdevip_${IPGLOP};
";
@@ -241,15 +213,14 @@ function new_interface ()
if [ -n "$rdev_addr" ]; then
if [ "$rdev_addr" = "${IPADDR}" ]; then
newmark=keep
- if [ "$rdev_mb" != "${NETMASK}_${BROADCAST}" ]; then
+ if [ "$rdev_pb" != "${PREFIX}_${BROADCAST}" ]; then
setup_this=freshen
else
setup_this=no
fi
else
if [ "$rdev_mark" != "remove" ]; then
-##echo "removing device $parent_device:${DEVNUM} (devnum conflict)"
- /sbin/ifconfig $parent_device:${DEVNUM} down
+ /sbin/ip addr flush dev $parent_device label $parent_device:${DEVNUM}
do_netreport=yes
fi
newmark=remove
@@ -272,8 +243,7 @@ function new_interface ()
fi
if [ "$mark_remove" != "remove" ]; then
eval " rdev_${rdevip}_mark=remove ";
-##echo "removing device $parent_device:$rdevip (ipaddr conflict)"
- /sbin/ifconfig $parent_device:$rdevip down
+ /sbin/ip addr flush dev $parent_device label $parent_device:$rdevip
do_netreport=yes
fi
fi
@@ -282,15 +252,11 @@ function new_interface ()
if [ "$setup_this" = "freshen" ] ; then
# we can do the freshen stuff right now
-##echo "freshening device $DEVICE"
- /sbin/ifconfig $DEVICE netmask $NETMASK broadcast $BROADCAST;
+ /sbin/ip addr change ${IPADDR}/${PREFIX} brd ${BROADCAST}
fi
if [ "$setup_this" = "yes" ] ; then
-
-##echo "setting up device $DEVICE"
-
- /sbin/ifconfig ${DEVICE} ${IPADDR} netmask ${NETMASK} broadcast ${BROADCAST}
+ /sbin/ip addr add ${IPADDR}/${PREFIX} brd ${BROADCAST} dev ${parent_device} label ${DEVICE}
[ "$IPV6INIT" = "yes" ] && /etc/sysconfig/network-scripts/ifup-ipv6 ${DEVICE}
@@ -302,8 +268,7 @@ function new_interface ()
\( -z "${GATEWAYDEV}" -o "${GATEWAYDEV}" = "${DEVICE}" \) ]; then
# set up default gateway, if it isn't already there
if ! is_default_gateway "$GATEWAY"; then
- route add default gw ${GATEWAY} \
- ${METRIC:+metric $METRIC} ${DEVICE}
+ ip route replace default ${METRIC:+metric $METRIC} via ${GATEWAY} dev ${DEVICE}
fi
fi
@@ -365,8 +330,7 @@ done
for DEVNUM in $rdev_LIST ; do
eval " rdev_mark=\$rdev_${DEVNUM}_mark ";
if [ -z "$rdev_mark" ]; then
- ##echo "removing device $parent_device:${DEVNUM} (lingering)"
- /sbin/ifconfig $parent_device:${DEVNUM} down
+ /sbin/ip addr flush dev $parent_device label $parent_device:${DEVNUM}
do_netreport=yes
fi
done