------------------------------------------
 Link-local IP address auto-configuration
------------------------------------------

Negotiate with other link-local clients on the local network
for an address that doesn't require explicit configuration.
This is especially useful if a DHCP server cannot be guaranteed
to exist in all environments that the device must operate.

This is an implementation of RFC3927.

----------
 Commands
----------

When CONFIG_CMD_LINK_LOCAL is defined in the board config file,
the "linklocal" command is available.  This running this will
take approximately 5 seconds while the address is negotiated.

------------------------
 Environment interation
------------------------

The "llipaddr" variable is set with the most recently
negotiated address and is preferred in future negotiations.

The "ipaddr", "netmask", and "gatewayip" variables are set
after successful negotiation to enable network access.

-------------
 Limitations
-------------

RFC3927 requires that addresses are continuously checked to
avoid conflicts, however this can only happen when the NetLoop
is getting called.  It is possible for a conflict to go undetected
until a command that accesses the network is executed.

Using NetConsole is one way to ensure that NetLoop is always
processing packets and monitoring for conflicts.

This is also not a concern if the feature is use to connect
directly to another machine that may not be running a DHCP server.

----------------
 Example script
----------------

This script allows use of DHCP and/or Link-local controlled
by env variables.  It depends on CONFIG_CMD_LINK_LOCAL, CONFIG_CMD_DHCP,
and CONFIG_BOOTP_MAY_FAIL.
If both fail or are disabled, static settings are used.

#define CONFIG_EXTRA_ENV_SETTINGS \
	"ipconfigcmd=if test \\\"$dhcpenabled\\\" -ne 0;"		\
		"then "							\
			"dhcpfail=0;dhcp || dhcpfail=1;"		\
		"else "							\
			"dhcpfail=-1;"					\
		"fi;"							\
		"if test \\\"$linklocalenabled\\\" -ne 0 -a "		\
			"\\\"$dhcpfail\\\" -ne 0;"			\
		"then "							\
			"linklocal;"					\
			"llfail=0;"					\
		"else "							\
			"llfail=-1;"					\
		"fi;"							\
		"if test \\\"$llfail\\\" -ne 0 -a "			\
			"\\\"$dhcpfail\\\" -ne 0; "			\
		"then "							\
			"setenv ipaddr $sipaddr; "			\
			"setenv netmask $snetmask; "			\
			"setenv gatewayip $sgatewayip; "		\
		"fi;\0"							\
