lsm-autoip.so

AutoIP negotiation module for link-local addresses

Syntax:

mount -Tio-pkt [-o option,option,...] lsm-autoip.so

or:

io-pkt-variant -p autoip ... &

where variant is one of v4, v4-hc, or v6-hc. If you use mount, you can specify a special device of tcpip or io-pkt.

Runs on:

QNX Neutrino

Options:

if=interface
The interface on which to start the AutoIP service. Only one interface is supported at one time. The default is en0.
ip=address
Attempt to claim address (in dotted numeric notation) for the link-local address. If this fails, a random address is attempted until an unused IP address is found. You can use this option to force the AutoIP module to use a certain initial IP address. The default random IP address is based on the MAC address of the interface. The same initial IP address would be chosen for a specific MAC address.
debug
Enable debugging in verbose mode. Debug messages are logged to slogger.
abandon
Abandon the chosen link-local address if challenged. By default, the AutoIP module attempts to defend the link-local address that it chose, challenging other hosts that use the same address. If the other host persists, the AutoIP module releases the IP address, and chooses another. If you use this option, the AutoIP module releases the IP address as soon as a conflict is detected.
delay=ms
Set the delay before packets are transmitted. This affects PROBE packets only. The delay is specified in milliseconds. You can set this option for a range of 8000 to 1 ms. The default is 2000 ms. You may want to set a shorter delay if your network isn't connected with Ethernet switches.
force
Even if the interface obtained is a routable IP, force a link-local IP address. The default behavior is to leave the link-local IP untouched; see the Caveats below.
Note: The force option is ignored if you haven't specified the old option as well.
old
Attempt to manage the link-local network using the routing table. For example, route the link-local subnet via the routable IP address if it exists. The default is to have the link-local and routable IP address behave as aliases and co-exist.

Description:

The AutoIP module (lsm-autoip.so) configures a specified interface with a link-local IP address by negotiating with neighboring hosts. If no host on the local network is using the IP address that the module has chosen, the interface is configured with the chosen address.

The AutoIP module chooses its address from the IANA registered IP address network of 169.254/16. Some of this network is reserved for special purposes, so the available addresses are from 169.254.1.0 to 169.254.254.255.

Once an IP address is chosen and configured, the AutoIP module continues to monitor the network for address conflicts, and either defends or changes the address assigned to the interface to correct conflicts.

Only one interface can be supported at one time. The module can be loaded only once.

The interface that AutoIP is servicing must exist before the AutoIP module is loaded.

When the AutoIP module configures a TCP/IP interface with an IP address, it does so as an alias. This way, if the interface already has an IP address, it won't delete the primary or first IP address; the interface is assigned with both addresses (and potentially more if needed). This allows the module to coexist with other modules or applications that configure TCP/IP stack interfaces, such as dhcp.client (when used with the -a option).

When more than one IP address is assigned to an interface, it's considered an alias, and must be referenced directly if it needs to be deleted; otherwise you may delete the first IP address in the list of addresses, instead of the address you intended to delete. For example, if you're manually configuring an interface in combination with AutoIP, type something like this:

ifconfig en0 alias 10.0.0.1

This way, you won't replace an IP address that may already be configured for the interface.

To unconfigure the interface, type:

ifconfig en0 delete 10.0.0.1

This way, you specifically delete the configuration you previously set. If you execute:

ifconfig en0 delete

you'll delete the first IP address in the list (whatever this is), instead of the IP address you previously configured above, which may be what the AutoIP module configured.

Examples:

The following command line mounts the AutoIP module to service interface en0. The initial link-local IP address that it PROBEs for is 169.254.20.20; it has a 200 ms delay between PROBE packets. If an IP address conflict is detected after the interface has been configured, it releases the address immediately.

mount -T io-pkt -oif=en0,ip=169.254.20.20,debug,delay=200,abandon lsm-autoip.so

Caveats:

If you're using dhcp.client in combination with the AutoIP module, you must start dhcp.client with the -a option. This way, dhcp.client applies its IP configuration as an alias rather than overwrite the primary configuration.

If you specify the old option, the old AutoIP behavior is enabled, and the AutoIP module will delete the link-local IP address of the interface if it detects that a routable IP address had been configured on the interface. This means that if you already have a connection to other hosts using your link-local IP address, those links will be cut off. If this behavior is a concern, you can use the force option in combination with the old option to force the link-local address to always exist.