route.h
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:4k
源码类别:

SNMP编程

开发平台:

Unix_Linux

  1. /*
  2.  * route data access header
  3.  *
  4.  * $Id: route.h,v 1.9 2004/10/15 00:53:50 rstory Exp $
  5.  */
  6. #ifndef NETSNMP_ACCESS_ROUTE_H
  7. #define NETSNMP_ACCESS_ROUTE_H
  8. # ifdef __cplusplus
  9. extern          "C" {
  10. #endif
  11. /**---------------------------------------------------------------------*/
  12. /*
  13.  * structure definitions
  14.  */
  15. #if defined( INET6 )
  16. #   define NETSNMP_ACCESS_ROUTE_ADDR_BUF_SIZE 16
  17. #else
  18. #   define NETSNMP_ACCESS_ROUTE_ADDR_BUF_SIZE 4
  19. #endif
  20. /*
  21.  * netsnmp_route_entry
  22.  *   - primary route structure for both ipv4 & ipv6
  23.  */
  24. typedef struct netsnmp_route_s {
  25.    netsnmp_index oid_index;   /* MUST BE FIRST!! for container use */
  26.    oid           ns_rt_index; /* arbitrary index */
  27.    int       flags; /* for net-snmp use */
  28.    oid       if_index;
  29.    u_char    rt_dest[NETSNMP_ACCESS_ROUTE_ADDR_BUF_SIZE];
  30.    u_char    rt_nexthop[NETSNMP_ACCESS_ROUTE_ADDR_BUF_SIZE];
  31. #ifdef USING_IP_FORWARD_MIB_INETCIDRROUTETABLE_INETCIDRROUTETABLE_MODULE
  32.    /*
  33.     * define the maximum oid length for a policy, for use by the
  34.     * inetCidrRouteTable.
  35.     */
  36. #define NETSNMP_POLICY_OID_MAX_LEN  1
  37.    oid      *rt_policy;      /* NULL should be interpreted as { 0, 0 } */
  38.    u_char    rt_policy_len;  /* 0-128 oids */
  39. #endif
  40.    u_char    rt_dest_len;    /* 4 | 16 since we only do ipv4|ipv6 */
  41.    u_char    rt_dest_type;   /* InetAddressType 0-16 */
  42.    u_char    rt_nexthop_len; /* 4 | 16 since we only do ipv4|ipv6*/
  43.    u_char    rt_nexthop_type;/* InetAddressType 0-16 */
  44.    u_char    rt_pfx_len;     /* 0-128 bits */
  45.    u_char    rt_type;        /* ip(1-4) != inet(1-5) */
  46.    u_char    rt_proto;       /* ip(enum 1-16) ?= inet(IANAipRouteProtocol 1-17) */
  47. #ifdef USING_IP_FORWARD_MIB_IPCIDRROUTETABLE_IPCIDRROUTETABLE_MODULE
  48.    /** rt_info != inet_policy, because that would have made sense */
  49.    uint8_t   rt_info_len;    /* 0-128 oids */
  50.    oid      *rt_info;        /* NULL should be interpreted as { 0, 0 } */
  51.    uint32_t  rt_mask;        /* ipv4 only */
  52.    uint32_t  rt_tos;         /* Integer32 (0..2147483647) */
  53. #endif
  54.    uint32_t  rt_age;         /* seconds (ip == inet) */
  55.    int32_t   rt_nexthop_as;  /* ip(int32) == inet(InetAutonomousSystemNumber) */
  56.    int32_t   rt_metric1;
  57.    int32_t   rt_metric2;
  58.    int32_t   rt_metric3;
  59.    int32_t   rt_metric4;
  60.    int32_t   rt_metric5;
  61. } netsnmp_route_entry;
  62. #define NETSNMP_ROUTE_ENTRY_POLICY_STATIC 0x00000001
  63. /**---------------------------------------------------------------------*/
  64. /*
  65.  * ACCESS function prototypes
  66.  */
  67. /*
  68.  * ifcontainer init
  69.  */
  70. netsnmp_container * netsnmp_access_route_container_init(u_int init_flags);
  71. #define NETSNMP_ACCESS_ROUTE_INIT_NOFLAGS               0x0000
  72. #define NETSNMP_ACCESS_ROUTE_INIT_ADDL_IDX_BY_NAME      0x0001
  73. /*
  74.  * ifcontainer load and free
  75.  */
  76. netsnmp_container*
  77. netsnmp_access_route_container_load(netsnmp_container* container,
  78.                                     u_int load_flags);
  79. #define NETSNMP_ACCESS_ROUTE_LOAD_NOFLAGS               0x0000
  80. #define NETSNMP_ACCESS_ROUTE_LOAD_IPV4_ONLY             0x0001
  81. void netsnmp_access_route_container_free(netsnmp_container *container,
  82.                                          u_int free_flags);
  83. #define NETSNMP_ACCESS_ROUTE_FREE_NOFLAGS               0x0000
  84. #define NETSNMP_ACCESS_ROUTE_FREE_DONT_CLEAR            0x0001
  85. #define NETSNMP_ACCESS_ROUTE_FREE_KEEP_CONTAINER        0x0002
  86. /*
  87.  * create/free a route+entry
  88.  */
  89. netsnmp_route_entry *
  90. netsnmp_access_route_entry_create(void);
  91. void netsnmp_access_route_entry_free(netsnmp_route_entry * entry);
  92. /*
  93.  * find entry in container
  94.  */
  95. /** not yet */
  96. /**---------------------------------------------------------------------*/
  97. # ifdef __cplusplus
  98. }
  99. #endif
  100. #endif /* NETSNMP_ACCESS_ROUTE_H */