route.h raw

   1  #ifndef _NET_ROUTE_H
   2  #define _NET_ROUTE_H
   3  
   4  #ifdef __cplusplus
   5  extern "C" {
   6  #endif
   7  
   8  #include <stdint.h>
   9  #include <sys/socket.h>
  10  #include <sys/types.h>
  11  #include <netinet/in.h>
  12  
  13  
  14  struct rtentry {
  15  	unsigned long int rt_pad1;
  16  	struct sockaddr rt_dst;
  17  	struct sockaddr rt_gateway;
  18  	struct sockaddr rt_genmask;
  19  	unsigned short int rt_flags;
  20  	short int rt_pad2;
  21  	unsigned long int rt_pad3;
  22  	unsigned char rt_tos;
  23  	unsigned char rt_class;
  24  	short int rt_pad4[sizeof(long)/2-1];
  25  	short int rt_metric;
  26  	char *rt_dev;
  27  	unsigned long int rt_mtu;
  28  	unsigned long int rt_window;
  29  	unsigned short int rt_irtt;
  30  };
  31  
  32  #define rt_mss	rt_mtu
  33  
  34  
  35  struct in6_rtmsg {
  36  	struct in6_addr rtmsg_dst;
  37  	struct in6_addr rtmsg_src;
  38  	struct in6_addr rtmsg_gateway;
  39  	uint32_t rtmsg_type;
  40  	uint16_t rtmsg_dst_len;
  41  	uint16_t rtmsg_src_len;
  42  	uint32_t rtmsg_metric;
  43  	unsigned long int rtmsg_info;
  44  	uint32_t rtmsg_flags;
  45  	int rtmsg_ifindex;
  46  };
  47  
  48  
  49  #define	RTF_UP		0x0001
  50  #define	RTF_GATEWAY	0x0002
  51  
  52  #define	RTF_HOST	0x0004
  53  #define RTF_REINSTATE	0x0008
  54  #define	RTF_DYNAMIC	0x0010
  55  #define	RTF_MODIFIED	0x0020
  56  #define RTF_MTU		0x0040
  57  #define RTF_MSS		RTF_MTU
  58  #define RTF_WINDOW	0x0080
  59  #define RTF_IRTT	0x0100
  60  #define RTF_REJECT	0x0200
  61  #define	RTF_STATIC	0x0400
  62  #define	RTF_XRESOLVE	0x0800
  63  #define RTF_NOFORWARD   0x1000
  64  #define RTF_THROW	0x2000
  65  #define RTF_NOPMTUDISC  0x4000
  66  
  67  #define RTF_DEFAULT	0x00010000
  68  #define RTF_ALLONLINK	0x00020000
  69  #define RTF_ADDRCONF	0x00040000
  70  
  71  #define RTF_LINKRT	0x00100000
  72  #define RTF_NONEXTHOP	0x00200000
  73  
  74  #define RTF_CACHE	0x01000000
  75  #define RTF_FLOW	0x02000000
  76  #define RTF_POLICY	0x04000000
  77  
  78  #define RTCF_VALVE	0x00200000
  79  #define RTCF_MASQ	0x00400000
  80  #define RTCF_NAT	0x00800000
  81  #define RTCF_DOREDIRECT 0x01000000
  82  #define RTCF_LOG	0x02000000
  83  #define RTCF_DIRECTSRC	0x04000000
  84  
  85  #define RTF_LOCAL	0x80000000
  86  #define RTF_INTERFACE	0x40000000
  87  #define RTF_MULTICAST	0x20000000
  88  #define RTF_BROADCAST	0x10000000
  89  #define RTF_NAT		0x08000000
  90  
  91  #define RTF_ADDRCLASSMASK	0xF8000000
  92  #define RT_ADDRCLASS(flags)	((uint32_t) flags >> 23)
  93  
  94  #define RT_TOS(tos)		((tos) & IPTOS_TOS_MASK)
  95  
  96  #define RT_LOCALADDR(flags)	((flags & RTF_ADDRCLASSMASK) \
  97  				 == (RTF_LOCAL|RTF_INTERFACE))
  98  
  99  #define RT_CLASS_UNSPEC		0
 100  #define RT_CLASS_DEFAULT	253
 101  
 102  #define RT_CLASS_MAIN		254
 103  #define RT_CLASS_LOCAL		255
 104  #define RT_CLASS_MAX		255
 105  
 106  
 107  #define RTMSG_ACK		NLMSG_ACK
 108  #define RTMSG_OVERRUN		NLMSG_OVERRUN
 109  
 110  #define RTMSG_NEWDEVICE		0x11
 111  #define RTMSG_DELDEVICE		0x12
 112  #define RTMSG_NEWROUTE		0x21
 113  #define RTMSG_DELROUTE		0x22
 114  #define RTMSG_NEWRULE		0x31
 115  #define RTMSG_DELRULE		0x32
 116  #define RTMSG_CONTROL		0x40
 117  
 118  #define RTMSG_AR_FAILED		0x51
 119  
 120  #ifdef __cplusplus
 121  }
 122  #endif
 123  
 124  #endif
 125