summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJouke Witteveen <j.witteveen@gmail.com>2013-04-13 14:31:21 +0200
committerJouke Witteveen <j.witteveen@gmail.com>2013-04-13 14:31:21 +0200
commit748fed60e3c4950b431d5d3c4fae70cb1cc59d4c (patch)
treecb0c58432daaf29e8cfac2493bf1a852c5293ffa
parent6116dfaf2e2c0fe51d1cd0998e697acb5136b481 (diff)
downloadnetctl-748fed60e3c4950b431d5d3c4fae70cb1cc59d4c.tar.gz
netctl-748fed60e3c4950b431d5d3c4fae70cb1cc59d4c.tar.xz
Allow IP6 address to be set in case IP6=stateless
Router advertisements can tell clients to not generate a public address automatically (AdvAutonomous off). Reported by: Jonne Haß
-rw-r--r--docs/netctl.profile.5.txt4
-rw-r--r--src/lib/ip6
2 files changed, 6 insertions, 4 deletions
diff --git a/docs/netctl.profile.5.txt b/docs/netctl.profile.5.txt
index 15234bb..9841a82 100644
--- a/docs/netctl.profile.5.txt
+++ b/docs/netctl.profile.5.txt
@@ -114,13 +114,13 @@ network. In particular, these connection types are +ethernet+,
An array of custom routes of the form +
`**<address range>** via **<gateway>**'.
-'Address6=()' [requires 'IP6=static']::
+'Address6=()' [requires 'IP6=static' or 'IP6=stateless']::
An array of IPv6 addresses. Prefix length may be specified via
`1234:bcd::11/64' syntax. It is possible to specify modifiers, in
particular, `1234:bcd::11/64 nodad' disables Duplicate Address
Detection for the address.
-'Gateway6=' [requires 'IP6=static']::
+'Gateway6=' [requires 'IP6=static' or 'IP6=stateless']::
An IPv6 routing gateway address.
'Routes6='::
diff --git a/src/lib/ip b/src/lib/ip
index c1f1fc7..8af7069 100644
--- a/src/lib/ip
+++ b/src/lib/ip
@@ -116,9 +116,11 @@ ip_set() {
;;
stateless)
sysctl -q -w "net.ipv6.conf.$interface_sysctl.accept_ra=1"
- ;;
+ ;;&
static)
sysctl -q -w "net.ipv6.conf.$interface_sysctl.accept_ra=0"
+ ;;&
+ stateless|static)
if [[ -n $Address6 ]]; then
for addr in "${Address6[@]}"; do
if ! do_debug ip -6 addr add $addr dev "$Interface"; then
@@ -147,7 +149,7 @@ ip_set() {
fi
# Set a custom gateway after DAD has finished
- if [[ $IP6 == "static" && $Gateway6 ]]; then
+ if [[ $IP6 == @(stateless|static) && $Gateway6 ]]; then
if ! do_debug ip -6 route replace default via "$Gateway6" dev "$Interface"; then
report_error "Could not set gateway '$Gateway6' on interface '$Interface'"
return 1