如何根据GETBULK请求更新snmp代理的表?

时间:2012-04-17 16:26:46

标签: snmp net-snmp

我想在GETBULK请求时更新我的​​子代理表,而不必更新每个内部GETNEXT请求。

mib2c为GET请求生成了以下处理程序 - 如何在子代理中设置处理程序以专门对GETBULK执行更新?

int
table_handler(netsnmp_mib_handler *handler,
                           netsnmp_handler_registration *reginfo,
                           netsnmp_agent_request_info *reqinfo,
                           netsnmp_request_info *requests)
{

netsnmp_request_info *request;
netsnmp_table_request_info *table_info;
netsnmp_tdata  *table_data;
netsnmp_tdata_row *table_row;
struct table_entry *table_entry;
int             ret;
switch (reqinfo->mode) {
    /*                                                                                                                                                                                                          
     * Read-support (also covers GetNext requests)                                                                                                                                                              
     */
case MODE_GET:
  for (request = requests; request; request = request->next) {
        table_entry = (struct table_entry *)
            netsnmp_tdata_extract_entry(request);
        table_info = netsnmp_extract_table_info(request);

        switch (table_info->colnum) {
        case COLUMN_NAMESERVER:
            .
            .
            .
       case COLUMN_NAMESERVERPORT:
            .
            .
            .
        default:
            .
            .
            .
        }

1 个答案:

答案 0 :(得分:1)

我根据时间更新了我的Net-SNMP缓存,而不是我的data_access.h中的getbulk事件:

#define LINKTABLE_CACHE_TIMEOUT   10 //waits 10 seconds to load data

我认为你想要做的是访问相同的函数,但是在getbulk事件中调用它们。阅读cache_handler函数,看看是否可以使用这些函数执行:SNMP Dev API