Get and assign link-local IP addresses in .NET C#, implementation of APIPA

1.2k views Asked by At

I need to make in .NET c# a functionality which is an implementation of IPv4LL as defined in RFC3927, a technology for assigning link-local IP addresses without DHCP server. The same functionality has been available on Windows under the name APIPA. On linux there's such plugin :avahi , avahi-autoipd. But on windows haven't found yet sth similar.

Till now I have only one solution: to send ARP packets on network with link-local IP address within a range, and test them if are free, once I find one free it is assigned as current IP address.

Any suggestion regarding my problem would be much appreciated.

2

There are 2 answers

0
Hugh Jones On

If I were you I would investigate Avahi a little closer, mainly because you can view the source code if you want, but also to see how it works with Mono.

Having said that, I suspect that you need a service quite separate from your application(s) and therefore there is no need to limit yourself to .Net as a technology.

Is that helpful at all ?

0
Jesse Chisholm On

According to the RFC that defines IPv4 link-local addressing, http://www.ietf.org/rfc/rfc3927.txt you really do need to send ARP to verify that your randomly selected 169.254.XXX.YYY address is not in use already.

To use ARP in C#, check out the IPHLPAPI.DLL, and call it via P/Invoke. http://www.pinvoke.net/default.aspx/iphlpapi.SendARP