]> TLD Linux GIT Repositories - rc-scripts.git/blob - lib/ifup-aliases
- disable lock checks (happens on LUKS2 and fails during system boot)
[rc-scripts.git] / lib / ifup-aliases
1 #!/bin/sh
2 #
3 #
4 # Adds all addresses of device.
5 # Called from ifup-post.
6
7 # Add all addresses
8 for IP_ADDR in $IPADDR_ALIASES; do
9         [ -z "$IP_ADDR" ] && continue
10         # Be sure that primary address is added
11         if [ "$IP_ADDR" = "$IP4ADDR" -o "$IP_ADDR" = "$IP6ADDR" ]; then
12                 if (ip addr show dev $DEVICE | grep -qE "[[:space:]]${IP_ADDR}[[:space:]]"); then
13                         continue
14                 fi
15         fi
16         if is_yes "${IPV4_NETWORKING}"; then
17                 ip -4 addr add ${IP_ADDR} dev ${DEVICE} brd +
18         fi
19 done
20
21 for IP_ADDR in $IPV6_ADDR; do
22         [ -z "$IP_ADDR" ] && continue
23         # Be sure that primary address is added
24         if [ "$IP_ADDR" = "$IP4ADDR" -o "$IP_ADDR" = "$IP6ADDR" ]; then
25                 if (ip addr show dev $DEVICE | grep -qE "[[:space:]]${IP_ADDR}[[:space:]]"); then
26                         continue
27                 fi
28         fi
29         # Check for IPv6 address
30         if (echo $IP_ADDR | grep -q ":"); then
31                 if is_yes "${IPV6_NETWORKING}"; then
32                         ip -6 addr add ${IP_ADDR} dev ${DEVICE}
33                 fi
34         elif is_yes "${IPV4_NETWORKING}"; then
35                 ip -4 addr add ${IP_ADDR} dev ${DEVICE} brd +
36         fi
37 done
38
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
40         eval IP_ADDR="\$IPADDR${nr}"
41         [ -z "$IP_ADDR" ] && continue
42
43         eval IP_ADDR_OPT="\$IP_AOPTS${nr}"
44         eval IP_ROUTE_OPT="\$IP_ROPTS${nr}"
45         eval IP_ADDR_LABEL="\$IP_LABEL${nr}"
46
47         # Be sure that primary address is added
48         if [ "$IP_ADDR" = "$IP4ADDR" -o "$IP_ADDR" = "$IP6ADDR" ]; then
49                 if (ip addr show dev $DEVICE | grep -qE "[[:space:]]${IP_ADDR}[[:space:]]"); then
50                         continue
51                 fi
52         fi
53         # Check for IPv6 address
54         if echo $IP_ADDR | grep -q ":"; then
55                 if is_yes "${IPV6_NETWORKING}"; then
56                         ip -6 addr add ${IP_ADDR} dev ${DEVICE} ${IP_ADDR_OPT}
57                         if [ -n "${IP_ADDR_LABEL}" ]; then
58                                 ip -6 addrlabel add prefix ${IP_ADDR} dev ${DEVICE} label ${IP_ADDR_LABEL}
59                         fi
60                 fi
61         elif is_yes "${IPV4_NETWORKING}"; then
62                 # If broadcast is missing then autocalculate it
63                 if ! (echo $IP_ADDR_OPT | grep -qE "brd|broadcast"); then
64                         IP_ADDR_OPT="brd + ${IP_ADDR_OPT}"
65                 fi
66                 ip -4 addr add ${IP_ADDR} dev ${DEVICE} ${IP_ADDR_OPT}
67         fi
68 done
69
70 # Setup IPv4-compatible addresses
71 if is_yes "$IPV6_NETWORKING" && [ "$BOOTPROTO6" = "v4compat" ]; then
72         # enable automatic tunnels
73         ip link set sit0 up
74
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
80 fi