Changeset 2f57254c51d39834f9304b51e4b361bd19b5d713

Show
Ignore:
Timestamp:
02/03/12 21:07:17 (3 years ago)
Author:
Brian Clapper <bclapper@omniti.com>
git-committer:
Brian Clapper <bclapper@omniti.com> 1328303237 -0500
git-parent:

[8d6f67693835bd19cb2141a5f8dfbae02426bd47], [a5df09d25bd13bf1f726673e2b03f59b6066bf59]

git-author:
Brian Clapper <bclapper@omniti.com> 1328303237 -0500
Message:

Merge branch 'master' of labs.omniti.com:reconnoiter

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • docs/config/modules/snmp.xml

    r7ae62b9 ra5df09d  
    7575          </variablelist> 
    7676          <para>The UDP port to which SNMP queries will be sent.</para> 
     77        </listitem> 
     78      </varlistentry> 
     79    </variablelist> 
     80    <variablelist> 
     81      <varlistentry> 
     82        <term>version</term> 
     83        <listitem> 
     84          <variablelist> 
     85            <varlistentry> 
     86              <term>required</term> 
     87              <listitem> 
     88                <para>optional</para> 
     89              </listitem> 
     90            </varlistentry> 
     91            <varlistentry> 
     92              <term>default</term> 
     93              <listitem> 
     94                <para>2c</para> 
     95              </listitem> 
     96            </varlistentry> 
     97            <varlistentry> 
     98              <term>allowed</term> 
     99              <listitem> 
     100                <para>(1|2c|3)</para> 
     101              </listitem> 
     102            </varlistentry> 
     103          </variablelist> 
     104          <para>The SNMP version used for queries.</para> 
    77105        </listitem> 
    78106      </varlistentry> 
  • src/modules/snmp.c

    r7ae62b9 ra5df09d  
    124124  void *sess_handle; 
    125125  noit_module_t *self; 
     126  char *key; 
    126127  char *target; 
    127128  eventer_t timeoutevent; 
     
    153154  noit_check_t *check; 
    154155  struct target_session *ts; 
     156  int version; 
    155157}; 
    156158 
     
    178180 
    179181struct target_session * 
    180 _get_target_session(noit_module_t *self, char *target) { 
     182_get_target_session(noit_module_t *self, char *target, int version) { 
     183  char key[128]; 
    181184  void *vts; 
    182185  struct target_session *ts; 
    183186  snmp_mod_config_t *conf; 
    184187  conf = noit_module_get_userdata(self); 
     188  snprintf(key, sizeof(key), "%s:v%d", target, version); 
    185189  if(!noit_hash_retrieve(&conf->target_sessions, 
    186                          target, strlen(target), &vts)) { 
     190                         key, strlen(key), &vts)) { 
    187191    ts = calloc(1, sizeof(*ts)); 
    188192    ts->self = self; 
     
    190194    ts->refcnt = 0; 
    191195    ts->target = strdup(target); 
     196    ts->key = strdup(key); 
    192197    ts->in_table = 1; 
    193198    noit_hash_store(&conf->target_sessions, 
    194                     ts->target, strlen(ts->target), ts); 
     199                    ts->key, strlen(ts->key), ts); 
    195200    vts = ts; 
    196201  } 
     
    818823  const char *community; 
    819824  struct snmp_session sess; 
     825  struct check_info *info = check->closure; 
    820826  snmp_sess_init(&sess); 
    821   sess.version = SNMP_VERSION_2c
     827  sess.version = info->version
    822828  sess.peername = ts->target; 
    823829  if(!noit_hash_retr_str(check->config, "community", strlen("community"), 
     
    925931  struct check_info *info = check->closure; 
    926932  int port = 161; 
    927   const char *portstr
     933  const char *portstr, *versstr
    928934  char target_port[64]; 
    929935 
     936  info->version = SNMP_VERSION_2c; 
    930937  info->self = self; 
    931938  info->check = check; 
     
    938945    port = atoi(portstr); 
    939946  } 
     947  if(noit_hash_retr_str(check->config, "version", strlen("version"), 
     948                        &versstr)) { 
     949    /* We don't care about 2c or others... as they all default to 2c */ 
     950    if(!strcmp(versstr, "1")) info->version = SNMP_VERSION_1; 
     951    if(!strcmp(versstr, "3")) info->version = SNMP_VERSION_3; 
     952  } 
    940953  snprintf(target_port, sizeof(target_port), "%s:%d", check->target_ip, port); 
    941   ts = _get_target_session(self, target_port); 
     954  ts = _get_target_session(self, target_port, info->version); 
    942955  gettimeofday(&check->last_fire_time, NULL); 
    943956  if(!ts->refcnt) { 
     
    968981  req = snmp_pdu_create(SNMP_MSG_GET); 
    969982  if(req) noit_snmp_fill_req(req, check); 
     983  req->version = info->version; 
    970984  /* Setup out snmp requests */ 
    971985  if(ts->sess_handle && req && 
     
    11351149      return -1; 
    11361150    } 
    1137     ts = _get_target_session(self, "snmptrapd"); 
     1151    ts = _get_target_session(self, "snmptrapd", SNMP_DEFAULT_VERSION); 
    11381152    snmp_sess_init(session); 
    11391153    session->peername = SNMP_DEFAULT_PEERNAME; 
  • src/modules/snmp.xml

    r7ae62b9 ra5df09d  
    1414               default="161" 
    1515               allowed="\d+">The UDP port to which SNMP queries will be sent.</parameter> 
     16    <parameter name="version" 
     17               required="optional" 
     18               default="2c" 
     19               allowed="(1|2c|3)">The SNMP version used for queries.</parameter> 
    1620    <parameter name="oid_.+" 
    1721               required="optional"