The prerouter handles BSD-style route changes for the routeD add
(SIOCADDRT) and delete (SIOCDELRT) functions. When a route is added,
the rt_use field is checked for a nonzero value. If rt_use is nonzero,
it is assumed to be a hop count metric. Metrics can be changed
by issuing the SIOMETRIC1RT ioctl or by reissuing the SIOCADDRT ioctl
with the rt_use field set to the new metric value.
Route changes can be sent to the prerouter in two ways:
- When processing ioctls for add (SIOCADDRT) and delete (SIOCDELRT)
functions from a routing daemon that uses z/OS UNIX sockets, z/OS UNIX automatically
passes the ioctls to the prerouter. If the TP did not return a value
of -1 for Iocn_NetConfLength on the initial SIOCGIFCONF
(as described in Initializing an AF_INET (IPv4) transport driver), the prerouter
makes the needed updates.
- If a routing daemon does not use z/OS UNIX sockets (but,
instead, uses a different interface to a file system) or the TP returned
a value of -1 for Iocn_NetConfLength on the initial SIOCGIFCONF (as
described in Initializing an AF_INET (IPv4) transport driver), the ioctls for
add (SIOCADDRT) and delete (SIOCDELRT) functions must be propagated
to z/OS® UNIX. To do this, the file system must use the
SIOCMSADDRT, SIOCMSDELRT, and SIOMSMETRIC1RT ioctls for IPv4 routes
and the SIOCMSADDRT6V2, SIOCMSDELRT6V2, and SIOCMSCHGRT6METRICV2 ioctls
for IPv6 routes. These are issued on the master socket (as denoted
by the 'MS'). z/OS UNIX
needs the master socket or else these functions would be propagated
back to the file system and an endless loop would occur.
- For SIOCMSADDRT and SIOCMSDELRT, the TP identifies home and host
routes by setting the Iocn_bRtAttrLocal and Iocn_bRtAttrHost bits
on, respectively. If Iocn_bRtAttrLocal is on for any route, the TP
also sets the Iocn_bRtAttrRtUp bit on if the interface is active.
The TP also puts the home IP address associated with the interface
in the rt_ifp field for the SIOCMSADDRT, SIOCMSDELRT, and SIOMSMETRIC1RT
ioctls. When an IPV4 interface is deleted, the TP also sends a SIOCMSDELRT
ioctl to delete the home IP address to the prerouter.
- For SIOCMSADDRT6V2 and SIOCMSDELRT6V2, the TP identifies home
and host routes by setting the IPV6BitHome and IPV6BitHost bits on,
respectively. If IPV6BitHome is on for any route, the TP also sets
the IPV6BitRtUp bit on if the interface is active. The TP also
puts the home interface index in the RT6RtHomeIfIdx field for each
route specified with the SIOCMSADDRT6V2, SIOCMSDELRT6V2, and SIOCMSCHGRT6METRICV2
ioctls.
ICMP redirects are handled using the SIOCMSICMPREDIRECT ioctl.