Changeset 31182


Ignore:
Timestamp:
2012-04-03T00:31:21+02:00 (6 years ago)
Author:
jow
Message:

dnsmasq: configure dnsmasq via flat config file and not command-line args

Sometimes it's useful to compare the generated config file from UCI config with a hand-edited dnsmasq config file, especially if you're migrating to an OpenWRT router from something else (such as Astlinux).

Putting the generated config makes it easier to capture and diff, etc.

Signed-off-by: Philip Prindeville <philipp@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/dnsmasq/files/dnsmasq.init

    r31058 r31182  
    88DNS_SERVERS="" 
    99DOMAIN="" 
     10 
     11CONFIGFILE="/var/etc/dnsmasq.conf" 
     12 
     13xappend() { 
     14        local value="$1" 
     15 
     16        echo "${value#--}" >> $CONFIGFILE 
     17} 
    1018 
    1119dhcp_calc() { 
     
    2836        local _loctmp 
    2937        config_get_bool _loctmp "$section" "$option" 0 
    30         [ $_loctmp -gt 0 ] && append args "$value" 
     38        [ $_loctmp -gt 0 ] && xappend "$value" 
    3139} 
    3240 
     
    3846        config_get _loctmp "$section" "$option" 
    3947        [ -z "$_loctmp" ] && return 0 
    40         append args "$switch $_loctmp" 
     48        xappend "$switch=$_loctmp" 
    4149} 
    4250 
    4351append_server() { 
    44         append args "-S $1" 
     52        xappend "--server=$1" 
    4553} 
    4654 
    4755append_interface() { 
    4856        local ifname=$(uci_get_state network "$1" ifname "$1") 
    49         append args "-i $ifname" 
     57        xappend "--interface=$ifname" 
    5058} 
    5159 
    5260append_notinterface() { 
    5361        local ifname=$(uci_get_state network "$1" ifname "$1") 
    54         append args "-I $ifname" 
     62        xappend "--except-interface=$ifname" 
    5563} 
    5664 
    5765append_addnhosts() { 
    58         append args "-H $1" 
     66        xappend "--addn-hosts=$1" 
    5967} 
    6068 
    6169append_bogusnxdomain() { 
    62        append args "-B $1" 
     70       xappend "--bogus-nxdomain=$1" 
    6371} 
    6472 
    6573dnsmasq() { 
    6674        local cfg="$1" 
    67         append_bool "$cfg" authoritative "-K" 
    68         append_bool "$cfg" nodaemon "-d" 
    69         append_bool "$cfg" domainneeded "-D" 
    70         append_bool "$cfg" filterwin2k "-f" 
    71         append_bool "$cfg" nohosts "-h" 
    72         append_bool "$cfg" nonegcache "-N" 
    73         append_bool "$cfg" strictorder "-o" 
    74         append_bool "$cfg" logqueries "-q" 
    75         append_bool "$cfg" noresolv "-R" 
    76         append_bool "$cfg" localise_queries "-y" 
    77         append_bool "$cfg" readethers "-Z" 
    78         append_bool "$cfg" dbus "-1" 
    79         append_bool "$cfg" boguspriv "-b" 
    80         append_bool "$cfg" expandhosts "-E" 
     75        append_bool "$cfg" authoritative "--dhcp-authoritative" 
     76        append_bool "$cfg" nodaemon "--no-daemon" 
     77        append_bool "$cfg" domainneeded "--domain-needed" 
     78        append_bool "$cfg" filterwin2k "--filterwin2k" 
     79        append_bool "$cfg" nohosts "--no-hosts" 
     80        append_bool "$cfg" nonegcache "--no-negcache" 
     81        append_bool "$cfg" strictorder "--strict-order" 
     82        append_bool "$cfg" logqueries "--log-queries" 
     83        append_bool "$cfg" noresolv "--no-resolv" 
     84        append_bool "$cfg" localise_queries "--localise-queries" 
     85        append_bool "$cfg" readethers "--read-ethers" 
     86        append_bool "$cfg" dbus "--enable-dbus" 
     87        append_bool "$cfg" boguspriv "--bogus-priv" 
     88        append_bool "$cfg" expandhosts "--expand-hosts" 
    8189        append_bool "$cfg" enable_tftp "--enable-tftp" 
    82         append_bool "$cfg" nonwildcard "-z" 
    83  
    84         append_parm "$cfg" dhcpscript "-6" 
    85         append_parm "$cfg" cachesize "-c" 
    86         append_parm "$cfg" dnsforwardmax "-0" 
    87         append_parm "$cfg" port "-p" 
    88         append_parm "$cfg" ednspacket_max "-P" 
    89         append_parm "$cfg" dhcpleasemax "-X" 
    90         append_parm "$cfg" "queryport" "-Q" 
    91         append_parm "$cfg" "domain" "-s" 
    92         append_parm "$cfg" "local" "-S" 
     90        append_bool "$cfg" nonwildcard "--bind-interfaces" 
     91 
     92        append_parm "$cfg" dhcpscript "--dhcp-script" 
     93        append_parm "$cfg" cachesize "--cache-size" 
     94        append_parm "$cfg" dnsforwardmax "--dns-forward-max" 
     95        append_parm "$cfg" port "--port" 
     96        append_parm "$cfg" ednspacket_max "--edns-packet-max" 
     97        append_parm "$cfg" dhcpleasemax "--dhcp-lease-max" 
     98        append_parm "$cfg" "queryport" "--query-port" 
     99        append_parm "$cfg" "domain" "--domain" 
     100        append_parm "$cfg" "local" "--server" 
    93101        config_list_foreach "$cfg" "server" append_server 
    94102        config_list_foreach "$cfg" "interface" append_interface 
     
    96104        config_list_foreach "$cfg" "addnhosts" append_addnhosts 
    97105        config_list_foreach "$cfg" "bogusnxdomain" append_bogusnxdomain 
    98         append_parm "$cfg" "leasefile" "-l" 
    99         append_parm "$cfg" "resolvfile" "-r" 
     106        append_parm "$cfg" "leasefile" "--dhcp-leasefile" 
     107        append_parm "$cfg" "resolvfile" "--resolv-file" 
    100108        append_parm "$cfg" "tftp_root" "--tftp-root" 
    101109        append_parm "$cfg" "dhcp_boot" "--dhcp-boot" 
     
    111119 
    112120        config_get hostsfile "$cfg" dhcphostsfile 
    113         [ -e "$hostsfile" ] && append args "--dhcp-hostsfile=$hostsfile" 
     121        [ -e "$hostsfile" ] && xappend "--dhcp-hostsfile=$hostsfile" 
    114122 
    115123        local rebind 
     
    119127                        "DNS rebinding protection is active," \ 
    120128                        "will discard upstream RFC1918 responses!" 
    121                 append args "--stop-dns-rebind" 
     129                xappend "--stop-dns-rebind" 
    122130 
    123131                local rebind_localhost 
     
    125133                [ $rebind_localhost -gt 0 ] && { 
    126134                        logger -t dnsmasq "Allowing 127.0.0.0/8 responses" 
    127                         append args "--rebind-localhost-ok" 
     135                        xappend "--rebind-localhost-ok" 
    128136                } 
    129137 
    130138                append_rebind_domain() { 
    131139                        logger -t dnsmasq "Allowing RFC1918 responses for domain $1" 
    132                         append args "--rebind-domain-ok=$1" 
     140                        xappend "--rebind-domain-ok=$1" 
    133141                } 
    134142 
    135143                config_list_foreach "$cfg" rebind_domain append_rebind_domain 
    136144        } 
     145 
     146        echo >> $CONFIGFILE 
    137147} 
    138148 
     
    146156        [ -n "$subscriberid" ] || return 0 
    147157 
    148         append args "--dhcp-subscrid=$networkid,$subscriberid" 
     158        xappend "--dhcp-subscrid=$networkid,$subscriberid" 
    149159 
    150160        dhcp_option_add "$cfg" "$networkid" 
     
    160170        [ -n "$remoteid" ] || return 0 
    161171 
    162         append args "--dhcp-remoteid=$networkid,$remoteid" 
     172        xappend "--dhcp-remoteid=$networkid,$remoteid" 
    163173 
    164174        dhcp_option_add "$cfg" "$networkid" 
     
    174184        [ -n "$circuitid" ] || return 0 
    175185 
    176         append args "--dhcp-circuitid=$networkid,$circuitid" 
     186        xappend "--dhcp-circuitid=$networkid,$circuitid" 
    177187 
    178188        dhcp_option_add "$cfg" "$networkid" 
     
    188198        [ -n "$userclass" ] || return 0 
    189199 
    190         append args "--dhcp-userclass=$networkid,$userclass" 
     200        xappend "--dhcp-userclass=$networkid,$userclass" 
    191201 
    192202        dhcp_option_add "$cfg" "$networkid" 
     
    202212        [ -n "$vendorclass" ] || return 0 
    203213 
    204         append args "--dhcp-vendorclass=$networkid,$vendorclass" 
     214        xappend "--dhcp-vendorclass=$networkid,$vendorclass" 
    205215 
    206216        dhcp_option_add "$cfg" "$networkid" 
     
    222232        [ -n "$macs" ] || return 0 
    223233 
    224         append args "--dhcp-host=$macs${networkid:+,net:$networkid}${ip:+,$ip}${name:+,$name}" 
     234        xappend "--dhcp-host=$macs${networkid:+,net:$networkid}${ip:+,$ip}${name:+,$name}" 
    225235} 
    226236 
     
    234244        [ -n "$mac" ] || return 0 
    235245 
    236         append args "--dhcp-mac=$networkid,$mac" 
     246        xappend "--dhcp-mac=$networkid,$mac" 
    237247 
    238248        dhcp_option_add "$cfg" "$networkid" 
     
    253263        [ -n "$serveraddress" ] || return 0 
    254264 
    255         append args "--dhcp-boot=${networkid:+net:$networkid,}$filename,$servername,$serveraddress" 
     265        xappend "--dhcp-boot=${networkid:+net:$networkid,}$filename,$servername,$serveraddress" 
    256266 
    257267        dhcp_option_add "$cfg" "$networkid" 
     
    275285        } 
    276286 
    277         append_bool "$cfg" ignore "-2 $ifname" && return 0 
     287        append_bool "$cfg" ignore "--no-dhcp-interface=$ifname" && return 0 
    278288 
    279289        config_get proto "$net" proto 
     
    307317        eval "$(ipcalc.sh $ipaddr $netmask $start $limit)" 
    308318        if [ "$dynamicdhcp" = "0" ]; then END="static"; fi 
    309         append args "--dhcp-range=$networkid,$START,$END,$NETMASK,$leasetime${options:+ $options}" 
     319        xappend "--dhcp-range=$networkid,$START,$END,$NETMASK,$leasetime${options:+ $options}" 
    310320 
    311321        dhcp_option_add "$cfg" "$networkid" 
     
    318328        config_get dhcp_option "$cfg" dhcp_option 
    319329        for o in $dhcp_option; do 
    320                 append args "-O $networkid","$o" 
     330                xappend "--dhcp-option=$networkid","$o" 
    321331        done 
    322332 
     
    342352                        fqdn="$fqdn${DOMAIN:+.$DOMAIN}" 
    343353 
    344                 append args "-A /$fqdn/$ip" 
     354                xappend "--address=/$fqdn/$ip" 
    345355 
    346356                [ -n "$raddr" ] && { 
    347                         append args "--ptr-record=$raddr,$fqdn" 
     357                        xappend "--ptr-record=$raddr,$fqdn" 
    348358                        raddr="" 
    349359                } 
     
    368378        local service="$srv,$target,$port${class:+,$class${weight:+,$weight}}" 
    369379 
    370         append args "-W $service" 
     380        xappend "--srv-host=$service" 
    371381} 
    372382 
     
    398408        [ -n "$target" ] || return 0 
    399409 
    400         append args "--cname=${cname},${target}" 
     410        xappend "--cname=${cname},${target}" 
    401411} 
    402412 
     
    410420        config_load dhcp 
    411421 
     422        # before we can call xappend 
     423        mkdir -p $(dirname $CONFIGFILE) 
     424 
     425        echo "# auto-generated config file from /etc/config/dhcp" > $CONFIGFILE 
     426 
     427        # if we did this last, we could override auto-generated config 
     428        [ -f /etc/dnsmasq.conf ] && { 
     429                xappend "--conf-file=/etc/dnsmasq.conf" 
     430        } 
     431 
    412432        args="" 
    413433        config_foreach dnsmasq dnsmasq 
    414434        config_foreach dhcp_host_add host 
     435        echo >> $CONFIGFILE 
    415436        config_foreach dhcp_boot_add boot 
    416437        config_foreach dhcp_mac_add mac 
     
    421442        config_foreach dhcp_subscrid_add subscrid 
    422443        config_foreach dhcp_domain_add domain 
     444        echo >> $CONFIGFILE 
    423445        config_foreach dhcp_srv_add srvhost 
    424446        config_foreach dhcp_mx_add mxhost 
     447        echo >> $CONFIGFILE 
    425448        config_foreach dhcp_add dhcp 
     449        echo >> $CONFIGFILE 
    426450        config_foreach dhcp_cname_add cname 
     451        echo >> $CONFIGFILE 
    427452 
    428453        # add own hostname 
     
    432457        } 
    433458 
    434         service_start /usr/sbin/dnsmasq $args && { 
     459        service_start /usr/sbin/dnsmasq -C $CONFIGFILE && { 
    435460                rm -f /tmp/resolv.conf 
    436461                [ -n "$DOMAIN" ] && echo "search $DOMAIN" >> /tmp/resolv.conf 
Note: See TracChangeset for help on using the changeset viewer.