Ignore:
Timestamp:
2011-12-20T20:24:52+01:00 (4 years ago)
Author:
jow
Message:

[packages_10.03.1] wide-dhcpv6: merge r28079 and r29589

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/packages_10.03.1/ipv6/wide-dhcpv6/files/dhcp6c.init

    r29160 r29590  
    1 #!/bin/sh /etc/rc.common  
     1#!/bin/sh /etc/rc.common 
    22 
    33DHCP6C_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' 
     
    2929 
    3030        case "$mac" in 
    31                 $pat:$pat:$pat:$pat:$pat:$pat:$pat:$pat:$pat:$pat) 
    32                         printf $(echo "$mac" | sed -e 's/^/\\x/; s/:/\\x/g') 
    33                         logger -t dhcp6c "Using user provided DUID $mac" 
    34                 ;; 
     31                # exactly 6 octets -> assume type 3 (DUID-LL - RFC3315, 9.4) 
    3532                $pat:$pat:$pat:$pat:$pat:$pat) 
    3633                        local oIFS="$IFS"; IFS=":"; set -- $mac; IFS="$oIFS" 
     
    4845                        logger -t dhcp6c "Using MAC address DUID 00:03:00:06:$1:$2:$3:$4:$5:$6" 
    4946                ;; 
     47                # at least 7 octets -> could be type 1 or type 2 
     48                $pat:$pat:$pat:$pat:$pat:$pat:*) 
     49                        local len_id=":$(echo "$mac" | sed -e 's/[^:]//g')" 
     50                        local len_hi=$(printf "%02x" $((${#len_id} / 0xFF)) ) 
     51                        local len_lo=$(printf "%02x" $((${#len_id} % 0xFF)) ) 
     52 
     53                        # low endian 
     54                        if [ "$(printf \\1 | hexdump -n1 -ve '8/2 "" "%04x" ""')" = "0001" ]; then 
     55                                printf \\x$len_lo\\x$len_hi 
     56 
     57                        # big endian 
     58                        else 
     59                                printf \\x$len_hi\\x$len_lo 
     60                        fi 
     61 
     62                        printf $(echo "$mac" | sed -e 's/^/\\x/; s/:/\\x/g') 
     63                        logger -t dhcp6c "Using user provided DUID $mac" 
     64                ;; 
    5065                *) 
    5166                        logger -t dhcp6c "Unable to derive DUID from interface '$client_device' and no valid user DUID given" 
     
    5974        local sla_len 
    6075        local enabled 
    61          
     76 
    6277        config_get_bool enabled "$cfg" enabled 0 
    63           
     78 
    6479        if [ $enabled -ne 0 ]; then 
    65          
    6680                config_get sla_id "$cfg" sla_id 
    6781                config_get sla_len "$cfg" sla_len 
     
    7185                printf '\t\tsla-len %s;\n' "$sla_len" 
    7286                printf '\t};\n' 
    73          
    7487        fi 
    75          
    7688} 
    7789 
     
    8193 
    8294dhcp6c_write_config() { 
    83  
    8495        local pd 
    8596        local na 
    8697        config_get_bool pd basic pd 0 
    8798        config_get_bool na basic na 0 
    88          
     99 
    89100        printf 'interface %s {\n' "$client_ifname" 
    90          
     101 
    91102        if [ $pd -ne 0 ]; then 
    92103                printf '\tsend ia-pd 0;\n' 
    93104        fi 
    94          
     105 
    95106        if [ $na -ne 0 ]; then 
    96107                printf '\tsend ia-na 0;\n' 
    97108        fi 
    98          
     109 
    99110        local rapid_commit 
    100111        config_get_bool rapid_commit basic rapid_commit 0 
    101112        [ $rapid_commit -ne 0 ] && printf '\tsend rapid-commit;\n' 
    102          
     113 
    103114        local script 
    104115        config_get script basic script 
    105116        [ "$script" != "" ] && printf '\tscript "%s";\n' "$script" 
    106          
     117 
    107118        local request 
    108119        local value 
     
    113124 
    114125        printf '};\n\n' 
    115          
     126 
    116127        if [ $pd -ne 0 ]; then 
    117128                printf 'id-assoc pd 0 {\n' 
     
    119130                printf '};\n\n' 
    120131        fi 
    121          
     132 
    122133        if [ $na -ne 0 ]; then 
    123134                printf 'id-assoc na 0 {\n' 
    124135                printf '};\n\n' 
    125136        fi 
    126          
     137 
    127138        return 0 
    128139} 
    129140 
    130141start() { 
    131  
    132142        [ ! -e /etc/dhcp6cctlkey ] && `dd if=/dev/urandom count=1 2> /dev/null | md5sum | cut -d" " -f1 > /etc/dhcp6cctlkey` 
    133143 
     
    137147 
    138148        config_load "dhcp6c" 
    139          
     149 
    140150        local enabled 
    141151        config_get_bool enabled basic enabled 0 
     
    146156 
    147157        logger -t dhcp6c starting dhcp6c 
    148          
     158 
    149159        local client_interface 
    150160        config_get client_interface basic interface 
    151161        local client_ifname=$(get_ifname "$client_interface") 
    152162        local client_device=$(get_device "$client_interface" "$client_ifname") 
    153          
     163 
    154164        local config_file="/var/etc/dhcp6c.conf" 
    155165        local duid_file="/var/dhcp6c_duid" 
     
    157167        dhcp6c_write_config > $config_file 
    158168        dhcp6c_write_duid "$user_duid" > $duid_file 
    159          
     169 
    160170        local debug 
    161171        local debug_option 
     
    163173        [ $debug -eq 1 ] && debug_option="-D" 
    164174        /usr/sbin/dhcp6c -c $config_file $debug_option $client_ifname 
    165          
     175 
    166176        sleep 3 
    167177        ACTION=start /sbin/hotplug-call dhcp6c 
    168          
     178 
    169179        return 0 
    170          
    171180} 
    172181 
    173182stop() { 
    174  
    175183        logger -t dhcp6c stopping dhcp6c 
    176184        service_kill dhcp6c /var/run/dhcp6c.pid 
     
    178186        ACTION=stop /sbin/hotplug-call dhcp6c 
    179187        return 0 
    180          
    181188} 
    182189 
Note: See TracChangeset for help on using the changeset viewer.