#include <net/route.h>

net/route.h

includes: sys/appleapiopts.h, stdint.h, sys/types.h, sys/socket.h
80 macros · 6 structs

structrt_metrics

These numbers are used by reliable protocols for determining retransmission behavior and are included in the routing structure.
size 56, align 4
u_int32_trmx_locksKernel leaves these values alone
u_int32_trmx_mtuMTU for this path
u_int32_trmx_hopcountmax hops expected
int32_trmx_expirelifetime for route, e.g. redirect
u_int32_trmx_recvpipeinbound delay-bandwidth product
u_int32_trmx_sendpipeoutbound delay-bandwidth product
u_int32_trmx_ssthreshoutbound gateway buffer limit
u_int32_trmx_rttestimated round trip time
u_int32_trmx_rttvarestimated rtt variance
u_int32_trmx_pksentpackets sent using this route
u_int32_t[4]rmx_fillerwill be used for TCP's peer-MSS cache

macroRTM_RTTUNIT

rmx_rtt and rmx_rttvar are stored as microseconds;
#define RTM_RTTUNIT 1000000
units for rtt, rttvar, as units per sec

macroRTF_UP

#define RTF_UP 0x1
route usable

macroRTF_GATEWAY

#define RTF_GATEWAY 0x2
destination is a gateway

macroRTF_HOST

#define RTF_HOST 0x4
host entry (net otherwise)

macroRTF_REJECT

#define RTF_REJECT 0x8
host or net unreachable

macroRTF_DYNAMIC

#define RTF_DYNAMIC 0x10
created dynamically (by redirect)

macroRTF_MODIFIED

#define RTF_MODIFIED 0x20
modified dynamically (by redirect)

macroRTF_DONE

#define RTF_DONE 0x40
message confirmed

macroRTF_DELCLONE

#define RTF_DELCLONE 0x80
delete cloned route

macroRTF_CLONING

#define RTF_CLONING 0x100
generate new routes on use

macroRTF_XRESOLVE

#define RTF_XRESOLVE 0x200
external daemon resolves name

macroRTF_LLINFO

#define RTF_LLINFO 0x400
generated by link layer (e.g. ARP)

macroRTF_STATIC

#define RTF_STATIC 0x800
manually added

macroRTF_BLACKHOLE

#define RTF_BLACKHOLE 0x1000
just discard pkts (during updates)

macroRTF_NOIFREF

#define RTF_NOIFREF 0x2000
not eligible for RTF_IFREF

macroRTF_PROTO2

#define RTF_PROTO2 0x4000
protocol specific routing flag

macroRTF_PROTO1

#define RTF_PROTO1 0x8000
protocol specific routing flag

macroRTF_PRCLONING

#define RTF_PRCLONING 0x10000
protocol requires cloning

macroRTF_WASCLONED

#define RTF_WASCLONED 0x20000
route generated through cloning

macroRTF_PROTO3

#define RTF_PROTO3 0x40000
protocol specific routing flag

macroRTF_PINNED

0x80000 unused
#define RTF_PINNED 0x100000
future use

macroRTF_LOCAL

#define RTF_LOCAL 0x200000
route represents a local address

macroRTF_BROADCAST

#define RTF_BROADCAST 0x400000
route represents a bcast address

macroRTF_MULTICAST

#define RTF_MULTICAST 0x800000
route represents a mcast address

macroRTF_IFSCOPE

#define RTF_IFSCOPE 0x1000000
has valid interface scope

macroRTF_CONDEMNED

#define RTF_CONDEMNED 0x2000000
defunct; no longer modifiable

macroRTF_IFREF

#define RTF_IFREF 0x4000000
route holds a ref to interface

macroRTF_PROXY

#define RTF_PROXY 0x8000000
proxying, no interface scope

macroRTF_ROUTER

#define RTF_ROUTER 0x10000000
host is a router

macroRTF_DEAD

#define RTF_DEAD 0x20000000
Route entry is being freed

macroRTF_GLOBAL

#define RTF_GLOBAL 0x40000000
route to destination of the global internet

macroRTPRF_OURS

#define RTPRF_OURS RTF_PROTO3
set on routes we manage

macroIS_DIRECT_HOSTROUTE

#define IS_DIRECT_HOSTROUTE(rt) (((rt)->rt_flags & (RTF_HOST | RTF_GATEWAY)) == RTF_HOST)

macroIS_DYNAMIC_DIRECT_HOSTROUTE

#define IS_DYNAMIC_DIRECT_HOSTROUTE(rt) (((rt)->rt_flags & (RTF_CLONING | RTF_PRCLONING | RTF_HOST | RTF_LLINFO |
	    RTF_WASCLONED | RTF_GATEWAY)) ==
	 (RTF_HOST | RTF_LLINFO | RTF_WASCLONED))

macroIS_LOCALNET_ROUTE

#define IS_LOCALNET_ROUTE(rt) (!((rt)->rt_flags & RTF_LOCAL) &&
     ((((rt)->rt_flags & (RTF_HOST | RTF_GATEWAY)) == RTF_HOST) ||
     ((rt)->rt_flags & (RTF_MULTICAST | RTF_BROADCAST))))

structrtstat

Routing statistics.
size 12, align 2
shortrts_badredirectbogus redirect calls
shortrts_dynamicroutes created by redirects
shortrts_newgatewayroutes modified by redirects
shortrts_unreachlookups which failed
shortrts_wildcardlookups satisfied by a wildcard
shortrts_badrtgwrouteroute to gateway is not direct

structrt_msghdr

