kernel: fq_codel: dont reinit flow state
[openwrt/staging/stintel.git] / package / dnsmasq / files / dnsmasq.init
index f3d438e209dd39b31dbe491b404ee34d5da30567..85c22c37451bd8a31f95871669ad023fe6ea734f 100644 (file)
@@ -1,5 +1,5 @@
 #!/bin/sh /etc/rc.common
-# Copyright (C) 2007 OpenWrt.org
+# Copyright (C) 2007-2012 OpenWrt.org
 
 START=60
 
@@ -8,6 +8,9 @@ SERVICE_USE_PID=1
 DNS_SERVERS=""
 DOMAIN=""
 
+ADD_LOCAL_DOMAIN=1
+ADD_LOCAL_HOSTNAME=1
+
 CONFIGFILE="/var/etc/dnsmasq.conf"
 
 xappend() {
@@ -52,6 +55,10 @@ append_server() {
        xappend "--server=$1"
 }
 
+append_address() {
+       xappend "--address=$1"
+}
+
 append_interface() {
        local ifname=$(uci_get_state network "$1" ifname "$1")
        xappend "--interface=$ifname"
@@ -88,6 +95,7 @@ dnsmasq() {
        append_bool "$cfg" expandhosts "--expand-hosts"
        append_bool "$cfg" enable_tftp "--enable-tftp"
        append_bool "$cfg" nonwildcard "--bind-interfaces"
+       append_bool "$cfg" fqdn "--dhcp-fqdn"
 
        append_parm "$cfg" dhcpscript "--dhcp-script"
        append_parm "$cfg" cachesize "--cache-size"
@@ -99,6 +107,7 @@ dnsmasq() {
        append_parm "$cfg" "domain" "--domain"
        append_parm "$cfg" "local" "--server"
        config_list_foreach "$cfg" "server" append_server
+       config_list_foreach "$cfg" "address" append_address
        config_list_foreach "$cfg" "interface" append_interface
        config_list_foreach "$cfg" "notinterface" append_notinterface
        config_list_foreach "$cfg" "addnhosts" append_addnhosts
@@ -107,9 +116,13 @@ dnsmasq() {
        append_parm "$cfg" "resolvfile" "--resolv-file"
        append_parm "$cfg" "tftp_root" "--tftp-root"
        append_parm "$cfg" "dhcp_boot" "--dhcp-boot"
+       append_parm "$cfg" "local_ttl" "--local-ttl"
 
        config_get DOMAIN "$cfg" domain
 
+       config_get_bool ADD_LOCAL_DOMAIN "$cfg" add_local_domain 1
+       config_get_bool ADD_LOCAL_HOSTNAME "$cfg" add_local_hostname 1
+
        config_get_bool readethers "$cfg" readethers
        [ "$readethers" = "1" -a \! -e "/etc/ethers" ] && touch /etc/ethers
 
@@ -143,6 +156,8 @@ dnsmasq() {
                config_list_foreach "$cfg" rebind_domain append_rebind_domain
        }
 
+       dhcp_option_add "$cfg" "" 0
+
        echo >> $CONFIGFILE
 }
 
@@ -157,7 +172,9 @@ dhcp_subscrid_add() {
 
        xappend "--dhcp-subscrid=$networkid,$subscriberid"
 
-       dhcp_option_add "$cfg" "$networkid"
+       config_get_bool force "$cfg" force 0
+
+       dhcp_option_add "$cfg" "$networkid" "$force"
 }
 
 dhcp_remoteid_add() {
@@ -171,7 +188,9 @@ dhcp_remoteid_add() {
 
        xappend "--dhcp-remoteid=$networkid,$remoteid"
 
-       dhcp_option_add "$cfg" "$networkid"
+       config_get_bool force "$cfg" force 0
+
+       dhcp_option_add "$cfg" "$networkid" "$force"
 }
 
 dhcp_circuitid_add() {
@@ -185,7 +204,9 @@ dhcp_circuitid_add() {
 
        xappend "--dhcp-circuitid=$networkid,$circuitid"
 
-       dhcp_option_add "$cfg" "$networkid"
+       config_get_bool force "$cfg" force 0
+
+       dhcp_option_add "$cfg" "$networkid" "$force"
 }
 
 dhcp_userclass_add() {
@@ -199,7 +220,9 @@ dhcp_userclass_add() {
 
        xappend "--dhcp-userclass=$networkid,$userclass"
 
-       dhcp_option_add "$cfg" "$networkid"
+       config_get_bool force "$cfg" force 0
+
+       dhcp_option_add "$cfg" "$networkid" "$force"
 }
 
 dhcp_vendorclass_add() {
@@ -213,14 +236,18 @@ dhcp_vendorclass_add() {
 
        xappend "--dhcp-vendorclass=$networkid,$vendorclass"
 
-       dhcp_option_add "$cfg" "$networkid"
+       config_get_bool force "$cfg" force 0
+
+       dhcp_option_add "$cfg" "$networkid" "$force"
 }
 
 dhcp_host_add() {
        local cfg="$1"
 
+       config_get_bool force "$cfg" force 0
+
        config_get networkid "$cfg" networkid
-       [ -n "$networkid" ] && dhcp_option_add "$cfg" "$networkid"
+       [ -n "$networkid" ] && dhcp_option_add "$cfg" "$networkid" "$force"
 
        config_get name "$cfg" name
        config_get ip "$cfg" ip
@@ -282,7 +309,9 @@ dhcp_boot_add() {
 
        xappend "--dhcp-boot=${networkid:+net:$networkid,}$filename,$servername,$serveraddress"
 
-       dhcp_option_add "$cfg" "$networkid"
+       config_get_bool force "$cfg" force 0
+
+       dhcp_option_add "$cfg" "$networkid" "$force"
 }
 
 
@@ -342,10 +371,13 @@ dhcp_add() {
 dhcp_option_add() {
        local cfg="$1"
        local networkid="$2"
+       local force="$3"
+
+       [ "$force" = "0" ] && force=
 
        config_get dhcp_option "$cfg" dhcp_option
        for o in $dhcp_option; do
-               xappend "--dhcp-option=$networkid","$o"
+               xappend "--dhcp-option${force:+-force}=${networkid:+$networkid,}$o"
        done
 
 }
@@ -470,14 +502,16 @@ start() {
        echo >> $CONFIGFILE
 
        # add own hostname
-       [ -z "$lanaddr" ] || {
+       [ $ADD_LOCAL_HOSTNAME -eq 1 ] && [ -n "$lanaddr" ] && {
                local hostname="$(uci_get system.@system[0].hostname)"
                dhcp_domain_add "" "${hostname:-OpenWrt}" "$lanaddr"
        }
 
        service_start /usr/sbin/dnsmasq -C $CONFIGFILE && {
                rm -f /tmp/resolv.conf
-               [ -n "$DOMAIN" ] && echo "search $DOMAIN" >> /tmp/resolv.conf
+               [ $ADD_LOCAL_DOMAIN -eq 1 ] && [ -n "$DOMAIN" ] && {
+                       echo "search $DOMAIN" >> /tmp/resolv.conf
+               }
                DNS_SERVERS="$DNS_SERVERS 127.0.0.1"
                for DNS_SERVER in $DNS_SERVERS ; do
                        echo "nameserver $DNS_SERVER" >> /tmp/resolv.conf