After the prerouter's routing tables have been built (as described
in
Initializing an AF_INET (IPv4) transport driver and
Initializing an AF_INET6 (IPv6) transport driver), the prerouter
can be notified about interface state changes in the following ways:
- For TPs that returned a value of -1 for Iocn_NetConfLength
on the initial SIOCGIFCONF (or for NchNumEntryRet on the initial SIOCGHOMEIF6)
during TD initialization, the prerouter's routing tables will contain
both active and inactive routes. The TP can issue the following ioctls
to change the state of an interface:
- The SIOCMSMODHOMEIF ioctl allows a TP to activate or deactivate
an IPv4 home interface. For each entry in the home IP address table,
the Iocn_bRtAttrRtUp bit indicates the status (active or inactive)
of the home interface. SIOCMSMODHOMEIF turns this bit on or off to
activate or deactivate the interface. If a home IP address is active,
then this means that the home interface and all of the routes associated
with that interface are active. Likewise, if a home IP address is
inactive, then the home interface and all of the routes associated
with that interface are inactive.
- The SIOCMSMODHOMEIF6 ioctl allows a TP to activate or deactivate
an IPv6 home interface. For each entry in the home interface index
table, the IPV6BitRtUp bit indicates the status (active or inactive)
of the home interface. SIOCMSMODHOMEIF6 turns this bit on or off to
activate or deactivate the interface. If an interface is active, then
all of the routes associated with that interface are active. Likewise,
if an interface is inactive, then all of the routes associated with
that interface are inactive.
- Otherwise, for TPs that did not return a value of -1 for
Iocn_NetConfLength on the initial SIOCGIFCONF (or for NchNumEntryRet
on the initial SIOCGHOMEIF6) during TD initialization, the prerouter
only adds the active routes to its routing tables. Therefore, the
fact that a route exists in the routing tables means that the interface
is active. If the state of an interface changes, the prerouter receives
an SIOCMSRBRTTABLE ioctl (for IPv4) or SIOCMSRBRT6TABLE ioctl (for
IPv6) from the TP so that it can rebuild its routing tables, as described
in Rebuilding the routing tables.