odhcp6c: Add preliminary proto-handler
[openwrt/openwrt.git] / package / network / ipv6 / odhcp6c / files / dhcpv6.sh
1 #!/bin/sh
2
3 . /lib/functions.sh
4 . ../netifd-proto.sh
5 init_proto "$@"
6
7 proto_dhcpv6_init_config() {
8 proto_config_add_string "reqaddress"
9 proto_config_add_string "reqprefix"
10 proto_config_add_string "clientid"
11 proto_config_add_string "reqopts"
12 }
13
14 proto_dhcpv6_setup() {
15 local config="$1"
16 local iface="$2"
17
18 local reqaddress reqprefix clientid reqopts
19 json_get_vars reqaddress reqprefix clientid reqopts
20
21
22 # Configure
23 local opts=""
24 [ -n "$reqaddress" ] && append opts "-N$reqaddress"
25
26 [ -z "$reqprefix" -o "$reqprefix" = "auto" ] && reqprefix=0
27 [ "$reqprefix" != "no" ] && append opts "-P$reqprefix"
28
29 [ -n "$clientid" ] && append opts "-c$clientid"
30
31 for opt in $reqopts; do
32 append opts "-r$opt"
33 done
34
35
36 proto_export "INTERFACE=$config"
37 proto_run_command "$config" odhcp6c \
38 -s /lib/netifd/dhcpv6.script \
39 $opts $iface
40 }
41
42 proto_dhcpv6_teardown() {
43 local interface="$1"
44 proto_kill_command "$interface"
45 }
46
47 add_protocol dhcpv6
48