diff options
Diffstat (limited to 'package/network/ipv6/odhcp6c/files/dhcpv6.sh')
-rwxr-xr-x | package/network/ipv6/odhcp6c/files/dhcpv6.sh | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/package/network/ipv6/odhcp6c/files/dhcpv6.sh b/package/network/ipv6/odhcp6c/files/dhcpv6.sh new file mode 100755 index 000000000..14b6fb63b --- /dev/null +++ b/package/network/ipv6/odhcp6c/files/dhcpv6.sh @@ -0,0 +1,48 @@ +#!/bin/sh + +. /lib/functions.sh +. ../netifd-proto.sh +init_proto "$@" + +proto_dhcpv6_init_config() { + proto_config_add_string "reqaddress" + proto_config_add_string "reqprefix" + proto_config_add_string "clientid" + proto_config_add_string "reqopts" +} + +proto_dhcpv6_setup() { + local config="$1" + local iface="$2" + + local reqaddress reqprefix clientid reqopts + json_get_vars reqaddress reqprefix clientid reqopts + + + # Configure + local opts="" + [ -n "$reqaddress" ] && append opts "-N$reqaddress" + + [ -z "$reqprefix" -o "$reqprefix" = "auto" ] && reqprefix=0 + [ "$reqprefix" != "no" ] && append opts "-P$reqprefix" + + [ -n "$clientid" ] && append opts "-c$clientid" + + for opt in $reqopts; do + append opts "-r$opt" + done + + + proto_export "INTERFACE=$config" + proto_run_command "$config" odhcp6c \ + -s /lib/netifd/dhcpv6.script \ + $opts $iface +} + +proto_dhcpv6_teardown() { + local interface="$1" + proto_kill_command "$interface" +} + +add_protocol dhcpv6 + |