Chapter Title


Contents


Introduction

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'.

Conformance

The ZeroConf module and other components of the stack follow the protocol laid down by this RFC with certain caveats:

  • Link-local addresses assigned to interfaces with routable addresses will continue to be advertised by the Internet stack through the SIOCGIFCONF interface. (1.9 rule 2)
  • No operational changes have been made to prevent the issuing of link-local packets to a router, or forwarding by a router if so configured. (2.6.2, 2.7, 7)
  • The use of subnetting is not prevented. (2.8)
  • DNS addresses supplied by external sources may be cached for link-local addresses. (2.9)
  • DNS server may provide locally known link-local addresses. (2.9)
  • Operation where multiple interfaces use link-local addresses is not supported by the ZeroConf module and, where manual configuration occurs is not expected to route correctly. (3)

Select 3 ZeroConf implementation follows draft 7 of the link-local standard and had the following differences from the released RFC:

  • 4 probes will be sent initially (RFC now states 3).
  • The maximum number of conflicts before rate limiting was 60 (RFC now states 10).


Service calls


Service_InternetStatus 32
(Service &B0)

Address has been acquired by the ZeroConf module
On entry
R0=32 (sub-reason code>
R1=&B0 (reason code)
R2=Pointer to zero-terminated aliased interface name
R3=IP address assigned to the interface
On exit
R1-3preserved
Use

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.

Related services
Service_InternetStatus 33

Service_InternetStatus 33
(Service &B0)

Address has been lost by the ZeroConf module
On entry
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
On exit
R1-3preserved
Use

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.

Related services
Service_InternetStatus 32

SWI calls


ZeroConf_Control
(SWI &56A00)

Controls the ZeroConf interface management
On entry
R0=

Reason code:

ValueMeaning
0Places an interface under management by ZeroConf
1Releases an interface from management by ZeroConf

R1-8=Dependant on reason code
On exit
R0-8=Dependant on reason code
Interrupts
Interrupts are undefined
Fast interrupts are enabled
Processor mode
Processor is in SVC mode
Re-entrancy
SWI is not re-entrant
Use

This SWI is used to control the operation of the ZeroConf module.

Related APIs
None

ZeroConf_Control 0
(SWI &56A00)

Places an interface under management by ZeroConf
On entry
R0=0 (reason code)
R1=Pointer to zero-terminated interface name
On exit
R0-1preserved
Interrupts
Interrupts are undefined
Fast interrupts are enabled
Processor mode
Processor is in SVC mode
Re-entrancy
SWI is not re-entrant
Use

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.

Related APIs
None

ZeroConf_Control 1
(SWI &56A00)

Releases an interface from management by ZeroConf
On entry
R0=0 (reason code)
R1=Pointer to zero-terminated interface name
On exit
R0-1preserved
Interrupts
Interrupts are undefined
Fast interrupts are enabled
Processor mode
Processor is in SVC mode
Re-entrancy
SWI is not re-entrant
Use

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.

Related APIs
None

ZeroConf_Status
(SWI &56A01)

Reads the status of the ZeroConf module
On entry
R1=

Status type:

ValueMeaning
0Reads the current configuration status

R1-8=Dependant on reason code
On exit
R0-8=Dependant on reason code
Interrupts
Interrupts are undefined
Fast interrupts are enabled
Processor mode
Processor is in SVC mode
Re-entrancy
SWI is not re-entrant
Use

This SWI is used to read the status of the ZeroConf module.

Related APIs
None

ZeroConf_Status 0
(SWI &56A01)

Reads the current configuration status
On entry
R1=0 (reason code)
On exit
R0=

State of the ZeroConf module

ValueMeaning
0idle
1probing for address
2announcing address assignment
3configured
4configured, defending against address collision

R1=Pointer to zero-terminated interface name
Interrupts
Interrupts are undefined
Fast interrupts are enabled
Processor mode
Processor is in SVC mode
Re-entrancy
SWI is not re-entrant
Use

This SWI is used to read the state of the operation of the ZeroConf module.

Related APIs
None

Document information

Maintainer(s):
History:
RevisionDateAuthorChanges
12006GerphInitial version
  • Released as RISC OS Select documentation.
230 Dec 2021GerphPRM-in-XML conversion
  • Created from original Select documentation
Related:http://www.riscos.com/support/developers/riscos6/networking/zeroconf.html
Disclaimer:

© Gerph, 2021.