+/*
+ * Structures for routing messages.
+ */
+struct rt_metrics {
+ u_long rtm_mtu; /* MTU for this path */
+ u_long rtm_hopcount; /* max hops expected */
+ u_long rtm_expire; /* lifetime for route, e.g. redirect */
+ u_long rtm_recvpipe; /* inbound delay-bandwith product */
+ u_long rtm_sendpipe; /* outbound delay-bandwith product */
+ u_long rtm_ssthresh; /* outbound gateway buffer limit */
+ u_long rtm_rtt; /* estimated round trip time */
+ u_long rtm_rttvar; /* estimated rtt variance */
+};
+
+struct rt_msghdr {
+ u_short rtm_msglen; /* to skip over non-understood messages */
+ u_char rtm_version; /* future binary compatability */
+ u_char rtm_type; /* message type */
+ u_char rtm_count; /* number of sockaddrs */
+ pid_t rtm_pid; /* identify sender */
+ int rtm_seq; /* for sender to identify action */
+ int rtm_errno; /* why failed */
+ int rtm_flags; /* flags, incl. kern & message, e.g. DONE */
+ int rtm_locks; /* which values kernel can alter */
+ int rtm_inits; /* which values we are initializing */
+};
+
+struct rt_chgmsg { /* Good for RTM_ADD, RTM_CHANGE, RTM_GET */
+ struct rt_msghdr cm_h;
+ struct rt_metrics cm_m;
+};
+
+struct route_cb {
+ int ip_count;
+ int ns_count;
+ int iso_count;
+ int any_count;
+};
+
+#define RTM_ADD 0x1 /* Add Route */
+#define RTM_DELETE 0x2 /* Delete Route */
+#define RTM_CHANGE 0x3 /* Change Metrics or flags */
+#define RTM_GET 0x4 /* Report Metrics */
+#define RTM_LOSING 0x5 /* Kernel Suspects Partitioning */
+#define RTM_REDIRECT 0x6 /* Told to use different route */
+#define RTM_MISS 0x7 /* Lookup failed on this address */
+#define RTM_LOCK 0x8 /* fix specified metrics */
+#define RTM_OLDADD 0x9 /* caused by SIOCADDRT */
+#define RTM_OLDDEL 0xa /* caused by SIOCDELRT */
+
+#define RTV_MTU 0x1 /* init or lock _mtu */
+#define RTV_HOPCOUNT 0x2 /* init or lock _hopcount */
+#define RTV_EXPIRE 0x4 /* init or lock _hopcount */
+#define RTV_RPIPE 0x8 /* init or lock _recvpipe */
+#define RTV_SPIPE 0x10 /* init or lock _sendpipe */
+#define RTV_SSTHRESH 0x20 /* init or lock _ssthresh */
+#define RTV_RTT 0x40 /* init or lock _rtt */
+#define RTV_RTTVAR 0x80 /* init or lock _rttvar */
+
+#ifdef KERNEL
+struct route_cb route_cb;
+#endif