| ------------------------------------------ | 
 |  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 net_loop | 
 | 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 net_loop 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"							\ |