For a long time, I've struggled with inconsistent results for name queries on my local network. For example, sometimes OS X (El Capitan) couldn't ping a host by name while dig (host, nslookup) worked fine.
Also, I had never really tried to understand several options in the DD-WRT setup for domain and host names and the way they affected
dnsmasq's configuration, the default DHCP and DNS server on DD-WRT.
My situation is that of a typical home user with a DHCP-assigned IPv4 address and no public host name or top-level domain.
As it turned out, I had got the setup wrong: the »hostname« and »domain name« on the main setup page refer to DHCP options sent to the ISP by the router's DHCP client,
My ISP doesn't require any of those, so the fields should be left blank on my setup.
Instead, the right place to set the router's host name is the aptly-named »Router name« field.
The correct place to define the top-level domain of the local network is the »domain name« field in the »DHCP Server« section on the »Services« tab. In addition, »Used domain« must be set to »LAN and WLAN« instead of »WAN« because we don't actually have a »WAN« domain.
By the way, I chose »lan« as the name of my local domain because »local« has been specified for use by mDNS.
As a result, the router's host name is correctly entered into
/etc/hosts (both with and without my local domain) and
dnsmasq resolves names of local DHCP clients both in their short and long forms.