1 #!/bin/sh /etc/rc.common
3 DHCP6C_REQUEST_OPTIONS='domain_name_servers domain_name ntp_servers sip_server_address sip_domain_name nis_server_address nis_domain_name nisp_server_address nisp_domain_name bcmcs_server_address bcmcs_domain_name'
9 config_get ifname "$interface" ifname
10 printf '%s\n' "$ifname"
14 dhcp6c_write_interface() {
20 config_get_bool enabled "$cfg" enabled 0
22 if [ $enabled -ne 0 ]; then
24 config_get sla_id "$cfg" sla_id
25 config_get sla_len "$cfg" sla_len
27 printf '\tprefix-interface %s {\n' "$(get_ifname $cfg)"
28 printf '\t\tsla-id %s;\n' "$sla_id"
29 printf '\t\tsla-len %s;\n' "$sla_len"
36 dhcp6c_write_request() {
37 printf '\trequest %s;\n' $1 | sed -e s/_/-/g
40 dhcp6c_write_config() {
44 config_get_bool pd basic pd 0
45 config_get_bool na basic na 0
47 printf 'interface %s {\n' "$client_ifname"
49 if [ $pd -ne 0 ]; then
50 printf '\tsend ia-pd 0;\n'
53 if [ $na -ne 0 ]; then
54 printf '\tsend ia-na 0;\n'
58 config_get_bool rapid_commit basic rapid_commit 0
59 [ $rapid_commit -ne 0 ] && printf '\tsend rapid-commit;\n'
62 config_get script basic script
63 [ "$script" != "" ] && printf '\tscript "%s";\n' "$script"
67 for request in $DHCP6C_REQUEST_OPTIONS; do
68 config_get_bool value basic "$request" 0
69 [ $value -ne 0 ] && dhcp6c_write_request "$request"
74 if [ $pd -ne 0 ]; then
75 printf 'id-assoc pd 0 {\n'
76 config_foreach dhcp6c_write_interface interface
80 if [ $na -ne 0 ]; then
81 printf 'id-assoc na 0 {\n'
90 [ ! -e /etc/dhcp6cctlkey ] && `dd if=/dev/urandom count=1 2> /dev/null | md5sum | cut -d" " -f1 > /etc/dhcp6cctlkey`
92 [ -e /var/run/dhcp6c.pid ] && return 0
99 config_get_bool enabled basic enabled 0
100 [ $enabled -eq 0 ] && return 0
102 logger starting dhcp6c
104 local client_interface
105 config_get client_interface basic interface
106 local client_ifname=$(get_ifname "$client_interface")
108 local config_file="/var/etc/dhcp6c.conf"
109 mkdir -m 755 -p /var/etc
110 dhcp6c_write_config > $config_file
112 /usr/sbin/dhcp6c -c $config_file $client_ifname
115 ACTION=start /sbin/hotplug-call dhcp6c
123 logger stopping dhcp6c
124 rm -f /var/etc/dhcp6c.conf
125 kill -TERM `cat /var/run/dhcp6c.pid`
126 ACTION=stop /sbin/hotplug-call dhcp6c