Hello,
I just started using the mDNS command and I noticed a few issues right away. First off, I am using the latest firmware 1.11. I have a lot of experience with mDNS, having written my own implementation previously. So here are my issues:
1. Local name is hardcoded to "target.local" instead of what the user specified. So, for instance, I named my cc3000 "helloworld" with the HCI_CMND_MDNS_ADVERTISE command, but the mDNS response sets that name to "target.local". So, instead of having a name that resolves to "helloworld.local", it resolves to target.local. So, now it responds to ping at target.local:
And here is the problem shown in wireshark:
Also, here is another user asking for a change to TTL, but if you look, his wireshark information also reports "target.local" : http://e2e.ti.com/support/low_power_rf/f/851/t/262801.aspx
Because of this all cc3000 devices on the local network will have the same conflicting name "target.local" -- very bad. And because of this, local mDNS name resolution is quite broken.
2. The mDNS "query response" is supposed to be sent in response to a query from another device on the local network. So when there is an mDNS Query for the name helloworld (or whatever), the cc3000 is supposed to be listening and immediately send the "query response", but it seems that it is not listening to the multicast mdns port. It should be continuously listening for queries and respond (when mdns is enabled of course). In the above wireshark trace, it appears to work, but that is only because I am actually calling HCI_CMND_MDNS_ADVERTISE every 10 seconds. This means that responses can take as much as 10 seconds just for name resolution, which is very bad. The mDNS advertiser, when enabled, MUST respond to queries. The cc3000 must continuously listen for the queries when mDNS is enabled.
My recommendation would be to add a new value to the "mdnsEnabled" variable so that 0 = disabled, 1 = enabled, 2 = enabled and listening. That way, it is not a breaking change.
3. I don't know if this is a wireshark parse issue or a bug in the mDNS packet, but the first letter in the service record is missing.
4. Finally, this is more of a suggestion than anything else. LLMNR is nearly identical to mDNS, but that is what all Windows Vista, 7, 8 versions all use by default. The cc3000 could EASILY respond to both messages, the responses are nearly Identical for the local name (A Record). Windows is still the most widely used OS in the world and it REALLY should work out of the box. The cc3000 should implement LLMNR.
Thanks.