#ifndef _INET_IP_RTS_H
#define _INET_IP_RTS_H
#ifdef __cplusplus
extern "C" {
#endif
#define TSOL_RTSA_REQUEST_MAX 1
#define RTSQ_UNDER_IPMP 0x01
#define RTSQ_NORMAL 0x02
#define RTSQ_ALL (RTSQ_UNDER_IPMP|RTSQ_NORMAL)
#define RTSQ_DEFAULT 0x04
#ifdef _KERNEL
extern void ip_rts_change(int, ipaddr_t, ipaddr_t,
ipaddr_t, ipaddr_t, ipaddr_t, int, int,
int, ip_stack_t *);
extern void ip_rts_change_v6(int, const in6_addr_t *, const in6_addr_t *,
const in6_addr_t *, const in6_addr_t *, const in6_addr_t *, int, int, int,
ip_stack_t *);
extern void ip_rts_ifmsg(const ipif_t *, uint_t);
extern void ip_rts_xifmsg(const ipif_t *, uint64_t, uint64_t, uint_t);
extern void ip_rts_newaddrmsg(int, int, const ipif_t *, uint_t);
extern int ip_rts_request(queue_t *, mblk_t *, cred_t *);
extern void ip_rts_register(conn_t *);
extern void ip_rts_rtmsg(int, ire_t *, int, ip_stack_t *);
extern void ip_rts_unregister(conn_t *);
extern mblk_t *rts_alloc_msg(int, int, sa_family_t, uint_t);
extern size_t rts_data_msg_size(int, sa_family_t, uint_t);
extern void rts_fill_msg_v6(int, int, const in6_addr_t *,
const in6_addr_t *, const in6_addr_t *, const in6_addr_t *,
const in6_addr_t *, const in6_addr_t *, const in6_addr_t *,
const ill_t *, mblk_t *, const tsol_gc_t *);
extern size_t rts_header_msg_size(int);
extern void rts_merge_metrics(iulp_t *, const iulp_t *);
extern void rts_queue_input(mblk_t *, conn_t *, sa_family_t, uint_t,
ip_stack_t *);
extern int ip_rts_request_common(mblk_t *mp, conn_t *, cred_t *);
#endif
#ifdef __cplusplus
}
#endif
#endif