1d22c338eSJoe Hershberger------------------------------------------ 2d22c338eSJoe Hershberger Link-local IP address auto-configuration 3d22c338eSJoe Hershberger------------------------------------------ 4d22c338eSJoe Hershberger 5d22c338eSJoe HershbergerNegotiate with other link-local clients on the local network 6d22c338eSJoe Hershbergerfor an address that doesn't require explicit configuration. 7d22c338eSJoe HershbergerThis is especially useful if a DHCP server cannot be guaranteed 8d22c338eSJoe Hershbergerto exist in all environments that the device must operate. 9d22c338eSJoe Hershberger 10d22c338eSJoe HershbergerThis is an implementation of RFC3927. 11d22c338eSJoe Hershberger 12d22c338eSJoe Hershberger---------- 13d22c338eSJoe Hershberger Commands 14d22c338eSJoe Hershberger---------- 15d22c338eSJoe Hershberger 16d22c338eSJoe HershbergerWhen CONFIG_CMD_LINK_LOCAL is defined in the board config file, 17d22c338eSJoe Hershbergerthe "linklocal" command is available. This running this will 18d22c338eSJoe Hershbergertake approximately 5 seconds while the address is negotiated. 19d22c338eSJoe Hershberger 20d22c338eSJoe Hershberger------------------------ 21d22c338eSJoe Hershberger Environment interation 22d22c338eSJoe Hershberger------------------------ 23d22c338eSJoe Hershberger 24d22c338eSJoe HershbergerThe "llipaddr" variable is set with the most recently 25d22c338eSJoe Hershbergernegotiated address and is preferred in future negotiations. 26d22c338eSJoe Hershberger 27d22c338eSJoe HershbergerThe "ipaddr", "netmask", and "gatewayip" variables are set 28d22c338eSJoe Hershbergerafter successful negotiation to enable network access. 29d22c338eSJoe Hershberger 30d22c338eSJoe Hershberger------------- 31d22c338eSJoe Hershberger Limitations 32d22c338eSJoe Hershberger------------- 33d22c338eSJoe Hershberger 34d22c338eSJoe HershbergerRFC3927 requires that addresses are continuously checked to 35*bc0571fcSJoe Hershbergeravoid conflicts, however this can only happen when the net_loop 36d22c338eSJoe Hershbergeris getting called. It is possible for a conflict to go undetected 37d22c338eSJoe Hershbergeruntil a command that accesses the network is executed. 38d22c338eSJoe Hershberger 39*bc0571fcSJoe HershbergerUsing NetConsole is one way to ensure that net_loop is always 40d22c338eSJoe Hershbergerprocessing packets and monitoring for conflicts. 41d22c338eSJoe Hershberger 42d22c338eSJoe HershbergerThis is also not a concern if the feature is use to connect 43d22c338eSJoe Hershbergerdirectly to another machine that may not be running a DHCP server. 44d22c338eSJoe Hershberger 45d22c338eSJoe Hershberger---------------- 46d22c338eSJoe Hershberger Example script 47d22c338eSJoe Hershberger---------------- 48d22c338eSJoe Hershberger 49d22c338eSJoe HershbergerThis script allows use of DHCP and/or Link-local controlled 50d22c338eSJoe Hershbergerby env variables. It depends on CONFIG_CMD_LINK_LOCAL, CONFIG_CMD_DHCP, 51d22c338eSJoe Hershbergerand CONFIG_BOOTP_MAY_FAIL. 52d22c338eSJoe HershbergerIf both fail or are disabled, static settings are used. 53d22c338eSJoe Hershberger 54d22c338eSJoe Hershberger#define CONFIG_EXTRA_ENV_SETTINGS \ 55d22c338eSJoe Hershberger "ipconfigcmd=if test \\\"$dhcpenabled\\\" -ne 0;" \ 56d22c338eSJoe Hershberger "then " \ 57d22c338eSJoe Hershberger "dhcpfail=0;dhcp || dhcpfail=1;" \ 58d22c338eSJoe Hershberger "else " \ 59d22c338eSJoe Hershberger "dhcpfail=-1;" \ 60d22c338eSJoe Hershberger "fi;" \ 61d22c338eSJoe Hershberger "if test \\\"$linklocalenabled\\\" -ne 0 -a " \ 62d22c338eSJoe Hershberger "\\\"$dhcpfail\\\" -ne 0;" \ 63d22c338eSJoe Hershberger "then " \ 64d22c338eSJoe Hershberger "linklocal;" \ 65d22c338eSJoe Hershberger "llfail=0;" \ 66d22c338eSJoe Hershberger "else " \ 67d22c338eSJoe Hershberger "llfail=-1;" \ 68d22c338eSJoe Hershberger "fi;" \ 69d22c338eSJoe Hershberger "if test \\\"$llfail\\\" -ne 0 -a " \ 70d22c338eSJoe Hershberger "\\\"$dhcpfail\\\" -ne 0; " \ 71d22c338eSJoe Hershberger "then " \ 72d22c338eSJoe Hershberger "setenv ipaddr $sipaddr; " \ 73d22c338eSJoe Hershberger "setenv netmask $snetmask; " \ 74d22c338eSJoe Hershberger "setenv gatewayip $sgatewayip; " \ 75d22c338eSJoe Hershberger "fi;\0" \ 76