Overhaul the markup.
This commit is contained in:
parent
578b2b7d2e
commit
1c83e80830
@ -27,6 +27,7 @@
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd October 8, 1996
|
||||
.Os
|
||||
.Dt RTENTRY 9
|
||||
@ -51,27 +52,23 @@ header file defines the structures and manifest constants used in this
|
||||
facility.
|
||||
.Pp
|
||||
The basic structure of a route is defined by
|
||||
.Dq Li struct rtentry ,
|
||||
.Vt "struct rtentry" ,
|
||||
which includes the following fields:
|
||||
.Bl -tag -offset indent -width 6n
|
||||
.It Xo
|
||||
.Vt "struct radix_node rt_nodes[2]" ;
|
||||
.Xc
|
||||
.It Vt "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
|
||||
.Vt rt_key \&rt
|
||||
.Fn rt_key rt
|
||||
and
|
||||
.Vt rt_mask \&rt
|
||||
.Fn rt_mask rt
|
||||
macros can be used to extract this information (in the form of a
|
||||
.Dq Li "struct sockaddr *" )
|
||||
.Vt "struct sockaddr *" )
|
||||
given a
|
||||
.Li "struct rtentry *" .
|
||||
.It Xo
|
||||
.Vt "struct sockaddr *rt_gateway" ;
|
||||
.Xc
|
||||
.Vt "struct rtentry *" .
|
||||
.It Vt "struct sockaddr *rt_gateway" ;
|
||||
The
|
||||
.Dq target
|
||||
of the route, which can either represent a destination in its own
|
||||
@ -79,9 +76,7 @@ right (some protocols will put a link-layer address here), or some
|
||||
intermediate stop on the way to that destination (if the
|
||||
.Dv RTF_GATEWAY
|
||||
flag is set).
|
||||
.It Xo
|
||||
.Vt "long rt_refcnt" ;
|
||||
.Xc
|
||||
.It Vt "long rt_refcnt" ;
|
||||
Route entries are reference-counted; this field indicates the number
|
||||
of external (to the radix tree) references.
|
||||
If the
|
||||
@ -90,25 +85,17 @@ flag is not present, the
|
||||
.Fn rtfree
|
||||
function will delete the route from the radix tree when the last
|
||||
reference drops.
|
||||
.It Xo
|
||||
.Vt "u_long rt_flags" ;
|
||||
.Xc
|
||||
.It Vt "u_long rt_flags" ;
|
||||
See below.
|
||||
.It Xo
|
||||
.Vt "struct ifnet *rt_ifp" ;
|
||||
.Xc
|
||||
.It Xo
|
||||
.Vt "struct ifaddr *rt_ifa" ;
|
||||
.Xc
|
||||
.It Vt "struct ifnet *rt_ifp" ;
|
||||
.It Vt "struct ifaddr *rt_ifa" ;
|
||||
These two fields represent the
|
||||
.Dq 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.
|
||||
.It Xo
|
||||
.Vt "struct sockaddr *rt_genmask" ;
|
||||
.Xc
|
||||
.It Vt "struct sockaddr *rt_genmask" ;
|
||||
When the
|
||||
.Fn rtalloc
|
||||
family of functions performs a cloning operation as requested by the
|
||||
@ -119,39 +106,29 @@ flag, this field is used as the mask for the new route which is
|
||||
inserted into the table.
|
||||
If this field is a null pointer, then a host
|
||||
route is generated.
|
||||
.It Xo
|
||||
.Vt "caddr_t rt_llinfo" ;
|
||||
.Xc
|
||||
.It Vt "caddr_t rt_llinfo" ;
|
||||
When the
|
||||
.Dv RTF_LLINFO
|
||||
flag is set, this field contains information specific to the link
|
||||
layer represented by the named interface address.
|
||||
.Po
|
||||
It is normally managed by the
|
||||
.Vt rt_ifa->ifa_rtrequest
|
||||
routine.
|
||||
.Pc
|
||||
(It is normally managed by the
|
||||
.Va rt_ifa->ifa_rtrequest
|
||||
routine.)
|
||||
Protocols such as
|
||||
.Xr arp 4
|
||||
use this field to reference per-destination state internal to that
|
||||
protocol.
|
||||
.It Xo
|
||||
.Vt "struct rt_metrics rt_rmx" ;
|
||||
.Xc
|
||||
.It Vt "struct rt_metrics rt_rmx" ;
|
||||
See below.
|
||||
.It Xo
|
||||
.Vt "struct rtentry *rt_gwroute" ;
|
||||
.Xc
|
||||
.It Vt "struct rtentry *rt_gwroute" ;
|
||||
This member is a reference to a route whose destination is
|
||||
.Li rt_gateway .
|
||||
.Va rt_gateway .
|
||||
It is only used for
|
||||
.Dv RTF_GATEWAY
|
||||
routes.
|
||||
.\" .It Dv "int (*rt_output)();"
|
||||
.\" .It Vt "int (*rt_output)();"
|
||||
.\" See below.
|
||||
.It Xo
|
||||
.Vt "struct rtentry *rt_parent" ;
|
||||
.Xc
|
||||
.It Vt "struct rtentry *rt_parent" ;
|
||||
A reference to the route from which this route was cloned, or a null
|
||||
pointer if this route was not generated by cloning.
|
||||
See also the
|
||||
@ -160,15 +137,15 @@ flag.
|
||||
.El
|
||||
.Pp
|
||||
The following flag bits are defined:
|
||||
.Bl -tag -offset indent -width RTF_CHAINDELETE -compact
|
||||
.Bl -tag -offset indent -width ".Dv RTF_PRCLONING" -compact
|
||||
.It Dv RTF_UP
|
||||
The route is not deleted.
|
||||
.It Dv RTF_GATEWAY
|
||||
The route points to an intermediate destination and not the ultimate
|
||||
recipient; the
|
||||
.Li rt_gateway
|
||||
.Va rt_gateway
|
||||
and
|
||||
.Li rt_gwroute
|
||||
.Va rt_gwroute
|
||||
fields name that destination.
|
||||
.It Dv RTF_HOST
|
||||
This is a host route.
|
||||
@ -190,7 +167,7 @@ protocol, indicating that the request was executed.
|
||||
.It Dv RTF_CLONING
|
||||
When this route is returned as a result of a lookup, automatically
|
||||
create a new route using this one as a template and
|
||||
.Li rt_genmask
|
||||
.Va rt_genmask
|
||||
(if present) as a mask.
|
||||
.It Dv RTF_XRESOLVE
|
||||
When this route is returned as a result of a lookup, send a report on
|
||||
@ -198,10 +175,8 @@ the
|
||||
.Xr route 4
|
||||
interface requesting that an external process perform resolution for
|
||||
this route.
|
||||
.Po
|
||||
Used in conjunction with
|
||||
.Dv RTF_CLONING .
|
||||
.Pc
|
||||
(Used in conjunction with
|
||||
.Dv RTF_CLONING . )
|
||||
.It Dv RTF_LLINFO
|
||||
Indicates that this route represents information being managed by a
|
||||
link layer's adaptation layer (e.g.,
|
||||
@ -220,13 +195,11 @@ Protocol-specific.
|
||||
Like
|
||||
.Dv RTF_CLONING ,
|
||||
only managed by an entire protocol.
|
||||
.Po
|
||||
E.g.,
|
||||
(E.g.,
|
||||
.Tn IP
|
||||
uses this flag to manage a per-host cache integrated with the routing
|
||||
table, for those destinations which do not have a link layer
|
||||
performing this function.
|
||||
.Pc
|
||||
performing this function.)
|
||||
.It Dv RTF_WASCLONED
|
||||
Indicates that this route was generated as a result of cloning
|
||||
requested by the
|
||||
@ -235,7 +208,7 @@ or
|
||||
.Dv RTF_PRCLONING
|
||||
flag.
|
||||
When set, the
|
||||
.Li rt_parent
|
||||
.Va rt_parent
|
||||
field indicates the route from which this one was generated.
|
||||
.It Dv RTF_PINNED
|
||||
(Reserved for future use to indicate routes which are not to be
|
||||
@ -250,33 +223,23 @@ Indicates that the destination is a multicast address.
|
||||
.El
|
||||
.Pp
|
||||
Every route has associated with it a set of metrics, defined by
|
||||
.Li struct rt_metrics :
|
||||
.Vt "struct rt_metrics" :
|
||||
.Bl -tag -offset indent -width 6n
|
||||
.It Xo
|
||||
.Vt "u_long rmx_locks" ;
|
||||
.Xc
|
||||
.It Vt "u_long rmx_locks" ;
|
||||
Flag bits indicating which metrics the kernel is not permitted to
|
||||
dynamically modify.
|
||||
.It Xo
|
||||
.Vt "u_long rmx_mtu" ;
|
||||
.Xc
|
||||
.It Vt "u_long rmx_mtu" ;
|
||||
MTU for this path.
|
||||
.It Xo
|
||||
.Vt "u_long rmx_hopcount" ;
|
||||
.Xc
|
||||
.It Vt "u_long rmx_hopcount" ;
|
||||
Number of intermediate systems on the path to this destination.
|
||||
.It Xo
|
||||
.Vt "u_long rmx_expire" ;
|
||||
.Xc
|
||||
.It Vt "u_long rmx_expire" ;
|
||||
The time
|
||||
(a la
|
||||
.Xr time 3 )
|
||||
at which this route should expire, or zero if it should never expire.
|
||||
It is the responsibility of individual protocol suites to ensure that routes
|
||||
are actually deleted once they expire.
|
||||
.It Xo
|
||||
.Vt "u_long rmx_recvpipe" ;
|
||||
.Xc
|
||||
.It Vt "u_long rmx_recvpipe" ;
|
||||
Nominally, the bandwidth-delay product for the path
|
||||
.Em from
|
||||
the destination
|
||||
@ -285,36 +248,24 @@ this system.
|
||||
In practice, this value is used to set the size of the
|
||||
receive buffer (and thus the window in sliding-window protocols like
|
||||
.Tn TCP ) .
|
||||
.It Xo
|
||||
.Vt "u_long rmx_sendpipe" ;
|
||||
.Xc
|
||||
.It Vt "u_long rmx_sendpipe" ;
|
||||
As before, but in the opposite direction.
|
||||
.It Xo
|
||||
.Vt "u_long rmx_ssthresh" ;
|
||||
.Xc
|
||||
.It Vt "u_long rmx_ssthresh" ;
|
||||
The slow-start threshold used in
|
||||
.Tn TCP
|
||||
congestion-avoidance.
|
||||
.It Xo
|
||||
.Vt "u_long rmx_rtt" ;
|
||||
.Xc
|
||||
.It Vt "u_long rmx_rtt" ;
|
||||
The round-trip time to this destination, in units of
|
||||
.Dv RMX_RTTUNIT
|
||||
per second.
|
||||
.It Xo
|
||||
.Vt "u_long rmx_rttvar" ;
|
||||
.Xc
|
||||
.It Vt "u_long rmx_rttvar" ;
|
||||
The average deviation of the round-type time to this destination, in
|
||||
units of
|
||||
.Dv RMX_RTTUNIT
|
||||
per second.
|
||||
.It Xo
|
||||
.Vt "u_long rmx_pksent" ;
|
||||
.Xc
|
||||
.It Vt "u_long rmx_pksent" ;
|
||||
A count of packets successfully sent via this route.
|
||||
.It Xo
|
||||
.Vt "u_long rmx_filler[4]" ;
|
||||
.Xc
|
||||
.It Vt "u_long rmx_filler[4]" ;
|
||||
.\" XXX badly named
|
||||
Empty space available for protocol-specific information.
|
||||
.El
|
||||
@ -324,29 +275,29 @@ Empty space available for protocol-specific information.
|
||||
.Xr rtalloc 9
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm
|
||||
.Vt rtentry
|
||||
structure first appeared in
|
||||
.Bx 4.2 .
|
||||
The radix-tree representation of the routing table and the
|
||||
.Nm rt_metrics
|
||||
.Vt rt_metrics
|
||||
structure first appeared in
|
||||
.Bx 4.3 reno .
|
||||
The
|
||||
.Nm RTF_PRCLONING
|
||||
.Dv RTF_PRCLONING
|
||||
mechanism first appeared in
|
||||
.Fx 2.0 .
|
||||
.Sh BUGS
|
||||
There are a number of historical relics remaining in this interface.
|
||||
The
|
||||
.Li rt_gateway
|
||||
.Va rt_gateway
|
||||
and
|
||||
.Li rmx_filler
|
||||
.Va rmx_filler
|
||||
fields could be named better.
|
||||
.Pp
|
||||
There is some disagreement over whether it is legitimate for
|
||||
.Dv RTF_LLINFO
|
||||
to be set by any process other than
|
||||
.Vt rt_ifa->ifa_rtrequest .
|
||||
.Va rt_ifa->ifa_rtrequest .
|
||||
.Sh AUTHORS
|
||||
This manual page was written by
|
||||
.An Garrett Wollman .
|
||||
|
Loading…
x
Reference in New Issue
Block a user