The ZeroConf module deals with Link-Local zero-configuration network address assignment. This module has been present since Select 3. The implementation follows that of RFC3927. The module can only handle a single interface. It will be automatically configured by the InetConfigure module when 'Dynamic' network addressing is configured.
The ZeroConf module will always configure alias 9 of an interface, for example 'eh0:9'.
The ZeroConf module and other components of the stack follow the protocol laid down by this RFC with certain caveats:
Select 3 ZeroConf implementation follows draft 7 of the link-local standard and had the following differences from the released RFC:
R0 | = | 32 (sub-reason code> |
R1 | = | &B0 (reason code) |
R2 | = | Pointer to zero-terminated aliased interface name |
R3 | = | IP address assigned to the interface |
R1-3 | preserved |
This service call is issued by the ZeroConf module when it has successfully configured an interface with a link-local address. This address may be used just like any other address. This address may be changed (and the appropriate services issued) if collisions occur or if manually modified.
This service should never be claimed.
R0 | = | 33 (sub-reason code> |
R1 | = | &B0 (reason code) |
R2 | = | Pointer to zero-terminated aliased interface name |
R3 | = | IP address that was assigned to the interface |
R1-3 | preserved |
This service call is issued by the ZeroConf module when it has lost the link-local address allocated to an interface. A new address may be reestablished by the ZeroConf module if the reason for the address loss was due to a collision.
This service should never be claimed.
R0 | = | Reason code:
| ||||||
R1-8 | = | Dependant on reason code |
R0-8 | = | Dependant on reason code |
This SWI is used to control the operation of the ZeroConf module.
R0 | = | 0 (reason code) |
R1 | = | Pointer to zero-terminated interface name |
R0-1 | preserved |
This SWI is used to add an interface to those that the ZeroConf module controls. Only a single interface can be controlled by the ZeroConf module. An error will be returned if the interface cannot be added.
R0 | = | 0 (reason code) |
R1 | = | Pointer to zero-terminated interface name |
R0-1 | preserved |
This SWI is used to remove an interface from those that the ZeroConf module controls. If the interface named is not controlled by ZeroConf, an error will be returned.
R1 | = | Status type:
| ||||
R1-8 | = | Dependant on reason code |
R0-8 | = | Dependant on reason code |
This SWI is used to read the status of the ZeroConf module.
R1 | = | 0 (reason code) |
R0 | = | State of the ZeroConf module
| ||||||||||||
R1 | = | Pointer to zero-terminated interface name |
This SWI is used to read the state of the operation of the ZeroConf module.
Maintainer(s): | Gerph <gerph@gerph.org> | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
History: |
| ||||||||||||
Related: | http://www.riscos.com/support/developers/riscos6/networking/zeroconf.html | ||||||||||||
Disclaimer: |
© Gerph, 2021. |