]>
Commit | Line | Data |
---|---|---|
12de71be | 1 | #!/bin/sh |
b0443108 | 2 | # |
b0443108 | 3 | # |
625871bd ER |
4 | # Adds all addresses of device. |
5 | # Called from ifup-post. | |
7742e157 | 6 | |
de1fc6ce JR |
7 | # Add all addresses |
8 | for IP_ADDR in $IPADDR_ALIASES; do | |
5e6dfc29 JR |
9 | [ -z "$IP_ADDR" ] && continue |
10 | # Be sure that primary address is added | |
11 | if [ "$IP_ADDR" = "$IP4ADDR" -o "$IP_ADDR" = "$IP6ADDR" ]; then | |
a51d5138 | 12 | if (ip addr show dev $DEVICE | grep -qE "[[:space:]]${IP_ADDR}[[:space:]]"); then |
5e6dfc29 JR |
13 | continue |
14 | fi | |
de1fc6ce | 15 | fi |
5e6dfc29 | 16 | if is_yes "${IPV4_NETWORKING}"; then |
2f6bb78f | 17 | ip -4 addr add ${IP_ADDR} dev ${DEVICE} brd + |
de1fc6ce | 18 | fi |
f3002e12 JK |
19 | done |
20 | ||
de1fc6ce | 21 | for IP_ADDR in $IPV6_ADDR; do |
5e6dfc29 JR |
22 | [ -z "$IP_ADDR" ] && continue |
23 | # Be sure that primary address is added | |
24 | if [ "$IP_ADDR" = "$IP4ADDR" -o "$IP_ADDR" = "$IP6ADDR" ]; then | |
a51d5138 | 25 | if (ip addr show dev $DEVICE | grep -qE "[[:space:]]${IP_ADDR}[[:space:]]"); then |
5e6dfc29 JR |
26 | continue |
27 | fi | |
de1fc6ce | 28 | fi |
5e6dfc29 JR |
29 | # Check for IPv6 address |
30 | if (echo $IP_ADDR | grep -q ":"); then | |
31 | if is_yes "${IPV6_NETWORKING}"; then | |
2f6bb78f | 32 | ip -6 addr add ${IP_ADDR} dev ${DEVICE} |
5e6dfc29 JR |
33 | fi |
34 | elif is_yes "${IPV4_NETWORKING}"; then | |
2f6bb78f | 35 | ip -4 addr add ${IP_ADDR} dev ${DEVICE} brd + |
74a7f2e4 | 36 | fi |
f3002e12 JK |
37 | done |
38 | ||
13118158 | 39 | for nr in $(awk 'BEGIN { max=0; }; /^IPADDR[0-9]+=/ { s = $0; gsub(/^IPADDR/, "", s); gsub(/=.*/, "", s); if (int(s) > int(max)) { max=s; }; }; END { for(j=1; j<=int(max); j++) print j } ' $CONFIG); do |
5e6dfc29 | 40 | eval IP_ADDR="\$IPADDR${nr}" |
13118158 AM |
41 | [ -z "$IP_ADDR" ] && continue |
42 | ||
5e6dfc29 JR |
43 | eval IP_ADDR_OPT="\$IP_AOPTS${nr}" |
44 | eval IP_ROUTE_OPT="\$IP_ROPTS${nr}" | |
b72b148f | 45 | eval IP_ADDR_LABEL="\$IP_LABEL${nr}" |
5e6dfc29 | 46 | |
5e6dfc29 JR |
47 | # Be sure that primary address is added |
48 | if [ "$IP_ADDR" = "$IP4ADDR" -o "$IP_ADDR" = "$IP6ADDR" ]; then | |
a51d5138 | 49 | if (ip addr show dev $DEVICE | grep -qE "[[:space:]]${IP_ADDR}[[:space:]]"); then |
5e6dfc29 JR |
50 | continue |
51 | fi | |
de1fc6ce | 52 | fi |
5e6dfc29 | 53 | # Check for IPv6 address |
2450b5fc | 54 | if echo $IP_ADDR | grep -q ":"; then |
5e6dfc29 JR |
55 | if is_yes "${IPV6_NETWORKING}"; then |
56 | ip -6 addr add ${IP_ADDR} dev ${DEVICE} ${IP_ADDR_OPT} | |
4cd28431 JR |
57 | if [ -n "${IP_ADDR_LABEL}" ]; then |
58 | ip -6 addrlabel add prefix ${IP_ADDR} dev ${DEVICE} label ${IP_ADDR_LABEL} | |
59 | fi | |
5e6dfc29 JR |
60 | fi |
61 | elif is_yes "${IPV4_NETWORKING}"; then | |
62 | # If broadcast is missing then autocalculate it | |
a51d5138 | 63 | if ! (echo $IP_ADDR_OPT | grep -qE "brd|broadcast"); then |
5e6dfc29 JR |
64 | IP_ADDR_OPT="brd + ${IP_ADDR_OPT}" |
65 | fi | |
66 | ip -4 addr add ${IP_ADDR} dev ${DEVICE} ${IP_ADDR_OPT} | |
de1fc6ce JR |
67 | fi |
68 | done | |
69 | ||
70 | # Setup IPv4-compatible addresses | |
16eb00d9 | 71 | if is_yes "$IPV6_NETWORKING" && [ "$BOOTPROTO6" = "v4compat" ]; then |
5e6dfc29 JR |
72 | # enable automatic tunnels |
73 | ip link set sit0 up | |
de1fc6ce | 74 | |
5e6dfc29 JR |
75 | # add v4compat addresses to device |
76 | for addr in $(ip -4 addr show scope global dev $DEVICE | \ | |
77 | awk '/inet/ { print $2 }' | awk -F"/" '{ print $1 }'); do | |
78 | ip -6 addr add ::$addr dev $DEVICE | |
79 | done | |
5726f160 | 80 | fi |