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