bionic (3) SNMP_structFiller.3.gz

Provided by: libsnmpkit-dev_0.9-16ubuntu1_amd64 bug

NAME

       SNMP_structFiller - C++ object to contain data for SNMP queries

SYNOPSIS

       #include <snmpkit>

       SNMP_structFiller::SNMP_structFiller(SNMP_session &sess);

       SNMP_structFiller::~SNMP_structFiller();

       void SNMP_structFiller::append_int(const string &oidstr,void (*fp)(void*,long));

       void SNMP_structFiller::append_counter(const string &oidstr, void (*fp)(void*,long));

       void SNMP_structFiller::append_timetick(const string &oidstr, void (*fp)(void*,unsigned long));

       void SNMP_structFiller::append_ipaddr(const string &oidstr, void (*fp)(void*,const unsigned char *));

       void SNMP_structFiller::append_string(const string &oidstr, void (*fp)(void*,const char *));

       void SNMP_structFiller::remove(const string &oidstr);

       void *SNMP_structFiller::get(void *tobefilled);

       void *SNMP_structFiller::get_next(void *tobefilled);

DESCRIPTION

       A  SNMP_structFiller object takes a list of SNMP objects and queries the SNMP_session(3) and fills in the
       structure based upon that information.

       The SNMP protocol is designed in a way where there is significant overhead in  process  of  encoding  and
       exchanging  a  packet.  Therefore it is very inefficient and time consuming to exchange many variables in
       individual request packets. The way around this is to bulk up a bunch of SNMP requests into  one  packet.
       Since  it  is  most  likely  that  you  will  be  frequently  fetching  information which is related, the
       SNMP_structFiller is designed to associate the SNMP objects and data types  with  the  offsets  into  the
       structure. That way when you do a get or a get_next you will get back a completely filled in structure.

   SNMP_structFiller::SNMP_structFiller(SNMP_session);
       You  will need to create a new SNMP_structFiller instance for each different set of SNMP objects you wish
       to fetch.  The SNMP data structure  is  initially  empty.   You  can  add  request  information  via  the
       SNMP_structFiller::append() method.

   ~SNMP_structFiller::~SNMP_structFiller();
       Destructor for an SNMP_structFiller object

   void SNMP_structFiller::append_int(const string &oidstr,void (*fp)(void*,long));
   void SNMP_structFiller::append_counter (const string &oidstr, void (*fp)(void*,long));
   void SNMP_structFiller::append_timetick (const string &oidstr, void (*fp)(void*,unsigned long));
   void SNMP_structFiller::append_ipaddr (const string &oidstr, void (*fp)(void*,const unsigned char *));
   void SNMP_structFilleri::append_string(const string &oidstr, void (*fp)(void*,const char *));
       All  of the various append methods add an SNMP object to the end of the SNMP_structFiller instance.  Each
       method requires the OID of the SNMP object to add and a function that will insert it into the  associated
       structure.

       This library does not attempt to read MIBs. This means that youwill need to look up the OID string before
       hand and hard code the OIDstring into your program.

       The job of the function pointer is to insert whatever data it gets back into the the data structure. This
       allows  you  to  do  any kind of munging around you want with the data you get and therefore you can have
       much more  complicated  receiving  structure.   See  the  example  programs  included  with  the  SNMPkit
       documentation (snmptest*.C) for examples of various uses of this.

       Exceptions

       * BerOidBadSubOidException - One of the OIDs could not be converted to a number.

       * BerNoOidsException - No OIDs were specified.

   void SNMP_structFiller::remove(const string &oidstr);
       Delete an SNMP object from the SNMP_structFiller instance.

       Exceptions

       *  FillerRemoveEmptyException  -  An  attempt  was made to remove from an empty SNMP_structFiller object;
       results from a programming error.

       * FillerRemoveNotFoundException - An attempt was made to remove an item not currently in  the  container;
       results from a programming error.

       *  FillerCorruptException  -  The SNMP table entry was successfully removed, however the OID sequence was
       NULL; results from a programming error in the library.

       * OidSeqRemoveNotFoundException - A programming error resulted in the attempt to  remove  something  that
       was not there.

       * OidSeqBadLayoutException - The BER sequence did not follow the layout of an OID sequence.

   void *SNMP_structFiller::get(void *tobefilled);
       Send  the  SNMP  get  request  to the SNMP Agent and fill the structure tobefilled with the data returned
       using the previously defined inserter functions.

       Exceptions

       * SNMPNoResponseException - The SNMP_structFiller object did not receive a response from the remote  SNMP
       Agent. This can be caused by many things, no agent running on destination, a firewall between you and the
       destination.

       * SNMPPacketNotSequenceException - The response received was not a valid SNMP response.

       * SNMPRespNotSequenceException - The packet received was a valid SNMP response but  the  payload  of  the
       packet wasn't a sequence type.

       * SNMPNotResponseTagException - The type of the SNMP response received was invalid (not 0xa2).

       * SNMPSeqnoNotIntException - The sequence number of the response was not a classified as a number.

       *  SNMPStateNotIntException - The SNMP device sent back an improperly constructed response packet and the
       status was not classified as an integer.

       * SNMPFaultOidNotIntException - A response was returned with an error but the index to  the  problem  OID
       was not classified as an integer.

       *  OidSeqBadLayoutException  -  Within a SNMP packet there is a substructure which is an OID sequence. If
       the packet was supposed to have an OID sequence in a particular locaion but for some reason  one  of  the
       elements was not of the correct type, then this exception will be thrown.

       * SNMPBadOidException - An OID in the SNMP response packet was invalid

       * SocketSendShortExecption -  An error occurred while sending the SNMP request resulting in an incomplete
       transmission of the query

       *    BerSequenceTagException,    BerIntTagException,    BerCounterTagException,    BerStringTagException,
       BerNullTagException,  BerOidTagException,  BerTimeTickTagException  -  Although  this  will result from a
       encoding error, it is caused by calling a BER object constructor on an invalid piece of data.

       *   BerLengthException,   BerIntLengthExecption,    BerCounterLengthExecption,    BerNullLengthExecption,
       BerTimeTickLengthExecption, BerIPAddrLengthExecption -  The size of the data to be encoded (BER) will not
       fit into an unsigned long data type.

   void *SNMP_structFiller::get_next(void *tobefilled);
       Query the object which is next in the list of available objects from the SNMP Agent.

       Exceptions

       Same as the SNMP_structFiller::get() method

SEE ALSO

       SNMP_structFiller(3), SNMP_table(3)

AUTHOR

       The SNMPkit C/C++ library was originally developed by Ben Woodard <ben@users.sourceforge.net>.  This  man
       page was written by Gerald Carter <gcarter@valinux.com>