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