This can happen if the system administrator uses the route command, or an ICMP redirect message is received while GateD is starting up. On these systems it is necessary to read the kernel radix tree from the kernel by poking around in kernel memory. This is even more error prone than reading the hash based forwding table. In the case of the forwarding table, it is returned to gated atomically as a series of routing socket messages. This prevents the problem associated with the forwarding table changing while GateD is in the process of reading it.
Some operating systems define their own method of reading the kernel forwarding table.
The kernel support subsystem of GateD is resposible for reading the status of the kernel's physical and protocl interfaces periodically. GateD detects changes in the interface list and notifies the protocols so they can start or stop instances or peers. When the routing socket is in use, it also re-reads it whenever a messages is received indicating a change in routing configuration. This interval may be explicitly configured in the interface configuration . Reading the interface list with sysctl BSD 4.4 added the ability to read the kernel interface list via the sysctl system call.