route provider

Skip to end of metadata
Go to start of metadata

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

Top

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 *

Top

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.

Top

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.

Top

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).

Top

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
Labels:
None
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.

Sign up or Log in to add a comment or watch this page.


The individuals who post here are part of the extended Oracle community and they might not be employed or in any way formally affiliated with Oracle. The opinions expressed here are their own, are not necessarily reviewed in advance by anyone but the individual authors, and neither Oracle nor any other party necessarily agrees with them.