forked from agherzan/u-boot
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
net: Add link-local addressing support
Code based on networking/zcip.c in busybox commit 8531d76a15890c2c535908ce888b2e2aed35b172 Signed-off-by: Joe Hershberger <[email protected]>
- Loading branch information
Showing
8 changed files
with
490 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
------------------------------------------ | ||
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 NetLoop | ||
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 NetLoop 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" \ | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.