2012-04-17 12 views
2

私はすべての内部GETNEXT要求を更新することなく、GETBULKの要求に応じて、私のサブエージェントのテーブルを更新します。私は特にGETBULKs時に更新を実行するサブエージェント内ハンドラを設定する方法 -GETBULKリクエストでsnmpエージェントのテーブルを更新するにはどうすればよいですか?

mib2cはGETリクエストのための次のハンドラを生成しましたか?

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

私はない私のdata_access.hでgetbulkイベントで、時間に基づいて、私のNet-SNMPのキャッシュを更新:

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

は、私はあなたが同じ機能にアクセスされて何をしたいのかと思いますが、 getbulkイベントで呼び出します。あなたがそれらを使用してそれを行うことができますかどうかを確認するためにcache_handler機能を読む:SNMP Dev API

関連する問題