AutoIP negotiation module for link-local addresses
mount -Tio-pkt [-o option,option,...] lsm-autoip.so
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.
|The force option is ignored if you haven't specified the old option as well.|
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.
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
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.
dhcp.client, ifconfig, io-pkt-v4, io-pkt-v4-hc, io-pkt-v6-hc, mount, netstat
QNX Neutrino Core Networking User's Guide