SNMP problem in C#

Asked

Viewed 95 times

1

I am developing an application that performs collections SNMP on a given server. I am using the library SnmpSharpNet.

I’m getting to do the normal snmpwalk in a certain OID.

However, there is a OID which lists the running processes of the server, and I can extract the process number.

With the case number, I make a append of him at the end of another OID and then I perform a GET to get the name of the process.

What I’m not able to do is, if the number of the process is greater than a certain number, for example 16535, he is giving an error during the execution saying that the number is large.

From what I understand of the code, if the number is greater than 127 it transforms into several bytes:

// Convert the string MIB into a byte array of integer values
      // Unfortunately, values over 128 require multiple bytes
      // which also increases the MIB length
      for (i = 0; i < orgmiblen; i++)
      {
         temp = Convert.ToInt16(mibvals[i]);
         if (temp > 127)
         {
            mib[cnt] = Convert.ToByte(128 + (temp / 128));
            mib[cnt + 1] = Convert.ToByte(temp - ((temp / 128) * 128));
            cnt += 2;
            miblen++;
         } else
         {
            mib[cnt] = Convert.ToByte(temp);
            cnt++;
         }
      }

And I couldn’t find a way to do that for big numbers, in case 16535 (which is the process number running on the server).

Any idea?

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.