/*  include/linux/route.h
 *              Global definitions for the IP router interface.
 *
 */
#ifndef _LINUX_ROUTE_H
#define _LINUX_ROUTE_H

#include <linux/if.h>


/* This structure gets passed by the SIOCADDRT and SIOCDELRT calls. */
struct rtentry 
{
        unsigned long   rt_hash;        /* hash key for lookups         */
        struct sockaddr rt_dst;         /* target address               */
        struct sockaddr rt_gateway;     /* gateway addr (RTF_GATEWAY)   */
        struct sockaddr rt_genmask;     /* target network mask (IP)     */
        short           rt_flags;
        short           rt_refcnt;
        unsigned long   rt_use;
        struct ifnet    *rt_ifp;
        short           rt_metric;      /* +1 for binary compatibility! */
        char            *rt_dev;        /* forcing the device at add    */
        unsigned long   rt_mss;         /* per route MTU/Window         */
        unsigned long   rt_window;      /* Window clamping              */
        unsigned short  rt_irtt;        /* Initial RTT                  */
};


#define RTF_UP          0x0001          /* route usable                   */
#define RTF_GATEWAY     0x0002          /* destination is a gateway       */
#define RTF_HOST        0x0004          /* host entry (net otherwise)     */
#define RTF_REINSTATE   0x0008          /* reinstate route after tmout    */
#define RTF_DYNAMIC     0x0010          /* created dyn. (by redirect)     */
#define RTF_MODIFIED    0x0020          /* modified dyn. (by redirect)    */
#define RTF_MSS         0x0040          /* specific MSS for this route    */
#define RTF_WINDOW      0x0080          /* per route window clamping      */
#define RTF_IRTT        0x0100          /* Initial round trip time        */
#define RTF_REJECT      0x0200          /* Reject route                   */

/*
 *      This structure is passed from the kernel to user space by netlink
 *      routing/device announcements
 */

struct netlink_rtinfo
{
        unsigned long   rtmsg_type;
        struct sockaddr rtmsg_dst;
        struct sockaddr rtmsg_gateway;
        struct sockaddr rtmsg_genmask;
        short           rtmsg_flags;
        short           rtmsg_metric;
        char            rtmsg_device[16];
};

#define RTMSG_NEWROUTE          0x01
#define RTMSG_DELROUTE          0x02
#define RTMSG_NEWDEVICE         0x11
#define RTMSG_DELDEVICE         0x12

#endif  /* _LINUX_ROUTE_H */