2 [ -z "$2" ] && echo "Error: should be run by odhcpc6c" && exit 1
10 grep -v "#odhcp6c:$device:" /etc
/resolv.conf
> /tmp
/resolv.conf.tmp
12 echo "nameserver $c #odhcp6c:$device:" >> /tmp
/resolv.conf.tmp
14 mv /tmp
/resolv.conf.tmp
/etc
/resolv.conf
15 ) 9>/tmp
/resolv.conf.lock
16 rm -f /tmp
/resolv.conf.lock
/tmp
/resolv.conf.tmp
23 for radns
in $RA_DNS; do
26 [ "$radns" = "$dns" ] && duplicate
=1
28 [ "$duplicate" = 0 ] && RDNSS
="$RDNSS $radns"
33 if [ -z "$dnspart" ]; then
36 dnspart
="$dnspart, \"$dns\""
40 update_resolv
"$device" "$dns"
43 for entry
in $PREFIXES; do
44 local addr
="${entry%%,*}"
46 local preferred
="${entry%%,*}"
48 local valid
="${entry%%,*}"
50 [ "$entry" = "$valid" ] && entry
=
55 while [ -n "$entry" ]; do
56 local key
="${entry%%=*}"
58 local val
="${entry%%,*}"
60 [ "$entry" = "$val" ] && entry
=
62 if [ "$key" = "class" ]; then
63 class
=", \"class\": $val"
64 elif [ "$key" = "excluded" ]; then
65 excluded
=", \"excluded\": \"$val\""
69 local prefix
="{\"address\": \"$addr\", \"preferred\": $preferred, \"valid\": $valid $class $excluded}"
71 if [ -z "$prefixpart" ]; then
74 prefixpart
="$prefixpart, $prefix"
77 # TODO: delete this somehow when the prefix disappears
78 ip
-6 route add unreachable
"$addr"
81 ip
-6 route flush dev
"$device"
82 ip
-6 address flush dev
"$device" scope global
85 for entry
in $RA_ADDRESSES; do
87 local addr
="${entry%%/*}"
88 for dentry
in $ADDRESSES; do
89 local daddr
="${dentry%%/*}"
90 [ "$addr" = "$daddr" ] && duplicate
=1
92 [ "$duplicate" = "0" ] && ADDRESSES
="$ADDRESSES $entry"
95 for entry
in $ADDRESSES; do
96 local addr
="${entry%%,*}"
98 local preferred
="${entry%%,*}"
100 local valid
="${entry%%,*}"
102 ip
-6 address add
"$addr" dev
"$device" preferred_lft
"$preferred" valid_lft
"$valid"
105 for entry
in $RA_ROUTES; do
106 local addr
="${entry%%,*}"
108 local gw
="${entry%%,*}"
110 local valid
="${entry%%,*}"
112 local metric
="${entry%%,*}"
114 if [ -n "$gw" ]; then
115 ip
-6 route add
"$addr" via
"$gw" metric
"$metric" dev
"$device" from
"::/128"
117 ip
-6 route add
"$addr" metric
"$metric" dev
"$device"
120 for prefix
in $PREFIXES; do
121 local paddr
="${prefix%%,*}"
122 [ -n "$gw" ] && ip
-6 route add
"$addr" via
"$gw" metric
"$metric" dev
"$device" from
"$paddr"
127 teardown_interface
() {
129 ip
-6 route flush dev
"$device"
130 ip
-6 address flush dev
"$device" scope global
131 update_resolv
"$device" ""
136 teardown_interface
"$1"
139 informed|updated|rebound|ra-updated
)
143 teardown_interface
"$1"
146 teardown_interface
"$1"
151 [ -f /etc
/odhcp6c.user
] && .
/etc
/odhcp6c.user