]>
Commit | Line | Data |
---|---|---|
12de71be | 1 | #!/bin/sh |
b0443108 | 2 | # |
ec8b15cb | 3 | # $Id$ |
b0443108 | 4 | # |
de1fc6ce | 5 | # adds all addresses of device $1 |
7742e157 | 6 | |
de1fc6ce JR |
7 | # Add all addresses |
8 | for IP_ADDR in $IPADDR_ALIASES; do | |
5e6dfc29 JR |
9 | IP_ADDR_OPT="" |
10 | IP_ROUTE_OPT="" | |
11 | ||
12 | [ -z "$IP_ADDR" ] && continue | |
13 | # Be sure that primary address is added | |
14 | if [ "$IP_ADDR" = "$IP4ADDR" -o "$IP_ADDR" = "$IP6ADDR" ]; then | |
15 | if (ip addr show dev $DEVICE | egrep -q "[[:space:]]${IP_ADDR}[[:space:]]"); then | |
16 | continue | |
17 | fi | |
de1fc6ce | 18 | fi |
5e6dfc29 JR |
19 | if is_yes "${IPV4_NETWORKING}"; then |
20 | # If broadcast is missing then autocalculate it | |
21 | if ! (echo $IP_ADDR_OPT | egrep -q "brd|broadcast"); then | |
22 | IP_ADDR_OPT="brd + ${IP_ADDR_OPT}" | |
23 | fi | |
24 | ip -4 addr add ${IP_ADDR} dev ${DEVICE} ${IP_ADDR_OPT} | |
de1fc6ce | 25 | fi |
f3002e12 JK |
26 | done |
27 | ||
de1fc6ce | 28 | for IP_ADDR in $IPV6_ADDR; do |
5e6dfc29 JR |
29 | IP_ADDR_OPT="" |
30 | IP_ROUTE_OPT="" | |
31 | ||
32 | [ -z "$IP_ADDR" ] && continue | |
33 | # Be sure that primary address is added | |
34 | if [ "$IP_ADDR" = "$IP4ADDR" -o "$IP_ADDR" = "$IP6ADDR" ]; then | |
35 | if (ip addr show dev $DEVICE | egrep -q "[[:space:]]${IP_ADDR}[[:space:]]"); then | |
36 | continue | |
37 | fi | |
de1fc6ce | 38 | fi |
5e6dfc29 JR |
39 | # Check for IPv6 address |
40 | if (echo $IP_ADDR | grep -q ":"); then | |
41 | if is_yes "${IPV6_NETWORKING}"; then | |
42 | ip -6 addr add ${IP_ADDR} dev ${DEVICE} ${IP_ADDR_OPT} | |
43 | fi | |
44 | elif is_yes "${IPV4_NETWORKING}"; then | |
45 | # If broadcast is missing then autocalculate it | |
46 | if ! (echo $IP_ADDR_OPT | egrep -q "brd|broadcast"); then | |
47 | IP_ADDR_OPT="brd + ${IP_ADDR_OPT}" | |
48 | fi | |
49 | ip -4 addr add ${IP_ADDR} dev ${DEVICE} ${IP_ADDR_OPT} | |
74a7f2e4 | 50 | fi |
f3002e12 JK |
51 | done |
52 | ||
13118158 | 53 | 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 | 54 | eval IP_ADDR="\$IPADDR${nr}" |
13118158 AM |
55 | [ -z "$IP_ADDR" ] && continue |
56 | ||
5e6dfc29 JR |
57 | eval IP_ADDR_OPT="\$IP_AOPTS${nr}" |
58 | eval IP_ROUTE_OPT="\$IP_ROPTS${nr}" | |
59 | ||
5e6dfc29 JR |
60 | # Be sure that primary address is added |
61 | if [ "$IP_ADDR" = "$IP4ADDR" -o "$IP_ADDR" = "$IP6ADDR" ]; then | |
62 | if (ip addr show dev $DEVICE | egrep -q "[[:space:]]${IP_ADDR}[[:space:]]"); then | |
63 | continue | |
64 | fi | |
de1fc6ce | 65 | fi |
5e6dfc29 JR |
66 | # Check for IPv6 address |
67 | if (echo $IP_ADDR | grep -q ":"); then | |
68 | if is_yes "${IPV6_NETWORKING}"; then | |
69 | ip -6 addr add ${IP_ADDR} dev ${DEVICE} ${IP_ADDR_OPT} | |
70 | fi | |
71 | elif is_yes "${IPV4_NETWORKING}"; then | |
72 | # If broadcast is missing then autocalculate it | |
73 | if ! (echo $IP_ADDR_OPT | egrep -q "brd|broadcast"); then | |
74 | IP_ADDR_OPT="brd + ${IP_ADDR_OPT}" | |
75 | fi | |
76 | ip -4 addr add ${IP_ADDR} dev ${DEVICE} ${IP_ADDR_OPT} | |
de1fc6ce JR |
77 | fi |
78 | done | |
79 | ||
80 | # Setup IPv4-compatible addresses | |
16eb00d9 | 81 | if is_yes "$IPV6_NETWORKING" && [ "$BOOTPROTO6" = "v4compat" ]; then |
5e6dfc29 JR |
82 | # enable automatic tunnels |
83 | ip link set sit0 up | |
de1fc6ce | 84 | |
5e6dfc29 JR |
85 | # add v4compat addresses to device |
86 | for addr in $(ip -4 addr show scope global dev $DEVICE | \ | |
87 | awk '/inet/ { print $2 }' | awk -F"/" '{ print $1 }'); do | |
88 | ip -6 addr add ::$addr dev $DEVICE | |
89 | done | |
5726f160 AM |
90 | fi |
91 | ||
de1fc6ce | 92 | # This must be last line ! |
5e6dfc29 | 93 | # vi:syntax=sh |