Structures for routing messages.
size 92, align 4
u_shortrtm_msglento skip over non-understood messages
u_charrtm_versionfuture binary compatibility
u_charrtm_typemessage type
u_shortrtm_indexindex for associated ifp
intrtm_flagsflags, incl. kern & message, e.g. DONE
intrtm_addrsbitmask identifying sockaddrs in msg
pid_trtm_pididentify sender
intrtm_seqfor sender to identify action
intrtm_errnowhy failed
intrtm_usefrom rtentry
u_int32_trtm_initswhich metrics we are initializing
struct rt_metricsrtm_rmxmetrics themselves

structrt_msghdr2

size 92, align 4
u_shortrtm_msglento skip over non-understood messages
u_charrtm_versionfuture binary compatibility
u_charrtm_typemessage type
u_shortrtm_indexindex for associated ifp
intrtm_flagsflags, incl. kern & message, e.g. DONE
intrtm_addrsbitmask identifying sockaddrs in msg
int32_trtm_refcntreference count
intrtm_parentflagsflags of the parent route
intrtm_reservedreserved field set to 0
intrtm_usefrom rtentry
u_int32_trtm_initswhich metrics we are initializing
struct rt_metricsrtm_rmxmetrics themselves

structrt_msghdr_prelude

size 2, align 2
u_shortrtm_msglento skip over non-understood messages

macroRTM_VERSION

#define RTM_VERSION 5
Up the ante and ignore older versions

macroRTM_ADD

Message types.
#define RTM_ADD 0x1
Add Route

macroRTM_DELETE

#define RTM_DELETE 0x2
Delete Route

macroRTM_CHANGE

#define RTM_CHANGE 0x3
Change Metrics or flags

macroRTM_GET

#define RTM_GET 0x4
Report Metrics

macroRTM_LOSING

#define RTM_LOSING 0x5
RTM_LOSING is no longer generated by xnu and is deprecated

macroRTM_REDIRECT

#define RTM_REDIRECT 0x6
Told to use different route

macroRTM_MISS

#define RTM_MISS 0x7
Lookup failed on this address

macroRTM_LOCK

#define RTM_LOCK 0x8
fix specified metrics

macroRTM_OLDADD

#define RTM_OLDADD 0x9
caused by SIOCADDRT

macroRTM_OLDDEL

#define RTM_OLDDEL 0xa
caused by SIOCDELRT

macroRTM_RESOLVE

#define RTM_RESOLVE 0xb
req to resolve dst to LL addr

macroRTM_NEWADDR

#define RTM_NEWADDR 0xc
address being added to iface

macroRTM_DELADDR

#define RTM_DELADDR 0xd
address being removed from iface

macroRTM_IFINFO

#define RTM_IFINFO 0xe
iface going up/down etc.

macroRTM_NEWMADDR

#define RTM_NEWMADDR 0xf
mcast group membership being added to if

macroRTM_DELMADDR

#define RTM_DELMADDR 0x10
mcast group membership being deleted

macroRTM_IFINFO2

#define RTM_IFINFO2 0x12

macroRTM_NEWMADDR2

#define RTM_NEWMADDR2 0x13

macroRTM_GET2

#define RTM_GET2 0x14

macroRTV_MTU

Bitmask values for rtm_inits and rmx_locks.
#define RTV_MTU 0x1
init or lock _mtu

macroRTV_HOPCOUNT

#define RTV_HOPCOUNT 0x2
init or lock _hopcount

macroRTV_EXPIRE

#define RTV_EXPIRE 0x4
init or lock _expire

macroRTV_RPIPE

#define RTV_RPIPE 0x8
init or lock _recvpipe

macroRTV_SPIPE

#define RTV_SPIPE 0x10
init or lock _sendpipe

macroRTV_SSTHRESH

#define RTV_SSTHRESH 0x20
init or lock _ssthresh

macroRTV_RTT

#define RTV_RTT 0x40
init or lock _rtt

macroRTV_RTTVAR

#define RTV_RTTVAR 0x80
init or lock _rttvar

macroRTA_DST

Bitmask values for rtm_addrs.
#define RTA_DST 0x1
destination sockaddr present

macroRTA_GATEWAY

#define RTA_GATEWAY 0x2
gateway sockaddr present

macroRTA_NETMASK

#define RTA_NETMASK 0x4
netmask sockaddr present

macroRTA_GENMASK

#define RTA_GENMASK 0x8
cloning mask sockaddr present

macroRTA_IFP

#define RTA_IFP 0x10
interface name sockaddr present

macroRTA_IFA

#define RTA_IFA 0x20
interface addr sockaddr present

macroRTA_AUTHOR

#define RTA_AUTHOR 0x40
sockaddr for author of redirect

macroRTA_BRD

#define RTA_BRD 0x80
for NEWADDR, broadcast or p-p dest addr

macroRTAX_DST

Index offsets for sockaddr array for alternate internal encoding.
#define RTAX_DST 0
destination sockaddr present

macroRTAX_GATEWAY

#define RTAX_GATEWAY 1
gateway sockaddr present

macroRTAX_NETMASK

#define RTAX_NETMASK 2
netmask sockaddr present

macroRTAX_GENMASK

#define RTAX_GENMASK 3
cloning mask sockaddr present

macroRTAX_IFP

#define RTAX_IFP 4
interface name sockaddr present

macroRTAX_IFA

#define RTAX_IFA 5
interface addr sockaddr present

macroRTAX_AUTHOR

#define RTAX_AUTHOR 6
sockaddr for author of redirect

macroRTAX_BRD

#define RTAX_BRD 7
for NEWADDR, broadcast or p-p dest addr

macroRTAX_MAX

#define RTAX_MAX 8
size of array to allocate

structrt_addrinfo

size 72, align 8
intrti_addrs
struct sockaddr *[8]rti_info