123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- 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.
- "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" \
|