| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- /*
- * route data access header
- *
- * $Id$
- */
- #ifndef NETSNMP_ACCESS_ROUTE_H
- #define NETSNMP_ACCESS_ROUTE_H
- # ifdef __cplusplus
- extern "C" {
- #endif
- /**---------------------------------------------------------------------*/
- /*
- * structure definitions
- */
- #if defined( NETSNMP_ENABLE_IPV6 )
- # define NETSNMP_ACCESS_ROUTE_ADDR_BUF_SIZE 16
- #else
- # define NETSNMP_ACCESS_ROUTE_ADDR_BUF_SIZE 4
- #endif
- /*
- * netsnmp_route_entry
- * - primary route structure for both ipv4 & ipv6
- */
- typedef struct netsnmp_route_s {
- netsnmp_index oid_index; /* MUST BE FIRST!! for container use */
- oid ns_rt_index; /* arbitrary index */
- int flags; /* for net-snmp use */
- oid if_index;
- /*
- * addresses, in network byte order
- */
- u_char rt_dest[NETSNMP_ACCESS_ROUTE_ADDR_BUF_SIZE];
- u_char rt_nexthop[NETSNMP_ACCESS_ROUTE_ADDR_BUF_SIZE];
- #ifdef USING_IP_FORWARD_MIB_INETCIDRROUTETABLE_INETCIDRROUTETABLE_MODULE
- /*
- * define the maximum oid length for a policy, for use by the
- * inetCidrRouteTable. Must be at least 2, for default nullOid case.
- */
- #define NETSNMP_POLICY_OID_MAX_LEN 3
- oid *rt_policy; /* NULL should be interpreted as { 0, 0 } */
- u_char rt_policy_len; /* 0-128 oids */
- #endif
- u_char rt_dest_len; /* 4 | 16 since we only do ipv4|ipv6 */
- u_char rt_dest_type; /* InetAddressType 0-16 */
- u_char rt_nexthop_len; /* 4 | 16 since we only do ipv4|ipv6*/
- u_char rt_nexthop_type;/* InetAddressType 0-16 */
- u_char rt_pfx_len; /* 0-128 bits */
- u_char rt_type; /* ip(1-4) != inet(1-5) */
- u_char rt_proto; /* ip(enum 1-16) ?= inet(IANAipRouteProtocol 1-17) */
- #ifdef USING_IP_FORWARD_MIB_IPCIDRROUTETABLE_IPCIDRROUTETABLE_MODULE
- /** rt_info != inet_policy, because that would have made sense */
- uint8_t rt_info_len; /* 0-128 oids */
- oid *rt_info; /* NULL should be interpreted as { 0, 0 } */
- uint32_t rt_mask; /* ipv4 only */
- uint32_t rt_tos; /* Integer32 (0..2147483647) */
- #endif
- uint32_t rt_age; /* seconds (ip == inet) */
- int32_t rt_nexthop_as; /* ip(int32) == inet(InetAutonomousSystemNumber) */
- int32_t rt_metric1;
- int32_t rt_metric2;
- int32_t rt_metric3;
- int32_t rt_metric4;
- int32_t rt_metric5;
- } netsnmp_route_entry;
- /**---------------------------------------------------------------------*/
- /*
- * ACCESS function prototypes
- */
- /*
- * ifcontainer init
- */
- netsnmp_container * netsnmp_access_route_container_init(u_int init_flags);
- #define NETSNMP_ACCESS_ROUTE_INIT_NOFLAGS 0x0000
- #define NETSNMP_ACCESS_ROUTE_INIT_ADDL_IDX_BY_NAME 0x0001
- /*
- * ifcontainer load and free
- */
- netsnmp_container*
- netsnmp_access_route_container_load(netsnmp_container* container,
- u_int load_flags);
- #define NETSNMP_ACCESS_ROUTE_LOAD_NOFLAGS 0x0000
- #define NETSNMP_ACCESS_ROUTE_LOAD_IPV4_ONLY 0x0001
- void netsnmp_access_route_container_free(netsnmp_container *container,
- u_int free_flags);
- #define NETSNMP_ACCESS_ROUTE_FREE_NOFLAGS 0x0000
- #define NETSNMP_ACCESS_ROUTE_FREE_DONT_CLEAR 0x0001
- #define NETSNMP_ACCESS_ROUTE_FREE_KEEP_CONTAINER 0x0002
- /*
- * create/copy/free a route entry
- */
- netsnmp_route_entry *
- netsnmp_access_route_entry_create(void);
- void netsnmp_access_route_entry_free(netsnmp_route_entry * entry);
- int
- netsnmp_access_route_entry_copy(netsnmp_route_entry *lhs,
- netsnmp_route_entry *rhs);
- /*
- * find entry in container
- */
- /** not yet */
- /*
- * create/change/delete
- */
- int
- netsnmp_access_route_entry_set(netsnmp_route_entry * entry);
- /*
- * route flags
- * upper bits for internal use
- * lower bits indicate changed fields. see FLAG_INETCIDRROUTE* definitions in
- * inetCidrRouteTable_constants.h
- */
- #define NETSNMP_ACCESS_ROUTE_CREATE 0x80000000
- #define NETSNMP_ACCESS_ROUTE_DELETE 0x40000000
- #define NETSNMP_ACCESS_ROUTE_CHANGE 0x20000000
- #define NETSNMP_ACCESS_ROUTE_POLICY_STATIC 0x10000000
- #define NETSNMP_ACCESS_ROUTE_POLICY_DEEP_COPY 0x08000000
- /*
- * mask for change flag bits
- */
- #define NETSNMP_ACCESS_ROUTE_RESERVED_BITS 0x000001ff
- /**---------------------------------------------------------------------*/
- # ifdef __cplusplus
- }
- #endif
- #endif /* NETSNMP_ACCESS_ROUTE_H */
|