]> git.pld-linux.org Git - projects/rc-scripts.git/blame - sysconfig/network-scripts/ifup-aliases
- merge from TOTALNEW branch (see NEWS for more info)
[projects/rc-scripts.git] / sysconfig / network-scripts / ifup-aliases
CommitLineData
12de71be 1#!/bin/sh
b0443108 2#
de1fc6ce 3# $Id: ifup-aliases,v 1.11 2001/05/15 16:03:44 baggins Exp $
b0443108 4#
de1fc6ce 5# adds all addresses of device $1
7742e157 6
f3002e12 7. /etc/sysconfig/network
dd4a755f 8. /etc/rc.d/init.d/functions
8b3e2b71 9. /etc/sysconfig/network-scripts/.functions
f3002e12 10
de1fc6ce
JR
11# device name must be ifcfg-somename
12DEV=$1
13
14[ -z "$DEV" ] && {
15 nls "usage: %s <device name>" "ifup-aliases" >&2
16 exit 1
17}
7742e157 18
de1fc6ce
JR
19if [ -f "/etc/sysconfig/interfaces/ifcfg-$DEV" ] ; then
20 CONFIG="/etc/sysconfig/interfaces/ifcfg-$DEV"
5726f160 21else
de1fc6ce 22 CONFIG="$DEV"
6955eb97 23fi
f3002e12 24
de1fc6ce 25source_config
f3002e12 26
de1fc6ce
JR
27# set all major variables
28setup_ip_param
29
30# Add all addresses
31for IP_ADDR in $IPADDR_ALIASES; do
32 IP_ADDR_OPT=""
33 IP_ROUTE_OPT=""
34
35 [ -z "$IP_ADDR" ] && continue
36 # Be sure that primary address is added
37 if [ "$IP_ADDR" = "$IP4ADDR" -o "$IP_ADDR" = "$IP6ADDR" ]; then
38 if (ip addr show dev $DEVICE | egrep -q "[[:space:]]${IP_ADDR}[[:space:]]"); then
39 continue
40 fi
41 fi
42 if is_yes "${IPV4_NETWORKING}"; then
43 # If broadcast is missing then autocalculate it
44 if ! (echo $IP_ADDR_OPT | egrep -q "brd|broadcast"); then
45 IP_ADDR_OPT="brd + ${IP_ADDR_OPT}"
46 fi
47 ip -4 addr add ${IP_ADDR} dev ${DEVICE} ${IP_ADDR_OPT}
48 fi
f3002e12
JK
49done
50
de1fc6ce
JR
51for IP_ADDR in $IPV6_ADDR; do
52 IP_ADDR_OPT=""
53 IP_ROUTE_OPT=""
54
55 [ -z "$IP_ADDR" ] && continue
56 # Be sure that primary address is added
57 if [ "$IP_ADDR" = "$IP4ADDR" -o "$IP_ADDR" = "$IP6ADDR" ]; then
58 if (ip addr show dev $DEVICE | egrep -q "[[:space:]]${IP_ADDR}[[:space:]]"); then
59 continue
60 fi
61 fi
62 # Check for IPv6 address
63 if (echo $IP_ADDR | grep -q ":"); then
64 if is_yes "${IPV6_NETWORKING}"; then
65 ip -6 addr add ${IP_ADDR} dev ${DEVICE} ${IP_ADDR_OPT}
66 fi
67 elif is_yes "${IPV4_NETWORKING}"; then
68 # If broadcast is missing then autocalculate it
69 if ! (echo $IP_ADDR_OPT | egrep -q "brd|broadcast"); then
70 IP_ADDR_OPT="brd + ${IP_ADDR_OPT}"
71 fi
72 ip -4 addr add ${IP_ADDR} dev ${DEVICE} ${IP_ADDR_OPT}
73 fi
f3002e12
JK
74done
75
de1fc6ce
JR
76for nr in $(awk 'BEGIN { for (j=1; j<256; j++) print j}'); do
77 eval IP_ADDR="\$IPADDR${nr}"
78 eval IP_ADDR_OPT="\$IP_AOPTS${nr}"
79 eval IP_ROUTE_OPT="\$IP_ROPTS${nr}"
80
81 [ -z "$IP_ADDR" ] && continue
82 # Be sure that primary address is added
83 if [ "$IP_ADDR" = "$IP4ADDR" -o "$IP_ADDR" = "$IP6ADDR" ]; then
84 if (ip addr show dev $DEVICE | egrep -q "[[:space:]]${IP_ADDR}[[:space:]]"); then
85 continue
86 fi
87 fi
88 # Check for IPv6 address
89 if (echo $IP_ADDR | grep -q ":"); then
90 if is_yes "${IPV6_NETWORKING}"; then
91 ip -6 addr add ${IP_ADDR} dev ${DEVICE} ${IP_ADDR_OPT}
92 fi
93 elif is_yes "${IPV4_NETWORKING}"; then
94 # If broadcast is missing then autocalculate it
95 if ! (echo $IP_ADDR_OPT | egrep -q "brd|broadcast"); then
96 IP_ADDR_OPT="brd + ${IP_ADDR_OPT}"
97 fi
98 ip -4 addr add ${IP_ADDR} dev ${DEVICE} ${IP_ADDR_OPT}
99 fi
100done
101
102# Setup IPv4-compatible addresses
103if is_yes "$IPV6_NETWORKING" && [ "$BOOTMETHOD6" = "v4compat" ]; then
104 # enable automatic tunnels
105 ip link set sit0 up
106
107 # add v4compat addresses to device
108 for addr in $(ip -4 addr show scope global dev $DEVICE | \
109 awk '/inet/ { print $2 }' | awk -F"/" '{ print $1 }'); do
110 ip -6 addr add ::$addr dev $DEVICE
111 done
5726f160
AM
112fi
113
de1fc6ce
JR
114
115# This must be last line !
116# vi:syntax=sh:tw=78:ts=8:sw=4
This page took 0.052999 seconds and 4 git commands to generate.