defaultrouter.h 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. /*
  2. * defaultrouter data access header
  3. *
  4. * $Id:$
  5. */
  6. #ifndef NETSNMP_ACCESS_DEFAULTROUTER_H
  7. #define NETSNMP_ACCESS_DEFAULTROUTER_H
  8. # ifdef __cplusplus
  9. extern "C" {
  10. #endif
  11. /**---------------------------------------------------------------------*/
  12. /*
  13. * structure definitions
  14. */
  15. #if defined( NETSNMP_ENABLE_IPV6 )
  16. # define NETSNMP_ACCESS_DEFAULTROUTER_BUF_SIZE 16 /* XXX: 20, for ip6z? */
  17. #else
  18. # define NETSNMP_ACCESS_DEFAULTROUTER_BUF_SIZE 4
  19. #endif
  20. /*
  21. * netsnmp_default_route_entry
  22. */
  23. typedef struct netsnmp_defaultrouter_s {
  24. netsnmp_index oid_index; /* MUST BE FIRST!! for container use */
  25. oid ns_dr_index; /* arbitrary index */
  26. int flags; /* for net-snmp use */
  27. /*
  28. * mib related data
  29. */
  30. u_char dr_addresstype; /* ipDefaultRouterAddressType */
  31. char dr_address[NETSNMP_ACCESS_DEFAULTROUTER_BUF_SIZE]; /* ipDefaultRouterAddress */
  32. size_t dr_address_len; /* length of ipDefaultRouterAddress */
  33. oid dr_if_index; /* ipDefaultRouterIfIndex */
  34. uint32_t dr_lifetime; /* ipDefaultRouterLifetime (0-65535) */
  35. char dr_preference; /* ipDefaultRouterPreference (-2,-1,0,1) */
  36. } netsnmp_defaultrouter_entry;
  37. /**---------------------------------------------------------------------*/
  38. /*
  39. * ACCESS function prototypes
  40. */
  41. /*
  42. * container init
  43. */
  44. netsnmp_container *
  45. netsnmp_access_defaultrouter_container_init(u_int flags);
  46. #define NETSNMP_ACCESS_DEFAULTROUTER_INIT_NOFLAGS 0x0000
  47. #define NETSNMP_ACCESS_DEFAULTROUTER_INIT_ADDL_IDX_BY_ADDR 0x0001
  48. /*
  49. * container load
  50. */
  51. netsnmp_container*
  52. netsnmp_access_defaultrouter_container_load(netsnmp_container* container,
  53. u_int load_flags);
  54. #define NETSNMP_ACCESS_DEFAULTROUTER_LOAD_NOFLAGS 0x0000
  55. #define NETSNMP_ACCESS_DEFAULTROUTER_LOAD_IPV4_ONLY 0x0001
  56. #define NETSNMP_ACCESS_DEFAULTROUTER_LOAD_IPV6_ONLY 0x0002
  57. #define NETSNMP_ACCESS_DEFAULTROUTER_LOAD_ADDL_IDX_BY_ADDR 0x0004
  58. /*
  59. * container free
  60. */
  61. void
  62. netsnmp_access_defaultrouter_container_free(netsnmp_container *container,
  63. u_int free_flags);
  64. #define NETSNMP_ACCESS_DEFAULTROUTER_FREE_NOFLAGS 0x0000
  65. #define NETSNMP_ACCESS_DEFAULTROUTER_FREE_DONT_CLEAR 0x0001
  66. #define NETSNMP_ACCESS_DEFAULTROUTER_FREE_KEEP_CONTAINER 0x0002
  67. /*
  68. * entry create
  69. */
  70. netsnmp_defaultrouter_entry *
  71. netsnmp_access_defaultrouter_entry_create(void);
  72. /*
  73. * entry load
  74. */
  75. int
  76. netsnmp_access_defaultrouter_entry_load(size_t *num_entries,
  77. netsnmp_defaultrouter_entry **entries);
  78. /*
  79. * entry update
  80. */
  81. int
  82. netsnmp_access_defaultrouter_entry_update(netsnmp_defaultrouter_entry *lhs,
  83. netsnmp_defaultrouter_entry *rhs);
  84. /*
  85. * entry free
  86. */
  87. void
  88. netsnmp_access_defaultrouter_entry_free(netsnmp_defaultrouter_entry *entry);
  89. /**---------------------------------------------------------------------*/
  90. # ifdef __cplusplus
  91. }
  92. #endif
  93. #endif /* NETSNMP_ACCESS_DEFAULTROUTER_H */