diff options
author | Claudio Jeker <claudio@cvs.openbsd.org> | 2007-09-03 15:24:50 +0000 |
---|---|---|
committer | Claudio Jeker <claudio@cvs.openbsd.org> | 2007-09-03 15:24:50 +0000 |
commit | 66e75d800387effae4d92db63dbfc58d0dcce5b3 (patch) | |
tree | d81fcade71677827092118d136feb9e1da27fd6d /sys/net/route.h | |
parent | 8a2f9322df090c3700e0005211d34b8426138f95 (diff) |
Bump RTM_VERSION to 4 and start a new aera of routing in OpenBSD :)
Changes include 64bit counters instead of u_long, routing table id in the header
of most messages, reserved routing priority field, added a hdrlen field to skip
over the header so that binary compatibility becomes easier.
A minimal backward support for old binaries is included to ease upgrades but
don't expect anything more than ifconfig, route and dhclient to correctly work.
OK henning@ mglocker@
Diffstat (limited to 'sys/net/route.h')
-rw-r--r-- | sys/net/route.h | 84 |
1 files changed, 60 insertions, 24 deletions
diff --git a/sys/net/route.h b/sys/net/route.h index e6e370c337f..ab82113c816 100644 --- a/sys/net/route.h +++ b/sys/net/route.h @@ -1,4 +1,4 @@ -/* $OpenBSD: route.h,v 1.46 2006/06/18 11:47:45 pascoe Exp $ */ +/* $OpenBSD: route.h,v 1.47 2007/09/03 15:24:49 claudio Exp $ */ /* $NetBSD: route.h,v 1.9 1996/02/13 22:00:49 christos Exp $ */ /* @@ -59,30 +59,30 @@ struct route { * retransmission behavior and are included in the routing structure. */ struct rt_kmetrics { - u_long rmx_locks; /* Kernel must leave these values alone */ - u_long rmx_mtu; /* MTU for this path */ - u_long rmx_expire; /* lifetime for route, e.g. redirect */ - u_long rmx_pksent; /* packets sent using this route */ + u_int64_t rmx_pksent; /* packets sent using this route */ + u_int rmx_locks; /* Kernel must leave these values */ + u_int rmx_mtu; /* MTU for this path */ + u_int rmx_expire; /* lifetime for route, e.g. redirect */ + u_int rmx_pad; }; /* * Huge version for userland compatibility. */ struct rt_metrics { - u_long rmx_locks; /* Kernel must leave these values alone */ - u_long rmx_mtu; /* MTU for this path */ - u_long rmx_hopcount; /* max hops expected */ - u_long rmx_expire; /* lifetime for route, e.g. redirect */ - u_long rmx_recvpipe; /* inbound delay-bandwidth product */ - u_long rmx_sendpipe; /* outbound delay-bandwidth product */ - u_long rmx_ssthresh; /* outbound gateway buffer limit (deprecated) */ - u_long rmx_rtt; /* estimated round trip time (deprecated) */ - u_long rmx_rttvar; /* estimated rtt variance (deprecated) */ - u_long rmx_pksent; /* packets sent using this route */ + u_int64_t rmx_pksent; /* packets sent using this route */ + u_int rmx_locks; /* Kernel must leave these values */ + u_int rmx_mtu; /* MTU for this path */ + u_int rmx_expire; /* lifetime for route, e.g. redirect */ + u_int rmx_refcnt; /* # references hold */ + /* some apps may still need these no longer used metrics */ + u_int rmx_hopcount; /* max hops expected */ + u_int rmx_recvpipe; /* inbound delay-bandwidth product */ + u_int rmx_sendpipe; /* outbound delay-bandwidth product */ + u_int rmx_ssthresh; /* outbound gateway buffer limit */ + u_int rmx_rtt; /* estimated round trip time */ + u_int rmx_rttvar; /* estimated rtt variance */ }; -/* XXX overloading some values that are no longer used. */ -#define rmx_refcnt rmx_rttvar /* # held references only used by sysctl */ -#define rmx_rt_tableid rmx_rtt /* routing table ID */ /* * rmx_rtt and rmx_rttvar are stored as microseconds; @@ -172,21 +172,57 @@ struct rt_msghdr { u_short rtm_msglen; /* to skip over non-understood messages */ u_char rtm_version; /* future binary compatibility */ u_char rtm_type; /* message type */ + u_short rtm_hdrlen; /* sizeof(rt_msghdr) to skip over the header */ u_short rtm_index; /* index for associated ifp */ - int rtm_flags; /* flags, incl. kern & message, e.g. DONE */ + u_short rtm_tableid; /* routing table id */ + u_char rtm_prio; /* routing priority */ + u_char rtm_pad; int rtm_addrs; /* bitmask identifying sockaddrs in msg */ + int rtm_flags; /* flags, incl. kern & message, e.g. DONE */ + int rtm_fmask; /* bitmask used in RTM_CHANGE message */ pid_t rtm_pid; /* identify sender */ int rtm_seq; /* for sender to identify action */ int rtm_errno; /* why failed */ - int rtm_use; /* deprecated use rtm_rmx->rmx_pksent */ -#define rtm_fmask rtm_use /* bitmask used in RTM_CHANGE message */ - u_long rtm_inits; /* which metrics we are initializing */ + u_int rtm_inits; /* which metrics we are initializing */ struct rt_metrics rtm_rmx; /* metrics themselves */ }; /* overload no longer used field */ -#define rtm_tableid rtm_rmx.rmx_rt_tableid +#define rtm_use rtm_rmx.rmx_pksent + +/* + * Comaptibility structures for version 3 messages. + * Keep them till after OpenBSD 4.4 + */ +struct rt_ometrics { + u_long rmx_locks; /* Kernel must leave these values alone */ + u_long rmx_mtu; /* MTU for this path */ + u_long rmx_hopcount; /* max hops expected (deprecated) */ + u_long rmx_expire; /* lifetime for route, e.g. redirect */ + u_long rmx_recvpipe; /* inbound delay-bandwidth product */ + u_long rmx_sendpipe; /* outbound delay-bandwidth product */ + u_long rmx_ssthresh; /* outbound gateway buffer limit (deprecated) */ + u_long rmx_rtt; /* overloaded with rmx_rt_tableid */ + u_long rmx_rttvar; /* estimated rtt variance (deprecated) */ + u_long rmx_pksent; /* packets sent using this route */ +}; + +struct rt_omsghdr { + u_short rtm_msglen; /* to skip over non-understood messages */ + u_char rtm_version; /* future binary compatibility */ + u_char rtm_type; /* message type */ + u_short rtm_index; /* index for associated ifp */ + int rtm_flags; /* flags, incl. kern & message, e.g. DONE */ + int rtm_addrs; /* bitmask identifying sockaddrs in msg */ + pid_t rtm_pid; /* identify sender */ + int rtm_seq; /* for sender to identify action */ + int rtm_errno; /* why failed */ + int rtm_fmask; /* was once rtm_use */ + u_long rtm_inits; /* which metrics we are initializing */ + struct rt_ometrics rtm_rmx; /* metrics themselves */ +}; -#define RTM_VERSION 3 /* Up the ante and ignore older versions */ +#define RTM_OVERSION 3 /* provide some minimal backward compat */ +#define RTM_VERSION 4 /* Up the ante and ignore older versions */ #define RTM_ADD 0x1 /* Add Route */ #define RTM_DELETE 0x2 /* Delete Route */ |