diff options
author | Colin Guthrie <colin@mageia.org> | 2012-10-28 20:16:00 +0000 |
---|---|---|
committer | Colin Guthrie <colin@mageia.org> | 2012-10-28 20:16:00 +0000 |
commit | 5b2ce4ba3ff6cf5d7df7f5760107ff2f3e7dbe6f (patch) | |
tree | ec8a31bfe3ca67db6c5f31e1e34e59708fdfe557 /sysconfig/network-scripts/ifup-aliases | |
parent | 35326f41a29186a00331117c4419a904c6563c7c (diff) | |
parent | bf95e22c4164b82112d043169495a71d1bfa0068 (diff) | |
download | initscripts-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-x | sysconfig/network-scripts/ifup-aliases | 130 |
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 |