3 # $Id: ifup-aliases,v 1.11 2001/05/15 16:03:44 baggins Exp $
5 # adds all addresses of device $1
7 . /etc/sysconfig/network
8 . /etc/rc.d/init.d/functions
9 . /etc/sysconfig/network-scripts/.functions
11 # device name must be ifcfg-somename
15 nls "usage: %s <device name>" "ifup-aliases" >&2
19 if [ -f "/etc/sysconfig/interfaces/ifcfg-$DEV" ] ; then
20 CONFIG="/etc/sysconfig/interfaces/ifcfg-$DEV"
27 # set all major variables
31 for IP_ADDR in $IPADDR_ALIASES; do
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
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}"
47 ip -4 addr add ${IP_ADDR} dev ${DEVICE} ${IP_ADDR_OPT}
51 for IP_ADDR in $IPV6_ADDR; do
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
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}
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}"
72 ip -4 addr add ${IP_ADDR} dev ${DEVICE} ${IP_ADDR_OPT}
76 for 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}"
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
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}
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}"
98 ip -4 addr add ${IP_ADDR} dev ${DEVICE} ${IP_ADDR_OPT}
102 # Setup IPv4-compatible addresses
103 if is_yes "$IPV6_NETWORKING" && [ "$BOOTMETHOD6" = "v4compat" ]; then
104 # enable automatic tunnels
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
115 # This must be last line !
116 # vi:syntax=sh:tw=78:ts=8:sw=4