I see that lwIP has some AutoIP (aka IPv4LL, aka RFC 3927) code, but I can't tell if it does anything higher up in the Zeroconf stack, namely mDNS and DNS-SD (with RFC 2782).
So, does lwIP support DNS-SD service discovery? If not, would it be easy to port code from a project like Avahi that does (assuming licensing allows it)?
No, lwIP does not support any part of Zeroconf except AutoIP. I've not looked at Avahi but porting Apples mDNSResponder to lwIP is quite straightforward. There is one bit of nastiness where you have to pull back the pbuf headers to access the IP header to get the sender IP (I think a "proper" method for this is in the works for lwIP but AFAIK it's not in a release yet).
With mDNSResponder you get both service advertisment and discovery.
I can't comment on the LWIP part of your question (the last time I used LWIP it didn't even have IPv4LL support), but you might be interested to know that Apple have open-sourced their mDNSResponder code, available from here: http://developer.apple.com/networking/bonjour
The interesting thing about this implementation is that they provide a VxWorks platform layer which may well be a better match for porting to your embedded target than the Avahi library.
The lwIP web site has a task tracker with the following three items (it looks as though they were added around 2010, around the time this question was originally asked):
- Add "One shot" Multicast DNS Queries (.local) to dns.c
- Marked done, Dec 2016. It provides a subset of ZeroConf functionality. It is not a complete solution, but could be a good basis to build upon.
- Create "mDNSQuerier" module to support multiple response and continuous Multicast DNS queries
- Create multicast DNS Responder module enabling LwIP applications to support multicast DNS host name resoltuion
- On 28 August 2015, these latter two tickets were marked "Cancelled" with the note "Cancelled since noone seems to want to work on this."
Here is a very small mDNS responder which can be ported rather easily to lwIP:
https://bitbucket.org/geekman/tinysvcmdns
Apples mDNSResponder is still rather heavyweight for very small systems (in terms of RAM usage), so if only basic functionality is required this one may be preferred.
来源:https://stackoverflow.com/questions/2375681/does-lwip-support-zeroconf