route Provider
The route provider provides probes for tracing routing-related events (add, delete, change route etc).
This provider is under development and is not yet available
Probes
The route probes are described in the table below.
route Probes
Probe | Description |
---|---|
add | Probe that fires whenever a route is added. |
delete | Probe that fires whenever a route is deleted. |
change | Probe that fires whenever a route is changed. |
losing | Probe that fires when protocol timeouts to a particular destination occur. |
miss | Probe that fires whenever a route lookup fails. |
redirect | Probe that fires whenever a route redirect occurs. |
Arguments
The argument types for the route probes are listed in the table below. The arguments are described in the following section.
route Probe Arguments
Probe | args[0] | args[1] | args[2] | args[3] | args[4] |
---|---|---|---|---|---|
add | void | csinfo_t * | void | void | routeinfo_t * |
delete | void | csinfo_t * | void | void | routeinfo_t * |
change | void | csinfo_t * | void | void | routeinfo_t * |
losing | void | csinfo_t * | void | void | routeinfo_t * |
miss | void | csinfo_t * | void | void | routeinfo_t * |
redirect | void | csinfo_t * | void | void | routeinfo_t * |
csinfo_t structure
The csinfo_t structure is usually where connection state info is made available. For routes, the connection ID field is unused since route events are not tied to particular connections. The process ID field is used for add, delete and change events since these can originate in userland. For change, losing and redirect events, the process ID is unused.
typedef struct csinfo { uintptr_t cs_addr; uint64_t cs_cid; pid_t cs_pid; zoneid_t cs_zoneid; } csinfo_t;
csinfo_t Members
cs_addr | Address of translated conn_t * (add, delete, change) or ip_stack_t * (losing, miss, redirect). |
cs_cid | Connection id. Unused for route provider. |
cs_pid | Process ID. Unused for losing, miss and redirect probes. |
cs_zoneid | Zone ID associated with the connection. |
routeinfo_t structure
The routeinfo_t structure is a DTrace translated version of the information contained in the rt_msghdr_t associated with the route event.
typedef struct routeinfo { uint8_t route_version; uint8_t route_type; uint16_t route_interface_index; int route_flags; int route_seq; pid_t route_pid; int route_metrics; /* Metric values */ uint32_t route_mtu_metric; uint32_t route_hopcount_metric; uint32_t route_expire_metric; uint32_t route_recvpipe_metric; uint32_t route_sendpipe_metric; uint32_t route_ssthresh_metric; uint32_t route_rtt_metric; uint32_t route_rtt_variance_metric; uint32_t route_packets_sent; /* Addresses etc in message */ int route_addresses; string route_destination_address; string route_gateway_address; string route_netmask_address; string route_source_address; string route_redirect_author_address; rt_msghdr_t *route_addr; } routeinfo_t;
routeinfo_t Members
route_version | routing message version number. |
route_type | routing event type. |
route_interface_index | routing event interface index. |
route_flags | route flags specifying route details (UP, BLACKHOLE etc). |
route_seq | sequence number of route event. |
route_pid | Process requesting route event. |
route_metrics | Bitfield specifying valid metrics. |
route_hopcount_metric | Hopcount metric. |
route_expire_metric | Expire metric. |
route_recvpipe_metric | Recvpipe metric. |
route_sendpipe_metric | Sendpipe metric. |
route_ssthresh_metric | SSthresh metric. |
route_rtt_metric | Round-trip-time metric. |
route_rtt_variance_metric | Round-trip-time variance metric. |
route_packets_sent | Number of packets sent on route. |
route_addresses | Bitfield specifying valid addresses. |
route_destination_address | Destination address, as a string. |
route_gateway_address | Gateway address, as a string. |
route_netmask_address | Netmask address, as a string. |
route_source_address | Source address, as a string. |
route_redirect_author_address | Redirect author address, as a string. |
route_addr | Pointer to rt_msghdr at time of tracing. |
Examples
Some simple examples of route provider usage follow.
route events by pid, zone.
This DTrace one-liner monitors route events by type, pid and zoneid.
# dtrace -n 'route:::add,route:::delete,route:::change { @[probename, args[1]->cs_zoneid, args[1]->cs_pid] = count(); }' dtrace: description 'route:::add,route:::delete,route:::change ' matched 3 probes ^C add 0 100096 1
We see above that in the global zone (zoneid 0) we had one route add event for process 100096 (dhcpagent).
route Stability
The route provider uses DTrace's stability mechanism to describe its stabilities, as shown in the following table. For more information about the stability mechanism, see Chapter 39, Stability.
Element | Name stability | Data stability | Dependency class |
---|---|---|---|
Provider | Evolving | Evolving | ISA |
Module | Private | Private | Unknown |
Function | Private | Private | Unknown |
Name | Evolving | Evolving | ISA |
Arguments | Evolving | Evolving | ISA |