FreeBSD manual
download PDF document: rtentry.9.pdf
RTENTRY(9) FreeBSD Kernel Developer's Manual RTENTRY(9)
NAME
rtentry - structure of an entry in the kernel routing table
SYNOPSIS
#include <sys/types.h>
#include <sys/socket.h>
#include <net/route.h>
DESCRIPTION
The kernel provides a common mechanism by which all protocols can store
and retrieve entries from a central table of routes. Parts of this
mechanism are also used to interact with user-level processes by means of
a socket in the route(4) pseudo-protocol family. The <net/route.h>
header file defines the structures and manifest constants used in this
facility.
The basic structure of a route is defined by struct rtentry, which
includes the following fields:
struct radix_node rt_nodes[2];
Glue used by the radix-tree routines. These members also
include in their substructure the key (i.e., destination
address) and mask used when the route was created. The
rt_key(rt) and rt_mask(rt) macros can be used to extract
this information (in the form of a struct sockaddr *) given
a struct rtentry *.
struct sockaddr *rt_gateway;
The "target" of the route, which can either represent a
destination in its own right (some protocols will put a
link-layer address here), or some intermediate stop on the
way to that destination (if the RTF_GATEWAY flag is set).
int rt_flags;
See below. If the RTF_UP flag is not present, the rtfree()
function will delete the route from the radix tree when the
last reference drops.
int rt_refcnt;
Route entries are reference-counted; this field indicates
the number of external (to the radix tree) references.
struct ifnet *rt_ifp;
struct ifaddr *rt_ifa;
These two fields represent the "answer", as it were, to the
question posed by a route lookup; that is, they name the
interface and interface address to be used in sending a
packet to the destination or set of destinations which this
route represents.
u_long rt_mtu;
See description of rmx_mtu below.
u_long rt_weight;
See description of rmx_weight below.
This member is a reference to a route whose destination is
rt_gateway. It is only used for RTF_GATEWAY routes.
struct mtx rt_mtx;
Mutex to lock this routing entry.
The following flag bits are defined:
RTF_UP The route is not deleted.
RTF_GATEWAY The route points to an intermediate destination and
not the ultimate recipient; the rt_gateway and
rt_gwroute fields name that destination.
RTF_HOST This is a host route.
RTF_REJECT The destination is presently unreachable. This
should result in an EHOSTUNREACH error from output
routines.
RTF_DYNAMIC This route was created dynamically by rtredirect().
RTF_MODIFIED This route was modified by rtredirect().
RTF_DONE Used only in the route(4) protocol, indicating that
the request was executed.
RTF_XRESOLVE When this route is returned as a result of a lookup,
send a report on the route(4) interface requesting
that an external process perform resolution for this
route.
RTF_STATIC Indicates that this route was manually added by
means of the route(8) command.
RTF_BLACKHOLE Requests that output sent via this route be
discarded.
RTF_PROTO1
RTF_PROTO2
RTF_PROTO3 Protocol-specific.
RTF_PINNED Indicates that this route is immutable to a routing
protocol.
RTF_LOCAL Indicates that the destination of this route is an
address configured as belonging to this system.
RTF_BROADCAST Indicates that the destination is a broadcast
address.
RTF_MULTICAST Indicates that the destination is a multicast
address.
Several metrics are supplied in struct rt_metrics passed with routing
control messages via route(4) API. Currently only rmx_mtu, rmx_expire,
and rmx_pksent metrics are supplied. All others are ignored.
The following metrics are defined by struct rt_metrics:
u_long rmx_locks;
Flag bits indicating which metrics the kernel is not
permitted to dynamically modify.
u_long rmx_mtu;
MTU for this path.
u_long rmx_hopcount;
Number of intermediate systems on the path to this
destination.
u_long rmx_expire;
The time (a la time(3)) at which this route should expire,
or zero if it should never expire. It is the
window in sliding-window protocols like TCP).
u_long rmx_sendpipe;
As before, but in the opposite direction.
u_long rmx_ssthresh;
The slow-start threshold used in TCP congestion-avoidance.
u_long rmx_rtt;
The round-trip time to this destination, in units of
RMX_RTTUNIT per second.
u_long rmx_rttvar;
The average deviation of the round-trip time to this
destination, in units of RMX_RTTUNIT per second.
u_long rmx_pksent;
A count of packets successfully sent via this route.
u_long rmx_filler[4];
Empty space available for protocol-specific information.
SEE ALSO
route(4), route(8),
HISTORY
The rtentry structure first appeared in 4.2BSD. The radix-tree
representation of the routing table and the rt_metrics structure first
appeared in 4.3BSD-Reno.
AUTHORS
This manual page was written by Garrett Wollman.
BUGS
There are a number of historical relics remaining in this interface. The
rt_gateway and rmx_filler fields could be named better.
FreeBSD 14.0-RELEASE-p11 March 5, 2014 FreeBSD 14.0-RELEASE-p11