summaryrefslogtreecommitdiff
path: root/include/net-snmp/data_access/defaultrouter.h
blob: 93ac18f8ad05061e7263aa0201425f27b5d9b9b1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
/*
 * defaultrouter data access header
 *
 * $Id:$
 */
#ifndef NETSNMP_ACCESS_DEFAULTROUTER_H
#define NETSNMP_ACCESS_DEFAULTROUTER_H

# ifdef __cplusplus
extern          "C" {
#endif

/**---------------------------------------------------------------------*/
/*
 * structure definitions
 */
#if defined( NETSNMP_ENABLE_IPV6 )
#   define NETSNMP_ACCESS_DEFAULTROUTER_BUF_SIZE 16   /* XXX: 20, for ip6z? */
#else
#   define NETSNMP_ACCESS_DEFAULTROUTER_BUF_SIZE 4
#endif


/*
 * netsnmp_default_route_entry
 */
typedef struct netsnmp_defaultrouter_s {

    netsnmp_index oid_index;   /* MUST BE FIRST!! for container use */
    oid           ns_dr_index; /* arbitrary index */

    int      flags; /* for net-snmp use */

    /*
     * mib related data
     */
    u_char   dr_addresstype;    /* ipDefaultRouterAddressType */
    char     dr_address[NETSNMP_ACCESS_DEFAULTROUTER_BUF_SIZE]; /* ipDefaultRouterAddress */
    size_t   dr_address_len;    /* length of ipDefaultRouterAddress */
    oid      dr_if_index;       /* ipDefaultRouterIfIndex */
    uint32_t dr_lifetime;       /* ipDefaultRouterLifetime (0-65535) */
    char     dr_preference;     /* ipDefaultRouterPreference (-2,-1,0,1) */

} netsnmp_defaultrouter_entry;


/**---------------------------------------------------------------------*/
/*
 * ACCESS function prototypes
 */
/*
 * container init
 */
netsnmp_container *
netsnmp_access_defaultrouter_container_init(u_int flags);
#define NETSNMP_ACCESS_DEFAULTROUTER_INIT_NOFLAGS               0x0000
#define NETSNMP_ACCESS_DEFAULTROUTER_INIT_ADDL_IDX_BY_ADDR      0x0001

/*
 * container load
 */
netsnmp_container*
netsnmp_access_defaultrouter_container_load(netsnmp_container* container,
                                            u_int load_flags);
#define NETSNMP_ACCESS_DEFAULTROUTER_LOAD_NOFLAGS               0x0000
#define NETSNMP_ACCESS_DEFAULTROUTER_LOAD_IPV4_ONLY             0x0001
#define NETSNMP_ACCESS_DEFAULTROUTER_LOAD_IPV6_ONLY             0x0002
#define NETSNMP_ACCESS_DEFAULTROUTER_LOAD_ADDL_IDX_BY_ADDR      0x0004

/*
 * container free
 */
void
netsnmp_access_defaultrouter_container_free(netsnmp_container *container,
                                            u_int free_flags);
#define NETSNMP_ACCESS_DEFAULTROUTER_FREE_NOFLAGS               0x0000
#define NETSNMP_ACCESS_DEFAULTROUTER_FREE_DONT_CLEAR            0x0001
#define NETSNMP_ACCESS_DEFAULTROUTER_FREE_KEEP_CONTAINER        0x0002

/*
 * entry create
 */
netsnmp_defaultrouter_entry *
netsnmp_access_defaultrouter_entry_create(void);

/*
 * entry load
 */
int
netsnmp_access_defaultrouter_entry_load(size_t *num_entries,
                                        netsnmp_defaultrouter_entry **entries);

/*
 * entry update
 */
int
netsnmp_access_defaultrouter_entry_update(netsnmp_defaultrouter_entry *lhs,
                                          netsnmp_defaultrouter_entry *rhs);

/*
 * entry free
 */
void
netsnmp_access_defaultrouter_entry_free(netsnmp_defaultrouter_entry *entry);



/**---------------------------------------------------------------------*/

# ifdef __cplusplus
}
#endif

#endif /* NETSNMP_ACCESS_DEFAULTROUTER_H */