Home
        Simple Network Management Protocol (SNMP)
         Contents
1.           destroy   which is supplied by a management station  wishing to delete all of the instances associated with  an existing conceptual row     Whereas five of the six values  all except  notReady   may  be specified in a management protocol set operation  only  three values will be returned in response to a management    protocol retrieval operation     notReady    notInService  or   active   That is  when queried  an existing conceptual row  has only three states  it is either available for use by    the managed device  the status column has value    active     it is not available for use by the managed device  though  the agent has sufficient information to make it so  the  status column has value    notInService    or  it is not  available for use by the managed device  and an attempt to  make it so would fail because the agent has insufficient    Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    69    1 17 SNMP Appendix B       in    Also note that whenever any elements of a row exist     formation     the state column has value    NOTE    WELL       notReady       This textual convention may be used for a MIB table   irrespective of whether the values of that table s  conceptual rows are able to be modified while it is    active     out of service in order to be modified     or whether its conceptual rows must be taken  Wie  ale    miet 26     the responsibility of the DESCRIPTION clause of the    status  not be  column    such a speci
2.      Dir is the path to the directory where to store the config file     See Security data for USM for more info     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    199    snmpm_mpd       snmpm_mpd    Erlang module    The module snmpm_mpd implements the version independent Message Processing and Dispatch functionality in  SNMP for the manager  It is supposed to be used from a Network Interface process  Definition of Manager Net if      Exports  init_mpd Vsns    gt  mpd_state    Types    Vsns    Vsn     Vsn   vl   v2   v3  This function can be called from the net_if process at start up  The options list defines which versions to use     It also initializes some SNMP counters     process_msg Msg  TDomain  Addr  Port  State  NoteStore  Logger    gt   ok  Vsn   Pdu  PduMS  MsgData     discarded  Reason     Types   Msg   binary     TDomain   snmpUDPDomain  Addr    integer    integer    integer    integer       Port   integer     State   mpd_state    NoteStore   pid    Logger   function     Vsn    version 1     version 2     version 3   Pdu    pdu  PduMs   integer     MsgData   term      Processes an incoming message  Performs authentication and decryption as necessary  The return values should be  passed the manager server     NoteStore is the pid    of the note store process   Logger is the function used for audit trail logging     In the case when the pdu type is report  MsgData is either ok or  error  ReqId  Reason      generate_msg Vsn  NoteStore
3.      manager_net_if_filter_options         These options are actually specific to the used module  The ones shown here are applicable to the default  manager_net_if_module       For defaults see the options in manager_net_if_option     manager_net_if_module     atom    lt optional gt     The module which handles the network interface part for the SNMP manager  It must implement the  snmpm_network_interface behaviour     Default is snmpm_net_if   manager_net_if_filter_options      manager_net_if_filter_option     lt optional gt   manager_net_if_filter_option      module  manager_net_if_filter_module        These options are actually specific to the used module  The ones shown here are applicable to the default  manager_net_if_filter_module          For defaults see the options in manager_net_if_filter_option     manager_net_if_filter_module     atom    lt optional gt     Module which handles the network interface filter part for the SNMP manager  Must implement the  snmpm_network_interface_filter behaviour     Default is snmpm_net_if_filter    def_user_module     atom    lt optional gt   The module implementing the default user  See the snmpm_user behaviour   Default is snmpm_user_default    def_user_data     term    lt optional gt   Data for the default user  Passed to the user when calling the callback functions   Default is undefined     Common config types        restart_type     permanent   transient   temporary  See supervisor documentation for more info   Default is per
4.     A new interface delete 1 is now added to handle the case when a process wants to discard an index table  i e   to build a completely new   Any application using transient snmp indexes has to be modified to handle this     As an snmp adaption usually keeps the index for the whole of the systems lifetime  this is rarely a problem     Exports    delete  Index    gt  true   Types   Index   NewIndex   index     Key   key      Deletes a complete index structure  i e  the ets table holding the index   The index can no longer be referenced after  this call  See the warning note above     delete  Index  Key    gt  NewIndex  Types   Index   NewIndex   index     Key   key      Deletes a key and its value from the index structure  Returns a new structure     get  Index  KeyOid    gt   ok   KeyOid  Value     undefined  Types     152   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmp_index    Index   index     KeyOid   oid    Value   term      Gets the item with key KeyOid  Could be used from within an SNMP instrumentation function     get_last  Index    gt   ok   KeyOid  Value     undefined  Types    Index   index      KeyOid   oid     Value   term      Gets the last item in the index structure     get_next  Index  KeyOid    gt   ok   NextKeyOid  Value     undefined  Types    Index   index      KeyOid   NextKeyOid   oid     Value   term      Gets the next item in the SNMP lexicographic ordering  after Ke yOid in the index structure  KeyOid does not 
5.     TargetName   target_name    ContextName   string    Oids    oid     Expire   integer     ExtraInfo   term    ReqId   integer     Reason   term         Asynchronous get  next request     The reply will be delivered to the user through a call to the snmpm_user callback function handle_pdu        The Expire time indicates for how long the request is valid  after which the manager is free to delete it         Ext ralInfo is an opaque data structure passed on to the net if process  The net if process included in this application  makes  with one exception  no use of this info  so the only use for it in such a configuration  when using the built in  net if  would be tracing  The one usage exception is  Any tuple with snmpm_ext ra_info_tag as its first element  is reserved for internal use        sync_set2 UserId  TargetName  VarsAndVals    gt   ok  SnmpReply  Remaining      error  Reason     sync_set2 UserId  TargetName  VarsAndVals  SendOpts    gt   ok  SnmpReply   Remaining     error  Reason     Types   UserId   term    TargetName   target_name    VarsAndVals   vars_and_vals    SendOpts   send_opts      184   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpm       send_opts      send_opt       send_opt      context  string       timeout  pos_integer       extra   term       community  community       sec_model  sec_model       sec_name   string       sec_level  sec_level       max_message_size  pos_integer        SnmpReply   snmp_reply     
6.     dec_pdu  byte       gt  Pdu  Types    Pdu    pdu  Decodes a list of bytes into an SNMP Pdu     dec_scoped_pdu  byte       gt  ScopedPdu  Types    ScopedPdu    scoped_pdu  Decodes a list of bytes into an SNMP ScopedPdu     dec_scoped_pdu_data  byte       gt  ScopedPduData    Types   ScopedPduData    scoped_pdu   EncryptedPDU    156   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmp_pdus    EncryptedPDU    byte       Decodes a list of bytes into either a scoped pdu record  or   if the scoped pdu was encrypted   to a list of bytes     dec_usm_security parameters   byte       gt  UsmSecParams  Types   UsmSecParams    usmSecurityParameters    Decodes a list of bytes into an SNMP UsmSecurityParameters    enc_encrypted_scoped_pdu  EncryptedScopedPdu    gt   byte      Types   EncryptedScopedPdu    byte     Encodes an encrypted SNMP ScopedPdu into an OCTET STRING that can be used as the data field ina message    record  that later can be encoded with a call to enc_message_only 1     This function should be used whenever the ScopedPDU is encrypted     enc_message  Message    gt   byte      Types   Message    message    Encodes a message record to a list of bytes     enc_message_only  Message    gt   byte      Types   Message    message    Message is a record where the data field is assumed to be encoded  a list of bytes   If there is a v1 or v2 message  the  data field is an encoded PDU  and if there is a v3 message  data is an encoded and possib
7.     info     gt    Key  Value    Types    Key   atom     Value   term      Returns a list  a dictionary  containing information about the manager  Information includes statistics counters   miscellaneous info about each process  e g  memory allocation   and so on     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    193    snmpm       verbosity  Ref  Verbosity    gt  void     Types   Ref   server   config   net_if   note_store   all  Verbosity   verbosity     verbosity     silence   info   log   debug   trace    Sets verbosity for the designated process  For the lowest verbosity silence  nothing is printed  The higher the  verbosity  the more is printed     format_reason Reason    gt  string      format_reason  Prefix  Reason    gt  string      Types   Reason   term    Prefix   integer     string      This utility function is used to create a formatted  pretty printable  string of the error reason received from either     e The Reason returned value if any of the sync async get get next set get bulk functions returns  error   Reason     e The Reason parameter in the handle_error user callback function     Prefix should either be an indention string  e g  a list of spaces  or a positive integer  which will be used to create  the indention string of that length      194   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpm_conf    snmpm_conf    Erlang module    The module snmpm_conf contains various utility function
8.     module     atom    targets       target      target    target_options       target_options      target_option        target_option      return_trace  boolean       scope  scope      scope     all_functions   exported_functions   function_name       function_name    function_arity        function_name     atom     function_arity     integer    gt   0    This function is used to set up default trace on function s  for the given module or modules  The scope of the trace  will be all exported functions  both the call info and the return value   Timestamp info will also be included     reset_trace Targets    gt  void    Types   Targets   module     modules     modules      module         Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    83    snmp       module     atom      This function is used to reset  disable  trace for the given module s      set_trace  Targets  Opts    gt  void    Types   Targets   target     targets     target     module     module     atom    targets      target      target    target_options       target_options      target_option        target_option      return_trace  boolean       scope  scope      scope     all_functions   exported functions   function_name       function_name    function_arity        function_name     atom     function_arity     integer    gt   0    Opts   disable   trace_options     trace_options      trace_option      trace_option      timestamp  boolean      target_option       This function is used
9.    E    ERLANG       Simple Network Management Protocol   SNMP     Copyright    1997 2012 Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP  4 22  April 1 2012    Copyright    1997 2012 Ericsson AB  All Rights Reserved    The contents of this file are subject to the Erlang Public License  Version 1 1   the  License    you may not use  this file except in compliance with the License  You should have received a copy of the Erlang Public License  along with this software  If not  it can be retrieved online at http  Awww erlang org   Software distributed under the  License is distributed on an  AS IS  basis  WITHOUT WARRANTY OF ANY KIND  either express or implied  See  the License for the specific language governing rights and limitations under the License  Ericsson AB  All Rights  Reserved      April 1 2012    Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    1    1 1 SNMP Introduction    1 SNMP User s Guide    A multilingual Simple Network Management Protocol application  featuring an Extensible Agent  a simple manager  and a MIB compiler and facilities for implementing SNMP MIBs etc     1 1 SNMP Introduction    The SNMP development toolkit contains the following parts     e An Extensible multi lingual SNMP agent  which understands SNMPv1  RFC1157   SNMPv2c  RFC1901   1905  1906 and 1907   SNMPv3  RFC2271  2272  2273  2274 and 2275   or any combination of these  protocols     e A multi lingual SNMP manager     e A MIB compi
10.    Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     1 5 Running the application    erlc MY MIB mib    All the standard er1c flags are supported  e g     erlc  I mymibs  o mymibs  W MY MIB mib    The flags specific to the MIB compiler can be specified by using the   syntax     erlc    group_check  false   MY MIB mib    1 4 7 Deviations from the Standard    In some aspects the Erlang MIB compiler does not follow or implement the SMI fully  Here are the differences     Tables must be written in the following order  tableObject  entryObject  columnl       columnN  in  order         Integer values  for example in the SIZE expression must be entered in decimal syntax  not in hex or bit syntax   Symbolic names must be unique within a MIB and within a system     Hyphens are allowed in SMIv2  a pragmatic approach   The reason for this is that according to SMIv2  hyphens  are allowed for objects converted from SMIv1  but not for others  This is impossible to check for the compiler     If a word is a keyword in any of SMIv1 or SMIv2  it is a keyword in the compiler  deviates from SMIv1 only    Indexes in a table must be objects  not types  deviates from SMIv1 only     A subset of all semantic checks on types are implemented  For example  strictly the TimeTicks may not be sub   classed but the compiler allows this  standard MIBs must pass through the compiler   deviates from SMIv2 only    The MIB Object syntax is not implemented  since all objects must be u
11.    Perform mib server cache gc     Manually performs a mib server cache gc  This can be done regardless of the value of the autogc option  The  NumE1lement sGCed value indicates how many elements where actually removed from the cache        enable mibs_cache_autogc     gt  void         enable mibs_cache_autogc  Agent    gt  void         Types   Agent   pid     atom      Enable automatic gc of the mib server cache     disable mibs_cache_autogc     gt  void         disable mibs_cache_autogc  Agent    gt  void         Types   Agent   pid     atom      Disable automatic gc of the mib server cache     update_mibs_cache_age NewAge    gt  ok    error  Reason        update_mibs_cache_age Agent  NewAge    gt  ok    error  Reason        Types   Agent   pid     atom      NewAge integer    gt  0  Reason   term      Change the mib server cache age property     update_mibs_cache_gclimit  NewGcLimit    gt  ok    error  Reason        update_mibs_ cache _gclimit  Agent  NewGCLimit    gt  ok    error  Reason        Types   Agent   pid     atom    NewGcLimit   integer    gt  0   infinity  Reason   term      Change the mib server cache gclimit property     register_notification_filter Id  Mod  Data    gt  ok    error  Reason   register_notification_filter Agent  Id  Mod  Data    gt  ok    error  Reason   register_notification_filter Id  Mod  Data  Where    gt  ok    error  Reason     register_notification_filter Agent  Id  Mod  Data  Where    gt  ok    error   Reason     Types   Agent   pid     
12.    The extensible agent in this toolkit understands the SNMPv1  SNMPv2c and SNMPv3  Recall that SNMP consists  of two separate parts  the MIB definition language  SMI   and the protocol  On the protocol level  the agent can be  configured to speak v1  v2c  v3 or any combination of them at the same time  i e  a v1 request gets an v1 reply  a v2c    Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    5    1 2 Agent Functional Description    request gets a v2c reply  and a v3 request gets a v3 reply  On the MIB level  the MIB compiler can compile both SMIv1  and SMIv2 MIBs  Once compiled  any of the formats can be loaded into the agent  regardless of which protocol version  the agent is configured to use  This means that the agent translates from v2 notifications to v1 traps  and vice versa   For example  v2 MIBs can be loaded into an agent that speaks v1 only  The procedures for the translation between  the two protocols are described in RFC 1908 and RFC 2089     In order for an implementation to make full use of the enhanced SNMPv2 error codes  it is essential that the  instrumentation functions always return SNMPv2 error codes  in case of error  These are translated into the  corresponding SNMPv1 error codes by the agent  if necessary     Note     The translation from an SMIv1 MIB to an SNMPv2c or SNMPVv3 reply is always very straightforward  but  the translation from a v2 MIB to a v1 reply is somewhat more complicated  There is one data type in SMI
13.    This section describes how to write a Net if process     1 12 1 Mandatory Functions    A Net if process must implement the SNMP agent network interface behaviour     1 12 2 Messages    The section Messages describes mandatory messages  which Net if must send and be able to receive     58   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     1 12 Definition of Agent Net if       Outgoing Messages    Net if must send the following message when it receives an SNMP PDU from the network that is aimed for the  MasterA gent     MasterAgent    snmp_pdu  Vsn  Pdu  PduMS  ACMData  From  Extra        e Vsniseither  version 1    version 2  or  version 3     e Pduisan SNMP PDU record  as defined in snmp_types hr1  with the SNMP request    e PduMS is the Maximum Size of the response Pdu allowed  Normally this is returned from  snmpa_mpd process_packet  see Reference Manual     e ACMData is data used by the Access Control Module in use  Normally this is returned from  snmpa_mpd process_packet  see Reference Manual      e From is the source address  If UDP over IP is used  this should be a 2 tuple  IP  UDPport   where IP isa  4 tuple with the IP address  and UDPport is an integer        e Extra is any term the Net if process wishes to send to the agent  This term can be retrieved by the  instrumentation functions by calling snmp  current_net_if_data     This data is also sent back to the  Net if process when the agent generates a response to the request     The
14.    integer    gt  0  pdu_type      get request     get next request     get response     set request    trap    get bulk request   Exports  accept_recv Addr  Port    gt  boolean     Types   Addr   ip address     Port   port       Called at the reception of a message  before any processing has been done      For the message to be rejected  the function must return false     accept_send  Addr  Port    gt  boolean       Types   Addr   ip address     Port   port       Called before the sending of a message  after all processing has been done      For the message to be rejected  the function must return false     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    209    snmpm_network_interface_filter    accept_recv_pdu  Addr  Port  PduType    gt  boolean       Types   Addr   ip_ address     Port   port       PduType   pdu_type      Called after the basic message processing  MPD  has been done  but before the pdu is handed over to the server for  primary processing     For the pdu to be rejected  the function must return false     accept_send_pdu  Addr  Port  PduType    gt  boolean       Types   Addr   ip address     Port   port       PduType   pdu_type    gt  0  Called before the basic message processing  MPD  is done  when a pdu has been received from the master agent     For the message to be rejected  the function must return false     210   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     
15.    pid     atom    Returns a list  a dictionary  containing information about the agent  Information includes loaded MIBs  registered sub     agents  some information about the memory allocation     As of version 4 4 the format of the info has been changed  To convert the info to the old format  call the old_info_format  function     old_info_ format  NewInfo    gt  OldInfo  Types   OldInfo   NewInfo     Key  Value      As of version 4 4 the format of the info has been changed  This function is used to convert to the old  pre 4 4  info  format     load_mibs  Mibs    gt  ok    error  Reason   load_mibs  Agent Mibs    gt  ok    error  Reason   Types    Agent   pid     atom     Mibs    MibName    MibName   string     Reason   term      Loads Mibs into an agent  If the agent cannot load all MIBs  it will indicate where loading was aborted  The MibName  is the name of the Mib  including the path to where the compiled mib is found  For example     Dir   code priv_dir my_app       mibs     snmpa  load mibs  snmp master agent   Dir     MY MIB        unload_mibs  Mibs    gt  ok    error  Reason   unload_mibs  Agent  Mibs    gt  ok    error  Reason   Types    Agent   pid     atom     Mibs    MibName    MibName   string       Unloads MIBs into an agent  If it cannot unload all MIBs  it will indicate where unloading was aborted     which_mibs     gt  Mibs  which_mibs  Agent    gt  Mibs  Types   Agent   pid     atom    Mibs     MibName  MibFile    MibName   atom      Ericsson AB  All Righ
16.   Pdu  MsgData  Logger    gt   ok  Packet      discarded  Reason     Types   Vsn    version 1     version 2     version 3   NoteStore   pid    Pdu    pdu    MsgData   term      200   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpm_mpd       Logger function       Packet   binary     Reason   term      Generates a possibly encrypted packet to be sent to the network   NoteStore is the pid   of the note store process     MsgData is the message specific data used in the SNMP message  In SNMPv1 and SNMPv2c  this message data is  the community string  In SNMPv3  it is the context information     Logger is the function used for audit trail logging     generate_response_msg Vsn  Pdu  MsgData  Logger    gt   ok  Packet      discarded  Reason     Types   Vsn    version 1     version 2     version 3   Pdu    pdu    MsgData   term      Logger   function     Packet  Reason    binary       term     Generates a possibly encrypted response packet to be sent to the network     MsgData is the message specific data used in the SNMP message  This value is received from the process_msg  function     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    201    snmpm_network_interface    snmpm_network_interface    Erlang module    This module defines the behaviour of the manager network interface  A snmpm_network_interface compliant  module must export the following functions     e     start_link 2   e stop l   e send_pdu 7   e  inform_r
17.   Remaining integer       Reason    send_failed  ReqId  ActualReason     invalid_sec_info  SecInfo   SnmpInfo    term      ReqiId   term    ActualReason   term      SecInfo    sec_info     sec_info      sec_tag    ExpectedValue  ReceivedValue   sec_tag     atom      ExpectedValue   ReceivedValue   term    SnmpInfo   term      Synchronous set request   Remaining is the remaining time of the given  or default  timeout time     When Reason is  send_failed       it means that the net_if process failed to send the message  This could happen because  of any number of reasons  i e  encoding error  ActualReason is the actual reason in this case     When var_and_val   is  oid    value     the manager makes an educated guess based on the loaded mibs     The send option ext ra specifies an opaque data structure passed on to the net if process  The net if process included  in this application makes  with one exception  no use of this info  so the only use for it in such a option  when using  the built in net if  would be tracing  The one usage exception is  Any tuple with snmpm_ext ra_info_tag as its  first element is reserved for internal use           Some of the send options  community  sec_model  sec_name  sec_level and max_message_size  are  override options  That is  for this request  they override any configuration done when the agent was registered     For SnmpInfo  see the user callback function handle_report     sync_set UserId  TargetName  VarsAndVals    gt   ok  SnmpReply  Re
18.   The application must be configured to use the audit trail log function   Please refer to disk_log 3  in Kernel Reference Manual for a description of how to change the log size     The change is permanent  as long as the log is not deleted  That means  the log size is remembered across reboots     set_log_type NewType    gt   ok  OldType     error  Reason   set_log_type  Agent  NewType    gt   ok  OldType     error  Reason   Types    NewType   OldType   atl_type     Agent   pid     atom     Reason   term    Changes the run time Audit Trail log type     Note that this has no effect on the application configuration as defined by configuration files  so a node restart will  revert the config to whatever is in those files     This function is primarily useful in testing debugging scenarios     mib_of  Oid    gt   ok  MibName     error  Reason   mib_of  Agent  Oid    gt   ok  MibName     error  Reason   Types     Agent   pid     atom    Oid   oid     MibName   atom    Reason   term      Finds the mib corresponding to the Oid  If it is a variable  the Oid must be  lt Oid for var gt  0 and if it is a table  Oid  must be  lt table gt   lt entry gt   lt col gt   lt any gt     me_of Oid    gt   ok  Me     error  Reason   me_of  Agent  Oid    gt   ok  Me     error  Reason   Types     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    101    snmpa    Agent   pid     atom    Oid   oid     Me    me     Reason   term      Finds the mib entry corresponding to the
19.   UserId   term    TargetName   target_name    NonRep   integer       MaxRep integer     ContextName   string    Oids    oid     Timeout   integer       ExtraInfo   term      SnmpReply   snmp_reply      Remaining   integer      Reason    send_failed  ReqId  R     invalid_sec_info  SecInfo  SnmpInfo     term       188   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpm          Synchronous get    bulk    request  See RFC1905    Remaining time of the given or default timeout time     When Reason is  send_failed       it means that the net_if process failed to send the message  This could happen because  of any number of reasons  i e  encoding error  R is the actual reason in this case        Ext ralInfo is an opaque data structure passed on to the net if process  The net if process included in this application  makes  with one exception  no use of this info  so the only use for it in such a configuration  when using the built in  net if  would be tracing  The one usage exception is  Any tuple with snmpm_extra_info_tag as its first element  is reserved for internal use        async_get_bulk2 UserId  TargetName  NonRep  MaxRep  Oids    gt   ok  ReqId      error  Reason     async_get_bulk2 UserId  TargetName  NonRep  MaxRep  Oids  SendOpts    gt   ok   ReqiId     error  Reason     Types   UserId   term    TargetName   target_name     NonRep   integer     MaxRep   integer     Oids    oid     SendOpts   send_opts    send_opts      send_opt        
20.   age  mibs_cache_age        Defines options specific for the SNMP agent mib server cache   For defaults see the options in mibs_cache_opt      mibs_cache_autogc     bool    lt optional gt     Defines if the mib server shall perform cache gc automatically or leave it to the user  see gc_mibs_cache 0 1 2 3      Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    23    1 5 Running the application       Default is true        mibs_cache_age     integer    gt  0  lt optional gt     Defines how old the entries in the cache will be allowed before they are GC ed  assuming GC is performed   Each  entry in the cache is  touched  whenever it is accessed     The age is defined in milliseconds   Default is 10 timutes   mibs_cache_gclimit     integer    gt  0   infinity  lt optional gt   When performing a GC  this is the max number of cache entries that will be deleted from the cache     The reason for having this limit is that if the cache is large  the GC can potentially take a long time  during which  the agent is locked     Default is 100   error_report_mod     atom    lt optional gt     Defines an error report module  implementing the snmpa_error_report behaviour  Two modules are provided  with the toolkit  snmpa_error_logger and snmpa_error_io     Default is snmpa_error_logger   symbolic_store      symbolic_store_opt      symbolic_store_opt      verbosity  verbosity       Defines options specific for the SNMP agent symbolic store   For defaults see the opt
21.   amaie N    gt   register exl_server  self      Toop aa  loop MyName  Table    gt   receive  From  get_my_name    gt   From    exl_server  MyName    loop  MyName  Table    From  set_my_name  NewName     gt   loop  NewName  Table    From  get_row  RowIndex     gt   Res   table_get_row Table  RowI  From    exl_server  Res      loop  MyName  Table      From  get_next_row  RowIndex     gt   Res   table_get_next_row  Table   From    exl_server  Res      loop  MyName  Table                     From  delete_row  RowIndex     gt    NewTable   table_delete_row Table   loop  MyName  NewTable     From  add_row  NewRow     gt   NewTable   table_add_row Table   loop  MyName  NewTable    end        Functions for table operations       a list of rows   table_get_row   Index  Name  Address     ok   Index  Name  Address  Status   table_get_row  H   T   RowIndex    gt   table_get_row T  RowIndex      table_get_row     _RowIndex    gt   no_such_row    table_get_next_row   Row Wy  Wi       ok  Row     table_get_next_row   Row Pir Godek     when element  1  Row   gt  Index   gt     ok  Row     table_get_next_row   Row T   RowIndex                    table_get_next_row T  RowIndex       ndex      RowIndex       RowIndex      NewRow       The table is represented    Status       _l   Index      bhi     p           44   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     1 8 Agent Implementation Example       table_get_next_row     RowIndex    gt   endOfTable   table_del
22.   are  override options  That is  for this request  they override any configuration done when the agent was registered        For SnmpInfo  see the user callback function handle_report     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    179    snmpm       sync_get UserId  TargetName  Oids    gt   ok  SnmpReply  Remaining     error   Reason     sync_get UserId  TargetName  ContextName  Oids    gt   ok  SnmpReply  Remaining      error  Reason     sync_get UserId  TargetName  Oids  Timeout    gt   ok  SnmpReply  Remaining      error  Reason     sync_get UserId  TargetName  ContextName  Oids  Timeout    gt   ok  SnmpReply   Remaining     error  Reason     sync_get UserId  TargetName  ContextName  Oids  Timeout  ExtraInfo    gt   ok   SnmpReply  Remaining     error  Reason     Types   UserId   term    TargetName   target_name    ContextName   string    Oids    oid     Timeout   integer       ExtraInfo   term     SnmpReply   snmp_reply      Remaining   integer      Reason    send_failed  ReqId  R     invalid_sec_info  SecInfo  SnmpInfo     term      R   term     SecInfo    sec_info      sec_info      sec_tag    ExpectedValue  ReceivedValue    sec_tag     atom      ExpectedValue   ReceivedValue   term    SnmpInfo   term      Synchronous get request   Remaining is the remaining time of the given or default timeout time     When Reason is  send_failed       it means that the net_if process failed to send the message  This could happen because  of any num
23.   length 20 if auth   usmHMACSHAAuthProtocol   priv   usmNoPrivProtocol   usmDESPrivProtocol   usmAesCfb128Protocol    priv_key    integer     length is 16 if priv   usmDESPrivProtocol   usmAesCfb128Protocol    unregister_usm_user EngineID  UserName    gt  ok    error  Reason   Types     EngineID   string      UserName string       Reason   term      Unregister this USM user     usm_user_info EngineID  UserName  Item    gt   ok  Val     error  Reason   Types    EngineID   string     UsmName   string     Item   sec_name   auth   auth_key   priv   priv_key   Reason   term      Retrieve usm user config     update_usm_user_info EngineID  UserName  Item  Val    gt  ok    error  Reason   Types    EngineID   string     UsmName   string     Item   sec_name   auth   auth_key   priv   priv_key   Val   term     Reason   term      Update usm user config     which _usm_users     gt  UsmUsers    Types   UsmUsers     EngineID  UserName     EngineID   string      UsmName   string      Get a list of all registered usm users     which_usm_users EngineID    gt  UsmUsers    Types   UsmUsers    UserName   UserName   string         Get a list of all registered usm users with engine id EngineID     178   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpm       sync_get2 UserId  TargetName  Oids    gt   ok  SnmpReply  Remaining     error   Reason     sync_get2 UserId  TargetName  Oids  SendOpts    gt   ok  SnmpReply  Remaining      error  Reason     Types   UserId 
24.   note_store_opt       timeout  note_store_timeout       verbosity   verbosity         Specifies the options for the SNMP note store   For defaults see the options in note_store_opt      note_store_timeout     integer    lt optional gt     Note cleanup time  When storing a note in the note store  each note is given lifetime  Every timeout the  note_store process performs a GC to remove the expired note s  Time in milli seconds     Default is 30000     audit_trail_log    audit_trail_log_opt     lt optional gt   audit_trail_log_opt      type  atl_type       dir  atl_dir       size   atl_size       repair  atl_repair       seqno  atl_seqno           If present  this option specifies the options for the audit trail logging  The disk_log module is used to maintain  a wrap log  If present  the dir and size options are mandatory     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    27    1 5 Running the application       If not present  audit trail logging is not used   atl_type     read   write   read_write  lt optional gt     Specifies what type of an audit trail log should be used  The effect of the type is actually different for the the  agent and the manager     For the agent     e If write is specified  only set requests are logged   e If read is specified  only get requests are logged     e If read_write  all requests are logged   For the manager     e If write is specified  only sent messages are logged   e If read is specified  only received mes
25.   silence  log   Shall the agent re read the configuration files during startup    and ignore the configuration database   true false    true   Multi threaded agent  true false    false  true   Check for duplicate mib entries when installing a mib  true false    false   Check for duplicate trap names when installing a mib  true false    false   Mib server verbosity  silence info log debug trace    silence   Mib server cache  true false    true   Note store verbosity  silence info log debug trace    silence   Note store GC timeout   30000   Shall the agent use an audit trail log  y n    n  y   Audit trail log type  write read_write    read_write    Where to store the audit trail log    ldisk snmp   ldisk snmp agent log   Max number of files   10    Max size  in bytes  of each file   10240    Audit trail log repair  true false truncate    true   Which network interface module shall be used   snmpa_net_if   Network interface verbosity  silence info log debug trace    silence  log   Bind the agent IP address  true false    false    Shall the agents IP address and port be not reusable  true false    false    Agent request limit  used for flow control   infinity pos integer    infinity  32  Receive buffer size of the agent  in bytes   default pos integer    default    Send buffer size of the agent  in bytes   default pos integer    default    Do you wish to specify a network interface filter module  or use default   default        ne    snmp contig   System name  sysName standard v
26.   term    TargetName   target_name     Oids    oid     SendOpts   send_opts     send_opts      send_opt        send_opt      context  string       timeout  pos_integer       extra   term       community  community       sec_model  sec_model       sec_name   string       sec_level  sec_level       max_message_size  pos_integer      SnmpReply   snmp_reply      Remaining   integer      Reason    send failed  ReqId  ActualReason     invalid_sec_info  SecInfo     SnmpInfo    term    ReqiId   term    ActualReason   term      SecInfo    sec_info     sec_info      sec_tag    ExpectedValue  ReceivedValue   sec_tag     atom      ExpectedValue   ReceivedValue   term    SnmpInfo   term      Synchronous get request   Remaining is the remaining time of the given  or default  timeout time     When Reason is  send_failed       it means that the net_if process failed to send the message  This could happen because  of any number of reasons  i e  encoding error  ActualReason is the actual reason in this case     The send option ext ra specifies an opaque data structure passed on to the net if process  The net if process included  in this application makes  with one exception  no use of this info  so the only use for it in such a option  when using  the built in net if  would be tracing  The one usage exception is  Any tuple with snmpm_ext ra_info_tag as its  first element is reserved for internal use        Some of the send options  community  sec_model  sec_name  sec_level and max_message_size
27.   undoFailed genErr  notWritable noSuchName       68   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP        1 17 SNMP Appendix B             inconsistentName noSuchName          Table 16 1  Error Messages    1 17 SNMP Appendix B    1 17 1 Appendix B  RowStatus  from RFC1903     RowStatus     TEXTUAL CONVENTION  STATUS Current  DESCRIPTION     The RowStatus textual convention is used to manage the  creation and deletion of conceptual rows  and is used as the  value of the SYNTAX clause for the status column of a  conceptual row  as described in Section 7 7 1 in RFC1902      The status column has six defined values          active   which indicates that the conceptual row is  available for use by the managed device            notInService   which indicates that the conceptual  row exists in the agent  but is unavailable for use by  the managed device  see NOTE below             notReady   which indicates that the conceptual row  exists in the agent  but is missing information  necessary in order to be available for use by the  managed device             createAndGo   which is supplied by a management  station wishing to create a new instance of a  conceptual row and to have its status automatically set  to active  making it available for use by the managed  device          createAndWait   which is supplied by a management  station wishing to create a new instance of a  conceptual row  but not make it available for use by  the managed device   and  
28.  10  default             e MaxMessageSize is an integer  default  2048         Note that if EngineTd has the value discovery  the agent cannot send inform messages to that manager until  it has performed the discovery process with that manager     1 6 9 Target Parameters Definitions    The information about Target Parameters Definitions should be stored in a file called target_params conf     36   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     1 7 Definition of Manager Configuration Files       The corresponding table is snmpTargetParamsTabl1le in the SNMP TARGET MIB     Each entry is a term         ParamsName  MPModel  SecurityModel  SecurityName  SecurityLevel    e ParamsName is a unique non empty string    e MPModel is v1  v2corv3   e SecurityModel is v1  v2c  orusm     e SecurityName isa string        e SecurityLevel is noAuthNoPriv  authNoPriv or authPriv     1 7 Definition of Manager Configuration Files    Configuration data may be included in configuration files that is located in the configuration directory  The name of  this directory is given in the config_dir configuration parameter  These files are read at start up     The directory where the configuration files are found is given as a parameter to the manager     The entry format in all files are Erlang terms  separated by a     and a newline  In the following sections  the formats  of these terms are described  Comments may be specified as ordinary Erlang comments     If syntax e
29.  If authentication or encryption is used  SNMPv3 only   start the crypto application     SS emio rope step o    Simple SNMP configuration tool  version 4 0   Note  Non trivial configurations still has to be  done manually  IP addresses may be entered  as dront ericsson se  UNIX only  or  LZ ee    28   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     Con    Age    Clots    sooo     On  iS  tos  Ty AH re  0    00 T       AL S   VA   ele  22   PAS     236   aoe  Zea  23e   238     24   257    29a  255  BSS   Pas Tole  25e   29     Age    mak  SD     oF    1 5 Running the application       figure an agent  y n    y     nt system config   Agent process priority  low normal high   normal   What SNMP version s  should be used  1 2 3 1 amp 2 1 amp 2 amp 3 2 amp 3    3  1 amp 2 amp 3  Configuration directory  absolute path     ldisk snmp   ldisk snmp agent conf  Config verbosity  silence info log debug trace    silence   Database directory  absolute path     ldisk snmp   ldisk snmp agent db  Mib storage type  ets dets mnesia    ets   Target cache verbosity  silence info log debug trace    silence    Symbolic store verbosity  silence info log debug trace    silence   Local DB verbosity  silence info log debug trace    silence    Local DB repair  true false force    true    Local DB auto save  infinity milli seconds    5000   Error report module   snmpa_error_logger   Agent type  master sub    master   Master agent verbosity  silence info log debug trace  
30.  If this is the case  the OBJECT IDENTIFIER sent in the  notification is the RowIndex appended to the OBJECT IDENTIFIER for the table column  This is the  OBJECT IDENTIFIER which specifies the element         OID  Value   where OID is the OBJECT IDENTIFIER for an instance of an object  scalar variable  or  column variable     For example  to specify that sysLocation should have the value  upstairs  in the notification  we could use  one of         sysLocation   upstairs   or    108   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpa            1 3 6 1 2 1 1 6 0      upstairs   or       sysLocation_instance   upstairs    provided that the generated  hr1 file is included     If a variable in the notification is a table element  the RowIndex for the element must be given in the Varbinds  list  In this case  the OBJECT IDENTIFIER sent in the notification is the OBJECT IDENTIFIER that identifies this  element  This OBJECT IDENTIFIER could be used in a get operation later     This function is asynchronous  and does not return any information  If an error occurs  user_err Z2 of the error  report module is called and the notification is discarded     Note     Note that the use of the LocalEngineID argument is only intended for special cases  if the agent is to  emulate   multiple EngineIDs  By default  the agent uses the value of SnmpEngineID  see SNMP FRAMEWORK MIB         ExtraInfo is not normally used in any way by the agent  It is intended to b
31.  Oid  If it is a variable  the Oid must be  lt Oid for var gt  0 and if it is a table   Oid must be  lt table gt   lt entry gt   lt col gt   lt any gt     invalidate_mibs_ cache     gt  void    invalidate_mibs_cache Agent    gt  void    Types    Agent   pid     atom    Invalidate the mib server cache     The entire contents of the cache will be deleted     enable mibs_cache     gt  void    enable mibs_cache  Agent    gt  void    Types    Agent   pid     atom      Enable the mib server cache     disable mibs_cache     gt  void    disable _mibs_cache  Agent    gt  void    Types    Agent   pid     atom      Disable the mib server cache     which _ mibs_ cache size     gt  void         which_mibs_cache_size Agent    gt  void         Types   Agent   pid     atom      Retreive the size of the mib server cache     gc_mibs_cache     gt   ok  NumElementsGCed     error  Reason   gc_mibs_cache  Agent    gt   ok  NumElementsGCed     error  Reason   gc_mibs_cache Age    gt   ok  NumElementsGCed     error  Reason   gc_mibs_ cache  Agent  Age    gt   ok  NumElementsGCed     error  Reason   gc_mibs_cache Age  GcLimit    gt   ok  NumElementsGCed     error  Reason   gc_mibs_cache  Agent  Age  GcLimit    gt   ok  NumElementsGCed     error  Reason   Types    Agent   pid     atom     Age   integer    gt  0   GcLimit   integer    gt  0   infinity   NumElementsGCed   integer    gt   0    102   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpa       Reason   term 
32.  Ret    ok  Key     error  Reason   Key   term      Reason   term      Adds a target address definition to the agent config  Equivalent to one line in the target_addr conf file     delete _addr Key    gt  Ret    Types   Key   term    Ret   ok    error  Reason     Reason   term      Delete a target address definition from the agent config     add_params  Name  MPModel  SecModel  SecName  SecLevel    gt  Ret  Types    Name   string     MPModel   v1   v2c   v3   SecModel   v1   v2c   usm   SecName   string     SecLevel   noAuthNoPriv   authNoPriv   authPriv   Ret    ok  Key     error  Reason     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    161    snmp_target_mib       Key   term    Reason   term      Adds a target parameter definition to the agent config  Equivalent to one line in the target_params conf file     delete_params  Key    gt  Ret    Types   Key   term    Ret   ok    error  Reason     Reason   term      Delete a target parameter definition from the agent config     162   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmp_user_based_sm_mib       snmp_user_based_sm_mib    Erlang module    The module snmp_user_based_sm_mib implements the instrumentation functions for the SNMP USER   BASED SM MIB  and functions for configuring the database        The configuration files are described in the SNMP User s Manual     Exports    configure  ConfDir    gt  void    Types   ConfDir   string    This function is cal
33.  Target Address Definitions for more info     target_params_entry  Name  Vsn    gt  target_params_entry     target_params_entry  Name  Vsn  SecName  SecLevel    gt  target_params_entry       target_params_entry  Name  MPModel  SecModel  SecName  SecLevel    gt   target_params_entry       Types   Name   string    Vsn   v1   v2   v3  MPModel   v1   v2c   v3  SecModel   v1   v2c   usm  SecName   string    SecLevel   noAuthNoPriv   authNoPriv   authPriv  target_params_entry     term    Create an entry for the agent target_params config file  target_params conf     Name must be a non empty string     Vsn translates into MPModel and SecModel as follows        Voll Wen vl   gt  MPModel vl  SecModel   vl   Oll Wen v2   gt  MPModel   v2c  SecModel   v2c   011 Vsn   v3   gt  MPModel v3  SecModel   usm    target_params_entry 2 translates to the following call  target_params_entry  Name  Vsn    Initial   noAuthNoPriv      target_params_entry 4 translates to the following call  target_params_entry  Name  MPModel   SecModel  SecName  SecLevel  where MPModel and SecModel is mapped from Vsn  see above              See Target Parameters Definitions for more info     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    117    snmpa_conf       write_target_params_config Dir  Conf    gt  ok  write_target_params_config Dir  Hdr  Conf    gt  ok    Types   Dir   string    Hdr   string      Conf    target_params_entry       Write the agent target_params config to the agent 
34.  This is described in chapter samp_agent_netif     Exports    start_link Prio  NoteStore  MasterAgent  Opts    gt   ok  Pid     error  Reason   Types    Prio   priority      NoteStore   pid     MasterAgent   pid     Opts    opt       opt      verbosity  verbosity       versions  versions      term    versions      version       version     v1   v2   v3    Start link the network interface process   NoteStore is the pid of the note store process and MasterAgent is the pid of the master agent process     Opts is an  basically  implementation dependent list of options to the network interface process  There are however  a number of options which must be handled  versions and verbosity     info Pid    gt    Key  Value    Types   Pid   pid    The info returned is basically up to the implementer to decide  This implementation provided by the application    provides info about memory allocation and various socket information     The info returned by this function is returned together with other info collected by the agent when the info function  is called  tagged with with the key net _if      verbosity  Pid  Verbosity    gt  void    Types    Pid   pid     Verbosity   verbosity       134   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpa_network_interface    Change the verbosity of a running network interface process     get_log type Pid    gt   ok  LogType     error  Reason   Types    Pid   pid     LogType   atl_type     Reason   term      The Au
35.  agent        pa which_variables 0    which_variables is used to retrieve a list of all  MIB  variables known to the agent        pa which_notifications 0    which_notifications is used to retrieve a list of all  MIB  notifications traps known to the agent     pa restart_worker 0 1   restart_worker is used to restart the worker process of a multi threaded agent   pa restart_set_worker 0 1   restart_set_worker is used to restart the set worker process of a multi threaded agent   pa_local_db print 0 1 2    For example  this function can show the counters snmpInPkts and snmpOutPkts     by the agent  This can be done by simply calling     snmpa print_mib_info       32      Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     1 6 Definition of Agent Configuration Files    See print_mib_info 0  print_mib_tables 0 or print_mib_variables 0 for more info     1 6 Definition of Agent Configuration Files    All configuration data must be included in configuration files that are located in the configuration directory  The  name of this directory is given in the config_dir configuration parameter  These files are read at start up  and are  used to initialize the SNMPv2 MIB or STANDARD MIB  SNMP FRAMEWORK MIB  SNMP MPD MIB  SNMP   VIEW BASED ACM MIB  SNMP COMMUNITY MIB  SNMP USER BASED SM MIB  SNMP TARGET MIB  and SNMP NOTIFICATION MIB  refer to the Management of the Agent for a description of the MIBs      The files are     e agent  conf  see Agent Information   
36.  agent       discarded_pdu  Vsn  ReqId  ACMData  Variable  Extra        Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    59    1 13 Definition of Manager Net if       This message is sent from a master agent if it for some reason decided to discard the pdu        e Vsniseither  version 1    version 2  or  version 3    e ReqId is the request id of the original request     e ACMData is data used by the Access Control Module in use  Normally this is just sent to  snmpa_mpd generate_response_message  see Reference Manual         e Variable is the name of an snmp counter that represents the error  e g  snmpInBadCommunityUses        al    xtra is the term that the Net if process sent to the agent when the request was sent to the agent            send_pdu  Vsn  Pdu  MsgData  To  Extra        This message is sent from a master agent when a trap is to be sent        e Vsniseither  version 1    version 2  or  version 3    e Pdu is an SNMP PDU record  as defined in snmp_types hrl  with the SNMP response   e MsgData is the message specific data used in the SNMP message  This value is normally sent to    snmpa_mpd generate_message 4  In SNMPv1 and SNMPv2c  this message data is the community  string  In SNMPv3  it is the context information        e To isa list of the destination addresses and their corresponding security parameters  This value is normally  sent to snmpa_mpd  generate_message 4        e Extra is any term that the notification sender wishes to 
37.  agent  Must implement the  snmpa_network_interface behaviour     Default is snmpa_net_if     agent_net_if_options      agent_net_if_option     lt optional gt   agent_net_if_option      bind_to  bind_to       sndbuf  sndbuf       recbuf   recbuf       no_reuse  no_reuse       req_limit  req_limit       filter     agent_net_if_filter_options         These options are actually specific to the used module  The ones shown here are applicable to the default  agent_net_if_module       For defaults see the options in agent_net_if_option     req_limit     integer     infinity  lt optional gt   Max number of simultaneous requests handled by the agent     Default is infinity     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    87    snmp       agent_net_if_filter_options      agent_net_if_filter_option     lt optional gt   agent_net_if_filter_option      module  agent_net_if_filter_module        These options are actually specific to the used module  The ones shown here are applicable to the default  agent_net_if_filter_module          For defaults see the options in agent_net_if_filter_option     agent_net_if_filter_module     atom    lt optional gt     Module which handles the network interface filter part for the SNMP agent  Must implement the  snmpa_network_interface_filter behaviour     Default is snmpa_net_if_filter   agent_mibs      string     lt optional gt   Specifies a list of MIBs  including path  that defines which MIBs are initially loaded int
38.  an error of    inconsistentValue     On this error  the management station can issue a management  protocol retrieval operation to determine if this was  because it failed to specify a value for a required column   or  because the selected instance of the status column  already existed  In the latter case  we return to  interaction 1  In the former case  the management station  can re issue the set operation with the additional  information  or begin interaction 2 again using     createAndWait  in order to negotiate creation of the  conceptual row     NOTE WELL    Regardless of the method used to determine the column  requirements  it is possible that the management  station might deem a column necessary when  in fact   the agent will not allow that particular columnar  instance to be created or written  In this case  the  management protocol set operation will fail with an  error such as    noCreation  or    notWritable   In this  case  the management station decides whether it needs  to be able to set a value for that particular columnar  instance  If not  the management station re issues the  management protocol set operation  but without setting  a value for that particular columnar instance   otherwise  the management station aborts the row  creation algorithm     Interaction 2b  Negotiating the Creation of the Conceptual  Row    Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    73    1 17 SNMP Appendix B       The management station issues 
39.  an unused instance identifier has been selected  the  management station determines if it wishes to create and  activate the conceptual row in one transaction or ina  negotiated set of interactions     Interaction 2a  Creating and Activating the Conceptual Row    The management station must first determine the column  requirements  i e   it must determine those columns for  which it must or must not provide values  Depending on the  complexity of the table and the management station s  knowledge of the agent s capabilities  this determination  can be made locally by the management station  Alternately   the management station issues a management protocol get  operation to examine all columns in the conceptual row that  it wishes to create  In response  for each column  there  are three possible outcomes         a value is returned  indicating that some other  management station has already created this conceptual  row  We return to interaction 1         the exception    noSuchInstance  is returned   indicating that the agent implements the object type  associated with this column  and that this column in at  least one conceptual row would be accessible in the MIB  view used by the retrieval were it to exist  For those    72   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     1 17 SNMP Appendix B       columns to which the agent provides read create access   the    noSuchInstance  exception tells the management  station that it should supply a va
40.  and Dispatch functionality in  SNMP for the agent  It is supposed to be used from a Network Interface process  Definition of Agent Net if      Exports  init  Vsns    gt  mpd_state    Types    Vsns    Vsn     Vsn   vl   v2   v3  This function can be called from the net_if process at start up  The options list defines which versions to use     It also initializes some SNMP counters     process_packet  Packet  TDomain  TAddress  State  NoteStore  Log    gt   ok  Vsn   Pdu  PduMS  ACMData     discarded  Reason     discovery  DiscoPacket     process_packet  Packet  TDomain  TAddress  LocalEngineID  State  NoteStore   Log    gt   ok  Vsn  Pdu  PduMS  ACMData     discarded  Reason     discovery   DiscoPacket      Types   Packet   binary     TDomain   snmpUDPDomain  TAddress    Ip  Udp   LocalEngineID   string    Ip    integer    integer    integer    integer       Udp   integer     State   mpd_state    NoteStore   pid    Log   snmp_log    Vsn    version 1     version 2     version 3   Pdu  pdu  PduMs   integer     ACMData   acm _data    Reason   term      DiscoPacket   binary       Processes an incoming packet  Performs authentication and decryption as necessary  The return values should be  passed the agent     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    131    snmpa_mpd    Note     Note that the use of the LocalEngineID argument is only intended for special cases  if the agent is to  emulate   multiple EngineIDs  By default  the agent uses the v
41.  by calling start_subagent 3     db_dir is mandatory   dir in config is mandatory     See snmp config for a description of the options     start_sub_agent  ParentAgent  Subtree Mibs    gt   ok  pid       error  Reason   Types    ParentAgent   pid     SubTree   oid     Mibs    MibName    MibName    string      Starts a sub agent on the node where the function is called  The snmpa_supervisor must be running     If the supervisor is not running  the function fails with the reason badarg     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    141    snmpa_supervisor       stop_sub_agent  SubAgent    gt  ok   no_such_child  Types   SubAgent   pid    Stops the sub agent on the node where the function is called  The snmpa_supervisor must be running     If the supervisor is not running  the function fails with the reason badarg     142   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmp_community_mib       snmp_community_mib    Erlang module    The module snmp_community_mib implements the instrumentation functions for the SNMP COMMUNITY   MIB  and functions for configuring the database     The configuration files are described in the SNMP User s Manual     Exports    configure  ConfDir    gt  void    Types   ConfDir   string      This function is called from the supervisor at system start up     Inserts all data in the configuration files into the database and destroys all old rows with StorageType volatile   The rows crea
42.  client from this process   snmpm_started  Pid   If the SNMP manager  was not started in time  a timeout message will be sent to the client   snmpm_start_timeout  Pid      A client application that is dependent on the SNMP manager will use this function in order to be notified of when the  manager has started  There are two situations when this is useful     e During the start of a system  when a client application could start prior to the SNMP manager but is dependent  upon it  and therefor has to wait for it to start   e When the SNMP manager has crashed  the dependent client application has to wait for the SNMP manager to be    restarted before it can reconnect     The function returns the pid   of a handler process  that does the supervision on behalf of the client application  Note  that the client application is linked to this handler     This function is used in conjunction with the monitor function     cancel _ notify started Pid    gt  void    Types   Pid   pid      Cancel a previous request to be notified of SNMP manager start     register_user Id  Module  Data    gt  ok    error  Reason   register_user Id  Module  Data  DefaultAgentConfig    gt  ok    error  Reason   Types    Id   term     Module   snmpm_user      Data   term     DefaultAgentConfig    default_agent_config       default_agent_config      Item  Val     Item   community   timeout   max_message_size   version   sec_model    sec_name   sec_level    Val   term    Reason   term      snmpm_user     Module 
43.  debug info     verbosity  traceldebuglloglinfol silence       Defaults to silence     warnings     W   Print warning messages     wae     Werror   Warnings as errors  Indicates that warnings shall be treated as errors     0 directory    The directory where the compiler should place the output files  If not specified  output files will be placed in the  current working directory       i Directory    Specifies the path to search for imported  compiled  MIB files  By default  the current working directory is always  included     This option can be present several times  each time specifying one path     il Directory    This option  include_lib   specifies a list of directories to search for imported MIBs  It assumes that the first  element in the directory name corresponds to an OTP application  The compiler will find the current installed  version  For example  the value   snmp mibs    will be replaced by   snmp 3 1 1 mibs     or what the current  version may be in the system   The current directory and the  snmp home  priv mibs  are always listed last in  the include path     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    171    snmpc command       Sgc    This option  skip group check   if present  disables the group check of the mib compiler  That is  should the  OBJECT GROUP and the NOTIFICATION GROUP macro s  be checked for correctness or not       dep  Keep deprecated definition s   If not specified the compiler will ignore deprecated defin
44.  define the symbolic value  as enumerated     Db is a reference to the symbolic store database  retrieved by a call to get__symbolic_store_db 0      int_to_enum Name  Int    gt   value  Enum    false  int_to_enum Db  Name  Int    gt   value  Enum    false  Types     Db   term    Name   atom      98   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpa    Int   int    Enum   atom      Converts the integer Int to the corresponding symbolic value of the enumerated object or type Name in a MIB  The  MIB must be loaded     false is returned if the object or type is not defined in any loaded MIB  or if it does not define the symbolic value  as enumerated     Db is a reference to the symbolic store database  retrieved by a call to get_symbolic_store_db 0      name_to_oid Name    gt   value  oid      false  name_to_oid Db  Name    gt   value  oid      false  Types     Db   term    Name   atom      Looks up the OBJECT IDENTIFIER of a MIB object  given the symbolic name  Note  the OBJECT IDENTIFIER  is given for the object  not for an instance     false is returned if the object is not defined in any loaded MIB     Db is a reference to the symbolic store database  retrieved by a call to get__symbolic_store_db 0      oid_to_name OID    gt   value  Name    false  oid_to_name Db  OID    gt   value  Name    false  Types     Db   term     OID   oid     Name   atom    Looks up the symbolic name of a MIB object  given OBJECT IDENTIFIER   false is returned if 
45.  directory where the configuration files are found     The configuration file read is  context  conf     init     gt  void    This function is called from the supervisor at system start up     Creates the necessary objects in the database if they do not exist  It does not destroy any old values     add_context  Ctx    gt  Ret    Types   Ctx   string    Ret    ok  Key     error  Reason   Key   term      Reason   term      Adds a context to the agent config  Equivalent to one line in the context  conf file     delete context  Key    gt  Ret    Types   Key   term    Ret   ok    error  Reason     Reason   term      Delete a context from the agent config     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    145    snmp_generic       snmp_generic    Erlang module    The module snmp_generic contains generic functions for implementing tables  and variables  using the SNMP  built in database or Mnesia  These default functions are used if no instrumentation function is provided for a managed  object in a MIB  Sometimes  it might be necessary to customize the behaviour of the default functions  For example   in some situations a trap should be sent if a row is deleted or modified  or some hardware is to be informed  when    information is changed     The overall structure is shown in the following figure     4                      SNMP Agent                      MIB    4                       Association file  associates a MIB object with    snmp_generic tab
46.  erlang nodes visible  Nodes   connected is translated to erlang nodes  connected   If  Nodes      then the own node is assumed    Action   clear   keep  Default is keep  Action is used to specify what shall be done if the mnesia     dets table already exist     mib_server      mib_server_opt     lt optional gt   mib_server_opt       mibentry_override  mibentry_override         trapentry_override  trapentry_override       verbosity  verbosity          cache  mibs_cache       Defines options specific for the SNMP agent mib server    For defaults see the options in mib_server_opt      mibentry_override     bool    lt optional gt     If this value is false  then when loading a mib each mib  entry is checked prior to installation of the mib  The  purpose of the check is to prevent that the same symbolic mibentry name is used for different oid s     Default is false   trapentry_override     bool    lt optional gt     If this value is false  then when loading a mib each trap is checked prior to installation of the mib  The purpose  of the check is to prevent that the same symbolic trap name is used for different trap s     Default is false   mibs_cache     bool     mibs_cache_opts    lt optional gt   Shall the agent utilize the mib server lookup cache or not     Default is t rue  in which case the mibs_cache_opts    default values apply      mibs_cache_opts      mibs_cache_opt     lt optional gt   mibs_cache_opt       autogc  mibs_cache_autogc      gclimit   mibs_cache_gclimit     
47.  error  Reason   Types    Pid   pid     NewType   OldType   atl_type     Reason   term      The Audit Trail Log is managed by the network interface process  So  it is this process that has to do the actual changing  of the type     See set_log_type for more info     204   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpm_user    snmpm_user    Erlang module    This module defines the behaviour of the manager user  A snmpm_user compliant module must export the following  functions    e     handle_error 3   e handle_agent 4   e handle_pdu 4   e    handle_trap 3   e handle_inform 3   e    handle_report 3    The semantics of them and their exact signatures are explained below     Note that if an agent is registered using the old  no longer documented  functions  using Addr and Port   the old variant  of the callback functions  handle_pdu  handle_trap  handle_inform and handle_report  will be called     Exports    handle _error ReqId  Reason  UserData    gt  Reply  Types   ReqId   integer     Reason    unexpected_pdu  SnmpInfo     invalid_sec_info  SecInfo   SnmpInfo     empty_message  Addr  Port    term    Addr   ip address     Port   integer     UserData   term    Reply   ignore  This function is called when the manager needs to communicate an  asynchronous  error  to the user  e g  failure  to send an asynchronous message  i e  encoding error   a received message was discarded due to security error  the    manager failed to generate a response
48.  following message is used to report that a response to a request has been received  The only request an agent can  send is an Inform Request     Pid    snmp_response_received  Vsn  Pdu  From     e Pidis the Process that waits for the response for the request  The Pid was specified in the send_pdu_req  message  see below         e Vsniseither  version 1    version 2  or  version 3    e  Pduis the SNMP Pdu received    e From is the source address  If UDP over IP is used  this should be a 2 tuple  IP  UDPport   where IP isa  4 tuple with the IP address  and UDPport is an integer     Incoming Messages    This section describes the incoming messages which a Net if process must be able to receive            snmp_response  Vsn  Pdu  Type  ACMData  To  Extra     This message is sent to the Net if process from a master agent as a response to a previously received request        e Vsniseither  version 1    version 2  or  version 3    e Pdu is an SNMP PDU record  as defined in snmp_types hrl  with the SNMP response   e Type is the  pdu type of the original request     e ACMData is data used by the Access Control Module in use  Normally this is just sent to  snmpa_mpd generate_response_message  see Reference Manual     e To is the destination address  If UDP over IP is used  this should be a 2 tuple   IP  UDPport   where IP  is a 4 tuple with the IP address  and UDPport is an integer           e Extra is the term that the Net if process sent to the agent when the request was sent to the
49.  for more info     usm_entry  EngineID  UserName  AuthP  AuthKey  PrivP  PrivKey    gt  usm_entry       usm_entry EngineID  UserName  SecName  AuthP  AuthKey  PrivP  PrivKey    gt   usm_entry       Types   EngineID   string    UserName   string    SecName   string      AuthP   usmNoAuthProtocol   usmHMACMD5AuthProtocol    usmHMACSHAAuthProtocol    AuthKey    integer       PrivP   usmNoPrivProtocol   usmDESPrivProtocol   usmAesCfb128Protocol  PrivKey    integer      usm_entry     term    Create an entry for the agent community config file  community  conf     See Security data for USM for more info     write_usm_config Dir  Conf    gt  ok    write_usm_config Dir  Hdr  Conf    gt  ok    Types   Dir   string    Hdr   string      Conf    usm_entry      Write the manager usm config to the manager usm config file   Dir is the path to the directory where to store the config file   Hdr is an optional file header  note that this text is written to the file as is      See Security data for USM for more info     append_usm_config Dir  Conf    gt  ok  Types   Dir   string    Conf    usm_entry      Append the usm config to the current manager usm config file   Dir is the path to the directory where to store the config file     See Security data for USM for more info     198   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpm_conf    read_usm_config Dir    gt  Conf  Types    Dir   string     Conf    usm entry      Read the current manager usm config file
50.  function fails with the reason configuration_error     ConfDir is a string which points to the directory where the configuration files are found     The configuration file read is  standard  conf     inc  Name    gt  void    inc  Name  N    gt  void    Types    Name   atom     N   integer       Increments a variable in the MIB with N  or one if N is not specified     reconfigure  ConfDir    gt  void    Types   ConfDir   string      Inserts all data in the configuration files into the database and destroys all old data  including the rows with StorageType  nonVolatile  The rows created from the configuration file will have StorageType nonVolatile     Thus  the data in the SNMP STANDARD MIB and SNMPv2 MIB  after this function has been called  is from the  configuration files     All snmp counters are set to zero     If an error is found in the configuration file  it is reported using the function config_err 2 of the error report  module  and the function fails with the reason configuration_error     ConfDir is a string which points to the directory where the configuration files are found     The configuration file read is  standard  conf     158   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmp_standard_mib    reset     gt  void      Resets all snmp counters to 0     sys_up_time     gt  Time  Types   Time   int      Gets the system up time in hundredth of a second     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SN
51.  gb_max_vbs   Priory   multi_threaded   ela eune    Gls  aise error   local_db   net_if    SE  mib_storage   mib_server   eubiclise iciesii il Iheye        tmp snmp agent db       tmp snmp agent conf            snmp_component_config        agent_options         restart_type      agent_type      verbosity       agent_discovery       versions       gb_max_vbs       priority       multi_threaded       elo cinei   db_init_error      tocat cis   agent_net_if     mibs       mib_storage      mib_server        audi cemer il theyey             tmp snmp manager conf       tmp snmp manager db      1      Each snmp component has its own set of configuration parameters  even though some of the types are common to  both components      manager  manager_options           Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    85    snmp        error_report_mod  error_report_mod               note_store  note_store       symbolic_store  symbolic_store         target_cache  target_cache         ticonibalgy  agent_config      manager_options      manager_option      manager_option      restart_type  restart_type       net_if  manager_net_if     server  server       note_store  note_store      COn cig manager_config      inform_request_behaviour  manager_irb      mibs  manager_mibs       Petocicy  petoeciry  3  audits trai tl ikexey   audiit strai le ey G  ny  versions  versions       def_user_mod  def_user_module    def_user_data  def_user_data           Agent specific c
52.  gt   audit_trail_log_opt      type  atl_itype       dir  atl_dir       size   atl_size       repair  atl_repair       seqno  atl_seqno        If present  this option specifies the options for the audit trail logging  The disk_1log module is used to maintain  a wrap log  If present  the dir and size options are mandatory     If not present  audit trail logging is not used   atl_type     read   write   read_write  lt optional gt     Specifies what type of an audit trail log should be used  The effect of the type is actually different for the the  agent and the manager     For the agent     e If write is specified  only set requests are logged   e If read is specified  only get requests are logged     e If read_write  all requests are logged   For the manager     e If write is specified  only sent messages are logged   e If read is specified  only received messages are logged     e If read_write  both outgoing and incoming messages are logged   Default is read_write    atl_dir   dir    lt mandatory gt   Specifies where the audit trail log should be stored     If audit_trail_log specifies that logging should take place  this parameter must be defined        atl_size      integer    integer     lt mandatory gt    Specifies the size of the audit trail log  This parameter is sent to disk_log    If audit_trail_log specifies that logging should take place  this parameter must be defined   atl_repair     true   false   truncate   snmp_repair  lt optional gt     Specifies if and how th
53.  in a table is distributed  Different table rows are  implemented in different places  Some SNMP tool kits dedicate an SNMP sub agent for each part of the table and  load the corresponding MIB into all sub agents  The Master Agent is responsible for presenting the distributed table  as a single table to the manager  The toolkit supplied uses a different method     The method used to implement distributed tables with this SNMP tool is to implement a table coordinator process  responsible for coordinating the processes  which hold the table data and they are called table holders  All table holders  must in some way be known by the coordinator  the structure of the table data determines how this is achieved  The  coordinator may require that the table holders explicitly register themselves and specify their information  In other  cases  the table holders can be determined once at compile time     When the instrumentation function for the distributed table is called  the request should be forwarded to the table  coordinator  The coordinator finds the requested information among the table holders and then returns the answer  to the instrumentation function  The SNMP toolkit contains no support for coordination of tables since this must be  independent of the implementation     The advantages of separating the table coordinator from the SNMP tool are   e We do not need a sub agent for each table holder  Normally  the sub agent is needed to take care of  communication  but in Distri
54.  in the following messages      snmp_targets  tag    Addresses     This informs the user which target addresses the notification was sent to      snmp_notification  tag     got_response  Address       This informs the user that this target address acknowledged the notification      snmp_notification  tag     no_response  Address       This informs the user that this target address did not acknowledge the notification     The notification is sent as an Inform Request to each target address in Addresses and if there are no targets  for which an Inform Request is sent  Addresses is the empty list        The tag_receiver   will first be sent the snmp_targets message  and then for each address in  Addresses list  one of the two snmp_notification messages         Mod  Func  Args    The info will be delivered via the function call     Mod Func  Msg   Args      where Msg has the same content and purpose as the messages descrived above     Note     The extra info is not normally interpreted by the agent  instead it is passed through to the net if process  It is  up to the implementor of that process to make use of this data     The version of net if provided by this application makes no use of this data  with one exception  Any tuple  containing the atom snmpa_default_notification_extra_info may be used by the agent and is  therefor reserved        See the net if incomming messages for sending a trap and notification for more info     106   Ericsson AB  All Rights Reserved   Simple Ne
55.  ina write  A read_write  all requests  responses and traps are stored     The log uses a raw data format  basically the BER encoded message   in order to minimize the CPU load needed for  the log mechanism  This means that the log is not human readable  but needs to be formatted off line before it can be  read  Use the function snmpa log_to_txt for this purpose     1 14 2 Manager Logging    For the manager  a write  means that all requests  set and get  and their responses are stored  No traps are stored  inawrite  A read_write  all requests  responses and traps are stored     The log uses a raw data format  basically the BER encoded message   in order to minimize the CPU load needed for  the log mechanism  This means that the log is not human readable  but needs to be formatted off line before it can be  read  Use the function sampm log_to_txt for this purpose     1 15 Advanced Agent Topics    The chapter Advanced Agent Topics describes the more advanced agent related features of the SNMP development  tool  The following topics are covered     e When to use a Sub agent    62   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     1 15 Advanced Agent Topics    e Agent semantics   e Sub agents and dependencies   e Distributed tables   e Fault tolerance   e Using Mnesia tables as SNMP tables  e Audit Trail Logging    e Deviations from the standard    1 15 1 When to use a Sub agent    The section When to use a Sub agent describes situations where the m
56.  message to a received inform request  or when receiving an unexpected PDU  from an agent  could be an expired async request      If ReqIdis less then 0  it means that this information was not available to the manager  that info was never retrieved  before the message was discarded      For SnmpInfo see handle_agent below     handle _agent  Addr  Port  Type  SnmpInfo  UserData    gt  Reply    Types   Addr   ip_address    Port   integer     Type   pdu   trap   report   inform    SnmpInfo   SnmpPduInfo   SnmpTrapInfo   SnmpReportInfo   SnmpInformInfo  ErrorStatus   atom     ErrorIndex   integer      Varbinds    varbind        Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    205    snmpm_user       varbind      varbind  UserData   term    Reply   ignore    register  UserId  TargetName  agent_info      UserId   term    TargetName   target_name     agent_info       agent_info_item    agent_info_value       This function is called when a message is received from an unknown agent   Note that this will always be the default user that is called   For more info about the agent_info     see register_agent   The arguments Type and SnmpInfo relates in the following way     e pdu  SnmpPdulInfo  see handle_pdu for more info    e trap  SnmpTrapInfo  see handle_trap for more info    e report   SnmpReport Info  see handle_report for more info      e inform  SnmpInformInfo  see handle_inform for more info      The only user which would return  register  UserId  Tar
57.  more info     read_standard_config Dir    gt  Conf  Types    Dir   string     Conf    standard_entry        Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    113    snmpa_conf       Read the current agent standard config file   Dir is the path to the directory where to store the config file     See System Information for more info     context_entry  Context    gt  context_entry     Types    Context   string     context_entry     term      Create an entry for the agent context config file  context   conf     See Contexts for more info     write_context_config Dir  Conf    gt  ok  write_context_config Dir  Hdr  Conf    gt  ok    Types   Dir   string    Hdr   string      Conf    context_entry       Write the agent context config to the agent context config file   Dir is the path to the directory where to store the config file   Hdr is an optional file header  note that this text is written to the file as is      See Contexts for more info     append _context_config Dir  Conf    gt  ok  Types   Dir   string    Conf    context_entry       Append the context config to the current agent context config file   Dir is the path to the directory where to store the config file     See Contexts for more info     read_context_config Dir    gt  Conf  Types   Dir   string    Conf    context_entry       Read the current agent context config file   Dir is the path to the directory where to store the config file     See Contexts for more info     community entry  Co
58.  must implement the SNMP manager network interface behaviour     1 13 2 Messages  The section Messages describes mandatory messages  which Net if must send to the manager server process     Net if must send the following message when it receives an SNMP PDU from the network that is aimed for the  MasterA gent     Server    snmp_pdu  Pdu  Addr  Port     e Pdu is an SNMP PDU record  as defined in snmp_types hr1  with the SNMP request   e Addr is the source address     e Port is port number of the sender   Server    snmp_trap  Trap  Addr  Port     e Trap is either an SNMP pdu record or an trappdu record  as defined in snmp_types hr1  with the SNMP  request     e Addr is the source address     e Port is port number of the sender   Server    snmp_inform  Ref  Pdu  PduMS  Addr  Port     e Ref is either the atom ignore or something that can be used to identify the inform request  e g  request id    ignore is used if the response  acknowledgment  to the inform request has already been sent  this means that  the server will not make the call to the inform_response function   See the inform request behaviour configuration  option for more info     e Pduisan SNMP PDU record  as defined in snmp_types hr1  with the SNMP request   e Addr is the source address     e Port is port number of the sender     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    61    1 14 Audit Trail Log    Server    snmp_report  Data  Addr  Port     e Dataiseither  ok  Pdu or error  Req
59.  only used for proxy agents   are implemented in this agent   Further  it is configurable which of these MIBs are actually loaded  and thus made visible to SNMP managers  For  example  in a non secure environment  it might be a good idea to not make MIBs that define access control visible   Note  the data the MIBs define is used internally in the agent  even if the MIBs not are loaded  This chapter describes  these standard MIBs  and some aspects of their implementation     Any SNMP agent must implement the system group and the snmp group  defined in MIB IL The definitions of these  groups have changed from SNMPv1 to SNMPv2  MIBs and implementations for both of these versions are Provided in  the distribution  The MIB file for SNMPv1 is called STANDARD MIB  and the corresponding for SNMPv 2 is called  SNMPv2 MIB  If the agent is configured for SNMPv1 only  the STANDARD MIB is loaded by default  otherwise   the SNMPv2 MIB is loaded by default  It is possible to override this default behavior  by explicitly loading another  version of this MIB  for example  you could choose to implement the union of all objects in these two MIBs     An SNMPv3 agent must implement the SNMP FRAMEWORK MIB and SNMP MPD MIB  These MIBs are loaded  by default  if the agent is configured for SNMPv3  These MIBs can be loaded for other versions as well     There are five other standard MIBs  which also may be loaded into the agent  These MIBs are     e SNMP TARGET MIB and SNMP NOTIFICATION MIB  which de
60.  processing  accept_send_pdu      Note that the network interface filter is something which is used by the network interface implementation provided by  the application  snmpa_net_if   The default filter accepts all messages     A network interface filter can e g  be used during testing or for load regulation  If the intended use is load regulation   see also req_limit and the function register_notification_filter     DATA TYPES    port     integer    gt  0  pdu_type      get request     get next request     get response     set request     trap    get bulk request     Exports    accept_recv Ip  Port    gt  boolean     Types    Ip   ip_address     Port   port       Called at the reception of a message  before any processing has been done      For the message to be discarded  the function must return false     accept_send Ip  Port    gt  boolean     Types    Ip   ip_address     Port   port       Called before the sending of a message  after all processing has been done      136   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpa_network_interface_filter    For the message to be discarded  the function must return false     accept_recv_pdu Ip  Port  PduType    gt  boolean     Types   Ip   ip_address     Port   port     PduType   pdu_type    Called after the basic message processing  MPD  has been done  but before the pdu is handed over to the master     agent for primary processing     For the pdu to be discarded  the function must return fal
61.  term  used to uniquely identify the user    e UserMod is the user callback module  atom    e UserData is any term  passed on to the user when calling the UserMod     e DefaultAgentConfig is a list of default agent config s  These values are used as default values when this  user registers agents     1 7 3 Agents    The information needed to handle agents should be stored in a file called agents  conf  It is also possible to add  agents in run time by calling the register_agent     Each entry is a tuple         UserlId  TargetName  Comm  Ip  Port  EngineID  Timeout  MaxMessageSize  Version   SecModel  SecName  SecLevel            e Userldis the identity of the manager user responsible for this agent  term    e TargetName is a unique non empty string    e Comm is the community string  string     e Tp is the ip address of the agent  a list of four integers     e Port is the port number of the agent  integer     e EngineID is the engine id of the agent  string      e Timeout is re transmission timeout  infinity   integer         e MaxMessageSize is the max message size for outgoing messages to this agent  integer    e Version is the version  v1   v2   v3     e SecModel1 is the security model  any   v1   v2c   usm     e SecName is the security name  string      e SecLevel is security level  noAuthNoPriv   authNoPriv   authPriv      1 7 4 Security data for USM    The information about Security data for USM should be stored in a file called usm  conf  which must be present  if the 
62.  the specified MIB file  lt File gt  mib  The compiled file BinFileName is called  lt File gt  bin     The option db specifies which database should be used for the default instrumentation     Default is volatile     The option deprecated specifies if a deprecated definition should be kept or not  If the option is false the MIB  compiler will ignore all deprecated definitions     Default is t rue     168   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpc    The option relaxed_row_name_assign_check  if present  specifies that the row name assign check shall  not be done strictly according to the SMI  which allows only the value 1   With this option  all values greater than  zero is allowed   gt   1   This means that the error will be converted to a warning    By default it is not included  but if this option is present it will be    The option description specifies if the text of the DESCRIPTION field will be included or not     By default it is not included  but if this option is present it will be    The option reference specifies if the text of the REFERENCE field  when found in a table definition  will  be included or not    By default it is not included  but if this option is present it will be  The reference text will be placed in the allocList  field of the mib entry record   me     for the table    The option group_check specifies whether the mib compiler should check the OBJECT GROUP macro and  the NOTIFICATION GROUP macro for corr
63.  to set up trace on function s  for the given module or modules     The example below sets up trace on the exported functions  default  of module snmp_generic and all functions  of module snmp_generic_mnesia  With return values  which is default  and timestamps in both cases  which  is also default      snmp enable_trace     snmp set_trace  snmp_generic    snmp_generic_mnesia    scope  all_functions          snmp set_trace snmp_generic  disable      snmp disable_trace       See Also  calendar 3     84   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmp       snmp  Application    This chapter describes the snmp application in OTP  The SNMP application provides the following services     e a multilingual extensible SNMP agent  e aSNMP manager  e a MIB compiler    Configuration    The following configuration parameters are defined for the SNMP application  Refer to application 3  for more  information about configuration parameters     The snmp part of the config file specifying the configuration parameters is basically the following tuple   snmp_components_config         snmp     A minimal config file for starting a node with both a manager and an agent       snmp     agent    db_dir    contio    ekuie    manager    config    dir   Tabadie    snmp_components_config    snmp_component_config      agent_options      agent_option             gt     gt   agent    agent_option      restart_type   agent_type   agent_verbosity   discovery   versions  
64.  with one exception  no use of this info  so the only use for it in such a configuration  when using the built in  net if  would be tracing  The one usage exception is  Any tuple with snmpm_extra_info_tagas its first element  is reserved for internal use        sync_get_bulk2 UserId  TragetName  NonRep  MaxRep  Oids    gt   ok  SnmpReply   Remaining     error  Reason     sync_get_bulk2 UserId  TragetName  NonRep  MaxRep  Oids  SendOpts    gt   ok   SnmpReply  Remaining     error  Reason     Types   UserId   term    TargetName   target_name     NonRep   integer     MaxRep   integer     Oids    oid     SendOpts   send_opts    send_opts      send_opt        send_opt      context  string       timeout  pos_integer       extra   term       community  community       sec_model  sec_model       sec_name   string       sec_level  sec_level       max_message_size  pos_integer        SnmpReply   snmp_reply       Remaining integer       Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    187    snmpm       Reason    send_failed  ReqId  ActualReason     invalid_sec_info  SecInfo   SnmpInfo    term      ReqId   term    ActualReason   term      SecInfo    sec_info     sec_info      sec_tag    ExpectedValue  ReceivedValue   sec_tag     atom      ExpectedValue   ReceivedValue   term    SnmpInfo   term         Synchronous get bulk request  See RFC1905    Remaining is the remaining time of the given  or default  timeout time     When Reason is  send_failed       it m
65.  would return  register  UserId  TargetName2  agent_info     is the default  user     208   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpm_network_interface_filter    snmpm_network_interface_filter    Erlang module    This module defines the behaviour of the manager network interface filter  A  snmpm_network_interface_filter compliant module must export the following functions    e accept_recv 2   e accept_send 2   e accept_recv_pdu 3   e accept_send_pdu 2    The semantics of them and their exact signatures are explained below     The purpose of the network interface filter is to allow for filtering of messages  accept or reject  receive and send   This is done on two levels     e The first level is at the UDP entry   exit point  i e  immediately after the receipt of the message  before any message  processing is done  accept_recv  and immediately before sending the message  after all message processing is  done  accept_send      e The second level is at the MPD entry   exit point  i e  immediately after the basic message processing   accept_recv_pdu    immediately before the basic message processing  accept_send_pdu      Note that the network interface filter is something which is used by the network interface implementation provided by  the application  snmpm_net_if and snmpm_net_if_mt   The default filter accepts all messages     A network interface filter can e g  be used during testing or for load regulation     DATA TYPES    port  
66. 5    ACCESS read write  STATUS mandatory  DESCRIPTION   Address of friend        friendsEntry 3    EStatus OBJECT  IYPE    SYNTAX RowStatus   ACCESS read write  STATUS mandatory   DESCRIPTION     The status of this conceptual row           friendsEntry 4    ipMeeyo  IRAP TYPE   ENTERPRISE examplel   VARIABLES   myName  fIndex     DESCRIPTION    This trap is sent when something happens to  the friend specified by fIndex       1  END    1 8 2 Default Implementation    Without writing any instrumentation functions  we can compile the MIB and use the default implementation of it   Recall that MIBs imported by  EX1 MIB mib  must be present and compiled in the current directory     STANDARD   MIB bin     RFC1213 MIB bin   when compiling     unix gt  erl  config   sys   1 gt  application start  snmp     ok   2 gt  snmpc compile   EX1 MIB      No accessfunction for  friendsTable   using default   No accessfunction for  myName   using default    Oke   Miapcil Mane  5 OINA    3 gt  snmpa load_mibs snmp_master_agent    EX1 MIB       ok    40   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     1 8 Agent Implementation Example       This MIB is now loaded into the agent  and a manager can ask questions  As an example of this  we start another  Erlang system and the simple Erlang manager in the toolkit     1 gt  snmp_test_mgr start_link   agent   dront ericsson se     community   all rights     s  making it understand symbolic names   mibs    EX1 MIB    STANDA
67. A    The default functions and snmp_generic cannot handle an object of type Net workAddress as INDEX   SNMPvI1 only    Use IpAddress instead     The agent does not check complex ranges specified for INTEGER objects  In these cases it just checks that   the value lies within the minimum and maximum values specified  For example  if the range is specified as  1  10   12  20 the agent would let 11 through  but not 0 or 21  The instrumentation functions must check  the complex ranges itself        The agent will never generate the wrongEncoding error  If a variable binding is erroneous encoded  the  asn1lParseError counter will be incremented        A tooBig error in an SNMPv 1 packet will always use the  NULL  value in all variable bindings     The default functions and snmp_generic do not check the range of each OCTET in textual conventions  derived from OCTET STRING  e g  DisplayString and DateAndTime  This must be checked in an    overloaded is_set_ok function     1 16 SNMP Appendix A  1 16 1 Appendix A    This appendix describes the conversion of SNMPv2 to SNMPv1 error messages  The instrumentation functions should    return v2 error messages     Mapping of SNMPv2 error message to SNMPv1                       SNMPv2 message SNMPv1 message  noError noError  genErr genErr  noAccess noSuchName  wrongType badValue  wrongLength badValue  wrongEncoding badValue  wrong Value badValue  noCreation noSuchName  inconsistentValue badValue  resourceUnavailable genErr  commitFailed genErr
68. B II which is defined in RFC1213  STANDARD MIB   or RFC1907  SNMPv2 MIB   They are implemented in the snmp_standard_mib module  The snmp counters  all reside in volatile memory and the system and snmpEnableAuthentTraps variables in persistent memory   using the SNMP built in database  refer to the Reference Manual  section snmp  module snmpa_local_db for  more details         If another implementation of any of these variables is needed  e g  to store the persistent variables in a Mnesia database   an own implementation of the variables must be made  That MIB will be compiled and loaded instead of the default  MIB  The new compiled MIB must have the same name as the original MIB  i e  STANDARD MIB or SNMPv2   MIB   and be located in the SNMP configuration directory  see Configuration Files      One of these MIBs is always loaded  If only SNMPv1 is used  STANDARD MIB is loaded  otherwise SNMPv2 MIB  is loaded     Data Types    There are some new data types in SNMPv2 that are useful in SNMPv1 as well  In the STANDARD MIB  three data  types are defined  RowStatus  TruthValue and DateAndTime  These data types are originally defined as textual  conventions in SNMPv2 TC  RFC1903      SNMP FRAMEWORK MIB and SNMP MPD MIB    The SNMP FRAMEWORK MIB and SNMP MPD MIB define additional read only managed objects  which is used  in the generic SNMP framework defined in RFC2271 and the generic message processing and dispatching module  defined in RFC2272  They are generic in the sense that t
69. C1901 1907  SNMPv2c    e RFC1908  2089  coexistence between SNMPv1 and SNMPv2    e  RFC2271  RFC2273  SNMP std MIBs    e the Mnesia User s Guide   e the Erlang 4 4 Extensions User s Guide   e the Reference Manual   e the Erlang Embedded Systems User s Guide   e the System Architecture Support Libraries  SASL  User s Guide   e the Installation Guide   e the Asn1 User s Guide   e Concurrent Programming in Erlang  2nd Edition  1996   Prentice Hall  ISBN 0 13 508301 X     1 2 Agent Functional Description    The SNMP agent system consists of one Master Agent and optional Sub agents     The tool makes it easy to dynamically extend an SNMP agent in run time  MIBs can be loaded and unloaded at any  time  It is also easy to change the implementation of an MIB in run time  without having to recompile the MIB  The  MIB implementation is clearly separated from the agent     To facilitate incremental MIB implementation  the tool can generate a prototype implementation for a whole MIB  or  parts thereof  This allows different MIBs and management applications to be developed at the same time     1 2 1 Features    To implement an agent  the programmer writes instrumentation functions for the variables and the tables in the MIBs  that the agent is going to support  A running prototype which handles set  get  and get   next can be created  without any programming     The toolkit provides the following     e multi lingual multi threaded extensible SNMP agent  e easy writing of instrumentation f
70. IER  OCTET STRING   the corresponding type should be st ring   Finally  if the type is of variable length  but with a fixed size restriction  e g  IpAddress   the corresponding type should  be fix_string     For example  if the SNMP table has two INDEX columns  the first one an OCTET STRING with size 2  and the second  one an OBJECT IDENTIFER  the corresponding key_t ypes parameter would be  fix_string  string      The key    type correlates to the key_types    type  If the key_types    is a single atom  the corresponding  key    is a single type as well  but if the key_types    is a tuple  key must be a tuple of the same size     In the example above  valid keys couldbe   hi    mom   and  no    thanks    whereas  hi     hi    42  and   hello    there   would be invalid     Warning     All API functions that update the index return a NewIndex term  This is for backward compatibility with a  previous implementation that used a B  tree written purely in Erlang for the index  The NewIndex return value  can now be ignored  The return value is now the unchanged table identifier for the ets table     The implementation using ets tables introduces a semantic incompatibility with older implementations  In those  older implementations  using pure Erlang terms  the index was garbage collected like any other Erlang term and  did not have to be deleted when discarded  An ets table is deleted only when the process creating it explicitly  deletes it or when the creating process terminates 
71. Id  ReasonInfo  Pdu   Which one is used depends on the  return value from the MPD process_msg function  If the MsgData is ok  the first is used  and if itis  error   Reqid  Reason  the latter is used        Pdu is an SNMP PDU record  as defined in snmp_types hr1  with the SNMP request   e ReqId is an integer   e ReasonInfo isa term       e Addr is the source address        e Port is port number of the sender     Notes    Since the Net if process is responsible for encoding and decoding of SNMP messages  it must also update the relevant  counters in the SNMP group in MIB II  It can use the functions in the module snmpm_mpd for this purpose  refer to  the Reference Manual  section snmp  module snmpm_mpd for more details      There are also some useful functions for encoding and decoding of SNMP messages in the module snmp_pdus     1 14 Audit Trail Log    The chapter Audit Trail Log describes the audit trail logging     Both the agent and the manager can be configured to log incoming and outgoing messages  It uses the Erlang standard  log mechanism disk_1log for logging  The size and location of the log files are configurable  A wrap log is used   which means that when the log has grown to a maximum size  it starts from the beginning of the log  overwriting  existing log records     The log can be either a read  write ora read_write     1 14 1 Agent Logging    For the agent  a write  means that all set requests and their responses are stored  No get requests or traps are  stored
72. Ip  Port  EngineID  Timeout   MaxMessageSize  Version  SecModel  SecName  SecLevel    gt  agents_entry       Types   UserId   term    TargetName   string    Comm   string    Ip   string     Port   integer     EngineID   string    Timeout   integer     MaxMessageSize   integer     Version   v1   v2   v3  SecModel   v1   v2c   usm  SecName   string    SecLevel   noAuthNoPriv   authNoPriv   authPriv  agents_entry     term      Create an entry for the manager agents config file  agent s conf     See Agents for more info     write_agents_config Dir  Conf    gt  ok  write_agents_config Dir  Hdr  Conf    gt  ok    Types   Dir   string    Hdr   string      Conf    _entry     Write the manager agents config to the manager agents config file   Dir is the path to the directory where to store the config file   Hdr is an optional file header  note that this text is written to the file as is      See Agents for more info     append_agents_config Dir  Conf    gt  ok  Types   Dir   string    Conf    agents_entry      Append the agents config to the current manager agents config file     Dir is the path to the directory where to store the config file     See Agents for more info     read_agents_config Dir    gt  Conf  Types     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    197    snmpm_conf       Dir   string    Conf    agents_entry      Read the current manager agents config file   Dir is the path to the directory where to store the config file     See Agents
73. MP    159    snmp_target_mib       snmp_target_mib    Erlang module    The module snmp_target_mib implements the instrumentation functions for the SNMP TARGET MIB  and  functions for configuring the database     The configuration files are described in the SNMP User s Manual     DATA TYPES    transportDomain     transportDomainUdpIpv4   transportDomainUdpIpv6  transportAddressIPv4      integer     length 4   transportAddressIPv6      integer     length 8   transportAddressMask      integer     length 0  default   6  IPv4  or 10  IPv  6   Exports    configure  ConfDir    gt  void    Types   ConfDir   string      This function is called from the supervisor at system start up     Inserts all data in the configuration files into the database and destroys all old rows with StorageType volatile   The rows created from the configuration file will have StorageType nonVolatile     All snmp counters are set to zero     If an error is found in the configuration file  it is reported using the function config_err 2 of the error report  module  and the function fails with the reason configuration_error     Con  fDir is a string which points to the directory where the configuration files are found     The configuration files read are  target_addr conf and target_params conf     reconfigure  ConfDir    gt  void    Types   ConfDir   string      Inserts all data in the configuration files into the database and destroys all old data  including the rows with StorageType  nonVolatile  The rows cr
74. Name  Info    gt  ok    error  Reason   update_agent_info UserId  TargetName  Item  Val    gt  ok    error  Reason   Types    UserId   term     TargetName   target_name      Info     item    item value        Item   item     item     atom     Val   item_value     item_value     term     Reason   term      Update agent config  The function update_agent_info 3 should be used when several values needs to be  updated atomically     See function register_agent  for more info about what kind of items are allowed     which_agents     gt  Agents  which_agents UserId    gt  Agents    Types   UserId   term    Agents    TargetName     TargetName   target_name       Get a list of all registered agents or all agents registered by a specific user     register_usm_user EngineID  UserName  Conf    gt  ok    error  Reason   Types     EngineID string      UserName   string     Conf    usm_config       usm_config      Item  Val    Item   sec_name   auth   auth_key   priv   priv_key   Val   term     Reason   term    Explicitly instruct the manager to handle this USM user  Note that there is an alternate way to do the same thing  Add  the usm user to the manager config files  see usm conf      The type of Val depends on Item     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    177    snmpm       sec_name   string    auth   usmNoAuthProtocol   usmHMACMD5AuthProtocol   usmHMACSHAAuthProtocoltimeout  auth_key    integer      length 16 if auth   usmHMACMD5AuthProtocol   
75. P    41    1 8 Agent Implementation Example       Code     module  ex1     author  dummy flop org        External exports   export   start 0  my_name 1  my_name 2  friends_table 3        Internal exports   export    init 0      define  status_col  4     define  active  1     define  notInService  2     define  notReady  3     define  createAndGo  4     define  createAndWait    define  destroy  6    starti   gt    spawn  ex1  init  Whee    Action  written  not read  Action  written  not read  Action  written  not read    oO  ae A ol     ole    Instrumentation function for variable myName   Returns   get   value  Name    set  noError       AP A W X  ae A X    a2    my_name  get    gt   exl_server    self     get_my_name    Name   wait_answer      value  Name    my_name  set  NewName    gt   exl_server    self     set_my_name  NewName     noError      Instrumentation function for table friendsTable     friends_table  get  RowIndex  Cols    gt   case get_row RowIndex  of  tok  Row    gt   get_cols Cols  Row    _   gt    noValue  noSuchInstance   end   friends_table get_next  RowIndex  Cols    gt   case get_next_row RowIndex  of  tok  Row    gt   get_next_cols  Cols  Row      gt   case get_next_row     of  tok  Row    gt     o     amp  Get next cols from first row     NewCols   add_one_to_cols Cols    get_next_cols NewCols  Row       gt    end of_table  Cols    end    ole    If RowStatus is set  then      If set to destroy  check that row does exist     If set to createAndGo  chec
76. Pv2c  the community string in the message was used for  at least  three different purposes   e     to identify the context   e to provide authentication   e to identify a set of trap targets    In SNMPv3  each of these usage areas has its own unique mechanism  A context is identified by the name of the  SNMP entity  contextEnginelIbD  and the name of the context  contextName  Each SNMPv3 message contains  values for these two parameters        There is a MIB  SNMP COMMUNITY MIB  which maps a community string to a contextEngineID and  contextName  Thus  each message  an SNMPv1  SNMPv2c or an SNMPv3 message  always uniquely identifies  a context              For an agent  the contextEnginelID identified by a received message  is always equal to the snmpEngineID  of the agent  Otherwise  the message was not intended for the agent  If the agent is configured with more than one  context  the instrumentation code must be able to figure out for which context the request was intended  There is a  function snmpa  current_context 0 provided for this purpose     By default  the agent has no knowledge of any other contexts than the default context      If it is to support more  contexts  these must be explicitly added  by using an appropriate configuration file Agent Configuration Files     1 2 6 Management of the Agent    There is a set of standard MIBs  which are used to control and configure an SNMP agent  All of these MIBs  with the  exception of the optional SNMP PROXY MIB  which is
77. RD MIB        leikr  O  67 07       a get next request with one OID    2 gt  snmp_test_mgr gn   1 3 6 1 3 7       ok    Gore EiDIUE    myName 0            A set request  now using symbolic names for convenience    3 gt  snmp_test_mgr s    myName 0    Martin        ok    Gore IIDIUIE    myName 0     Martin       Try the same get next request again   4 gt  snmp_test_mgr gn   1 3 6 1 3 7        ok      Gore IiDIUg    myName 0     Martin    SS     and we got the new value        you can event do row operations  How to add a row   5 gt  snmp_test_mgr s    fName 0    Martin      fAddress 0   home      fStatus 0  4      6  createAndGo             ok   Gore IEIDIUIE  fName  0     Martin   fAddress 0     home   fStatus 0    4  6 gt  snmp_test_mgr gn   myName 0      ok     Gore PiDIUE  fName  0     Martin   7 gt  snmp_test_mgr gn     ok   Gore PiDIUIE  fAddress 0     home   8 gt  snmp_test_mgr gn     ok   Gore EDIE  fStatus 0    1  9 gt     1 8 3 Manual Implementation    The following example shows a  manual  implementation of the EX1 MIB in Erlang  In this example  the values of  the objects are stored in an Erlang server  The server has a 2 tuple as loop data  where the first element is the value of  variable myName  and the second is a sorted list of rows in the table friendsTable  Each row is a 4 tuple     Note     There are more efficient ways to create tables manually  i e  to use the module snmp_index     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNM
78. Rights Reserved   Simple Network Management Protocol  SNMP    63    1 15 Advanced Agent Topics    The order within an request is undefined and variables are not processed in a defined order  Do not assume that the  first variable in the PDU will be processed before the second  even if the agent processes variables in this order  It  cannot even be assumed that requests belonging to different sub agents have any order     If the manager tries to set the same variable many times in the same PDU  the agent is free to improvise  There is  no definition which determines if the instrumentation will be called once or twice  If called once only  there is no  definition that determines which of the new values is going to be supplied     When the agent receives a request  it keeps the request ID for one second after the response is sent  If the agent receives  another request with the same request ID during this time  from the same IP address and UDP port  that request will  be discarded  This mechanism has nothing to do with the function snmpa  current_request_id 0     1 15 3 Sub agents and Dependencies  The toolkit supports the use of different types of sub agents  but not the construction of sub agents     Also  the toolkit does not support dependencies between sub agents  A sub agent should by definition be stand alone  and it is therefore not good design to create dependencies between them     1 15 4 Distributed Tables    A common situation in more complex systems is that the data
79. The option agent_capabilities  if present  specifies that the AGENT CAPABILITIES statement of the  MIB shall be included  with a mib entry record  in the compiled mib  The mib entry record of the agent capabilitie  will contain reference and modules part s  this info in the assocList field      The option no_defs  if present  specifies that if a managed object does not have an instrumentation function   the default instrumentation function should NOT be used  instead this is reported as an error  and the compilation  aborts     The option verbosity specifies the verbosity of the SNMP mib compiler  I e  if warning  info  log  debug and  trace messages shall be shown     Default is silence     Note that if the option warnings is true and the option verbosity is silence  warning messages will  still be shown     The option warnings specifies whether warning messages should be shown     Default is true     The option warnings_as_errors  if present  specifies whether warnings should be treated as errors     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    169    snmpc                The MIB compiler understands both SMIv1 and SMIv2 MIBs  It uses the MODULE  IDENTITY statement to determine  if the MIB is version 1 or 2     The MIB compiler can be invoked from the OS command line by using the command erlc  erlc recognizes the  extension  mib  and invokes the SNMP MIB compiler for files with that extension  The options db  group_check   deprecated  descr
80. Type volatile   The rows created from the configuration file will have StorageType nonVolatile     All snmp counters are set to zero     If an error is found in the configuration file  it is reported using the function config_err 2 of the error report  module  and the function fails with the reason configuration_error     ConfDir is a string which points to the directory where the configuration files are found     The configuration file read is  vacm  conf     reconfigure  ConfDir    gt  void    Types   ConfDir   string    Inserts all data in the configuration files into the database and destroys all old data  including the rows with StorageType    nonVolatile  The rows created from the configuration file will have StorageType nonVolatile     Thus  the data in the SNMP VIEW BASED ACM MIB  after this function has been called  is the data from the  configuration files     All snmp counters are set to zero     If an error is found in the configuration file  it is reported using the function config_err 2 of the error report module   and the function fails with the reason configuration_error     ConfDir is a string which points to the directory where the configuration files are found     The configuration file read is  vacm  conf     add_sec2group  SecModel  SecName  GroupName    gt  Ret  Types    SecModel   v1   v2c   usm   SecName   string     GroupName   string     Ret    ok  Key     error  Reason    Key   term      Ericsson AB  All Rights Reserved   Simple Network Management P
81. _entry     users_entry UserId  UserMod  UserData    gt  users_entry     Types    UserId   term     UserMod   atom     UserData   term     standard_entry     term      Create an entry for the manager users config file  users  conf     users_entry  UserId  translates to the following call  users_entry  Userld   snmpm_user_default      users_entry UserId  UserMod  translates to the following call  users_entry  UserId  UserMod   undefined      See Users for more info     write_users_config Dir  Conf    gt  ok    write_users_config Dir  Hdr  Conf    gt  ok    Types   Dir   string    Hdr   string    Conf    users_entry        Write the manager users config to the manager users config file   Dir is the path to the directory where to store the config file   Hdr is an optional file header  note that this text is written to the file as is      See Users for more info     append_users_config Dir  Conf    gt  ok  Types   Dir   string    Conf    users_entry      Append the users config to the current manager users config file     Dir is the path to the directory where to store the config file     See Users for more info     read_users_config Dir    gt  Conf  Types    Dir   string     Conf    users_entry      Read the current manager users config file     Dir is the path to the directory where to store the config file     196   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpm_conf       See Users for more info     agents_entry UserId  TargetName  Comm  
82. _log_open_error     file_open_error     term    disk_log_open_error      LogName  term        file_open_error      OutFile  term        Converts an Audit Trail Log to a readable format and prints it on stdio  LogName defaults to  snmpm_log   LogFile    defaults to  snmpm log   See snmp log_to_io for more info     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    191    snmpm       change_log_size NewSize    gt  ok    error  Reason   Types    NewSize    MaxBytes  MaxFiles    MaxBytes   integer       MaxFiles integer       Reason   term      Changes the log size of the Audit Trail Log  The application must be configured to use the audit trail log function   Please refer to disk_log 3  in Kernel Reference Manual for a description of how to change the log size     The change is permanent  as long as the log is not deleted  That means  the log size is remembered across reboots     set_log_type NewType    gt   ok  OldType     error  Reason   Types    NewType   OldType   atl_type     Reason   term      Changes the run time Audit Trail log type     Note that this has no effect on the application configuration as defined by configuration files  so a node restart will  revert the config to whatever is in those files     This function is primarily useful in testing debugging scenarios     load_mib Mib    gt  ok    error  Reason   Types    Mib   MibName   MibName   string     Reason   term      Load a Mib into the manager  The MibName is the name of the Mib  
83. _open_error      LogName  term       file_open_error      OutFile  term        Converts an Audit Trail Log to a readable text file  Out File defaults to    snmpa_log txt   LogName defaults to   snmpa_log   LogFile defaults to  snmpa log   See snmp log_to_txt for more info     log_to_io LogDir    gt  ok    error  Reason   log_to_io LogDir  Mibs    gt  ok    error  Reason   log_to_io LogDir  Mibs  LogName    gt  ok    error  Reason   log_to_io LogDir  Mibs  LogName  LogFile    gt  ok    error  Reason   log_to_io LogDir  Mibs  LogName  LogFile  Start    gt  ok    error  Reason   log_to_io LogDir  Mibs  LogName  LogFile  Start  Stop    gt  ok    error   Reason   Types   LogDir   string     Mibs    MibName   MibName  LogName    string       string       100   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpa    LogFile   string     Start   Stop   null   datetime      local_time datetime        universal_time  datetime        Reason   disk_log_open_error     file_open_error     term    disk_log_open_error      LogName  term       file_open_error      OutFile  term        Converts an Audit Trail Log to a readable format and prints it on stdio  LogName defaults to  snmpa_log   LogFile  defaults to  snmpa log   See snmp log_to_io for more info     change_log_size NewSize    gt  ok    error  Reason   Types    NewSize    MaxBytes  MaxFiles    MaxBytes   integer       MaxFiles integer       Reason   term      Changes the log size of the Audit Trail Log
84. _set_ok  RowIndex   Cols  NameDb  of           noError   0y   gt   myApplication is_set_ok RowIndex  Cols    Erre    gt   Err  end     myTable_func set  RowIndex  Cols  NameDb    gt   case snmp_generic table_func set  RowIndex  Cols   NameDb      noError  0    gt       Now the row is updated  tell the application  myApplication update  RowIndex  Cols      Erp   gt   Err  end   myTable_func Op  RowIndex  Cols  NameDb    gt    pass unchanged    snmp_generic table_func Op  RowIndex  Cols  NameDb       The   funcs file would look like      myTable   myModule  myTable_func    myTable  mnesia         150   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmp_index    snmp_ index    Erlang module    The module snmp_index implements an Abstract Data Type  ADT  for an SNMP index structure for SNMP tables   It is implemented as an ets table of the ordered_set data type  which means that all operations are O log n   In the  table  the key is an ASN 1 OBJECT IDENTIFIER     This index is used to separate the implementation of the SNMP ordering from the actual implementation of the table   The SNMP ordering  that is implementation of GET NEXT  is implemented in this module     For example  suppose there is an SNMP table  which is best implemented in Erlang as one process per SNMP table  row  Suppose further that the INDEX in the SNMP table is an OCTET STRING  The index structure would be created  as follows     snmp_index new  string   For each new process w
85. a management protocol set  operation which sets the desired instance of the status    column to    createAndWait   If the agent is unwilling to  process a request of this sort  the set operation fails with  an error of  wrongValue    As a consequence  such an agent    must be prepared to accept a single management protocol set  operation  i e   interaction 2a above  containing all of the  columns indicated by its column requirements   Otherwise   the conceptual row is created  a    noError  response is  returned  and the status column is immediately set to either     notInService  or    notReady   depending on whether it has  sufficient information to make the conceptual row available  for use by the managed device  If there is sufficient  information available  then the status column is set to     notInService   otherwise  if there is insufficient  information  then the status column is set to    notReady    Regardless  we proceed to interaction 3        Interaction 3  Initializing non defaulted Objects    The management station must now determine the column    requirements  It issues a management protocol get operation  to examine all columns in the created conceptual row  In  the response  for each column  there are three possible  outcomes          a value is returned  indicating that the agent  implements the object type associated with this column  and had sufficient information to provide a value  For  those columns to which the agent provides read create  access  and 
86. act match is used for this sub   identifier  Zeros are wild cards which match any sub identifier  If the mask is shorter than the sub tree  the tail is  regarded as all ones  nu11 is shorthand for a mask with all ones     1 6 6 Security data for USM    The information about Security data for USM should be stored in a file called usm  conf  which must be present if  the agent is configured for SNMPv3     The corresponding table is usmUserTab1le in the SNMP USER BASED SM MIB   Each entry is a term      EngineID  UserName  SecName  Clone  AuthP  AuthKeyC  OwnAuthKeyC  PrivP   PrivKeyC  OwnPrivKeyC  Public  AuthKey  PrivKey            e EnginelID isa string        e UserName is a string    e SecName is a string    e Clone is zeroDotZero ora list of integers       AuthP isa usmNoAuthProtocol  usmHMACMD5AuthProtocol  or usmHMACSHAAuthProtocol   e AuthKeyC isa string    e OwnAuthKeyC is a string    e PrivP isausmNoPrivProtocol  usmDESPrivProtocol or usmAesCfb128Protocol    e PrivKeyC isa string    e OwnPrivKeyC is a string     e Public isa string     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    35    1 6 Definition of Agent Configuration Files       e  lt AuthKey is a list  of integer   This is the User s secret localized authentication key  It is not visible in  the MIB  The length of this key needs to be 16 if usmHMACMD5AuthProtocol is used  and 20 if  usmHMACSHAAuthProtocol is used     e  PrivKey isa list  of integer   This is the User s secret l
87. ailure  If that node goes down  the agent will not work     One solution to this problem is to make the snmp application a distributed Erlang application  and that means  the  agent may be configured to run on one of several nodes  If the node where it runs goes down  another node restarts the  agent  This is called failover  When the node starts again  it may takeover the application  This solution to the problem  adds another problem  Generally  the new node has another IP address than the first one  which may cause problems  in the communication between the SNMP managers and the agent     If the snmp agent is configured as a distributed Erlang application  it will during takeover try to load the same MIBs  that were loaded at the old node  It uses the same filenames as the old node  If the MIBs are not located in the same  paths at the different nodes  the MIBs must be loaded explicitly after takeover     1 15 6 Using Mnesia Tables as SNMP Tables    The Mnesia DBMS can be used for storing data of SNMP tables  This means that an SNMP table can be implemented  as a Mnesia table  and that a Mnesia table can be made visible via SNMP  This mapping is largely automated     There are three main reasons for using this mapping     e We get all features of Mnesia  such as fault tolerance  persistent data storage  replication  and so on   e Much of the work involved is automated  This includes get  next processing and RowStatus handling     e The table may be used as an ordinary Mnes
88. al gt     The auto save interval  The table is flushed to disk whenever not accessed for this amount of time     Default is 5000     agent_net_if      agent_net_if_opt     lt optional gt   agent_net_if_option      module  agent_net_if_module        verbosity   verbosity      f options  agent_net_if_options         Defines options specific for the SNMP agent network interface entity   For defaults see the options in agent_net_if_opt      agent_net_if_module     atom    lt optional gt     Module which handles the network interface part for the SNMP agent  Must implement the  snmpa_network_interface behaviour     Default is snmpa_net_if     agent_net_if_options      agent_net_if_option     lt optional gt   agent_net_if_option      bind_to  bind_to       sndbuf  sndbuf       recbuf   recbuf       no_reuse  no_reuse       req_limit  req_limit       filter     agent_net_if_filter_options        These options are actually specific to the used module  The ones shown here are applicable to the default  agent_net_if_module       For defaults see the options in agent_net_if_option     req_limit     integer     infinity  lt optional gt   Max number of simultaneous requests handled by the agent   Default is infinity   agent_net_if_filter_options      agent_net_if_filter_option     lt optional gt     agent_net_if_filter_option      module  agent_net_if_filter_module           These options are actually specific to the used module  The ones shown here are applicable to the default  agent_ne
89. alue of SnmpEngineID  see SNMP FRAMEWORK MIB         generate_response_msg Vsn  RePdu  Type  ACMData  Log    gt   ok  Packet      discarded  Reason     generate_response_msg Vsn  RePdu  Type  ACMData  LocalEngineID  Log    gt   ok   Packet     discarded  Reason     Types   Vsn    version 1     version 2     version 3   RePdu    pdu  Type   atom    ACMData   acm_data    LocalEngineID   string     Packet   binary       Generates a possibly encrypted response packet to be sent to the network  Type is the  pdu type of the original  request     Note     Note that the use of the LocalEngineID argument is only intended for special cases  if the agent is to  emulate     multiple EngineIDs  By default  the agent uses the value of SnmpEngineID  see SNMP FRAMEWORK MIB      generate_msg Vsn  NoteStore  Pdu  MsgData  To    gt   ok  PacketsAndAddresses      discarded  Reason    generate_msg Vsn  NoteStore  Pdu  MsgData  LocalEngineID  To    gt   ok   PacketsAndAddresses     discarded  Reason     Types   Vsn    version 1     version 2     version 3   NoteStore   pid    Pdu    pdu    MsgData   msg_data     LocalEngineID   string      To    dest_addrs       PacketsAndAddresses     TDomain  TAddress  Packet    TDomain   snmpUDPDomain   TAddress    Ip  Udp    Ip    integer    integer    integer    integer       Udp   integer      Packet   binary       Generates a possibly encrypted request packet to be sent to the network     132   Ericsson AB  All Rights Reserved   Simple Network Management Pr
90. ariable   bmk s agent   Engine ID  snmpEngineID standard variable   bmk s engine   Max message size   484   The UDP port the agent listens to   standard 161   4000   IP address for the agent  only used as id  when sending traps   127 0 0 1   IP address for the manager  only this manager  will have access to the agent  traps are sent  fo thie one   127 0 0  1   To what UDP port at the manager should traps  be sent  standard 162    5000   Do you want a none  minimum  or semi secure configuration   Note that if you chose vl or v2  you won t get any security for these  requests  none  minimum  semi_des  semi_aes   minimum   ing sure crypto server is started     Give a password of at least length 8  It is used to generate  private keys for the configuration  kalle anka  Current configuration files will now be overwritten  Ok  y n    y     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    29    1 5 Running the application       Info  1  SecurityName  initial  has noAuthNoPriv read access  and authenticated write access to the  restricted   subtree   2  SecurityName  all rights  has noAuthNoPriv read write  access to the  internet  subtree   3  Standard traps are sent to the manager   4  Community  public  is mapped to security name  initial    5  Community  all rights  is mapped to security name  all rights    The following agent files were written  agent conf  community conf   standard conf  target_addr conf  target_params conf   MOtlEy coni  VacM conk
91. ason   term         Asynchronous get     next request     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    183    snmpm       The reply will be delivered to the user through a call to the snmpm_user callback function handle_pdu   The send option timeout specifies for how long the request is valid  after which the manager is free to delete it      The send option ext ra specifies an opaque data structure passed on to the net if process  The net if process included  in this application makes  with one exception  no use of this info  so the only use for it in such a option  when using  the built in net if  would be tracing  The one usage exception is  Any tuple with snmpm_ext ra_info_tag as its  first element is reserved for internal use        Some of the send options  community  sec_model  sec_name  sec_level and max_message_size  are  override options  That is  for this request  they override any configuration done when the agent was registered        async_get_next  UserId  TargetName  Oids    gt   ok  ReqId     error  Reason     async_get_next  UserId  TargetName  ContextName  Oids    gt   ok  ReqId      error  Reason     async_get_next  UserId  TargetName  Oids  Expire    gt   ok  ReqId     error   Reason     async_get_next  UserId  TargetName  ContextName  Oids  Expire    gt   ok  ReqId      error  Reason     async_get_next  UserId  TargetName  ContextName  Oids  Expire  ExtraInfo    gt    ok  ReqId     error  Reason     Types   UserId   term
92. assuming GC is performed   Each  entry in the cache is  touched  whenever it is accessed     The age is defined in milliseconds   Default is 10 timutes   mibs_cache_gclimit     integer    gt  0   infinity  lt optional gt   When performing a GC  this is the max number of cache entries that will be deleted from the cache     The reason for having this limit is that if the cache is large  the GC can potentially take a long time  during which  the agent is locked     Default is 100   error_report_mod     atom    lt optional gt     Defines an error report module  implementing the snmpa_error_report behaviour  Two modules are provided  with the toolkit  snmpa_error_logger and snmpa_error_io     Default is snmpa_error_logger   symbolic_store      symbolic_store_opt      symbolic_store_opt      verbosity  verbosity       Defines options specific for the SNMP agent symbolic store   For defaults see the options in symbolic_store_opt      target_cache      target_cache_opt       target_cache_opt      verbosity  verbosity       Defines options specific for the SNMP agent target cache     For defaults see the options in target_cache_opt        Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    89    snmp       agent_config      agent_config_opt     lt mandatory gt     agent_config_opt      dir  agent_config_dir       force_load  force_load         verbosity  verbosity         Defines specific config related options for the SNMP agent    For defaults see the opt
93. at happens in case of a restart of the agent  The implementation supports the values volatile  and nonVolatile  When the tables are initially filled with data from the configuration files  these rows will  automatically have storage type nonVolatile  Should the agent restart  all nonVolatile rows survive the restart   while the volatile rows are lost  The configuration files are not read at restart by default     This MIB is not loaded by default   VACM is described in detail in RFC2275  Here is only a brief description given     The basic concept is that of a MIB view  An MIB view is a subset of all the objects implemented by an agent  A  manager has access to a certain MIB view  depending on which security parameters are used  in which context the  request is made  and which type of request is made     The following picture gives an overview of the mechanism to select an MIB view     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    11    1 2 Agent Functional Description          secuntyM odel   who groupName  secuntyName   where Ss comtexrName    view Name  secuntyM odel    secuntyLevel       why m view Type  read wnitefotify        Figure 2 4  Overview of the mechanism of MIB selection    vacmContextTable   The vacmContextTable is a read only table that lists all available contexts   vacmSecurityToGroupTable   The vacmSecurityToGroupTable maps a securityModel anda securityName toa groupName     vacmAccessTable       The vacmAccessTable maps th
94. at process should die  all agents  registered by that user process will be unregistered  All outstanding requests will be canceled     Module is the callback module  snampm_user behaviour  which will be called whenever something happens  detected  agent  incoming reply or incoming trap notification   Note that this could have already been done as a consequence  of the node config   see users conf      The argument DefaultAgentConfig is used as default values when this user register agents     The type of Val depends on Item     community   string     timeout   integer     snmp_timer    max_message_size   integer     version   vl   v2   v3   sec_model   any   vl   v2c   usm  sec_name   string      sec_level   noAuthNoPriv   authNoPriv   authPriv    unregister_user Id    gt  ok    error  Reason   Types   Id   term      Unregister the user     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    175    snmpm       which _users     gt  Users  Types   Users    UserId   UserId   term      Get a list of the identities of all registered users     register_agent  UserId  TargetName  Config    gt  ok    error  Reason   Types    UserId   term     Addr   ip_address      TargetName   target_name     Config    agent_config       agent_config      Item  Val    Item   engine_id   address   port   community   timeout   max_message_size     version   sec_model   sec_name   sec_level   tdomain   Val   term     Reason   term      Explicitly instruct the manager to handl
95. ateAndTime is a correct DateAndTime value  as specified in RFC2579  This function can be used in  instrumentation functions to validate a DateAndTime value     The validation fun  Validate  allows for a more  flexible  validation of the DateAndTime argument  Whenever  the data is found to not follow RFC2579  the fun is called to allow a more  lax  validation  The input to the validation  fun looks like this        Kind Data   year  Yearl  Year2   month Month   day Day   hour Hour   minute Minute   seconds Seconds  deci_seconds DeciSeconds   ALEE  Sign  Hour  Minute   valid_date  Year  Month  Day     passwd2localized_key Alg  Passwd  EngineID    gt  Key  Types    Alg   algorithm      algorithm     md5   sha   Passwd   string     EngineID   string     Key   list       Generates a key that can be used as an authentication or privacy key using MD5 och SHA  The key is localized for  EngineID     octet_string_to_bits S    gt  Val  Types   Val   bits     Utility function for converting a value of type OCTET STRING to BITS        80   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmp       bits_to_octet_string B    gt  Val  Types   Val   octet_string         Utility function for converting a value of type BITS to OCTET STRING     read _mib FileName    gt   ok  mib       error  Reason   Types    FileName   string     mib      mib     Reason   term      Read a compiled mib     log_to_txt LogDir  Mibs  OutFile  LogName  LogFile    gt  ok    error  Reas
96. ations  which has led to numerous inconsistencies  The convention in SNMPv2 2 is flexible  and powerful and has been tested successfully  If the table is read only  no RowStatus column should be used     1 10 4 Atomic Set    In SNMP  the set operation is atomic  Either all variables which are specified in a set operation are changed  or  none are changed  Therefore  the set operation is divided into two phases  In the first phase  the new value of each  variable is checked against the definition of the variable in the MIB  The following definitions are checked    e the type   e the length   e the range   e the variable is writable and within the MIB view     At the end of phase one  the user defined is_set_ok functions are called for each scalar variable  and for each  group of table operations     If no error occurs  the second phase is performed  This phase calls the user defined set function for all variables     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    53    1 11 Definition of Instrumentation Functions       If an error occurs  either in the is_set_ok phase  or in the set phase  all functions which were called with  is_set_ok but not set  are called with undo     There are limitations with this transaction mechanism  If complex dependencies exist between variables  for example  between month and day  another mechanism is needed  Setting the date to  Feb 31  can be avoided by a somewhat  more generic transaction mechanism  You can cont
97. ations are sent in this case     For a given notification  the variables  which are referred to in the notification specification  must be implemented by  the agent that has the MIB loaded  or by some parent to this agent  If not  the application must provide values for the  unknown variables  The application must also provide values for all elements in tables     1 2 8 Discovery    The sender is authoritative for messages containing payload which does not expect a response  for example SNMPv2   Trap  Response or Report PDU      The receiver is authoritative for messages containing payload which expects a response  for example Get  GetNext   Get Bulk  Set or Inform PDU      The agent can both perform and respond to discovery     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    15    1 3 Manager Functional Description    The agent responds to discovery autonomously  without interaction by the user        Initiating discovery towards a manager is done by calling the discovery function  The EngineTd field of the target   manager  entry in the target_addr conf file has to have the value discovery  Note that if the manager does not  respond  the Timeout and Ret ryCount fields decide how long the function will hang before it returns     Discovery can only be performed towards one manager at a time     1 3 Manager Functional Description    1 3 1 Features    The manager provided with the tool is a lightweight manager that basically provides a means to co
98. atom    Id   filter_id    filter_id     term    Mod   atom      Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    103    snmpa       Data   term     Where   filter_position      Reason   term     filter_position     first   last    insert_before  filter_id        insert_after  filter_id        Registers a notification filter     Mod is a module implementing the snmpa_notification_filter behaviour        Data will be passed on to the filter when calling the functions of the behaviour     unregister_notification_filter Id    gt  ok    error  Reason   unregister_notification_filter Agent  Id    gt  ok    error  Reason   Types    Agent   pid     atom     Id   filter_id     filter_id     term      Unregister a notification filter     which notification _filter     gt  Filters  which_notification_filter Agent    gt  Filters  Types    Agent   pid     atom     Filters    filter _id      filter_id     term      List all notification filters in an agent     set_request_limit  NewLimit    gt   ok  OldLimit     error  Reason   set_request_limit  Agent  NewLimit    gt   ok  OldLimit     error  Reason   Types     NewLimit   OldLimit   infinity   integer    gt   0  Agent   pid     atom    Reason   term      Changes the request limit     Note that this has no effect on the application configuration as defined by configuration files  so a node restart will  revert the config to whatever is in those files     This function is primarily useful in load regulation sce
99. ber of reasons  i e  encoding error  R is the actual reason in this case        Ext ralInfo is an opaque data structure passed on to the net if process  The net if process included in this application  makes  with one exception  no use of this info  so the only use for it in such a configuration  when using the built in  net if  would be tracing  The one usage exception is  Any tuple with snmpm_ext ra_info_tag as its first element  is reserved for internal use        For SnmpInfo  see the user callback function handle_report     async_get2 UserId  TargetName  Oids    gt   ok  ReqId     error  Reason     async_get2 UserId  TargetName  Oids  SendOpts    gt   ok  ReqId     error   Reason     Types   UserId   term    TargetName   target_name     Oids    oid       180   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpm       SendOpts   send_opts    send_opts      send_opt        send_opt      context  string       timeout  pos_integer       extra   term       community  community       sec_model  sec_model       sec_name   string       sec_level  sec_level       max_message_size  pos_integer         ReqId   term     Reason   term    Asynchronous get request   The reply  if it arrives  will be delivered to the user through a call to the snmpm_user callback function handle_pdu   The send option timeout specifies for how long the request is valid  after which the manager is free to delete it      The send option ext ra specifies an opaque data stru
100. buted Erlang we use ordinary message passing     e Most likely  some type of table coordinator already exists  This process should take care of the instrumentation  for the table     e The method used to present a distributed table is strongly application dependent  The use of different masking  techniques is only valid for a small subset of problems and registering every row in a distributed table makes it  non distributed     1 15 5 Fault Tolerance    The SNMP agent toolkit gets input from three different sources     e UDP packets from the network  e return values from the user defined instrumentation functions    e return values from the MIB     The agent is highly fault tolerant  If the manager gets an unexpected response from the agent  it is possible that some  instrumentation function has returned an erroneous value  The agent will not crash even if the instrumentation does     64   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     1 15 Advanced Agent Topics    It should be noted that if an instrumentation function enters an infinite loop  the agent will also be blocked forever   The supervisor  or the application  specifies how to restart the agent     Using the SNMP Agent in a Distributed Environment    The normal way to use the agent in a distributed environment is to use one master agent located at one node  and zero  or more sub agents located on other nodes  However  this configuration makes the master agent node a single point  of f
101. c  AuthKey  PrivKey    gt  Ret    Types   EngineID   string    Name   string    SecName   string    Clone   zeroDotZero    integer         Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    163    snmp_user_based_sm_mib       AuthP   usmNoAuthProtocol   usmHMACMD5AuthProtocol    usmHMACSHAAuthProtocol    AuthKeyC   string     OwnAuthKeyC   string     PrivP   usmNoPrivProtocol   usmDESPrivProtocol  PrivKeyC   string     OwnPrivKeyC   string     Public   string     AuthKey   string     PrivKey   string      Ret    ok  Key     error  Reason   Key   term     Reason   term      Adds a USM security data  user  to the agent config  Equivalent to one line in the usm  conf file     delete_user  Key    gt  Ret    Types   Key   term    Ret   ok    error  Reason     Reason   term      Delete a USM security data  user  from the agent config     164   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmp_view_based_acm_mib    snmp_view_based_acm_mib    Erlang module    The module snmp_view_based_acm_mib implements the instrumentation functions for the SNMP VIEW   BASED ACM MIB  and functions for configuring the database        The configuration files are described in the SNMP User s Manual     Exports    configure  ConfDir    gt  void    Types   ConfDir   string      This function is called from the supervisor at system start up     Inserts all data in the configuration files into the database and destroys all old rows with Storage
102. ced by the compiler is read by the agent at MIB load time  see the figure Starting the Agent    The instrumentation is ordinary Erlang code which is loaded explicitly or automatically the first time it is called     6   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     1 2 Agent Functional Description       Instrumentation    sysCFunci get    lt code gt      Binary sysCFunc  set     Representation  lt code gt         Figure 2 2  Starting the Agent    The SNMP agent system consists of one Master Agent and optional sub agents  The Master Agent can be seen as a  special kind of sub agent  It implements the core agent functionality  UDP packet processing  type checking  access  control  trap distribution  and so on  From a user perspective  it is used as an ordinary sub agent     Sub agents are only needed if your application requires special support for distribution from the SNMP toolkit  A  sub agent can also be used if the application requires a more complex set transaction scheme than is found in the  master agent     The following illustration shows how a system can look in runtime        Standard  MIB    Master  Agent    Tee         Manager UD        Network  Figure 2 3  Architecture    A typical operation could include the following steps     e The Manager sends a request to the Agent   e The Master Agent decodes the incoming UDP packet     e The Master Agent determines which items in the request that should be processed here and which items s
103. cess  which will be in the MIB  The functions could be specified in a text file as follows         ipAdr   my_module  ip_access           Or using the oid syntax for  name      1 1 7    my_module  name_access           The Ext raArgument parameter is the empty list  For example  when the agent receives a get request for the ipAdr  variable  a call will be made to ip_access  get   The value returned by this function is the answer to the get     request        If ip_access and name_access are implemented similarly  we could write a generic_access function using  the ListOfExtraArguments         ipAdr   my_module  generic_access    IPADR         The mnemonic  name  is more convenient than 1 1 7   name   my_module  generic_access    NAME         When the agent receives the same get request as above  a call will be made to generic_access  get   IPADR       Yet another possibility  closer to the hardware  could be     52   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     1 10 Instrumentation Functions     ipAdr   my_module  generic_access   16 2543       name   my_module  generic_access   16 A2B3        1 10 3 Default Instrumentation    When the MIB definition work is finished  there are two major issues left     e Implementing the MIB    e Implementing a Manager Application     Implementing an MIB can be a tedious task  Most probably  there is a need to test the agent before all tables and  variables are implemented  In this case  the default instrum
104. col  SNMP    155    snmp_pdus    snmp_pdus    Erlang module    RFC1157  RFC1905 and or RFC2272 should be studied carefully before using this module  snmp_pdus     The module snmp_pdus contains functions for encoding and decoding of SNMP protocol data units  PDUs   In short   this module converts a list of bytes to Erlang record representations and vice versa  The record definitions can be found  in the file snmp include snmp_types hrl1  If snmpv3 is used  the module that includes snmp_types hrl  must define the constant SNMP_USE_V3 before the header file is included  Example         define  SNMP_USE_V3  true     include_lib  snmp include snmp_types hrl       Encoding and decoding must be done explicitly when writing your own Net if process     Exports    dec_message  byte       gt  Message  Types   Message    message  Decodes a list of bytes into an SNMP Message  Note  if there is a v3 message  the msgSecurityParameters  are not decoded  They must be explicitly decoded by a call to a security model specific decoding function     e g  dec_usm_security_parameters 1  Also note  if the scopedPDU is encrypted  the OCTET STRING  encoded encryptedPDU will be present in the data field     dec_message_only  byte       gt  Message  Types   Message    message    Decodes a list of bytes into an SNMP Message  but does not decode the data part of the Message  That means  data is  still a list of bytes  normally an encoded PDU  v1 and V2  or an encoded and possibly encrypted scopedPDU  v3  
105. configuration files used by the agent  refer to the chapter Definition of Agent  Configuration Files for more information      e the database directory stores the internal database files   The following directory must exist in the system to run the manager     e the configuration directory stores all configuration files used by the manager  refer to the chapter Definition of  Manager Configuration Files for more information      e the database directory stores the internal database files   The agent and manager uses  application  configuration parameters to find out where these directories are located     The parameters should be defined in an Erlang system configuration file  The following configuration parameters are  defined for the SNMP application              agent_options      agent_option      agent_option      restart_type  restart_type       agent_type  agent_type       agent_verbosity  verbosity      versions  versions       discovery  agent_discovery       gb_max_vbs  gb_max_vbs       Petociry  petoriry    3  multi_threaded  multi_threaded      sl omleliian  lisy_telalie ON  db_init_error   db_init_error     local db  local db y3   net_if  agent_net_if     mibs  mibs       mib_storage  mib_storage      mib_server  mib_server      quveliiie jereulll ike  aude jee il iherey         error_report_mod  error_report_mod      note_store  note_store      symbolic_store  symbolic_store      target_cache  target_cache       Concio agent_config     manager_options      manag
106. cture  See RFC  2271 2571 for details     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    33    1 6 Definition of Agent Configuration Files       1 6 2 Contexts    The context information should be stored in a file called context   conf  The default context    need not be present     Each row defines a context in the agent  This information is used in the table vacmContext Table in the SNMP   VIEW BASED ACM MIB     Each entry is a term   ContextName     e ContextName is a string     1 6 3 System Information  The system information should be stored in a file called standard conf   Each entry is a tuple of size two      SystemVariable  Value         e  SystemVariable is one of the variables in the system group  or snmpEnableAuthentTraps     e Value is the value for the variable     The following example shows a valid standard  conf file      sysDescr   Erlang SNMP agent       Syellojecicwel  lpr Sil      sysContact    mbj eklas   erlang ericsson se      sysName   test       sysServices  72      snmpEnableAuthenTraps  enabled      A value must be provided for all variables  which lack default values in the MIB     1 6 4 Communities    The community information should be stored in a file called community conf  It must be present if the agent is  configured for SNMPv1 or SNMPv2c     An SNMP community is a relationship between an SNMP agent and a set of SNMP managers that defines  authentication  access control and proxy characteristics     The corres
107. cture passed on to the net if process  The net if process included  in this application makes  with one exception  no use of this info  so the only use for it in such a option  when using  the built in net if  would be tracing  The one usage exception is  Any tuple with snmpm_ext ra_info_tag as its  first element is reserved for internal use        Some of the send options  community  sec_model  sec_name  sec_level and max_message_size  are  override options  That is  for this request  they override any configuration done when the agent was registered        async_get UserId  TargetName  Oids    gt   ok  ReqId     error  Reason     async_get UserId  TargetName  ContextName  Oids    gt   ok  ReqId     error   Reason     async_get UserId  TargetName  Oids  Expire    gt   ok  ReqId     error  Reason     async_get UserId  TargetName  ContextName  Oids  Expire    gt   ok  ReqId      error  Reason     async_get UserId  TargetName  ContextName  Oids  Expire  ExtraInfo    gt   ok   ReqiId     error  Reason     Types   UserId   term    TargetName   target_name     ContextName   string    Oids    oid     Expire   integer     ExtraInfo   term    ReqiId   term    Reason   term      Asynchronous get request     The reply  if it arrives  will be delivered to the user through a call to the snmpm_user callback function handle_pdu        The Expire time indicates for how long the request is valid  after which the manager is free to delete it         Ext ralInfo is an opaque data structure pas
108. d   Simple Network Management Protocol  SNMP    143    snmp_community_mib    TransportTag   string    Ret  Key     ok  Key     error  Reason     term     Reason   term      Adds a community to the agent config  Equivalent to one line in the community conf file     With the EngineId argument it is possible to override the configured engine id  SNMP FRAMEWORK MIB         delete_community  Key    gt  Ret    Types   Key   term    Ret   ok    error  Reason     Reason   term      Delete a community from the agent config     144   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmp_framework_mib    snmp_framework_mib    Erlang module    The module snmp_framework_mib implements instrumentation functions for the SNMP FRAMEWORK MIB   and functions for initializing and configuring the database     The configuration files are described in the SNMP User s Manual     Exports    configure  ConfDir    gt  void    Types   ConfDir   string    This function is called from the supervisor at system start up   Inserts all data in the configuration files into the database and destroys all old data   Thus  the data in the SNMP FRAMEWORK MIB  after this function has been called  is from the configuration files   All snmp counters are set to zero     If an error is found in the configuration file  it is reported using the function config_err 2 of the error report  module  and the function fails with reason configuration_error     ConfDir is a string which points to the
109. defined  the function shown is exemplified with            The Operation can be new  delete  get  next  is_set_ok  undo or set     In case of an error  all instrumentation functions may return either an SNMPv1 or an SNMPvV2 error code  If it returns  an SNMPv2 code  it is converted into an SNMPv1 code before it is sent to a SNMPv1 manager  It is recommended  to use the SNMPv2 error codes for all instrumentation functions  as these provide more details  See Appendix A for  a description of error code conversions     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    55    1 11 Definition of Instrumentation Functions    f new    ExtraArgs         The function f  new    ExtraArgs   is called for each object in an MIB when the MIB is loaded into the agent   This makes it possible to perform the necessary initialization     This function is optional  The return value is discarded     f delete    ExtraArgs      The function f  delete    ExtraArgs   is called for each object in an MIB when the MIB is unloaded from  the agent  This makes it possible to perform any necessary clean up        This function is optional  The return value is discarded     f get  Rowlndex  Cols    ExtraArgs         The function f  get  RowIndex  Cols    ExtraArgs   is called when a get request refers to a table   This function is mandatory     Arguments    e RowIndex isa list of integers which define the key values for the row  The RowIndex is the list  representation  list of in
110. dit Trail Log is managed by the network interface process  So  it is this process that has to retrieve the actual  log type     set_log_type Pid  NewType    gt   ok  OldType     error  Reason   Types    Pid   pid     NewType   OldType   atl_type     Reason   term      The Audit Trail Log is managed by the network interface process  So  it is this process that has to do the actual changing  of the type     See set_log_type for more info     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    135    snmpa_network_interface_filter    snmpa_network_interface_filter    Erlang module    This module defines the behaviour of the agent network interface filter  A  snmpa_network_interface_filter compliant module must export the following functions    e accept_recv 2   e accept_send 2   e accept recv_pdu 3   e accept send_pdu 2    The semantics of them and their exact signatures are explained below     The purpose of the network interface filter is to allow for filtering of messages  accept or reject  receive and send   This is done on two levels     e The first level is at the UDP entry   exit point  i e  immediately after the receipt of the message  before any message  processing is done  accept_recv  and immediately before sending the message  after all message processing is  done  accept_send     e The second level is at the MPD entry   exit point  i e  immediately after the basic message processing   accept_recv_pdu    immediately before the basic message
111. does not exist  you must return the next accessible element  or  endOfTable      f is_set_ok  Rowlndex  Cols    ExtraArgs         The function f  is_set_ok  RowIndex  Cols    ExtraArgs   is called in phase one of the set request  processing so that new values can be checked for inconsistencies     If the function is called  it will be called again with undo  or with set as first argument   This function is optional     Arguments   e RowIndex is a list of integers which define the key values for the row  The RowIndex is the list  representation  list of integers  which follow the Cols integer in the OBJECT IDENTIFIER    e Colsisalistof  Column  NewValue   where Column is an integer  and NewValue is guaranteed to  be of the correct type  length and within ranges  as specified in the MIB  If the object is an enumerated integer  or of type BITS  the integer value is used  The list is sorted by Column  increasing  and each Column is  guaranteed to be a valid column number     Valid Return Values        noError  0                  Exrror  Column   where Error is the same as for is_set_ok for variables  and Column denotes the  faulty column  Column must be one of the columns in the Cols list     f undo  Rowlndex  Cols    ExtraArgs         If an error occurs  The function f  undo  RowIndex  Cols    ExtraArgs   iscalled after the is_set_ok  function  If set is called for this object  undo is not called     This function is optional     Arguments   e RowIndex is a list of integers whic
112. dress     Port   integer     Instruct the network interface process to send the response  acknowledgment  to an inform request     Ref is something that can be used to identify the inform request  e g  request id of the inform request     Addr and Port identifies the agent  from which the inform request originated     note _store Pid  NoteStore    gt  void    Types    Pid   pid     NoteStore   pid      Change the pid of the note store process  This is used when the server re starts the note_store  e g  after a crach      info Pid    gt    Key  Value    Types   Pid   pid    The info returned is basically up to the implementer to decide  The implementation provided by this application    provides info about memory allocation and various socket information     The info returned by this function is returned together with other info collected by the manager when the info function  is called  tagged with the key net _if      verbosity  Pid  Verbosity    gt  void    Types    Pid   pid     Verbosity   verbosity       Change the verbosity of the network interface process     get_log_ type Pid    gt   ok  LogType     error  Reason   Types    Pid   pid     LogType   atl_type     Reason   term      The Audit Trail Log is managed by the network interface process  So  it is this process that has to return the actual  log type     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    203    snmpm_network_interface    set_log_type Pid  NewType    gt   ok  OldType    
113. e  status column should be taken out of service  e g   in order  for the value of some other column of the same conceptual  row to be modified      Conceptual Row Deletion    Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    75    1 17 SNMP Appendix B       For deletion of conceptual rows  a management protocol set  operation is issued which sets the instance of the status  column to    destroy   This request may be made regardless of  the current value of the status column  e g   it is possible  to delete conceptual rows which are either    notReady       notInService  or    active    If the operation succeeds   then all instances associated with the conceptual row are  immediately removed      SYNTAX INTEGER         the following two values are states        these values may be read or written  active l    notInService  2       lt  the following value is a state        this value may be read  but not written  notReady  3           the following three values are        actions  these values may be written      but are never read   createAndGo  4     createAndWait  5     destroy  6     76   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     1 17 SNMP Appendix B    2 Reference Manual    A multilingual Simple Network Management Protocol application featuring an Extensible Agent  simple manager  a  MIB compiler and facilities for implementing SNMP MIBs etc     Ericsson AB  All Rights Reserved   Simple Network Management P
114. e  the OBJECT IDENTIFIER  or symbolic name for each managed object  is associated with an Erlang tuple   Module  Function  ListOfExtraArguments                     When a managed object is referenced in an SNMP operation  the associated  Module  Function   ListOfExtraArguments  is called  The function is applied to some standard arguments  for example  the  operation type  and the extra arguments supplied by the user        Instrumentation functions must be written for get and set for scalar variables and tables  and for get    next for  tables only  The get    bu1k operation is translated into a series of calls to get next     1 10 1 Instrumentation Functions    The following sections describe how the instrumentation functions should be defined in Erlang for the different  operations  In the following  RowIndex is a list of key values for the table  and Column is a column number     These functions are described in detail in Definition of Instrumentation Functions     New   Delete Operations    For scalar variables     variable_access new    ExtraArgl         variable_access delete    ExtraArgl           For tables     table_access new    ExtraArgl         table_access delete    ExtraArgl           These functions are called for each object in an MIB when the MIB is unloaded or loaded  respectively   Get Operation    For scalar variables     variable_access get    ExtraArgl           Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    47    1 10 In
115. e agent is configured with the configuration tool  using default suggestions for everything but the manager node     1 8 1 MIB    The MIB used in this example is called EX1 MIB  It contains two objects  a variable with a name and a table with    friends   EX1    MIB DEFINITIONS     BEGIN  IMPORTS  RowStatus FROM STANDARD MIB  DisplayString FROM RFCI2Z13 MiIB  OBJECT TYPE HROMBRE CS I2  i  examplel OBJECT IDENTIFIER       experimental 7      myName OBJECT TYPE    SYNTAX DisplayString  SIZE  0  255       ACCESS read write  STATUS mandatory  DESCRIPTION    My own name         examplel 1      friendsTable OBJECT TYPE    SYNTAX SEQUENCE OF FriendsEntry    ACCESS not accessible  STATUS mandatory  DESCRIPTION    TAS e ot ire enicl sna           examplel 4      friendsEntry OBJECT TYPE  SYNTAX FriendsEntry  ACCESS not accessible  STATUS mandatory  DESCRIPTION  INDEX   fIndex          friendsTable 1      FriendsEntry      SEQUENCE    findex  INTEGER     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    39    1 8 Agent Implementation Example       fName  DisplayString   fAddress  DisplayString     Status  RowStatus      fIndex OBJECT TYPE  SYNTAX INTEGER  ACCESS not accessible  STATUS mandatory  DESCRIPTION   number of friend         friendskEntry 1      fName OBJECT TYPE  SYNTAX DPasplaystring  SIZE  0   255    ACCESS read write  STATUS mandatory  DESCRIPTION   Name of friend         friendsEntry 2    fAddress OBJECT TYPE  SYNTAX Displaystring  SIZE  0  25
116. e and usm cone    Configure a manager  y n    y     Manager system config        1  Manager process priority  low normal high   normal   2  What SNMP version s  should be used  1 2 3 1 amp 2 1 amp 28 amp 3 2 amp 3    3  1 amp 2 amp 3  3  Configuration directory  absolute path     ldisk snmp   ldisk snmp manager conf  4  Config verbosity  silence info log debug trace    silence  log  5  Database directory  absolute path     ldisk snmp   ldisk snmp manager db  6  Database repair  true false force    true   7  Database auto save  infinity milli seconds    5000   8  Inform request behaviour  auto user    auto   9  Server verbosity  silence info log debug trace    silence  log  0  Server GC timeout   30000   1  Note store verbosity  silence info log debug trace    silence   2  Note store GC timeout   30000   3  Which network interface module shall be used   snmpm_net_if   4  Network interface verbosity  silence info log debug trace    silence  log  5  Bind the manager IP address  true false    false   6  Shall the manager IP address and port be not reusable  true false    false   7  Receive buffer size of the manager  in bytes   default pos integer    default   8  Send buffer size of the manager  in bytes   default pos integer    default   9  Shall the manager use an audit trail log  y n    n  y  9b  Where to store the audit trail log    ldisk snmp   ldisk snmp manager log  9c  Max number of files   10   9d  Max size  in bytes  of each file   10240   9e  Audit trail log repair  tr
117. e audit trail log shall be repaired when opened  Unless this parameter has the value  snmp_repair itis sent to disk_log  If  on the other hand  the value is snmp_repair  snmp attempts to  handle certain faults on its own  And even if it cannot repair the file  it does not truncate it directly  but instead  moves it aside for later off line analysis     Default is true     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    93    snmp    atl_seqno     true   false  lt optional gt     Specifies if the audit trail log entries will be  sequence  numbered or not  The range of the sequence numbers are  according to RFC 5424  i e  1 through 2147483647     Default is false     See Also  application 3   disk_log 3     94   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpa    snmpa    Erlang module    The module snmpa contains interface functions to the SNMP agent     oid      byte     atl_type     read   write   read_write  notification_delivery_info      snmpa_notification_delivery_info      The oid    type is used to represent an ASN 1 OBJECT IDENTIFIER     The record snmpa_notification_delivery_info contains the following fields        tag   term    A user defined identity representing this notification send operation    mod   module    A module implementing the snmpa_notification_delivery_info_receiver behaviour  The info functions of this  module will be called at various stages of delivery    extra   term      This i
118. e create  we insert an item in an snmp_inde x structure     new_process  Name  SnmpIndex    gt   Pid   start_process     NewSnmpIndex    snmp_index insert  SnmpIndex  Name  Pid    Se pae    With this structure  we can now map an OBJECT IDENTIFIER in e g  a GET NEXT request  to the correct process     get_next_pid Oid  SnmpIndex   gt    ok   _  Pid     snmp_index get_next  SnmpIndex  Oid    Pid     Common data types  The following data types are used in the functions below        index     e oid      byte             e key_types   type_spec      type_spec    type_spec          e type_spec     fix_string   string   integer      key      key_spec      key_spec    key_spec           e key_spec     string     integer       The index    type denotes an snmp index structure   The oid    type is used to represent an ASN 1 OBJECT IDENTIFIER     The key_types    type is used when creating the index structure  and the key    type is used when inserting and  deleting items from the structure     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    151    snmp_index    The key_types    type defines the types of the SNMP INDEX columns for the table  If the table has one single  INDEX column  this type should be a single atom  but if the table has multiple INDEX columns  it should be a tuple  with atoms     If the INDEX column is of type INTEGER  or derived from INTEGER  the corresponding type should be integer  If  it is a variable length type  e g  OBJECT IDENTIF
119. e groupName  found in vacmSecurityToGroupTable   contextName   securityModel  and securityLevel to an MIB view for each type of operation  read  write  or notify   The  MIB view is represented as a viewName  The definition of the MIB view represented by the viewName is found  in the vacmViewTreeFamilyTable    vacmViewTreeFamilyTable    The vacmViewTreeFamilyTable is indexed by the viewName  and defines which objects are included in the  MIB view     The MIB definition for the table looks as follows     VacmViewTreeFamilyEntry     SEQUENCE     vacmViewTreeFamilyViewName SnmpAdminString   vacmViewTreeFamilySubtree OBJECT IDENTIFIER   vacmViewTreeFamilyMask OCTET STRING   vacmViewTreeFamilyType INTEGER   vacmViewTreeFamilyStorageType StorageType   vacmViewTreeFamilyStatus RowStatus     INDEX   vacmViewTreeFamilyViewName   vacmViewTreeFamilySubtree               12   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     1 2 Agent Functional Description    Each vacmViewTreeFamilyViewName refers to a collection of sub trees   MIB View Semantics    An MIB view is a collection of included and excluded sub trees  A sub tree is identified by an OBJECT IDENTIFIER   A mask is associated with each sub tree     For each possible MIB object instance  the instance belongs to a sub tree if    e the OBJECT IDENTIFIER name of that MIB object instance comprises at least as many sub identifiers as does  the sub tree  and   e each sub identifier in the name of that MIB ob
120. e passed along to the net if process   which is a component that a user can implement themself  The users own net if may then make use of ExtraInfo  The  net if provided with this application does not process ExtraInfo     There is one exception  Any tuple containing the atom snmpa_default_notification_extra_info will  in  this context  be considered belonging to this application  and may be processed by the agent        discovery  TargetName  Notification    gt   ok  ManagerEngineID     error   Reason     discovery  TargetName  Notification  Varbinds    gt   ok  ManagerEngineID      error  Reason     discovery  TargetName  Notification  DiscoHandler    gt   ok  ManagerEngineID      error  Reason     discovery  TargetName  Notification  ContextName  Varbinds    gt   ok   ManagerEngineID     error  Reason     discovery  TargetName  Notification  Varbinds  DiscoHandler    gt   ok   ManagerEngineID     error  Reason     discovery  TargetName  Notification  ContextName  Varbinds  DiscoHandler    gt    ok  ManagerEngineID     error  Reason     discovery  TargetName  Notification  ContextName  Varbinds  DiscoHandler   ExtraInfo    gt   ok  ManagerEngineID     error  Reason     Types   TargetName   string    Notification   atom    ContextName   string    defaults to      Varbinds   varbinds     varbinds      varbind      DiscoHandler   snmpa_discovery_ handler     ExtraInfo   term      snmpa_discovery_handler     Module implementing the  snmpa_discovery_handler behaviour    ManagerE
121. e standard conf  see System Information   e context conf  see Contexts   e community  conf  see Communities   e target_addr conf  see Target Address Definitions   e target_params conf  see Target Parameters Definitions  e vacm conf  see MIB Views for VACM   e usm conf  see Security data for USM   e notify conf  see Notify Definitions    The directory where the configuration files are found is given as a parameter to the agent     The entry format in all files are Erlang terms  separated by a     and a newline  In the following sections  the formats  of these terms are described  Comments may be specified as ordinary Erlang comments     Syntax errors in these files are discovered and reported with the function config_err 2 of the error report module  at start up     1 6 1 Agent Information   The agent information should be stored in a file called agent   conf   Each entry is a tuple of size two     AgentVariable  Value      e AgentVariable is one of the variables is SNMP FRAMEWORK MIB or one of the internal variables  intAgentUDPPort  which defines which UDP port the agent listens to  or int Agent IpAddress  which  defines the IP address of the agent     e Value is the value for the variable     The following example shows a agent   conf file      intAgentUDPPort  4000     intAgentIpAddress   141 213 11 24      snmpEngineID   mbj s engine      snmpEngineMaxPacketSize  484         The value of snmpEnginelID isa string  which for a deployed agent should have a very specific stru
122. e this agent  with User Id as the responsible user     Called to instruct the manager that this agent shall be handled  This function is used when the user knows in advance  which agents the manager shall handle  Note that there is an alternate way to do the same thing  Add the agent to the  manager config files  see agents conf      TargetName is a non empty string  uniquely identifying the agent     The type of Val depends on Item              mandatory  engine_id   string     mandatory  address   ip_address     optional port   integer      optional tdomain   transportDomainUdpIpv4   transportDomainUdpIpv6    optional community   string     optional timeout   integer     snmp_timer     optional max_message_size   integer      optional version   vl   v2   v3   optional sec_model   any   vl   v2c   usm   optional sec_name   string     optional sec_level   noAuthNoPriv   authNoPriv   authPriv    Note that if no tdomain is given  the default value  transportDomainUdpIpv4  is used     Note that if no port is given  the default value is used     unregister_agent  UserId  TargetName    gt  ok    error  Reason   Types    UserId   term     TargetName   target_name      Unregister the agent     176   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpm       agent_info TargetName  Item    gt   ok  Val     error  Reason   Types    TargetName   target_name      Item   atom     Reason   term      Retrieve agent config     update_agent_info UserId  Target
123. eans that the net_if process failed to send the message  This could happen because  of any number of reasons  i e  encoding error  ActualReason is the actual reason in this case     The send option ext ra specifies an opaque data structure passed on to the net if process  The net if process included  in this application makes  with one exception  no use of this info  so the only use for it in such a option  when using  the built in net if  would be tracing  The one usage exception is  Any tuple with snmpm_ext ra_info_tag as its  first element is reserved for internal use           Some of the send options  community  sec_model  sec_name  sec_level and max_message_size  are  override options  That is  for this request  they override any configuration done when the agent was registered     For SnmpInfo  see the user callback function handle_report     sync_get_bulk UserId  TragetName  NonRep  MaxRep  Oids    gt   ok  SnmpReply   Remaining     error  Reason     sync_get_bulk UserId  TragetName  NonRep  MaxRep  ContextName  Oids    gt   ok     SnmpReply  Remaining     error  Reason    sync_get_bulk UserId  TragetName  NonRep  MaxRep  Oids  Timeout    gt   ok   SnmpReply  Remaining     error  Reason    sync_get_bulk UserId  TragetName  NonRep  MaxRep  ContextName  Oids  Timeout     gt   ok  SnmpReply  Remaining     error  Reason    sync_get_bulk UserId  TragetName  NonRep  MaxRep  ContextName  Oids  Timeout   ExtraInfo    gt   ok  SnmpReply  Remaining     error  Reason    Types   
124. eated from the configuration file will have StorageType nonVolatile     Thus  the data in the SNMP TARGET MIB  after this function has been called  is the data from the configuration files   All snmp counters are set to zero     If an error is found in the configuration file  it is reported using the function config_err 2 of the  and the function  fails with the reason configuration_error     ConfDir is a string which points to the directory where the configuration files are found     The configuration files read are  target_addr conf and target_params conf     160   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmp_target_mib       set_target_engine_id TargetAddrName  EngineId    gt  boolean     Types    TargetAddrName   string     EnginelId   string      Changes the engine id for a target in the snmpTargetAddrTable  If notifications are sent as Inform requests to  a target  its engine id must be set     add_addr  Name  Ip  Port  Timeout  Retry  TagList  Params  EngineId  TMask   MMS    gt  Ret    add_addr  Name  Domain  Ip  Port  Timeout  Retry  TagList  Params  Engineld   TMask  MMS    gt  Ret    Types   Name   string    Domain   transportDomain       Ip   transportAddressIPv4     transportAddressIPv6    depends on the value  of Domain     Port   integer      Timeout   integer      Retry   integer      TagList   string     ParamsName   string     EngineId   string     TMask   transportAddressMask    depends on Domain     MMS   integer    
125. echanism of loading and unloading MIBs is  insufficient  In these cases a sub agent is needed     Special Set Transaction Mechanism       Each sub agent can implement its own mechanisms for set  get and get   next  For example  if the application  requires the get mechanism to be asynchronous  or needs a N phase set mechanism  a specialized sub agent should  be used     The toolkit allows different kinds of sub agents at the same time  Accordingly  different MIBs can have different set  or get mechanisms     Process Communication    A simple distributed agent can be managed without sub agents  The instrumentation functions can use distributed  Erlang to communicate with other parts of the application  However  a sub agent can be used on each node if this  generates too much unnecessary traffic  A sub agent processes requests per incoming SNMP request  not per variable   Therefore the network traffic is minimized     If the instrumentation functions communicate with UNIX processes  it might be a good idea to use a special sub agent   This sub agent sends the SNMP request to the other process in one packet in order to minimize context switches  For  example  if a whole MIB is implemented on the C level in UNIX  but you still want to use the Erlang SNMP tool  then  you may have one special sub agent  which sends the variables in the request as a single operation down to C     Frequent Loading of MIBs    Loading and unloading of MIBs are quite cheap operations  However  if the ap
126. ectness or not    Default is t rue    The option i specifies the path to search for imported  compiled  MIB files  The directories should be strings  with a trailing directory delimiter    Default is            The option il  include_lib  also specifies a list of directories to search for imported MIBs  It assumes that the  first element in the directory name corresponds to an OTP application  The compiler will find the current installed  version  For example  the value   snmp mibs    will be replaced by   snmp 3 1 1 mibs     or what the current  version may be in the system   The current directory and the  lt snmp home gt  priv mibs  are always listed  last in the include path    The option imports  if present  specifies that the IMPORT statement of the MIB shall be included in the  compiled mib    The option module  if present  specifies the name of a module which implements all instrumentation functions  for the MIB     The name of all instrumentation functions must be the same as the corresponding managed object it implements     The option module_identity  if present  specifies that the info part of the MODULE IDENTITY statement  of the MIB shall be included in the compiled mib     The option module_compliance  if present  specifies that the MODULE COMPLIANCE statement of the  MIB shall be included  with a mib entry record  in the compiled mib  The mib entry record of the module   compliance will contain reference and module part s  this info in the assocList field      
127. ement station  or network failure  the conceptual row will be left in the     notInService  or    notReady  state  consuming resources  indefinitely  The agent must detect conceptual rows that  have been in either state for an abnormally long period of  time and remove them  It is the responsibility of the  DESCRIPTION clause of the status column to indicate what an  abnormally long period of time would be  This period of  time should be long enough to allow for human response time   including    think time   between the creation of the  conceptual row and the setting of the status to    active      In the absence of such information in the DESCRIPTION  clause  it is suggested that this period be approximately 5  minutes in length  This removal action applies not only to  newly created rows  but also to previously active rows which  are set to  and left in  the notInService state for a  prolonged period exceeding that which is considered normal  for such a conceptual row     Conceptual Row Suspension    When a conceptual row is  active   the management station  may issue a management protocol set operation which sets the    instance of the status column to    notInService   If the  agent is unwilling to do so  the set operation fails with an  error of     wrongValue   Otherwise  the conceptual row is    taken out of service  and a    noError  response is returned   It is the responsibility of the DESCRIPTION clause of the  status column to indicate under what circumstances th
128. ems  This implies that sub agent communication is very efficient compared to SMUX  DPI  AgentX  and similar  protocols     1 2 5 Contexts and Communities    A context is a collection of management information accessible by an SNMP entity  An instance of a management  object may exist in more than one context  An SNMP entity potentially has access to many contexts     Each managed object can exist in many instances within a SNMP entity  To identify the instances  specified by an MIB  module  a method to distinguish the actual instance by its  scope  or context is used  Often the context is a physical or  a logical device  It can include multiple devices  a subset of a single device or a subset of multiple devices  but the  context is always defined as a subset of a single SNMP entity  To be able to identify a specific item of management  information within an SNMP entity  the context  the object type and its instance must be used     For example  the managed object type ifDescr from RFC1573  is defined as the description of a network  interface  To identify the description of device X s first network interface  four pieces of information are needed     8   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     1 2 Agent Functional Description    the snmpEngineID of the SNMP entity which provides access to the management information at device X  the  contextName  device X   the managed object type  i fDescr   and the instance   1       In SNMPv1 and SNM
129. ent and purpose as the messages descrived above     Address is amanagement target address and Addresses isa list of management target addresses  They are defined  as followes     Addresses    address       Address   address     address    vil_address     v3_address          TDomain  TAddress       TDomain  TAddress   V3MsgData     vi_address    v3_address      TDomain tdoamin     TAddress   taddress     tdomain     The oid of snmpUDPDomain    This is the only supported transport domain    taddress      Al  A2  A3  A4  Pl  P3   The 4 first bytes makes up the IP address and the last 2   the UDP port number    V3MsgData   v3_msg_data     v3_msg_data     term      If Receiver is a notification_delivery_info   record  then the information about  the notification delivery will be delivered to the receiver via the callback functions  defined by the snmpa_notification_delivery_info_receiver behaviour according to the content of the  notification_delivery_info   record           The optional argument Varbinds defines values for the objects in the notification  If no value is given for an object   the Agent performs a get operation to retrieve the value     Varbinds isa list of Varbind  where each Varbind is one of       Variable  Value   where Variable is the symbolic name of a scalar variable referred to in the  notification specification         Column  RowIndex  Value   where Column is the symbolic name of a column variable  RowIndex  is a list of indices for the specified element 
130. entation functions are useful  The toolkit can generate  default instrumentation functions for variables as well as for tables  Consequently  a running prototype agent  which  can handle set  get  get   next and table operations  is generated without any programming        The agent stores the values in an internal volatile database  which is based on the standard module et s  However   it is possible to let the MIB compiler generate functions which use an internal  persistent database  or the Mnesia  DBMS  Refer to the Mnesia User Guide and the Reference Manual  section SNMP  module snmp_generic for  more information     When parts of the MIB are implemented  you recompile it and continue on by using default functions  With this  approach  the SNMP agent can be developed incrementally     The default instrumentation allows the application on the manager side to be developed and tested simultaneously  with the agent  As soon as the ASN 1 file is completed  let the MIB compiler generate a default implementation and  develop the management application from this     Table Operations    The generation of default functions for tables works for tables which use the RowStatus textual convention from  SNMPv 2  defined in STANDARD MIB and SNMPv2 TC     Note     We strongly encourage the use of the RowStatus convention for every table that can be modified from the  manager  even for newly designed SNMPv1 MIBs  In SNMPv1  everybody has invented their own scheme for  emulating table oper
131. equest_id  are not accessible for the instrumentation  functions if this function is used     get_next  Agent  Vars    gt  Values    error  Reason   get_next  Agent  Vars  Context    gt  Values    error  Reason   Types     Agent   pid     atom    Vars    oid      Context   string     Values     oid    term       Reason    atom    oid       Performs a GET NEXT operation on the agent  All loaded MIB objects are visible in this operation  The agent calls  the corresponding instrumentation functions just as if it was a GET request coming from a manager     Note that the request specific parameters  such as snmpa  current_request_id 0O are not accessible for the  instrumentation functions if this function is used     backup  BackupDir    gt  ok    error  Reason   backup  Agent  BackupDir    gt  ok    error  Reason   Types   BackupDir   string    Agent   pid     atom    Reason   backup_in progress   term    Backup persistent permanent data handled by the agent  such as local db  mib data and vacm    Data stored by mnesia is not handled   BackupDir cannot be identical to DbDir     Simultaneous backup calls are not allowed  That is  two different processes cannot simultaneously successfully call this  function  One of them will be first  and succeed  The second will fail with the error reason backup_in_progress     96   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpa    info     gt    Key  Value    info  Agent    gt    Key  Value    Types   Agent
132. er_option      manager_option      restart_type  restart_type       net_if  manager_net_if     server  server       note_store  note_store      COn cy  manager_config      inform_request_behaviour  manager_irb      mibs  manager_mibs       Petorcity  peorien  audit_trail_log  audit_trail_log      versions  versions       def_user_mod  def_user_module    def_user_data  def_user_data           Agent specific config options and types   agent_type     master   sub  lt optional gt   If master  one master agent is started  Otherwise  no agents are started     Default is master     20   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     1 5 Running the application       agent_discovery      agent_discovery_opt     lt optional gt     agent_discovery_opt      terminating  agent_terminating_discovery_opts        originating  agent_originating_discovery_opts        The terminating options effects discovery initiated by a manager   The originating options effects discovery initiated by this agent     For defaults see the options in agent_discovery_opt        agent_terminating_discovery_opts      agent_terminating_discovery_opt        lt optional gt   agent_terminating_discovery_opt      enable  boolean       stage2  discovery    plain     trigger_username  string        These are options effecting discovery terminating in this agent  i e  initiated by a manager    The default values for the terminating discovery options are     e enable  true  e stage2  disco
133. error  db_init_error        repair   manager_repair        auto_save  manager_auto_save        verbosity     verbosity        Defines specific config related options for the SNMP manager    For defaults see the options in manager_config_opt     manager_config_dir   dir    lt mandatory gt   Defines where the SNMP manager configuration files are stored   manager_db_dir   dir    lt mandatory gt     Defines where the SNMP manager store persistent data           manager_repair     false   true   force  lt optional gt   Defines the repair option for the persistent database  if and how the table is repaired when opened      Default is true     90   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmp       manager_auto_save     integer     infinity  lt optional gt   The auto save interval  The table is flushed to disk whenever not accessed for this amount of time   Default is 5000    manager_irb     auto   user    user  integer     lt optional gt     This option defines how the manager will handle the sending of response  acknowledgment  to received inform   requests     e auto   The manager will autonomously send response  acknowledgment gt  to inform request messages     e f user  integer        The manager will send response  acknowledgment  to inform request messages  when the handle_inform function completes  The integer is the time  in milli seconds  that the manager will  consider the stored inform request info valid     e user Sameas  user  in
134. erved   Simple Network Management Protocol  SNMP     snmp_generic       DATA TYPES    In the functions defined below  the following types are used     name_db      name    db       name     atom     db     volatile   persistent   mnesia  row_index      int      columns      column        column    value      column     int      value     term      row_index       Denotes the last part of the OID which specifies the index of the row in the table  see RFC1212  4 1 6 for more  information about INDEX      columns       Is a list of column numbers in the case of a get operation  and a list of column numbers and values in the case  of a set operation     Exports    get_status_col  Name  Cols   get_status_col NameDb  Cols    gt   ok  StatusVal    false  Types    Name   name      NameDb   name_db     Cols   columns      StatusVal   term      Gets the value of the status column from Cols     This function can be used in instrumentation functions for is_set__ok  undo or set to check if the status column  of a table is modified     get_index_types  Name   Types   Name   name       Gets the index types of Name    This function can be used in instrumentation functions to retrieve the index types part of the table info     get_table_info Name  Item    gt  table _info_result      Types   Name   name     Item   table item     all  table _item     nbr_of_cols   defvals   status_col   not_accessible      index_types   first_accessible   first_own_index  table_info_result     Value     table_i
135. es    7d  Authentication protocol  no sha md5    no  sha    Te INN ntemecienom   siove   Ieeyy Engen ee 20 e        lp 2 3  4  376  Ip 829 10  i  12 13  14  dS  IG  L8  19 20   Td  Priv protocol  no des aes    no  des  Whe Riad Cesi key  rengen 0  wre Kore  Pe    al   dah we Sw IS INS 2 Al Ler IR   AO   Al  BA  BS 2A 2 OS    7  Configure an usm user handled by this manager  y n    y  n  8  Current configuration files will now be overwritten  Ok  y n   Iy     The following manager files were written  manager conf  agents conf   users conf and usm conf    Configuration directory for system file  absolute path     ldisk snmp   ok    1 5 3 Starting the application    Start Erlang with the command   erl  config  tmp snmp sys    If authentication or encryption is used  SNMPVv3 only   start the crypto application  If this step is forgotten  the  agent will not start  but report a  config_error   unsupported_crypto _   error     1 gt  application  start  crypto    ok    2 gt  application  start  snmp    ok    1 5 4 Debugging the application    It is possible to debug every  non supervisor  process of the application  both agent and manager   possibly with  the exception of the net_if module s   which could be supplied by a user of the application   This is done by calling  the snmpa verbosity 2 and snmpm verbosity 2 function s  and or using configuration parameters  The  verbosity itself has several levels  silence   info   log   debug   trace  For the lowest verbosity  silence  noth
136. ese options are actually specific to the used module  The ones shown here are applicable to the default  manager_net_if_filter_module          For defaults see the options in manager_net_if_filter_option     manager_net_if_filter_module     atom    lt optional gt     Module which handles the network interface filter part for the SNMP manager  Must implement the  snmpm_network_interface_filter behaviour     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    91    snmp       Default is snmpm_net_if_filter   def_user_module     atom    lt optional gt   The module implementing the default user  See the snmpm_user behaviour   Default is snmpm_user_default   def_user_data     term    lt optional gt   Data for the default user  Passed to the user module when calling the callback functions   Default is undefined     Common config types        restart_type     permanent   transient   temporary  See supervisor documentation for more info   Default is permanent for the agent and transient for the manager   db_init_error     terminate   create    Defines what to do if the agent or manager is unable to open an existing database file  terminate means that  the agent manager will terminate and create means that the agent manager will remove the faulty file s  and  create new ones     Default is terminate   priority     atom    lt optional gt   Defines the Erlang priority for all SNMP processes   Default is normal   versions      version     lt optional gt   versi
137. esponse 4  e note_store 2   e  info l   e get log_type 1   e set_log_type 2   e     verbosity 2    The semantics of them and their exact signatures are explained below     Exports    start_link  Server  NoteStore    gt   ok  Pid     error  Reason   Types    Server   pid     NoteStore   pid    Start link the network interface process     Server is the pid of the managing process     NoteStore is the pid of the note store process     stop  Pid    gt  void    Types   Pid   pid      Stop the network interface process     send_pdu  Pid  Pdu  Vsn  MsgData  Addr  Port  ExtraInfo    gt  void      Types   Pid   pid    Pdu   pdu    Vsn    version 1     version 2     version 3     MsgData   term    Addr   address     Port   integer     ExtraInfo   term      Request the network interface process  Pid  to send this pdu  Pdu      202   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpm_network_interface             Ext ralInfo is some opaque data that is passed to the net if process  It originates from the Ext raInfo parameter in  the calls to the synchronous get request  asynchronous get request  synchronous get next request  asynchronous get   next request  synchronous set request and asynchronous set request functions  Whether the net if process chooses to  use this is implementation dependent  The net if process included in this application ignores it     inform_response  Pid  Ref  Addr  Port    gt  void    Types   Pid   pid    Ref   term    Addr   ad
138. ete_row   Index  _  _  _    T    Index     gt     i  table_delete_row  H   T   RowIndex    gt   H table_delete_row T  RowIndex      table_delete_row     _RowIndex    gt   Ie  table_add_row    Row T   NewRow    when element  1  Row   gt  element  1  NewRow    gt   NewRow  Row IES  table_add_row  H T   NewRow    gt   H   table_add_row T  NewRow     table_add_row     NewRow    gt   NewRow    make_row  Index     2  Name    3  Address    _     gt   Index  Name  Address   active    merge_rows  Row    Col  NewVal    T     gt    merge_rows  setelement  Col  Row  NewVal   T     merge_rows  Row        gt   Row                    Association File       The association file EX1 MIB funcs for the real implementation looks as follows      myName   exl  my_name          friendsTable   exl  friends_table         Transcript    To use the real implementation  we must recompile the MIB and load it into the agent     1 gt  application  start  snmp     ok   2 gt  snmpc compile   EX1 MIB        ONS T EXIEMIB BENA    3 gt  snmpa load_mibs  snmp_master_agent    EX1 MIB       ok   4 gt  exl start      CeL 0   Now all requests operates on this  real  implementation   The output from the manager requests will  look  exactly the  same as for the default implementation     A    A ol  A ol    ole  ole    Trap Sending    How to send a trap by sending the fT rap from the master agent is shown in this section  The master agent has the    MIB  trap     EX1 MIB loaded  where the trap is defined  This trap spec
139. f    community entry         snmpa_conf    Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    121    snmpa_conf    Read the current agent notify config file   Dir is the path to the directory where to store the config file     See Notify Definitions for more info     122   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpa_discovery_handler    snmpa_discovery_handler    Erlang module    This module defines the behaviour of the agent discovery handler  A snmpa_discovery_handler compliant  module must export the following functions     e  stagel_finish 2    The semantics of them and their exact signatures are explained below     Exports   stagel_finish TargetName  ManagerEngineID  ExtraInfo    gt  ignore     ok  usm_entry      usm_entry        ok  usm_entry      usm_entry      NewExtraInfo    Types     TargetName   string     ManagerEngineID   string     ExtraInfo   term     usm_entry     tuple   compatible with usm conf  NewExtraInfo   term      This function is called at the end of stage 1 of the discovery process  It should return either the atom ignore or  ok   usm_entry      usm_entry       See usm_entry   and usm_entry 13 for more info     If the function returns ignore  then it is assumed that either     e The caller  of the discovery function  will make the needed updates later   e The callback function itself did the updates     In either case  the agent will do nothing  but return the retrieved ManagerEngi
140. f it is possible for a manager to create or delete rows in the table  there must be a RowStatus column for  is_set_ok  set and undo to work properly     The function returns according to the specification of an instrumentation function     table _get_elements NameDb  RowIndex  Cols    gt  Values  Types    NameDb   name_db     RowIndex   row_index      Cols   columns      Values    value     noinit     Returns a list with values for all columns in Cols  If a column is undefined  its value is noinit     table_next  NameDb  RestOid    gt  RowIndex   endOfTable  Types    NameDb   name_db     RestOid    int      RowIndex   row_index      Finds the indices of the next row in the table  Rest Oid does not have to specify an existing row     148   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmp_generic       table_row_exists NameDb  RowIndex    gt  bool     Types   NameDb   name_db      RowIndex   row_index       Checks if a row in a table exists     table_set_elements NameDb  RowIndex  Cols    gt  bool    Types    NameDb   name_db     RowIndex   row_index      Cols   columns     Sets the elements in Cols to the row specified by RowIndex  No checks are performed on the new values     If the Mnesia database is used  this function calls mnesia write to store the values  This means that this function  must be called from within a transaction  mnesia transaction 1 ormnesia dirty 1      variable _func Opl1  NameDb    variable _func Op2  Val  NameDb    g
141. fication is made        active   of the same conceptual row to be modified     affected    column to specify whether the status column must  in order for the value of some other    Ve   columns may be    changed by an SNMP set PDU if the RowStatus would not    be equal to    processing the PDU     active     In other words     either immediately before or after  if the PDU also    contained a varbind that would change the RowStatus    value     RowStatus was not equal to  or if the varbind sets the status to a value     active        received   other than       active  as    RowStatus column must also exist     the column in question may be changed if the    the PDU was    the    To summarize the effect of having a conceptual row with a  status column having a SYNTAX clause value of RowStatus   consider the following state diagram     set status  column to  createAndGo    set startus  column to  createAndWait  set status  column to  active    set status  column to  notInService    set status  column to    70   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     status column  is active    inconsistent   Value    inconsistent     Value    NOError    noError    Sia    wrongValue    STATE                  4             4               4                A B C  starcus Cols tarcusTeo lumi  status column is is  does not exist notReady notInService    Se I  noError     gt D   inconsist     inconsistent     or entValue Value  inconsistent  Value    JeSSSe  
142. fines managed objects for configuration of  management targets  i e  receivers of notifications  traps and informs   These MIBs can be used with any SNMP  version     e SNMP VIEW BASED ACM MIB  which defined managed objects for access control  This MIB can be used  with any SNMP version     e SNMP COMMUNITY MIB  which defines managed objects for coexistence of SNMPv1 and SNMPv2c with  SNMPv3  This MIB is only useful if SNMPv1 or SNMPv2c is used  possibly in combination with SNMPv3     e _SNMP USER BASED SM MIB  which defines managed objects for authentication and privacy  This MIB is  only useful with SNMPv3     All of these MIBs should be loaded into the Master Agent  Once loaded  these MIBs are always available in all contexts     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    9    1 2 Agent Functional Description    The ASN 1 code  the Erlang source code  and the generated  hr1 files for them are provided in the distribution and  are placed in the directories mibs  src  and include  respectively  in the snmp application     The  hr1 files are generated with snmpc mib_to_hr1 1  Include these files in your code as in the following  example      include_lib  snmp include SNMPv2 MIB hrl       The initial values for the managed objects defined in these tables  are read at start up from a set of configuration files   These are described in Configuration Files     STANDARD MIB and SNMPv2 MIB    These MIBs contain the snmp  and system groups from MI
143. first element is reserved for internal use        Some of the send options  community  sec_model  sec_name  sec_level and max_message_size  are  override options  That is  for this request  they override any configuration done when the agent was registered        186   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpm       async_set UserId  TargetName  VarsAndVals    gt   ok  ReqId     error  Reason     async_set UserId  TargetName  ContextName  VarsAndVals    gt   ok  ReqId      error  Reason     async_set UserId  TargetName  VarsAndVals  Expire    gt   ok  ReqId     error   Reason     async_set  UserId  TargetName  ContextName  VarsAndVals  Expire    gt   ok   ReqId     error  Reason     async_set UserId  TargetName  ContextName  VarsAndVals  Expire  ExtraInfo    gt    ok  ReqId     error  Reason     Types   UserId   term    TargetName   target_name     VarsAndVals   vars_and_vals    Expire   integer     ExtraInfo   term    ReqiId   term    Reason   term      Asynchronous set   request     The reply will be delivered to the user through a call to the snmpm_user callback function handle_pdu        The Expire time indicates for how long the request is valid  after which the manager is free to delete it      When var_and_val   is  oid    value     the manager makes an educated guess based on the loaded mibs        Ext ralInfo is an opaque data structure passed on to the net if process  The net if process included in this application  makes 
144. for which the agent allows their values to  be changed after their creation   a value return tells  the management station that it may issue additional  management protocol set operations  if it desires  in  order to change the value associated with this column            the exception    noSuchInstance  is returned   indicating that the agent implements the object type  associated with this column  and that this column in at  least one conceptual row would be accessible in the MIB  view used by the retrieval were it to exist  However   the agent does not have sufficient information to  provide a value  and until a value is provided  the  conceptual row may not be made available for use by the  managed device  For those columns to which the agent  provides read create access  the  noSuchInstance   exception tells the management station that it must  issue additional management protocol set operations  in  order to provide a value associated with this column            the exception    noSuchObject  is returned  indicating  that the agent does not implement the object type  associated with this column or that there is no  conceptual row for which this column would be  accessible in the MIB view used by the retrieval  As  such  the management station cannot issue any  management protocol set operations to create an  instance of this column        If the value associated with the status column is     notReady   then the management station must first deal with  all       noSuchIn
145. get  When an  application sends a notification using the function send_notification 5 or the function send_trap the  parameter NotifyName  specified in the call  is used as an index in the table  The notification is sent to the  management targets selected by that entry     snmpTargetAddrTable    An entry in the snmpTargetAddrTable defines transport parameters  such as IP address and UDP  port  for each management target  Each row in the snmpNotifyTable refers to potentially many rows  in the snmpTargetAddrTable  Each row in the snmpTargetAddrTable refers to an entry in the  snmpTargetParamsTable     snmpTargetParamsTable    An entry in the snmpTargetParamsTable defines which SNMP version to use  and which security parameters  to use     Which SNMP version to use is implicitly defined by specifying the Message Processing Model  This version of the  agent handles the models v1  v2c and v3     Each row specifies which security model to use  along with security level and security parameters     SNMP VIEW BASED ACM MIB    The SNMP VIEW BASED ACM MIB defines managed objects to control access to the the managed objects for the  managers  The View Based Access Control Module  VACM  can be used with any SNMP version  However  if it  is used with SNMPv1 or SNMPv2c  the SNMP COMMUNITY MIB defines additional objects to map community  strings to VACM parameters     All tables in this MIB have a column of type StorageType  The value of this column specifies how each row  is stored  and wh
146. getName  agent_info      is the default user     handle pdu TargetName  ReqId  SnmpPduInfo  UserData    gt  Reply  Types   TargetName   target_name    ReqId   term    SnmpPduInfo    ErrorStatus  ErrorIndex  Varbinds   ErrorStatus   atom    ErrorIndex   integer     Varbinds    varbind      varbind      varbind  UserData   term    Reply   ignore  Handle the reply to an asynchronous request  such as async_get  async_get_next or async_set     It could also be a late reply to a synchronous request     ReqId is returned by the asynchronous request function     handle _trap TargetName  SnmpTrapInfo  UserData    gt  Reply  Types    TargetName   TargetName2   target_name     SnmpTrapInfo    Enteprise  Generic  Spec  Timestamp  Varbinds       ErrorStatus  ErrorIndex  Varbinds    Enterprise   oid     Generic   integer      Spec   integer      Timestamp   integer      ErrorStatus   atom     ErrorIndex   integer       206   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpm_user       Varbinds    varbind      varbind      varbind  UserData   term      Reply   ignore   unregister    register  UserId  TargetName2   agent_info        UserId   term     agent_info       agent_info_item    agent_info_value       Handle a trap notification message from an agent   For more info about the agent__info     see register_agent    The only user which would return  register  UserId  TargetName2  agent_info     is the default  user     handle_inform TargetName  SnmpInfo
147. ghly sub optimal  however  it is also a  questionable practice for a naive management station to  attempt conceptual row creation      Alternately  the MIB module which defines the conceptual row  might provide one or more objects which provide assistance  in determining an unused instance identifier  For example   if the conceptual row is indexed by an integer value  then  an object having an integer valued SYNTAX clause might be  defined for such a purpose  allowing a management station to  issue a management protocol retrieval operation  In order  to avoid unnecessary collisions between competing management  stations   adjacent  retrievals of this object should be  different     Finally  the management station could select a pseudo random  number to use as the index  In the event that this index  was already in use and an inconsistentValue was returned in  response to the management protocol set operation  the  management station should simply select a new pseudo random  number and retry the operation     A MIB designer should choose between the two latter  algorithms based on the size of the table  and therefore the  efficiency of each algorithm   For tables in which a large  number of entries are expected  it is recommended that a MIB  object be defined that returns an acceptable index for  creation  For tables with small numbers of entries  it is  recommended that the latter pseudo random index mechanism be  used        Interaction 2  Creating the Conceptual Row    Once
148. h define the key values for the row  The RowIndex is the list  representation  list of integers  which follow the Cols integer in the OBJECT IDENTIFIER    e Colsisalistof  Column  NewValue   where Column is an integer  and NewValue is guaranteed to  be of the correct type  length and within ranges  as specified in the MIB  If the object is an enumerated integer  or of type BITS  the integer value is used  The list is sorted by Column  increasing  and each Column is  guaranteed to be a valid column number     Valid Return Values        noError  0                  Error  Column  where Error is the same as for undo for variables  and Column denotes the faulty  column  Column must be one of the columns in the Cols list     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    57    1 12 Definition of Agent Net if    f set  Rowlndex  Cols    ExtraArgs         The function f  set  RowIndex  Cols    ExtraArgs    is called to perform the set in phase two of the set   request processing  It is only called if the corresponding is_set_ok function did not exist  or returned  noError   0         This function is mandatory     Arguments   e RowIndex isa list of integers that define the key values for the row  The RowIndex is the list representation   list of integers  which follow the Cols integer in the OBJECT IDENTIFIER    e Colsisalistof  Column  NewValue   where Column is an integer  and NewValue is guaranteed to  be of the correct type  length and within range
149. have  to refer to an existing item in the index     insert  Index  Key  Value    gt  NewIndex  Types    Index   NewIndex   index      Key   key      Value   term      Inserts a new key value tuple into the index structure  If an item with the same key already exists  the new Value  overwrites the old value     key _to_oid Index  Key    gt  KeyOid  Types    Index   index      Key   key     KeyOid   NextKeyOid   oid    Converts Key to an OBJECT IDENTIFIER     new  KeyTypes    gt  Index  Types   KeyTypes   key types     Index   index       Creates a new snmp index structure  The key_t ypes    type is described above     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    153    snmp_notification_mib    snmp_notification_mib    Erlang module    The module snmp_notification_mib implements the instrumentation functions for the SNMP   NOTIFICATION MIB  and functions for configuring the database     The configuration files are described in the SNMP User s Manual     Exports    configure  ConfDir    gt  void    Types   ConfDir   string    This function is called from the supervisor at system start up     Inserts all data in the configuration files into the database and destroys all old rows with StorageType volatile   The rows created from the configuration file will have StorageType nonVolatile     If an error is found in the configuration file  it is reported using the function config_err 2 of the error report  module  and the function fails with reason co
150. hey are not tied to any specific SNMP version     The objects in these MIBs are implemented in the modules snmp_framework_mib and snmp_standard_mib   respectively  All objects reside in volatile memory  and the configuration files are always reread at start up     If SNMPv3 is used  these MIBs are loaded by default     SNMP TARGET MIB and SNMP NOTIFICATION MIB    The SNMP TARGET MIB and SNMP NOTIFICATION MIB define managed objects for configuration of  notification receivers  They are described in detail in RFC2273  Only a brief description is given here     All tables in these MIBs have a column of type StorageType  The value of this column specifies how each row  is stored  and what happens in case of a restart of the agent  The implementation supports the values volatile  and nonVolatile  When the tables are initially filled with data from the configuration files  these rows will  automatically have storage type nonVolatile  Should the agent restart  all nonVolatile rows survive the restart   while the volatile rows are lost  The configuration files are not read at restart  by default     These MIBs are not loaded by default     10   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     1 2 Agent Functional Description    snmpNotifyTable    An entry in the snmpNotifyTable selects a set of management targets  which should receive notifications  as  well as the type  trap or inform  of notification that should be sent to each selected management tar
151. hould  be forwarded to its subagent     e Step 3 is repeated by all subagents    e Each sub agent calls the instrumentation for its loaded MIBs    e The results of calling the instrumentation are propagated back to the Master Agent   e The answer to the request is encoded to a UDP Protocol Data Unit  PDU      Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    7    1 2 Agent Functional Description    The sequence of steps shown is probably more complex than normal  but it illustrates the amount of functionality   which is available  The following points should be noted    e An agent can have many MIBs loaded at the same time    e Sub agents can also have sub agents  Each sub agent can have an arbitrary number of child sub agents  registered  forming a hierarchy    e One MIB can communicate with many applications     e Instrumentation can use Distributed Erlang to communicate with an application     Most applications only need the Master Agent because an agent can have multiple MIBs loaded at the same time     1 2 4 Sub agents and MIB Loading    Since applications tend to be transient  they are dynamically loaded and unloaded   the management of these  applications must be dynamic as well  For example  if we have an equipment MIB for a rack and different MIBs for  boards  which can be installed in the rack  the MIB for a card should be loaded when the card is inserted  and unloaded  when the card is removed     In this agent system  there are two way
152. ia table  using the Mnesia API internally in the application at the  same time as it is visible through SNMP     When this mapping is used  insertion and deletion in the original Mnesia table is slower  with a factor O log n   The  read access is not affected     A drawback with implementing an SNMP table as a Mnesia table is that the internal resource is forced to use the  table definition from the MIB  which means that the external data model must be used internally  Actually  this is only  partially true  The Mnesia table may extend the SNMP table  which means that the Mnesia table may have columns  which are use internally and are not seen by SNMP  Still  the data model from SNMP must be maintained  Although  this is undesirable  it is a pragmatic compromise in many situations where simple and efficient implementation is  preferable to abstraction     Creating the Mnesia Table    The table must be created in Mnesia before the manager can use it  The table must be declared as type snmp  This  makes the table ordered in accordance with the lexicographical ordering rules of SNMP  The name of the Mnesia  table must be identical to the SNMP table name  The types of the INDEX fields in the corresponding SNMP table  must be specified     If the SNMP table has more than one INDEX column  the corresponding Mnesia row is a tuple  where the first element  is a tuple with the INDEX columns  Generally  if the SNMP table has N INDEX columns and C data columns  the  Mnesia table is of a
153. ication config  sys config   This is done by calling   application set_env snmp  agent  Conf      The default value for Type is normal   start_manager     gt  ok    error  Reason     start_manager  Type    gt  ok    error  Reason   Types     78   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmp    Type   start_type      The SNMP application consists of several entities  of which the manager is one  This function starts the manager entity  of the application     Note that the only way to actually start the manager in this way is to add the manager related config after  starting the application  e g it cannot be part of the normal application config  sys config   This is done by calling   application set_env snmp  manager  Conf      The default value for Type is normal     date_and time     gt  DateAndTime  Types   DateAndTime    int       Returns current date and time as the data type DateAndTime  as specified in RFC1903  This is an OCTET STRING     date_and time _to_universal time _dst  DateAndTime    gt   utc           Types   DateAndTime    int     utc          Mo D    H M S      Converts a DateAndTime list to a list of possible universal time s   The universal time value on the same format as  defined in calendar 3         date_and_time_to_string DateAndTime    gt  string    date_and_time_to_string DateAndTime  Validate    gt  string         Types   DateAndTime    int     Validate   fun  Kind  Data    gt  boolean     Converts a DateAndTi
154. ids  Expire     gt   ok  ReqId     error  Reason     async_get_bulk UserId  TargetName  NonRep  MaxRep  ContextName  Oids  Expire   ExtraInfo    gt   ok  ReqId     error  Reason     Types   UserId   term    TargetName   target_name     NonRep   integer     MaxRep   integer     ContextName   string    Oids    oid     Expire   integer     ExtraInfo   term    ReqId   integer     Reason   term         Asynchronous get     bulk request  See RFC1905      The reply will be delivered to the user through a call to the snmpm_user callback function handle_pdu        The Expire time indicates for how long the request is valid  after which the manager is free to delete it         Ext ralInfo is an opaque data structure passed on to the net if process  The net if process included in this application  makes  with one exception  no use of this info  so the only use for it in such a configuration  when using the built in  net if  would be tracing  The one usage exception is  Any tuple with snmpm_ext ra_info_tag as its first element  is reserved for internal use        cancel_async_request  UserId  ReqId    gt  ok    error  Reason   Types    UserId   term     ReqId   term     Reason   term      Cancel a previous asynchronous request     190   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpm       log_to_txt LogDir  Mibs   log_to_txt LogDir  Mibs  OutFile    gt  ok    error  Reason   log_to_txt LogDir  Mibs  OutFile  LogName    gt  ok    error  Reason   log_
155. ifies that two variables should be sent along with the  myName and fIndex  fIndex is a table column  so we must provide its value and the index for the row in       the call to snmpa  send_trap 4  In the example below  we assume that the row in question is indexed by 2  the  row with f Index 2      we use a simple Erlang SNMP manager  which can receive traps     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    45    1 9 Manager Implementation Example        MANAGER   1 gt  snmp_test_mgr start_link   agent   dront ericsson se     community   public       does not have write access  1 gt  mibs    EX1 MIB    STANDARD MIB         fok   lt 0 100 0 gt    2 gt  snmp_test_mgr s    myName 0    Klas       ok  Fs Core IPUS  Received a trap   Generic  4    authenticationFailure  Enterprise   iso 2 3   Specific  A  Agence addr M2r 2 22   TimeStamp  42993  ss   AGENT   3 gt  snmpa send_trap snmp_master_agent  fTrap   standard trap     fIndex   2  2       MANAGER   a  Fs Coe IPS  Received a trap   Generic  6  Enterprise   examplel   Specifica   Agence addr 2er T2 22   TimeStamp  69649   myName  0     Martin    fIndex  2  2  Ss    1 9 Manager Implementation Example   This Implementation Example section describes how a simple manager can be implemented with the SNMP  Development Toolkit    The example shown  ex2  can be found in the toolkit distribution    This example has two functions     e A simple example of how to use the manager component of the SNMP Develo
156. ile     See Community for more info     read_community config Dir    gt  Conf  Types   Dir   string    Conf    community entry       Read the current agent community config file   Dir is the path to the directory where to store the config file     See Communities for more info     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    115    snmpa_conf       target_addr_entry Name  Ip  TagList  ParamsName  EngineId    gt   target_addr_entry       target_addr_entry Name  Ip  TagList  ParamsName  EngineId  TMask    gt   target_addr_entry       target_addr_entry Name  Ip  Udp  TagList  ParamsName  EngineId  TMask   MaxMessageSize    gt  target_addr_entry       target_addr_entry Name  Ip  Udp  Timeout  RetryCount  TagList  ParamsName   EngineId  TMask  MaxMessageSize    gt  target_addr_entry       target_addr_entry Name  Domain  Ip  Udp  Timeout  RetryCount  TagList   ParamsName  EngineId  TMask  MaxMessageSize    gt  target_addr_entry       Types   Name   string    Domain   transportDomain     Ip   transportAddressIPv4     transportAddressIPv6    depends on Domain   Udp   integer     Timeout   integer     RetryCount   integer     TagList   string    ParamsName   string    EnginelId   string    TMask   transportAddressMask    depends on Domain   MaxMessageSize   integer     target_addr_entry     term      Create an entry for the agent target_addr config file  target_addr conf   Name must be a non empty string     target_addr_entry 5 translates to the follo
157. implementing the snmpm_user behaviour  Register the manager entity   user  responsible for specific agent s      Module is the callback module  snampm_user behaviour  which will be called whenever something happens  detected  agent  incoming reply or incoming trap notification   Note that this could have already been done as a consequence  of the node config   see users conf      The argument DefaultAgentConfig is used as default values when this user register agents     The type of Val depends on Item     174   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpm       community   string     timeout   integer     snmp_timer    max_message_size   integer     version   vl   v2   v3   sec_model   any   vl   v2c   usm  sec_name   string      sec_level   noAuthNoPriv   authNoPriv   authPriv    register_user_monitor Id  Module  Data    gt  ok    error  Reason     register_user_monitor Id  Module  Data  DefaultAgentConfig    gt  ok    error   Reason     Types   Id   term    Module   snmpm_user     DefaultAgentConfig    default_agent_config      default_agent_config      Item  Val     Item   community   timeout   max_message_size   version   sec_model    sec_name   sec_level    Val   term     Data   term     Reason   term     snmpm_user     Module implementing the snmpm_user behaviour    Register the monitored manager entity   user  responsible for specific agent s      The process performing the registration will be monitored  Which means that if th
158. including the path to where the compiled mib  is found  For example     Dir   code priv_dir my_app       mibs     snmpm  load_mib Dir     MY MIB       unload _mib Mib    gt  ok    error  Reason   Types    Mib   MibName   MibName   string     Reason   term      Unload a Mib from the manager  The MibName is the name of the Mib  including the path to where the compiled  mib is found  For example     Dir   code priv_dir my_app       mibs     snmpm unload_mib Dir     MY MIB       192   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpm    which_mibs     gt  Mibs   Types   Mibs     MibName  MibFile    MibName   atom    MibFile   string      Get a list of all the mib s loaded into the manager     name_to_oid Name    gt   ok  Oids     error  Reason   Types    Name   atom     Oids    oid       Transform a alias name to its oid     Note that an alias name is only unique within the mib  so when loading several mib s into a manager  there might be  several instances of the same aliasname     oid_to_name Oid    gt   ok  Name     error  Reason   Types    Oid   oid     Name   atom     Reason   term      Transform a oid to its aliasname     oid_to_type Oid    gt   ok  Type     error  Reason   Types    Oid   oid     Type   atom     Reason   term      Retreive the type  asn1 bertype  of an oid     backup  BackupDir    gt  ok    error  Reason   Types   BackupDir   string    Backup persistent data handled by the manager   BackupDir cannot be identical to DbDir 
159. inds isa list of Varbind  where each Varbind is one of         Variable  Value   where Variable is the symbolic name of a scalar variable referred to in the  notification specification         Column  RowIndex  Value   where Column is the symbolic name of a column variable  RowIndex  is a list of indices for the specified element  If this is the case  the OBJECT IDENTIFIER sent in the trap is the    14   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     1 2 Agent Functional Description       RowIndex appended to the OBJECT IDENTIFIER for the table column  This is the OBJECT IDENTIFIER  which specifies the element        OID  Value   where OID is the OBJECT IDENTIFIER for an instance of an object  scalar variable or  column variable     For example  to specify that sysLocation should have the value  upstairs  in the notification  we could use  one of        sysLocation   upstairs   or        1 3 6 1 2 1 1 6 0    u  upstairs   y    It is also possible to specify names and values for extra variables that should be sent in the notification  but were not  defined in the notification specification     The notification is sent to all management targets found in the tables  However  make sure that each manager has  access to the variables in the notification  If a variable is outside a manager s MIB view  this manager will not receive  the notification     Note     By definition  it is not possible to send objects with ACCESS not accessible in notificati
160. ing is printed  The higher the verbosity  the more is printed  Default value is always silence     3 gt  snmpa verbosity master_agent  log    ok    Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    31    1 5       Sys  ok  6 gt     kk    Ei    kk    kk    kk    kk    kk    Running the application    snmpa verbosity  net_if  log      Example of output from the agent when a get next request arrives   SNMP NET IF LOG   gor packet Crom Tmi I2 25000    SNMP NET IF MPD LOG   V onmmuniey a MEES    SNMP NET IF LOG    got pdu from  147 12 12 12  5000  pdu   get next request    62612569  n0oErr  r  0   Kvacbina rR NUE ANO al       SNMP MASTER AGENT LOG   apply  snmp_generic variable_func   get   sysDescr persistent      SNMP MASTER AGENT LOG   returned   value   Erlang SNMP agent      SNMP NET IF LOG   reply pdu   pdu  get response  62612569 noError 0   i fwaciousacl  Il 36 lr 2  1 1  1 01   MOXIE STRING    Erlang SNMP agent  1       SNMP NET IF INFO  time in agent  19711 mysec    Other useful function s  for debugging the agent are     snm                Another usefull way to debug the agent is to pretty print the content of all the tables and or variables handled directly    pa info 0 1   info is used to retrieve a list of miscellaneous agent information   pa which_aliasnames 0   which_aliasnames is used to retrieve a list of all alias names known to the agent   pa which_tables 0    which_tables is used to retrieve a list of all  MIB  tables known to the
161. inue and find more and more complex situations and construct an  N phase set mechanism  This toolkit only contains a trivial mechanism     The most common application of transaction mechanisms is to keep row operations together  Since our agent sorts  row operations  the mechanism implemented in combination with the RowStatus  particularly  createAndWait  value   solve most problems elegantly     1 11 Definition of Instrumentation Functions    The section Definition of Instrumentation Functions describes the user defined functions  which the agent calls at  different times     1 11 1 Variable Instrumentation    For scalar variables  a function f  Operation       must be defined   The Operation can be new  delete  get  is_set_ok  set  or undo     In case of an error  all instrumentation functions may return either an SNMPv1 or an SNMPv2 error code  If it returns  an SNMPv 2 code  it is converted into an SNMPv1 code before it is sent to a SNMPv1 manager  It is recommended  to use the SNMPv2 error codes for all instrumentation functions  as these provide more details  See Appendix A for  a description of error code conversions     f new    ExtraArgs         The function f  new    ExtraArgs   is called for each variable in the MIB when the MIB is loaded into the  agent  This makes it possible to perform necessary initialization     This function is optional  The return value is discarded     f delete    ExtraArgs      The function f  delete    ExtraArgs   is called for each objec
162. ion     trap      Data   term      Handle a notification to be sent  The filter can either accept the notification as is  return send  modify the notification   return  send  NewNotif  or suppress the notification  return dont_send     Data is supplied at filter registration time  see register_notification_filter     140   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpa_supervisor    snmpa_ supervisor    Erlang module    This is the top supervisor for the agent part of the SNMP application  There is always one supervisor at each node  with an SNMP agent  master agent or sub agent      Exports    start_sub_sup Opts    gt   ok  pid      f error   already started  pid         error  Reason     Types    Opts    opt      opt      db_dir  string       Starts a supervisor for the SNMP agent system without a master agent  The supervisor starts all involved SNMP  processes  but no agent processes  Sub agents should be started by calling start_sub_agent 3     db_dir is mandatory     See configuration parameters for a description of the options     start_master_sup Opts    gt   ok  pid       error   already started  pid       error  Reason     Types   Opts    opt     opt      db_dir  string       config  ConfOpts       ConfOpts    conf_opts      conf_opts      dir  string       Reason   term      Starts a supervisor for the SNMP agent system  The supervisor starts all involved SNMP processes  including the  master agent  Sub agents should be started
163. ions in agent_config_opt      agent_config_dir   dir    lt mandatory gt    Defines where the SNMP agent configuration files are stored   force_load     bool    lt optional gt     If t rue the configuration files are re read during start up  and the contents of the configuration database ignored   Thus  if t rue  changes to the configuration database are lost upon reboot of the agent     Default is false   Manager specific config options and types     server      server_opt     lt optional gt        server_opt      timeout  server_timeout       verbosity  verbosity       Specifies the options for the manager server process   Default is silence    server_timeout     integer    lt optional gt     Asynchroneous request cleanup time  For every requests  some info is stored internally  in order to be able to  deliver the reply  when it arrives  to the proper destination  If the reply arrives  this info will be deleted  But if  there is no reply  in time   the info has to be deleted after the best before time has been passed  This cleanup will  be performed at regular intervals  defined by the server_timeout    time  The information will have an best  before time  defined by the Expire time given when calling the request function  see async_get  async_get_next  and async_set         Time in milli seconds     Default is 30000     manager_config      manager_config_opt     lt mandatory gt   manager_config_opt       dir  manager_config_dir        db_dir   manager_db_dir        db_init_
164. ions in symbolic_store_opt      target_cache      target_cache_opt       target_cache_opt      verbosity  verbosity       Defines options specific for the SNMP agent target cache   For defaults see the options in target_cache_opt      agent_config      agent_config_opt     lt mandatory gt     agent_config_opt      dir  agent_config_dir       force_load  force_load         verbosity  verbosity         Defines specific config related options for the SNMP agent    For defaults see the options in agent_config_opt      agent_config_dir   dir    lt mandatory gt    Defines where the SNMP agent configuration files are stored   force_load     bool    lt optional gt     If t rue the configuration files are re read during start up  and the contents of the configuration database ignored   Thus  if t rue  changes to the configuration database are lost upon reboot of the agent     Default is false     Manager specific config options and types        server      server_opt     lt optional gt   server_opt      timeout  server_timeout       verbosity  verbosity         Specifies the options for the manager server process     24   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     1 5 Running the application       Default is silence   server_timeout     integer    lt optional gt     Asynchroneous request cleanup time  For every requests  some info is stored internally  in order to be able to  deliver the reply  when it arrives  to the proper destination  If the rep
165. iption  verbosity  imports and module_identity have to be specified to erlc  using the syntax  term  See erlc  1  for details     is_consistent  Mibs    gt  ok    error  Reason   Types    Mibs    MibName    MibName   string      Checks for multiple usage of object identifiers and traps between MIBs     mib_to_hrl MibName    gt  ok    error  Reason   Types   MibName   string      Generates a  hr1 file with definitions of Erlang constants for the objects in the MIB  The  hrl file is called   lt MibName gt  hr1  The MIB must be compiled  and present in the current directory     The mib_to_hrl generator can be invoked from the OS command line by using the command erlc  erlc  recognizes the extension   bin  and invokes this function for files with that extension     See Also  erlc 1     170   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpc command     snmpc commana     Command    The snmpc program provides a way to run the SNMP MIB compiler of the Erlang system     Exports    snmpc  options  file mib   file bin  snmpc compile a SNMP MIB file  see compile 1 2 for more info     It can also be used to generate a header file   hrl  with definitions of Erlang constants for the objects in the MIB  see  mib_to_hrl 1     Compiler options  The following options are supported  note that most of these relate to the compilation of the MIB file      help  Prints help info     version  Prints application and mib format version     verbosity verbosity  Print
166. is a new file which is called  lt mibname gt  bin     The MIB compiler understands both SMIv1 and SMIv2 MIBs  It uses the MODULE IDENTITY statement to  determinate if the MIB is written in SMI version 1 or 2     1 4 2 Importing MIBs    The compiler handles the IMPORT statement  It is important to import the compiled file and not the ASN 1  source   file  A MIB must be recompiled to make changes visible to other MIBs importing it     The compiled files of the imported MIBs must be present in the current directory  or a directory in the current path   The path is supplied with the  i  Path  option  for example     snmpc compile   MY MIB    Haor     friend _mibs        standard_mibs           It is also possible to import MIBs from OTP applications in an  include_1lib  like fashion with the i1 option   Example     snmpc compile   MY MIB     4a1      snmp oriv mibs     myapo priv mibs           Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    17    1 4 The MIB Compiler    finds the latest version of the snmp and myapp applications in the OTP system and uses the expanded paths as include  paths     Note that an SMIv2 MIB can import an SMIv1 MIB and vice versa     The following MIBs are built ins of the Erlang SNMP compiler  SNMPv2 SMI  RFC 1215  RFC 1212  SNMPv2   TC  SNMPv2 CONF  and RFC1155 SMI  They cannot therefore be compiled separately     1 4 3 MIB Consistency Checking    When an MIB is compiled  the compiler detects if several managed objects 
167. itions     desc  The DESCRIPTION field will be included     ref  The REFERENCE field will be included     imp  The IMPORTS field will be included     mi  The MODULE IDENTITY field will be included     mc  The MODULE COMPLIANCE field will be included     ac  The AGENT CAPABILITIES field will be included     mod module  The module which implements all the instrumentation functions   The name of all instrumentation functions must be the same as the corresponding managed object it implements     nd    The default instrumentation functions will not be used if a managed object have no instrumentation function   Instead this will be reported as an error  and the compilation aborts       rmac    This option  if present  specifies that the row name assign check shall not be done strictly according to the SMI   which allows only the value 1      With this option  all values greater than zero is allowed   gt   1   This means that the error will be converted to  a warning     By default it is not included  but if this option is present it will be     SEE ALSO    erlc 1   compile 3   snmpc 3     172   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpm       snmpm    Erlang module    The module snmpm contains interface functions to the SNMP manager     Common Data Types    The following data types are used in the functions below           oid      byte      The oid   type is used to represent an ASN 1 OBJECT IDENTIFIER  snmp_reply      error_status    err
168. its for acknowledgments from the managers  Receiver can have three values     no_receiver   No information is delivered    notification_delivery_info     The information is delivered via a function call according to this data   See the DATA TYPES section above for details     Tag  Recv    The information is delivered either via messages or via a function call according to the value  of Recv        If Receiver has the value  Tag  Recv   the delivery is done according to Recv     pid     atom     The info will be delivered in the following messages       snmp_targets  Tag  Addresses     This inform the user which target addresses the notification was sent to     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    107    snmpa           snmp_notification  Tag   got_response  Address       This informs the user that this target address acknowledged the notification         snmp_notification  Tag   no_response  Address    This informs the user that this target address did not acknowledge notification     The notification is sent as an Inform Request to each target address in Addresses and if there are no targets for  which an Inform Request is sent  Addresses is the empty list        The receiver will first be sent the snmp_targets message  and then for each address in Addresses list   one of the two snmp_notification messages         Mod  Func  Args    The info will be delivered via the function call   Mod Func  Msg   Args    where Msg has the same cont
169. ject instance matches the corresponding sub identifier of the sub   tree whenever the corresponding bit of the associated mask is 1  0 is a wild card that matches anything     Membership of an object instance in an MIB view is determined by the following algorithm    e Ifan MIB object instance does not belong to any of the relevant sub trees  then the instance is not in the MIB  view    e Ifan MIB object instance belongs to exactly one sub tree  then the instance is included in  or excluded from  the  relevant MIB view according to the type of that entry    e Ifan MIB object instance belongs to more than one sub tree  then the sub tree which comprises the greatest  number of sub identifiers  and is the lexicographically greatest  is used     Note     If the OBJECT IDENTIFIER is longer than an OBJECT IDENTIFIER of an object type in the MIB  it refers to  object instances  Because of this  it is possible to control whether or not particular rows in a table shall be visible     SNMP COMMUNITY MIB    The SNMP COMMUNITY MIB defines managed objects that is used for coexistence between SNMPv1 and  SNMPv2c with SNMPv3  Specifically  it contains objects for mapping between community strings and version   independent SNMP message parameters  In addition  this MIB provides a mechanism for performing source address  validation on incoming requests  and for selecting community strings based on target addresses for outgoing  notifications     All tables in this MIB have a column of type St
170. k Management Protocol version 2  SNMPv2c   e the basics of the Simple Network Management Protocol version 3  SNMPv3    e the knowledge of defining MIBs using SMIv1 and SMIv2    e familiarity with the Erlang system and Erlang programming    The tool requires Erlang release 4 7 or later     1 1 3 Definitions  The following definitions are used in the SNMP User s Guide     2   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     1 1 SNMP Introduction    MIB  The conceptual repository for management information is called the Management Information Base  MIB    It does not hold any data  merely a definition of what data can be accessed  A definition of an MIB is a  description of a collection of managed objects    SMI  The MIB is specified in an adapted subset of the Abstract Syntax Notation One  ASN 1  language  This  adapted subset is called the Structure of Management Information  SMI     ASN 1  ASN 1 is used in two different ways in SNMP  The SMI is based on ASN 1  and the messages in the protocol  are defined by using ASN 1    Managed object    A resource to be managed is represented by a managed object  which resides in the MIB  In an SNMP MIB  the  managed objects are either     e scalar variables  which have only one instance per context  They have single values  not multiple values  like vectors or structures   e tables  which can grow dynamically   e a table element  which is a special type of scalar variable   Operations  SNMP relies on the th
171. k that row does not exist AND  that all columns are given values      Otherwise  error  for simplicity    Otherwise  row is modified  check that row exists     AP A AP W dP AP W al   AP W AP AP oP ol     o    friends_table is_set_ok  RowIndex  Cols    gt   RowExists      42   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     case get_row RowIndex  of   ok  _Row    gt  true           gt  false  end   case is_row_status_col_changed Cols  of   true   destroy  when RowExists    true   gt   MOH an Oa op    true   createAndGo  when RowExists    false     length  Cols     3   gt   inemiaiaora   lls  eruen a   inconsistentValue   status_col  false when RowExists    true   gt   MOH aT Ona ON     S             gt    Col  _NewVal    _Cols    Cols    inconsistentName  Col   end   friends_table set  RowIndex  Cols    gt        case is_row_status_col_changed Cols  of   true   destroy   gt   exl_server    self     delete_row  RowIndex      true   createAndGo    gt   NewRow   make_row RowIndex  Cols    exl_server    self     add_row  NewRow     false   gt    ok  Row    get_row RowIndex    NewRow   merge_rows  Row  Cols    exl_server    self     delete_row  RowIndex     exl_server    self     add_row  NewRow          end    noErro  r  9      ole    Make a list of  value  Val  of the Row and Cols list     A A o  ol     ole    get cols  Col   Cols   em    gt      value  element  Col  Row     get_cols Cols  Row      get_cols     _Row    gt    Ls    ole    As get_col
172. le     Dir is the path to the directory where to store the config file     112   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpa_conf       See Agent Information for more info     read_agent_config Dir    gt  Conf  Types   Dir   string    Conf    agent_entry      Read the current agent config file   Dir is the path to the directory where to store the config file     See Agent Information for more info     standard_entry Tag  Val    gt  standard_entry     Types     Tag   sysDescr   sysObjectID   sysContact   sysName   sysLocation    sysServices   snmpEnableAuthenTraps    Val   term    standard_entry     term      Create an entry for the agent standard config file  standard conf     The type of Val depends on the value of Tag  see System Information for more info     write_standard_config Dir  Conf    gt  ok  write_standard_config Dir  Hdr  Conf    gt  ok    Types   Dir   string    Hdr   string      Conf    standard_entry      Write the agent standard config to the agent standard config file   Dir is the path to the directory where to store the config file   Hdr is an optional file header  note that this text is written to the file as is      See System Information for more info     append _standard_config Dir  Conf    gt  ok  Types   Dir   string    Conf    standard_entry      Append the standard config to the current agent standard config file   Dir is the path to the directory where to store the config file     See System Information for
173. le and one persistent  The volatile database is implemented  with ets  The persistent database is implemented with dets     There is a scaling problem with this database   e Insertions and deletions are inefficient for large tables   This problem is best solved by using Mnesia instead     The following functions describe the interface to snmpa_local_db  Each function has a Mnesia equivalent  The  argument NameDb is a tuple  Name  Db  where Name is the symbolic name of the managed object  as defined  in the MIB   and Db is either volatile or persistent  mnesia is not possible since all these functions are  snmpa_local_db specific        Common Data Types   In the functions defined below  the following types are used       NameDb    Name  Db    e Name   atom    Db   volatile   persistent   e RowIndex    int         Cols    Col      Col  Value    Col   int    Value   term      where RowIndex denotes the last part of the OID  that specifies the index of the row in the table  Cols is a list of  column numbers in case of a get operation  and a list of column numbers and values in case of a set operation     Exports    dump     gt  ok    error  Reason   Types   Reason   term      This function can be used to manually dump the database to file     match  NameDb  Pattern     Performs an ets dets matching on the table  See Stdlib documentation  module ets  for a description of Pattern and  the return values     print     print  TableName   print  TableName  Db   Types    TableName   at
174. le_funct    snmp_generic variable_func   4                                             snmp_generic   Support for get   next       RowStatus operations  4                        4                      snmpa_local_db   Mnesia   Database  4                4         4                      dets   ees       persistent     4                4              Each function takes the argument NameDb  which is a tuple  Name  Db   to identify which database the functions  should use  Name is the symbolic name of the managed object as defined in the MIB  and Db is either volatile   persistent  or mnesia  If it is mnesia  all variables are stored in the Mnesia table snmp_variables which  must be a table with two attributes  not a Mnesia SNMP table   The SNMP tables are stored in Mnesia tables with  the same names as the SNMP tables  All functions assume that a Mnesia table exists with the correct name and  attributes  It is the programmer s responsibility to ensure this  Specifically  if variables are stored in Mnesia  the table  snmp_variables must be created by the programmer  The record definition for this table is defined in the file    snmp include snmp_types hrl     If an instrumentation function in the association file for a variable myVar does not have a name when compiling an  MIB  the compiler generates an entry      myVar   snmp_generic  variable_func    myVar  Db        And for a table      myTable   snmp_generic  table_func    myTable  Db        146   Ericsson AB  All Rights Res
175. led from the supervisor at system start up     Inserts all data in the configuration files into the database and destroys all old rows with StorageType volatile   The rows created from the configuration file will have StorageType nonVolatile     All snmp counters are set to zero     If an error is found in the configuration file  it is reported using the function config_err 2 of the error report  module  and the function fails with the reason configuration_error     ConfDir is a string which points to the directory where the configuration files are found     The configuration file read is  usm  conf     reconfigure  ConfDir    gt  void    Types   ConfDir   string      Inserts all data in the configuration files into the database and destroys all old data  including the rows with StorageType  nonVolatile  The rows created from the configuration file will have StorageType nonVolatile     Thus  the data in the SNMP USER BASED SM MIB  after this function has been called  is the data from the  configuration files     All snmp counters are set to zero     If an error is found in the configuration file  it is reported using the function config_err 2 of the error report  module  and the function fails with the reason configuration_error     ConfDir is a string which points to the directory where the configuration files are found     The configuration file read is  usm  conf     add_user EngineID  Name  SecName  Clone  AuthP  AuthKeyC  OwnAuthKeyC  PrivP   PrivKeyC  OwnPrivKeyC  Publi
176. ler  which understands SMIv1  RFC1155  1212  and 1215  and SMIv2  RFC1902  1903  and  1904      The SNMP development tool provides an environment for rapid agent manager prototyping and construction  With  the following information provided  this tool is used to set up a running multi lingual SNMP agent manager     e a description of a Management Information Base  MIB  in Abstract Syntax Notation One  ASN 1     e instrumentation functions for the managed objects in the MIB  written in Erlang     The advantage of using an extensible  agent manager  toolkit is to remove details such as type checking  access rights   Protocol Data Unit  PDU   encoding  decoding  and trap distribution from the programmer  who only has to write  the instrumentation functions  which implement the MIBs  The get   next function only has to be implemented for  tables  and not for every variable in the global naming tree  This information can be deduced from the ASN 1 file     1 1 1 Scope and Purpose    This manual describes the SNMP development tool  as a component of the Erlang Open Telecom Platform  development environment  It is assumed that the reader is familiar with the Erlang Development Environment  which  is described in a separate User s Guide     1 1 2 Prerequisites    The following prerequisites is required for understanding the material in the SNMP User s Guide     e the basics of the Simple Network Management Protocol version 1  SNMPv1    e the basics of the community based Simple Networ
177. lue for this column  when the conceptual row is to be created       the exception    noSuchObject  is returned  indicating  that the agent does not implement the object type  associated with this column or that there is no  conceptual row for which this column would be  accessible in the MIB view used by the retrieval  As  such  the management station cannot issue any  management protocol set operations to create an  instance of this column     Once the column requirements have been determined  a  management protocol set operation is accordingly issued   This operation also sets the new instance of the status  column to    createAndGo      When the agent processes the set operation  it verifies that  it has sufficient information to make the conceptual row  available for use by the managed device  The information  available to the agent is provided by two sources  the  management protocol set operation which creates the  conceptual row  and  implementation specific defaults  supplied by the agent  note that an agent must provide  implementation specific defaults for at least those objects  which it implements as read only   If there is sufficient  information available  then the conceptual row is created  a     noError  response is returned  the status column is set to     active   and no further interactions are necessary  i e    interactions 3 and 4 are skipped   If there is insufficient  information  then the conceptual row is not created  and the  set operation fails with
178. ly arrives  this info will be deleted  But if  there is no reply  in time   the info has to be deleted after the best before time has been passed  This cleanup will  be performed at regular intervals  defined by the server_timeout    time  The information will have a best  before time  defined by the Expire time given when calling the request function  see async_get  async_get_next  and async_set         Time in milli seconds     Default is 30000     manager_config      manager_config_opt     lt mandatory gt   manager_config_opt       dir  manager_config_dir        db_dir   manager_db_dir        db_init_error  db_init_error        repair   manager_repair        auto_save  manager_auto_save        verbosity     verbosity       Defines specific config related options for the SNMP manager   For defaults see the options in manager_config_opt      manager_config_dir   dir    lt mandatory gt   Defines where the SNMP manager configuration files are stored   manager_db_dir   dir    lt mandatory gt   Defines where the SNMP manager store persistent data   manager_repair     false   true   force  lt optional gt   Defines the repair option for the persistent database  if and how the table is repaired when opened    Default is t rue   manager_auto_save     integer     infinity  lt optional gt   The auto save interval  The table is flushed to disk whenever not accessed for this amount of time   Default is 5000   manager_irb     auto   user    user  integer     lt optional gt     This optio
179. ly encrypted scopedPDU     enc_pdu Pd    gt   byte     Types   Pdu    pdu  Encodes an SNMP Pdu into a list of bytes     enc_scoped_pdu ScopedPdu    gt   byte      Types   ScopedPdu    scoped_pdu  Encodes an SNMP ScopedPdu into a list of bytes  which can be encrypted  and after encryption  encoded with a call    to enc_encrypted_scoped_pdu 1  or it can be used as the data field in a message record  which then can  be encoded with enc_message_only 1     enc_usm_security parameters  UsmSecParams    gt   byte     Types   UsmSecParams    usmSecurityParameters    Encodes SNMP UsmSecurityParameters into a list of bytes     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    157    snmp_standard_mib    snmp_standard_mib    Erlang module    The module snmp_standard_mib implements the instrumentation functions for the STANDARD MIB and  SNMPv2 MIB  and functions for configuring the database     The configuration files are described in the SNMP User s Manual     Exports    configure  ConfDir    gt  void    Types   ConfDir   string    This function is called from the supervisor at system start up     Inserts all data in the configuration files into the database and destroys all old rows with StorageType volatile   The rows created from the configuration file will have StorageType nonVolatile     All snmp counters are set to zero     If an error is found in the configuration file  it is reported using the function config_err 2 of the error report  module  and the
180. m config file   Dir is the path to the directory where to store the config file     See Security data for USM for more info     120   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     read_usm_config Dir    gt  Conf  Types    Dir   string     Conf    usm entry      Read the current agent usm config file     Dir is the path to the directory where to store the config file     See Security data for USM for more info     notify_entry  Name  Tag  Type    gt  notify entry     Types    Name   string      Tag   string     Type   trap   inform   community_entry     term    Create an entry for the agent notify config file  noti fy  conf     Name must be a non empty string     See Notify Definitions for more info     write_notify config Dir  Conf    gt  ok  write_notify config Dir  Hdr  Conf    gt  ok    Types   Dir   string    Hdr   string      Conf    notify _entry     Write the agent notify config to the agent notify config file     Dir is the path to the directory where to store the config file     Hdr is an optional file header  note that this text is written to the file as is      See Notify Definitions for more info     append _notify config Dir  Conf    gt  ok  Types   Dir   string    Conf    notify entry      Append the notify config to the current agent notify config file     Dir is the path to the directory where to store the config file     See Notify Definitions for more info     read_notify config Dir    gt  Conf  Types    Dir   string     Con
181. maining      error  Reason     sync_set UserId  TargetName  ContextName  VarsAndVals    gt   ok  SnmpReply   Remaining     error  Reason     sync_set UserId  TargetName  VarsAndVals  Timeout    gt   ok  SnmpReply   Remaining     error  Reason     sync_set UserId  TargetName  ContextName  VarsAndVals  Timeout    gt   ok     SnmpReply  Remaining     error  Reason    sync_set UserId  TargetName  ContextName  VarsAndVals  Timeout  ExtraInfo    gt    ok  SnmpReply  Remaining     error  Reason    Types     UserId   term     TargetName   target_name     ContextName   string    VarsAndVals   vars_and_vals      Timeout   integer       Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    185    snmpm       ExtraInfo   term     SnmpReply   snmp_reply      Remaining   integer      Reason    send_failed  ReqId  ActualReason     invalid_sec_info  SecInfo     SnmpInfo    term    ActualReason   term      Synchronous set request   Remaining time of the given or default timeout time     When Reason is  send_failed       it means that the net_if process failed to send the message  This could happen because  of any number of reasons  i e  encoding error  R is the actual reason in this case     When var_and_val   is  oid    value     the manager makes an educated guess based on the loaded mibs        Ext ralInfo is an opaque data structure passed on to the net if process  The net if process included in this application  makes  with one exception  no use of this info  so 
182. manager wishes to use SNMPv3 when communicating with agents  It is also possible to add usm data in run   time by calling the register_usm_user     The corresponding table is usmUserTab1le in the SNMP USER BASED SM MIB   Each entry is a term      EngineID  UserName  AuthP  AuthKey  PrivP  PrivKey     EngineID  UserName  SecName  AuthP  AuthKey  PrivP  PrivKey            The first case is when we have the identity function  SecName   UserName         e EnginelID isa string        e UserName is a string   e SecName is a string   e AuthPisausmNoAuthProtocol  usmHMACMD5AuthProtocol or usmHMACSHAAuthProtocol     38   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     1 8 Agent Implementation Example       e AuthKey is a list  of integer   This    is the User s secret localized authentication key  It is not visible    in the MIB  The length of this key needs to be 16 if usmHMACMD5AuthProtocol is used and 20 if    usmHMACSHAAuthProtocol is used     e PrivP isausmNoPrivProtocol  usmDESPrivProtocol or usmAesCfb128Protocol     e PrivKey isa list  of integer   This is the  length of this key needs to be 16 if usmD     User s secret localized encryption key  It is not visible in the MIB  The  ESPrivProtocol orusmAesCfb128Protocol is used        1 8 Agent Implementation Example    This Implementation Example section describes how an MIB can be implemented with the SNMP Development    Toolkit     The example shown can be found in the toolkit distribution     Th
183. manent for the agent and transient for the manager   db_init_error     terminate   create    Defines what to do if the agent is unable to open an existing database file  terminate means that the agent   manager will terminate and create means that the agent manager will remove the faulty file s  and create new  ones     26   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     1 5 Running the application       Default is terminate   priority     atom    lt optional gt   Defines the Erlang priority for all SNMP processes   Default is normal   versions      version     lt optional gt   version     vl   v2   v3  Which SNMP versions shall be accepted used   Default is  v1  v2  v3    verbosity      silence   info   log   debug   trace  lt optional gt   Verbosity for a SNMP process  This specifies now much debug info is printed   Default is silence   bind_to     bool    lt optional gt   If t rue  net_if binds to the IP address  If false  net_if listens on any IP address on the host where it is running   Default is false   no_reuse     bool    lt optional gt     If true  net_if does not specify that the IP and port address should be reusable  If false  the address is set  to reusable     Default is false   recbuf     integer    lt optional gt   Receive buffer size   Default value is defined by gen_udp   sndbuf     integer    lt optional gt   Send buffer size     Default value is defined by gen_udp        note_store      note_store_opt     lt optional gt   
184. me list to a printable string  according to the DISPLAY HINT definition in RFC2579     The validation fun  Validate  allows for a more  flexible  validation of the DateAndTime argument   Whenever the data is found to not follow RFC2579  the fun is called to allow a more  lax  validation  See the  validate_date_and_time 2 function for more info on the Validate fun     date_and_time_to_string2 DateAndTime    gt  string         Types   DateAndTime    int       Converts a DateAndTime list to a printable string  according to the DISPLAY HINT definition in RFC2579  with the  extension that it also allows the values  hours from UTC    14 together with  minutes from UTC    0     local_time_to_date_and_time_dst  Local    gt   DateAndTime   Types    Local     Y Mo D    H M S     DateAndTime    int          Converts a local time value to a list of possible DateAndTime list s   The local time value on the same format as  defined in calendar 3      Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    79    snmp       universal_time_to_date_ and time UTC    gt  DateAndTime       Types   UTC     Y Mo D    H M S    DateAndTime    int       Converts a universal time value to a DateAndTime list  The universal time value on the same format as defined in  calendar 3      validate_date_and_time DateAndTime    gt  bool     validate_date_and_time DateAndTime  Validate    gt  bool     Types    DateAndTime   term     Validate   fun Kind  Data    gt  boolean       Checks if D
185. mmunicate with  agents     It does not really implement any management capabilities by itself  That is up to the user     A user in this context is basically a module implementing the snmpm_user behaviour  A user can issue snmp requests  and receive notification traps     Agents to be accessed by the manager needs to be registered by a user  Once registered  they can be accessed by all  registered users     Notifications traps from an agent is delivered to the user that did the registration   Any message from an agent that is not registered is delivered to the default user     By default  the default user is set to the snmpm_user_default module  which simply sends an info message to the  error_logger  It is however highly recommended that this module be replaced by another that does something useful   see configuration params for more info      When using version 3  then  at least one  usm user has to be registered     Requests can be issued in two different ways  Synchronous  see sync_set  sync_get  sync_get_next and sync_get_bulk   and asynchronous  see async_set  async_get  async_get_next and async_get_bulk   With synchronous the snmp reply  is returned by the function  With asynchronous  the reply will instead be delivered through a call to one of the  handle_pdu callback function defined by the handle_pdu behaviour        1 3 2 Operation  The following steps are needed to get the manager running     e  optional  Implement the default user   e Implement the user s     e C
186. mmunityIndex    gt  community entry       community entry  CommunityIndex  CommunityName  SecName  ContextName   TransportTag    gt  community entry       Types     114   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpa_conf       CommunityIndex   string    CommunityName   string    SecName   string    CtxName   string    TransportTag   string    community _entry     term    Create an entry for the agent community config file  community conf     Communit yIndex must be a non empty string     community_entry   public   translates to the following call  community_entry  CommunityIndex   CommunityIndex   initial                  community_entry  all rights   translates to the following call   community_entry  CommunityIndex  CommunityIndex  CommunityIndex              See Community for more info     write_community config Dir  Conf    gt  ok    write_community config Dir  Hdr  Conf    gt  ok    Types   Dir   string    Hdr   string    Conf    community entry         Write the agent community config to the agent community config file   Dir is the path to the directory where to store the config file   Hdr is an optional file header  note that this text is written to the file as is      See Community for more info     append_community config Dir  Conf    gt  ok  Types   Dir   string    Conf    community entry       Append the community config to the current agent community config file   Dir is the path to the directory where to store the config f
187. more details      There are also some useful functions for encoding and decoding of SNMP messages in the module snmp_pdus     1 13 Definition of Manager Net if    rte  5  t Bytes   52ans Terms y Managert    Figure 13 1  The Purpose of Manager Net if    60   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     1 13 Definition of Manager Net if       The Network Interface  Net if  process delivers SNMP PDUs to the manager server  and receives SNMP PDUs from  the manager server  The most common behaviour of a Net if process is that is receives request PDU from the manager  server  encodes the PDU into bytes and transmits the bytes onto the network to an agent  When the reply from the  agent is received by the Net if process  which it decodes into an SNMP PDU  which it sends to the manager server     However  that simple behaviour can be modified in numerous ways  For example  the Net if process can apply some  kind of encrypting decrypting scheme on the bytes     The snmp application provides two different modules  snmpm_net_if  the default  and snmpm_net_if_mt  both  uses the UDP as the transport protocol  The difference between the two modules is that the latter is  multi threaded    i e  for each message request a new process is created that process the message request and then exits     It is also possible to write your own Net if process  this section describes how to write a Net if processdo that     1 13 1 Mandatory Functions    A Net if process
188. n defines how the manager will handle the sending of response  acknowledgment  to received inform   requests     e auto   The manager will autonomously send response  acknowledgment gt  to inform request messages     e fuser  integer        The manager will send response  acknowledgment  to inform request messages  when the handle_inform function completes  The integer is the time  in milli seconds  that the manager will  consider the stored inform request info valid     e user Sameas  user  integer       except that the default time  15000 milli seconds  is used   See snmpm_network_interface  handle_inform and definition of the manager net if for more info   Default is auto   manager_mibs      string     lt optional gt   Specifies a list of MIBs  including path  and defines which MIBs are initially loaded into the SNMP manager   Default is        Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    25    1 5 Running the application       manager_net_if      manager_net_if_opt     lt optional gt   manager_net_if_opt      module  manager_net_if_module       verbosity   verbosity       options  manager_net_if_options         Defines options specific for the SNMP manager network interface entity     For defaults see the options in manager_net_if_opt        manager_net_if_options      manager_net_if_option     lt optional gt   manager_net_if_option      bind_to  bind_to        sndbuf  sndbuf          recbuf  recbuf         no_reuse  no_reuse       filter
189. n the  undo operation  or made permanent in the set operation     variable_access undo  NewValue    ExtraArgl           48   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     1 10 Instrumentation Functions       For tables     table_access set  RowIndex  Cols    ExtraArgl         Cols isa list of tuples  Column  NewValue      GetNext Operation    The GetNext Operation operation should only be defined for tables since the agent can find the next instance of plain  variables in the MIB and call the instrumentation with the get operation     table_access  get_next  RowIndex  Cols    ExtraArgl           Cols is a list of integers  all greater than or equal to zero  This indicates that the instrumentation should find the  next accessible instance  This function returns the tuple  NextOid  NextValue   or endOfTable  NextOid  should be the lexicographically next accessible instance of a managed object in the table  It should be a list of integers   where the first integer is the column  and the rest of the list is the indices for the next row  If endOfTab1e is returned   the agent continues to search for the next instance among the other variables and tables     RowIndex may be an empty list  an incompletely specified row index  or the index for an unspecified row   This operation is best described with an example   GetNext Example    A table called myTable has five columns  The first two are keys  not accessible   and the table has three rows  The  ins
190. name     atom     Mod   atom     Func   atom     list      notify name     string      Args    context_name     string    varbinds      varbind        varbind      variable    value       column    row_index    value        oid    value         variable     atom    value     term    column     atom    row_index      int     extra_info     term      Send the notification Notification to the management targets defined for notify name  name  in the  snmpNotifyTable in SNMP NOTIFICATION MIB from the specified context     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    105    snmpa       If no name is specified  or if it is      the notification is sent to all management targets     If no context is specified  the default context      is used     The send option receiver specifies where information about delivery of Inform Requests should be sent  The agent  sends Inform Requests and waits for acknowledgments from the management targets  The receiver can have three  values     no_receiver   No information is delivered     notification_delivery_info     The information is delivered via a function call according to this data        See the DATA TYPES section above for details    tag    tag_receiver      The information is delivered either via messages or via a function call  according to the value of tag_receiver        Delivery is done differently depending on the value of tag_receiver           e pid     registered_name     The info will be delivered
191. narios     register _subagent  Agent  SubTreeOid  Subagent    gt  ok    error  Reason   Types    Agent   pid     atom     SubTreeOid   oid     SubAgent   pid      Registers a sub agent under a sub tree of another agent     104   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpa    It is easy to make mistakes when registering sub agents and this activity should be done carefully  For example  a  strange behaviour would result from the following configuration     snmp_agent register_subagent  MAPid   1 2 3 4   SA1    snmp_agent register_subagent  SA1   1 2 3   SA2      SA2 will not get requests starting with object identifier  1  2 3  since SA1 does not     unregister_subagent  Agent  SubagentOidOrPid    gt  ok    ok  SubAgentPid      error  Reason     Types   Agent   pid     atom    SubTreeOidorPid   oid     pid      Unregister a sub agent  If the second argument is a pid  then that sub agent will be unregistered from all trees in Agent     send_notification2  Agent  Notification  SendOpts    gt  void    Types    Agent   pid     atom     Notification   atom     SendOpts    send_option        send_option      receiver  receiver       name  notify _name       context   context_name       varbinds  varbinds       local_engine_id  string        extra  extra_info        receiver     no_receiver    tag    tag_receiver       notification_delivery info      tag     term      tag_receiver     pid     registered_name      Mod  Func  Args   registered_
192. neID  see discovery for more info  and  possible continue with stage 2 of the discovery process        The Ext raInfo argument is passed on from the discovery function        This function may return an updated NewExt raInfo that will be used in subsequent calls to the callback functions   Intended for future use     The purpose of this function is to generate the usm  related security data needed for usm processing in the agent   Specifically  updating the usmUserTable     When an usm_ent ry    tuple  or a list of such tuples  is returned  this data is then added to the usmUserTable  by the  master   agent     When an usm_ent ry    tuple  or a list of such tuples  is returned  this data is then added to the usmUserTable  by the  master   agent     Note     Note that the function does not check if this entry already exists     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    123    snmpa_discovery_handler    Note     Note that this function is executed in the context of the master agent process     124   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpa_error_report       snmpa_error_report    Erlang module    This module defines the behaviour of the agent error reporting  A snmpa_error_report compliant module must  export the following functions     e config_err 2    e  user_err 2    The semantics of them and their exact signatures are explained below     Exports    config_err  Format  Args    gt  void    Type
193. nfiguration_error     ConfDir is a string which points to the directory where the configuration files are found     The configuration file read is  notify conf     reconfigure  ConfDir    gt  void    Types   ConfDir   string      Inserts all data in the configuration files into the database and destroys all old data  including the rows with StorageType  nonVolatile  The rows created from the configuration file will have StorageType nonVolatile     Thus  the data in the SNMP NOTIFICATION MIB  after this function has been called  is from the configuration files     If an error is found in the configuration file  it is reported using the function config_err 2 of the error report  module  and the function fails with reason configuration_error     ConfDir is a string which points to the directory where the configuration files are found     The configuration file read is  notify conf     add_notify Name  Tag  Type    gt  Ret  Types   Name   string    Tag   string    Type   trap   inform  Ret  Key     ok  Key     error  Reason     term     Reason   term      Adds a notify definition to the agent config  Equivalent to one line in the notify conf file     154   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmp_notification_mib    delete _notify  Key    gt  Ret    Types   Key   term    Ret   ok    error  Reason     Reason   term      Delete a notify definition from the agent config     Ericsson AB  All Rights Reserved   Simple Network Management Proto
194. ngineID   string    varbind      Variable  Value     Column  RowIndex  Value     OID  Value     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    109    snmpa    Variable   atom    Column   atom    OID   oid    Value   term    RowIndex    int     Reason   term    Initiate the discovery process with the manager identified by Target Name using the notification Notification     This function is synchronous  which means that it will return when the discovery process has been completed or failed     The DiscoHandler module is used during the discovery process  See discovery handler for more info        The Ext raInfo argument is passed on to the callback functions of the DiscoHandler     Note     If we are not at security level noAuthNoPriv  this could be complicated  since the agent will then continue  with stage 2  before which the usm related updates must be done     Note     The default discovery handler will require additional actions by the caller and the discovery will not work if the  security level is higher then noAuthNoPriv     convert_config OldConfig    gt  AgentConfig  Types    OldConfig   list      AgentConfig   list       This off line utility function can be used to convert the old snmp application config  pre snmp 4 0  to the new snmp  agent config  as of snmp 4 0      For information about the old config  0ldConfig  see the OTP R9C documentation     For information about the current agent config  Agent Config   see either the SNMP ap
195. nique anyway     Two different names cannot define the same OBJECT IDENTIFIER    The type checking in the SEQUENCE construct is non strict  i e  subtypes may be specified   The reason for this  is that some standard MIBs use this    A definition has normally a status field  When the status field has the value deprecated  then the MIB compiler  will ignore this definition  With the MIB compiler option  deprecated  true  the MIB compiler does not  ignore the deprecated definitions    An object has a DESCRIPTIONS field  The descriptions field will not be included in the compiled mib by  default  In order to get the description  the mib must be compiled with the option description        1 5 Running the application    The chapter Running the application describes how the application is configured and started  The topics include     configuration directories and parameters  modifying the configuration files  starting the application  agent and or manager     debugging the application  agent and or manager     Refer also to the chapter s  Definition of Agent Configuration Files and Definition of Manager Configuration Files  which contains more detailed information about the agent and manager configuration files     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    19    1 5 Running the application       1 5 1 Configuring the application  The following two directories must exist in the system to run the agent     e the configuration directory stores all 
196. noHrror see 1 inconsist     inconsistent     or entValue Value  wrongValue    See  inconsistent     inconsist     noError  Value entValue  or  see 2      gt D     gt D    SSSss  inconsistent     inconsist     noError  Value entValue  oe  see 3   gt 6   gt     TESS  noHrror noError noError                noError    1 17 SNMP Appendix B       destroy     gt     gt    A                      4              4           4             4               set any other  see 4  noError  noError  see 5   column to some        value     see 1    gt    p                   4               4            4             4                  1  goto B or C  depending on information available to the  agent      2  if other variable bindings included in the same PDU   provide values for all columns which are missing but  required  then return noError and goto D      3  if other variable bindings included in the same PDU   provide values for all columns which are missing but  required  then return noError and goto C      4  at the discretion of the agent  the return value may be  either     inconsistentName  because the agent does not choose to  create such an instance when the corresponding  RowStatus instance does not exist  or    inconsistentValue  if the supplied value is  inconsistent with the state of some other MIB object s  value  or    noError  because the agent chooses to create the  instance     If noError is returned  then the instance of the status  column must also be created  and the new 
197. nsistent     The main features of SNMPv2 compared to SNMPv1 are     e The get   bulk operation for transferring large amounts of data   e Enhanced error codes     e Amore precise language for MIB specification    The standard documents that define SNMPv2 are incomplete  in the sense that they do not specify how an SNMPv2  message looks like  The message format and security issues are left to a special Administrative Framework  One  such framework is the Community based SNMPv2 Framework  SNMPv2c   which uses the same message format and  framework as SNMPv1  Other experimental frameworks as exist  e g  SNMPv2u and SNMPv2      The SNMPv3 specifications take a modular approach to SNMP  All modules are separated from each other  and can  be extended or replaced individually  Examples of modules are Message definition  Security and Access Control  The  main features of SNMPv3 are     e Encryption and authentication is added    e MIBs for agent configuration are defined    All these specifications are commonly referred to as  SNMPv3   but it is actually only the Message module  which  defines a new message format  and Security module  which takes care of encryption and authentication  that cannot  be used with SNMPv1 or SNMPv2c  In this version of the agent toolkit  all the standard MIBs for agent configuration    are used  This includes MIBs for definition of management targets for notifications  These MIBs are used regardless  of which SNMP version the agent is configured to use  
198. o the SNMP master agent   Note that the following mibs will always be loaded   e version vl  STANDARD MIB    e version v2  SNMP v2    e version v3  SNMPv2  SNMP FRAMEWORK MIB and SNMP   MPD MIB       Default is      mib_storage     ets   f ets  Dir     ets  Dir  Action    dets    dets  Dir      dets  Dir  Action    mnesia    mnesia  Nodes     mnesia  Nodes  Action    lt optional gt     Specifies how info retrieved from the mibs will be stored     If mib_storage is  ets  Dir   the table will also be stored on file  If Dir is default  then db_dir  will be used     If mib_storage is dets orif Dir is default  then db_dir will be used for Dir   If mib_storage is mnesia then erlang  nodes    will be used for Nodes   Default is ets     Dir   default   string   Diris the directory where the files will be stored  If default  then db_dir  will be used        Nodes   visible   connected    node     Nodes   visible is translated to  erlang nodes visible  Nodes   connected is translated to erlang nodes  connected   If  Nodes      then the own node is assumed    Action   clear   keep  Default is keep  Action is used to specify what shall be done if the mnesia     dets table already exist     mib_server      mib_server_opt     lt optional gt   mib_server_opt       mibentry_override  mibentry_override          trapentry_override  trapentry_override       verbosity  verbosity          cache  mibs_cache       Defines options specific for the SNMP agent mib server    For defaults see the option
199. o work  The snmpNotifyName is used as the community string by the agent when  a notification is sent     Notification Sending    The simplest way to send a notification is to call the function snmpa send_notification  Agent   Notification  no_receiver   In this case  the agent performs a get operation to retrieve the object values  that are defined in the notification specification  with the TRAP TYPE or NOTIFICATION TYPE macros   The  notification is sent to all managers defined in the target and notify tables  either unacknowledged as traps  or  acknowledged as inform requests     If the caller of the function wants to know whether or not acknowledgments are received for a certain notification   provided it is sent as an inform   the Receiver parameter can be specified as  Tag  ProcessName   refer  to the Reference Manual  section snmp  module snmp for more details   In this case  the agent send a message   snmp_notification  Tag   got_response  ManagerAddr  or snmp_notification  Tag    no_response  ManagerAddr    for each management target     Sometimes it is not possible to retrieve the values for some of the objects in the notification specification with a get   operation  However  they are known when the send_not ification function is called  This is the case if an object  is an element in a table  It is possible to give the values of some objects to the send_notification function  snmpa send_notification Agent  Notification  Receiver  Varbinds   In this function   Varb
200. ocalized encryption key  It is not visible in the MIB  The  length of this key needs to be 16 if usmDESPrivProtocol or usmAesCfb128Protocol is used        1 6 7 Notify Definitions   The information about Notify Definitions should be stored in a file called notify conf   The corresponding table is snmpNot ifyTable in the SNMP NOTIFICATION MIB   Each entry is a term     NotifyName  Tag  Type     e NotifyName is a unique non empty string    e Tag isa string     e Typeistraporinform     1 6 8 Target Address Definitions    The information about Target Address Definitions should be stored in a file called target_addr  conf     The corresponding tables are snmpTargetAddrTable in the SNMP TARGET MIB and  snmpTargetAddrExtTable in the SNMP COMMUNITY MIB        Each entry is a term         TargetName  Ip  Udp  Timeout  RetryCount  TagList  ParamsName  EnginelId    or   TargetName  Ip  Udp  Timeout  RetryCount  TagList  ParamsName  Engineld  TMask   MaxMessageSize     or   TargetName  Domain  Ip  Udp  Timeout  RetryCount  TagList  ParamsName   EnginelId  TMask  MaxMessageSize                  e TargetName is a unique non empty string    e Domain is one of the atoms  transportDomainUdpIpv4  transportDomainUdpIpv6   e Ip isa list of four or eight integers    e Udp is an integer    e Timeout is an integer    e RetryCount is an integer    e TagList isa string    e ParamsName is a string    e EngineIdis a string or the atom discovery    e TMask isa list of integer   of size 0  size 6 or size
201. of the delivery will be provided via successive calls to delivery_info 4 function   see below     delivery _info Tag  Target  DeliveryResult  Extra    gt  void    Types    Tag   term     Target   target      target      Address  Port    Address   address      Port   integer      DeliveryResult   delivery result      delivery result     no_response   got_response   Extra   term      Inform about delivery result     138   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpa_notification_delivery_info_receiver       This function is called for each target in the Target s argument of the delivery_targets 3 function  see above     The purpose is to inform the receiver of the result of the delivery  was the notification acknowledged or not  for  each target     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    139    snmpa_notification_filter       snmpa_notification_filter    Erlang module    This module defines the behaviour of the agent notification filters  A snmpa_notification_filter compliant  module must export the following functions        e handle_notification 2  The semantics of them and their exact signatures are explained below   The purpose of notification filters is to allow for modification and or suppression of a notification     A misbehaving filter will be removed     Exports  handle_notification Notif  Data    gt  Reply  Types   Reply   send    send  NewNotif    dont_send  Notif   NewNotif   notificat
202. ol  SNMP     snmp       Default is false    db_dir     string    lt mandatory gt   Defines where the SNMP agent internal db files are stored    gb_max_vbs     pos_integer     infinity  lt optional gt   Defines the maximum number of varbinds allowed in a Get BULK response   Default is 1000    local_db      local_db_opt     lt optional gt     local_db_opt      repair  agent_repair       auto_save  agent_auto_save         verbosity  verbosity         Defines options specific for the SNMP agent local database   For defaults see the options in local_db_opt      agent_repair     false   true   force  lt optional gt     When starting snmpa_local_db it always tries to open an existing database  If false  and some errors occur  a  new database is created instead  If t rue  an existing file will be repaired  If force  the table will be repaired  even if it was properly closed     Default is true   agent_auto_save     integer     infinity  lt optional gt   The auto save interval  The table is flushed to disk whenever not accessed for this amount of time     Default is 5000     agent_net_if      agent_net_if_opt     lt optional gt   agent_net_if_opt       module  agent_net_if_module        verbosity   verbosity      f options  agent_net_if_options         Defines options specific for the SNMP agent network interface entity   For defaults see the options in agent_net_if_opt      agent_net_if_module     atom    lt optional gt     Module which handles the network interface part for the SNMP
203. om      Prints the contents of the database on screen  This is useful for debugging since the STANDARD MIB and OTP   SNMPEA MIB  and maybe your own MIBs  are stored in snmpa_local_db        TableName is an atom for a table in the database  When no name is supplied  the whole database is shown     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    129    snmpa_local_db    table create NameDb    gt  bool     Creates a table  If the table already exist  the old copy is destroyed     Returns false if the NameDb argument is incorrectly specified  t rue otherwise     table_create_row NameDb  RowIndex  Row    gt  bool       Types   Row    Vall  Val2       ValN   Vall   Val2         ValN   term      Creates a row in a table  Row is a tuple with values for all columns  including the index columns     table delete  NameDb    gt  void    Deletes a table     table_delete_row NameDb  RowIndex    gt  bool       Deletes the row in the table     table exists  NameDb    gt  bool     Checks if a table exists     table _get_row NameDb  RowIndex    gt  Row   undefined    Types   Row    Vall  Val2       ValN   Vall   Val2         ValN   term      Row is a tuple with values for all columns  including the index columns     See Also  ets 3   dets 3   snmp_generic 3     130   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpa_mpd       snmpa_mpd    Erlang module    The module snmpa_mpd implements the version independent Message Processing
204. on     log_to_txt LogDir  Mibs  OutFile  LogName  LogFile  Start    gt  ok    error   Reason     log_to_txt LogDir  Mibs  OutFile  LogName  LogFile  Start  Stop    gt  ok     error  Reason     Types   LogDir   string     Mibs    MibName   OutFile   string      MibName   string    LogName   string    LogFile   string      Start   Stop   null   datetime      local_time datetime        universal_time  datetime         Reason   term      Converts an Audit Trail Log to a readable text file  where each item has a trailing TAB character  and any TAB  character in the body of an item has been replaced by ESC TAB     The function can be used on a running system  or by copying the entire log directory and calling this function  SNMP  must be running in order to provide MIB information     LogDir is the name of the directory where the audit trail log is stored  Mibs is a list of Mibs to be used  The function  uses the information in the Mibs to convert for example object identifiers to their symbolic name  Out File is the  name of the generated text file  LogName is the name of the log  LogF ile is the name of the log file  Start is  the start  first  date and time from which log events will be converted and Stop is the stop  last  date and time to  which log events will be converted     The format of an audit trail log text item is as follows     Tag Addr   Community  TimeStamp  Vsn  PDU       where Tag is request  response  report  trap or inform  Addr is IP Port  or comma  space sepa
205. on     vl   v2   v3  Which SNMP versions shall be accepted used   Default is  v1  v2  v3    verbosity     silence   info   log   debug   trace  lt optional gt   Verbosity for a SNMP process  This specifies now much debug info is printed   Default is silence   bind_to     bool    lt optional gt   If t rue  net_if binds to the IP address  If false  net_if listens on any IP address on the host where it is running   Default is false   no_reuse     bool    lt optional gt     If true  net_if does not specify that the IP and port address should be reusable  If false  the address is set  to reusable     Default is false   recbuf     integer    lt optional gt   Receive buffer size   Default value is defined by gen_udp   sndbuf     integer    lt optional gt     Send buffer size     92   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmp       Default value is defined by gen_udp        note_store      note_store_opt     lt optional gt     note_store_opt       timeout  note_store_timeout       verbosity   verbosity         Specifies the start up verbosity for the SNMP note store   For defaults see the options in note_store_opt      note_store_timeout     integer    lt optional gt     Note cleanup time  When storing a note in the note store  each note is given lifetime  Every timeout the  note_store process performs a GC to remove the expired note s  Time in milli seconds     Default is 30000        audit_trail_log      audit_trail_log_opt     lt optional
206. onfig options and types    agent_type     master   sub  lt optional gt   If master  one master agent is started  Otherwise  no agents are started   Default is master    agent_discovery      agent_discovery_opt     lt optional gt     agent_discovery_opt      terminating  agent_terminating_discovery_opts        originating  agent_originating_discovery_opts        The terminating options effects discovery initiated by a manager   The originating options effects discovery initiated by this agent     For defaults see the options in agent_discovery_opt        agent_terminating_discovery_opts      agent_terminating_discovery_opt        lt optional gt   agent_terminating_discovery_opt      enable  boolean       stage2  discovery    plain     trigger_username  string        These are options effecting discovery terminating in this agent  i e  initiated by a manager    The default values for the terminating discovery options are     e enable  true  e stage2  discovery  e trigger_username        agent_originating_discovery_opts      agent_originating_discovery_opt        lt optional gt   agent_originating_discovery_opt      enable  boolean         These are options effecting discovery originating in this agent   The default values for the originating discovery options are     e enable  true  multi_threaded     bool    lt optional gt     If t rue  the agent is multi threaded  with one thread for each get request     86   Ericsson AB  All Rights Reserved   Simple Network Management Protoc
207. onfigure the application  manager    e Start the application  manager     e Register the user s      e The user s  register their agents     1 3 3 MIB loading    It is possible to load mibs into the manager  but this is not necessary for normal operation  and not recommended     1 4 The MIB Compiler    The chapter The MIB Compiler describes the MIB compiler and contains the following topics     e Operation    16   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     1 4 The MIB Compiler    e Import   e Consistency checking between MIBs  e hrl file generation   e Emacs integration    e Deviations from the standard    Note     When importing MIBs  ensure that the imported MIBs as well as the importing MIB are compiled using the same  version of the SNMP compiler     1 4 1 Operation    The MIB must be written as a text file in SMIv1 or SMIv2 using an ASN 1 notation before it will be compiled  This  text file must have the same name as the MIB  but with the suffix  mib  This is necessary for handling the IMPORT  statement     The association file  which contains the names of instrumentation functions for the MIB  should have the suffix    funcs  If the compiler does not find the association file  it gives a warning message and uses default instrumentation  functions   See Default Instrumentation for more details      The MIB compiler is started with a call to snmpc  compile   lt mibname gt     For example   snmpc  compile   RFC1213 MIB       The output 
208. ons  However   historically this is often done and for this reason we allow it in notification sending  If a variable has ACCESS  not accessible  the user must provide a value for the variable in the Varbinds list  It is not possible for  the agent to perform a get operation to retrieve this value     Notification Filters    It is possible to add notification filters to an agent  These filters will be called when a notification is to be sent  Their  purpose is to allow modification  suppression or other type of actions     A notification filter is a module implementing the snmpa_notification_filter behaviour  A filter is added deleted using  the functions  snmpa register_notification_filter and snmpa unregister_notification_filter     Unless otherwise specified  the order of the registered filters will be the order in which they are registered     Sub agent Path    If a value for an object is not given to the send_not ification function  the sub agent will perform a get operation  to retrieve it  If the object is not implemented in this sub agent  its parent agent tries to perform a get operation to  retrieve it  If the object is not implemented in this agent either  it forwards the object to its parent  and so on  Eventually  the Master Agent is reached and at this point all unknown object values must be resolved  If some object is unknown  even to the Master Agent  this is regarded as an error and is reported with a call to user_err 2 of the error report  module  No notific
209. or_index    varbinds       error_status     noError   atom    error_index     integer     varbinds      varbind      atl_type     read   write   read_write  target_name     string     Is a unique  non empty  string  vars_and_vals      var_and_val    var_and_val      oid    value_type    value       oid    value      value_type     o   OBJECT IDENTIFIER         i  VINTEGER       u   Unsigned32     g   Unsigned32     s   OCTET SRING     PRUETT AN    ip   IpAddress      op   Opaque       cs2   Counters2       c64   Counter64     Penh taimet achsi    value     term    community     string    sec_model     any   vl   v2c   usm  sec_name     string    sec_level     noAuthNoPriv   authNoPriv   authPriv  Exports    monitor     gt  Ref  Types   Ref   reference       Monitor the SNMP manager  In case of a crash  the calling  monitoring  process will get a  DOWN  message  see the  erlang module for more info      demonitor  Ref    gt  void    Types   Ref   reference       Turn off monitoring of the SNMP manager     notify started Timeout    gt  Pid  Types     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    173    snmpm       Timeout   integer     Pid   pid    Request a notification  message  when the SNMP manager has started   The Timeout is the time the request is valid  The value has to be greater then zero     The Pid is the process handling the supervision of the SNMP manager start  When the manager has started a  completion message will be sent to the
210. orageType  The value of this column specifies how each row  is stored  and what happens in case of a restart of the agent  The implementation supports the values volatile  and nonVolatile  When the tables are initially filled with data from the configuration files  these rows will  automatically have storage type nonVolatile  Should the agent restart  all nonVolat ile rows survive the restart   while the volatile rows are lost  The configuration files are not read at restart  by default     This MIB is not loaded by default     SNMP USER BASED SM MIB  The SNMP USER BASED SM MIB defines managed objects that is used for the User Based Security Model     All tables in this MIB have a column of type StorageType  The value of the column specifies how each row  is stored  and what happens in case of a restart of the agent  The implementation supports the values volatile  and nonVolatile  When the tables are initially filled with data from the configuration files  these rows will  automatically have storage type nonVolatile  Should the agent restart  all nonVolatile rows survive the restart   while the volatile rows are lost  The configuration files are not read at restart  by default     This MIB is not loaded by default     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    13    1 2 Agent Functional Description       OTP SNMPEA MIB    The OTP SNMPEA MIB was used in earlier versions of the agent  before standard MIBs existed for access control   MIB vie
211. otocol  SNMP     snmpa_mpd    MsgData is the message specific data used in the SNMP message  This value is received in a send_pdu or  send_pdu_regq message from the agent  In SNMPv1 and SNMPv2c  this message data is the community string   In SNMPv3  it is the context information  To is a list of the destination addresses and their corresponding security  parameters  This value is also received from the requests mentioned above     Note     Note that the use of the LocalEngineID argument is only intended for special cases  if the agent is to  emulate   multiple EngineIDs  By default  the agent uses the value of SnmpEngineID  see SNMP FRAMEWORK MIB      discarded_pdu Variable    gt  void    Types   Variable   atom      Increments the variable associated with a discarded pdu  This function can be used when the net_if process receives  a discarded_pdu message from the agent     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    133    snmpa_network_interface    snmpa_network_interface    Erlang module    This module defines the behaviour of the agent network interface  A snmpa_network_interface compliant  module must export the following functions    e     start_link 4   e info l   e get log_type 1   e set_log_type 2   e  verbosity 2    The semantics of them and their exact signatures are explained below     But this is not enough  There is also a set of mandatory messages which the network interface entity must be able to  receive and be able to send 
212. ow  or it may be unspecified  The Cols list  may refer to inaccessible columns or non existing columns  For each column in the Co1s list  the corresponding next  instance is determined  and the last part of its OBJECT IDENTIFIER and its value is returned     This function is mandatory     Arguments    e RowIndex isa list of integers  possibly empty  that defines the key values for a row  The RowIndex is the  list representation  list of integers   which follow the Cols integer in the OBJECT IDENTIFIER     e Cols isa list of integers  greater than or equal to zero  which represents the column numbers     56   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     1 11 Definition of Instrumentation Functions       Valid Return Values  e A list with as many elements as the Cols list Each element can be   e  NextOid  NextValue   where Next Oid is the lexicographic next OBJECT IDENTIFIER for the  corresponding column  This should be specified as the OBJECT IDENTIFER part following the table    entry  This means that the first integer is the column number and the rest is a specification of the keys   NextValue is the value of this element     e endOfTable if there are no accessible elements after this one               genErr  Column  where Column denotes the column that caused the error  Column must be one  of the columns in the Cols list  Note that this should be an internal processing error  e g  a caused by a  programing fault somewhere  If some column 
213. pass to the Net if process when sending a notification   see send notification for more info                send_pdu_req  Vsn  Pdu  MsgData  To  Pid  Extra     This message is sent from a master agent when a request is to be sent  The only request an agent can send is  Inform Request  The net if process needs to remember the request id and the Pid  and when a response is received  for the request id  send it to Pid  using a snmp_response_received message           e Vsniseither  version 1    version 2  or  version 3    e Pdu isan SNMP PDU record  as defined in snmp_types hrl  with the SNMP response   e MsgData is the message specific data used in the SNMP message  This value is normally sent to    snmpa_mpd generate_message 4  In SNMPv1 and SNMPv2c  this message data is the community  string  In SNMPv3  it is the context information        e To isa list of the destination addresses and their corresponding security parameters  This value is normally  sent to snmpa_mpd  generate_message 4        e Pidisa process identifier        e Extra is any term that the notification sender wishes to pass to the Net if process when sending a notification   see send notification for more info      Notes    Since the Net if process is responsible for encoding and decoding of SNMP messages  it must also update the relevant  counters in the SNMP group in MIB II  It can use the functions in the module snmpa_mpd for this purpose  refer to  the Reference Manual  section snmp  module snmpa_mpd for 
214. plication does this very often  perhaps  several times per minute  it should load the MIBs once and for all in a sub agent  This sub agent only registers and  unregisters itself under another agent instead of loading the MIBs each time  This is cheaper than loading an MIB     Interaction With Other SNMP Agent Toolkits    If the SNMP agent needs to interact with sub agents constructed in another package  a special sub agent should be  used  which communicates through a protocol specified by the other package     1 15 2 Agent Semantics    The agent can be configured to be multi threaded  to process one incoming request at a time  or to have a request limit  enabled  this can be used for load control or to limit the effect of DoS attacks   If it is multi threaded  read requests   get  get next and get   bulk  and traps are processed in parallel with each other and set requests  However   all set requests are serialized  which means that if the agent is waiting for the application to complete a complicated  write operation  it will not process any new write requests until this operation is finished  It processes read requests  and sends traps  concurrently  The reason for not handle write requests in parallel is that a complex locking mechanism  would be needed even in the simplest cases  Even with the scheme described above  the user must be careful not to  violate that the set requests are atoms  If this is hard to do  do not use the multi threaded feature     Ericsson AB  All 
215. plication part of the reference  manual or the Configuring the application chapter of the SNMP user s guide     restart_worker     gt  void    restart_worker  Agent    gt  void    Types    Agent   pid     atom    Restart the worker process of a multi threaded agent     This is a utility function  that can be useful when e g  debugging instrumentation functions     restart_set_worker     gt  void    restart_set_worker  Agent    gt  void    Types     110   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpa    Agent   pid     atom    Restart the set worker process of a multi threaded agent     This is a utility function  that can be useful when e g  debugging instrumentation functions     print_mib_info     gt  void      Prints the content of all the  snmp  tables and variables for all mibs handled by the snmp agent     print_mib_tables     gt  void      Prints the content of all the  snmp  tables for all mibs handled by the snmp agent     print_mib_variables     gt  void      Prints the content of all the  snmp  variables for all mibs handled by the snmp agent     verbosity  Ref  Verbosity    gt  void     Types   Ref   pid     sub_agents   master_agent   net_if   mib_server    symbolic store   note_store   local_db    Verbosity   verbosity      subagents  verbosity       verbosity     silence   info   log   debug   trace    Sets verbosity for the designated process  For the lowest verbosity silence  nothing is printed  The higher the  verbosit
216. pment Toolkit     e A simple example of how to write agent test cases  using the new manager     1 9 1 The example manager    The example manager  snmp_ex2_manager  is a simple example of how to implement an snmp manager using the  manager component of the SNMP Development Toolkit     The module exports the following functions   e     start_link O  start_link 1   e     stop 0   e  agent 2  agent 3   e     sync_get 2  sync_get 3   e    sync_get_next 2  sync_get_next 3   e     sync_get_bulk 4  sync_get_bulk 5   e     sync_set 2  sync_set 3    e  oid_to_name 1    46   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     1 10 Instrumentation Functions       This module is also used by the test module described in the next section     1 9 2 A simple standard test    This simple standard test  snmp_ex2_simple_standard_test  a module which  using the  snmp_ex2_manager described in the previous section  implements a simple agent test utility     1 10 Instrumentation Functions    A user defined instrumentation function for each object attaches the managed objects to real resources  This function is  called by the agent on a get or set operation  The function could read some hardware register  perform a calculation   or whatever is necessary to implement the semantics associated with the conceptual variable  These functions must  be written both for scalar variables and for tables  They are specified in the association file  which is a text file  In  this fil
217. ponding table is snmpCommunityTable in the SNMP COMMUNITY MIB   Each entry is a term    CommunityIndex  CommunityName  SecurityName  ContextName  TransportTag      e CommunityIndex is a non empty string   e CommunityName is a string   e SecurityName isa string     e ContextName is a string        e TransportTag isa string     1 6 5 MIB Views for VACM    The information about MIB Views for VACM should be stored in a file called vacm  conf     34   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     1 6 Definition of Agent Configuration Files       The corresponding tables are vacmSecurityToGroupTable  vacmAccessTable and  vacmViewTreeFamilyTable in the SNMP VIEW BASED ACM MIB     Each entry is one of the terms  one entry corresponds to one row in one of the tables      vacmSecurityToGroup  SecModel  SecName  GroupName          vacmAccess  GroupName  Prefix  SecModel  SecLevel  Match  ReadView  WriteView   NotifyView          vacmViewTreeFamily  ViewIndex  ViewSubtree  ViewStatus  ViewMask      e SecModelis any  vl  v2c  or usm    e SecName is a string    e GroupName is a string    e Prefix isa string    e SecLevel is noAuthNoPriv  authNoPriv  or authPriv  e Matchis prefix or exact    e ReadView isa string    e WriteView isa string    e NotifyView isa string    e ViewIndex is an integer    e ViewSubt ree isa list of integer    e ViewStatus is either included or excluded    e ViewMask is either null ora list of ones and zeros  Ones nominate that an ex
218. print_version_info     gt  void    print_version_info Prefix    gt  void    Types    Prefix   string     integer       Utility function s  to produce a formatted printout of the versions info generated by the versions1 function    This is the same as doing  e g       ok  V    snmp versionsl1     snmp print_versions V      versionsl1     gt   ok  Info     error  Reason   versions2     gt   ok  Info     error  Reason   Types    Info    info      info       term       Reason term       82   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmp       Utility functions used to retrieve some system and application info     The difference between the two functions is in how they get the modules to check  versions  uses the app file and  versions2 uses the function application  get_key     print_versions VersionInfo    gt  void    print_versions  Prefix  VersionInfo    gt  void    Types    VersionInfo    version_info       version_info     term     Prefix   string     integer       Utility function to produce a formatted printout of the versions info generated by the versions1 and versions2  functions    Example      ok  V    snmp versionsl1     snmp print_versions V      enable trace     gt  void      Starts a dbg tracer that prints trace events to stdout  using plain io format after a minor formatting      disable trace     gt  void      Stop the tracer     set_trace  Targets    gt  void    Types   Targets   target      targets     target      module 
219. pter 7   Agent Implementation Example  describes how an MIB can be implemented with the SNMP  Development Toolkit  Implementation examples are included     e Chapter 8   Instrumentation Functions  describes how instrumentation functions should be defined in Erlang for  the different operations     e Chapter 9   Definition of Instrumentation Functions  is a reference chapter which contains more detailed  information about the instrumentation functions     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    3    1 2 Agent Functional Description    e Chapter 10   Definition of Agent Net if  is a reference chapter  which describes the Agent Net if function in  detail     e Chapter 11   Definition of Manager Net if  is a reference chapter  which describes the Manager Net if function  in detail     e Chapter 12   Advanced Agent Topics  describes sub agents  agent semantics  audit trail logging  and the  consideration of distributed tables     e Appendix A describes the conversion of SNMPv2 to SNMPv1 error messages   e Appendix B contains the RFC1903 text on RowStatus     1 1 5 Where to Find More Information    Refer to the following documentation for more information about SNMP and about the Erlang OTP development  system    e Marshall T  Rose  1991    The Simple Book   An Introduction to Internet Management   Prentice Hall  e Evan McGinnis and David Perkins  1997    Understanding SNMP MIBs   Prentice Hall   e  RFC1155  1157  1212 and 1215  SNMPv1    e RF
220. r of type BITS  the integer value is used     This function is optional    If this function is called  it will be called again  either with undo or with set as first argument   Valid return values   e noError   e badValue   noSuchName   genErr SNMPv1        noAccess   noCreation   inconsistentValue   resourceUnavailable    inconsistentName   genErr SNMPv2                 f undo  NewValue    ExtraArgs      If an error occurred  this function is called after the is_set_ok function is called  If set is called for this object   undo is not called     NewVa_lue is guaranteed to be of the correct type  length and within ranges  as specified in the MIB  If the object is  an enumerated integer or of type BITS  the integer value is used     This function is optional    Valid return values      noError   e  genErr SNMPv1    e undoFailed   genErr SNMPv2              f set  NewValue    ExtraArgs      This function is called to perform the set in phase two of the set request processing  It is only called if the corresponding  is_set_ok function is present and returns noError        NewVa_lue is guaranteed to be of the correct type  length and within ranges  as specified in the MIB  If the object is  an enumerated integer or of type BITS  the integer value is used     This function is mandatory    Valid return values   s noError   e  genErr SNMPv1    e commitFailed   undoFailed   genErr SNMPv2              1 11 2 Table Instrumentation    For tables  a f  Operation       function should be 
221. rated list of such   Community is the community parameter  SNMP version v1 and v2   or  SecLevel  AuthEngineID   UserName   SNMP v3   TimeStamp is a date and time stamp  and Vsn is  the SNMP version  PDU is a textual version of the protocol data unit  There is a new line between Vsn and PDU        Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    81    snmp       log_to_io LogDir  Mibs  LogName  LogFile    gt  ok    error  Reason   log_to_io LogDir  Mibs  LogName  LogFile  Start    gt  ok    error  Reason   log_to_io LogDir  Mibs  LogName  LogFile  Start  Stop    gt  ok    error   Reason   Types    LogDir   string      Mibs    MibName     MibName   string    LogName   string     LogFile   string       Start   Stop   null   datetime      local_time datetime        universal_time  datetime         Reason   term      Converts an Audit Trail Log to a readable format and prints it on stdio  See Jog_to_txt above for more info     change_log_size LogName  NewSize    gt  ok    error  Reason   Types     LogName string     NewSize    MaxBytes  MaxFiles     MaxBytes   integer       MaxFiles integer       Reason   term    Changes the log size of the Audit Trail Log  The application must be configured to use the audit trail log function   Please refer to disk_log 3  in Kernel Reference Manual for a description of how to change the log size     The change is permanent  as long as the log is not deleted  That means  the log size is remembered across reboots     
222. ree basic operations  get  object   set  object  value  and get next  object    Instrumentation function  An instrumentation function is associated with each managed object  This is the function  which actually  implements the operations and will be called by the agent when it receives a request from the management  station   Manager  A manager generates commands and receives notifications from agents  There usually are only a few managers  in a system   Agent  An agent responds to commands from the manager  and sends notification to the manager  There are potentially  many agents in a system     1 1 4 About This Manual    In addition to this introductory chapter  the SNMP User s Guide contains the following chapters    e Chapter 2   Functional Description  describes the features and operation of the SNMP development toolkit  It  includes topics on Sub agents and MIB loading  Internal MIBs  and Traps    e Chapter 3   The MIB Compiler  describes the features and the operation of the MIB compiler     e Chapter 4   Running the application  describes how to start and configure the application  Topics on how to  debug the application are also included     e Chapter 5   Definition of Agent Configuration Files  is a reference chapter  which contains more detailed  information about the agent configuration files     e Chapter 6   Definition of Manager Configuration Files  is a reference chapter  which contains more detailed  information about the manager configuration files     e Cha
223. rity  C N     where the key is a tuple of arity N if N  gt  1  or a single term if N   1     Refer to the Mnesia User s Guide for information on how to declare a Mnesia table as an SNMP table     The following example illustrates a situation in which we have an SNMP table that we wish to implement as a Mnesia  table  The table stores information about employees at a company  Each employee is indexed with the department  number and the name     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    65    1 15 Advanced Agent Topics       empTable OBJECT TYPE    SYNTAX SEQUENCE OF EmpEntry  ACCESS not accessible  STATUS mandatory    DESCRIPTION   A table with information about employees                 emp 1   empEntry OBJECT TYPE  SYNTAX EmpEntry  ACCESS not accessible  STATUS mandatory       DESCRIPTION    INDEX   empDepNo  empName         empTable 1    EmpEentEy i    SEQUENCE    empDepNo INTEGER   empName DisplayString   empTe1lNo DisplayString  empStatus Rowstatus    The corresponding Mnesia table is specified as follows     mnesia create_table   name  employees     snmp    key   integer  string        attributes   key  telno  row_status         Note     In the Mnesia tables  the two key columns are stored as a tuple with two elements  Therefore  the arity of the  table is 3     Instrumentation Functions    The MIB table shown in the previous section can be compiled as follows     1 gt  snmpc compile  EmpMIB     db  mnesia        This is all that has 
224. rmInfo  UserData    gt  Reply  Types    TargetName   TargetName2   target_name     SnmpInformInfo    ErrorStatus  ErrorIndex  Varbinds    ErrorStatus   atom     ErrorIndex   integer      Varbinds    varbind       varbind      varbind   UserData   term      Reply   ignore   unregister    register  UserId  TargetName2   agent_info        UserId   term     agent_info       agent_info_item    agent_info_value       Handle a inform message   For more info about the agent__info     see register_agent    The only user which would return  register  UserId  TargetName2  agent_info     is the default  user     If the inform request behaviour configuration option is set to user or  user  integer       the response   acknowledgment  to this inform request will be sent when this function returns     handle_report  TargetName  SnmpReportInfo  UserData    gt  Reply  Types    TargetName   TargetName2   target_name     Addr   ip address      Port   integer      SnmpReportInfo    ErrorStatus  ErrorIndex  Varbinds    ErrorStatus   atom     ErrorIndex   integer      Varbinds    varbind       varbind      varbind   UserData   term      Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    207    snmpm_user       Reply   ignore   unregister    register  UserId  TargetName2   agent_info        UserId   term     agent_info       agent_info_item    agent_info_value       Handle a report message   For more info about the agent_info     see register_agent    The only user which
225. rotocol  SNMP    119    snmpa_conf       usm_entry  EngineId    gt  usm_entry       usm_entry EngineID  UserName  SecName  Clone  AuthP  AuthKeyC  OwnAuthKeyC   PrivP  PrivKeyC  OwnPrivKeyC  Public  AuthKey  PrivKey    gt  usm entry       Types   EnginelId   string    UserName   string      SecName   string    Clone   zeroDotZero    integer         AuthP   usmNoAuthProtocol   usmHMACMD5AuthProtocol     usmHMACSHAAuthProtocol    AuthKeyC   string     OwnAuthKeyC   string     PrivP   usmNoPrivProtocol   usmDESPrivProtocol   usmAesCfb128Protocol  PrivKeyC   string     OwnPrivKeyC   string     Public   string      AuthKey    integer       PrivKey    integer       usm_entry     term      Create an entry for the agent vacm config file  vacm  conf     usm_entry 1 translates to the following call  usm_entry  initial    initial   zeroDotZero   usmNoAuthProtocol          usmNoPrivProtocol           MH  Wm wm         See Security data for USM for more info     write_usm_config Dir  Conf    gt  ok    write_usm_config Dir  Hdr  Conf    gt  ok    Types   Dir   string    Hdr   string      Conf    usm_entry      Write the agent usm config to the agent usm config file   Dir is the path to the directory where to store the config file   Hdr is an optional file header  note that this text is written to the file as is      See Security data for USM for more info     append_usm_config Dir  Conf    gt  ok  Types   Dir   string    Conf    usm_entry      Append the usm config to the current agent vac
226. rotocol  SNMP    165    snmp_view_based_acm_mib       Reason   term      Adds a security to group definition to the agent config  Equivalent to one vacmSecurityToGroup line in the  vacm conf file     delete _sec2group  Key    gt  Ret    Types   Key   term    Ret   ok    error  Reason     Reason   term      Delete a security to group definition from the agent config     add_access  GroupName  Prefix  SecModel  SecLevel  Match  RV  WV  NV    gt  Ret  Types   GroupName   string    Prefix   string    SecModel  SecLevel   string      vl   v2c   usm    Match   prefix   exact    RV   string    WV   string    NV   string    Ret    ok  Key     error  Reason     Key   term    Reason   term      Adds a access definition to the agent config  Equivalent to one vacmAccess line in the vacm  conf file     delete_access  Key    gt  Ret    Types   Key   term    Ret   ok    error  Reason     Reason   term      Delete a access definition from the agent config     add_view_tree fam ViewIndex  SubTree  Status  Mask    gt  Ret  Types   ViewIndex   integer     SubTree   oid    Status   included   excluded  Mask   null    integer     where all values are either 0 or 1  Ret    ok  Key     error  Reason   Key   term    Reason   term      166   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmp_view_based_acm_mib    Adds a view tree family definition to the agent config  Equivalent to one vacmViewTreeFamily line in the  vacm  conf file     delete _view_tree_fam Key    g
227. rotocol  SNMP    77    snmp    snmp    Erlang module    The module snmp contains interface functions to the SNMP toolkit     Common Data Types  The following data types are used in the functions below     e datetime      date    time           See calendar for more info     Exports    config     gt  ok    error  Reason     A simple interactive configuration tool  Simple configuration files can be generated  but more complex configurations  still have to be edited manually     The tool is a textual based tool that asks some questions and generates sys  config and   conf files     Note that if the application shall support version 3  then the crypto app must be started before running this function   password generation      Note also that some of the configuration files for the agent and manager share the same names  This means that they  have to be stored in different directories     start     gt  ok    error  Reason   start  Type    gt  ok    error  Reason   Types    Type   start_type    Starts the SNMP application     See application for more info     start_agent     gt  ok    error  Reason   start_agent  Type    gt  ok    error  Reason   Types   Type   start_type    The SNMP application consists of several entities  of which the agent is one  This function starts the agent entity of    the application     Note that the only way to actually start the agent in this way is to add the agent related config after starting  the application  e g it cannot be part of the normal appl
228. rror  Reason     Types   UserId   term    TargetName   target_name     ContextName   string    Oids    oid     Timeout   integer       ExtraInfo   term     SnmpReply   snmp_reply      Remaining   integer      Reason    send_failed  ReqId  R     invalid_sec_info  SecInfo  SnmpInfo     term      R   term         Synchronous get   next    request   Remaining time of the given or default timeout time     When Reason is  send_failed       it means that the net_if process failed to send the message  This could happen because  of any number of reasons  i e  encoding error  R is the actual reason in this case     Ext ralInfo is an opaque data structure passed on to the net if process  The net if process included in this application  makes  with one exception  no use of this info  so the only use for it in such a configuration  when using the built in  net if  would be tracing  The one usage exception is  Any tuple with snmpm_ext ra_info_tag as its first element  is reserved for internal use           async_get_next2 UserId  TargetName  Oids    gt   ok  ReqId     error  Reason     async_get_next2 UserId  TargetName  Oids  SendOpts    gt   ok  ReqId     error   Reason     Types   UserId   term    TargetName   target_name     Oids    oid       send_opt      context  string       timeout  pos_integer       extra   term       community  community       sec_model  sec_model       sec_name   string       sec_level  sec_level       max_message_size  pos_integer         ReqId   integer     Re
229. rrors are discovered in these files they are reported with the function config_err 2 of the error report  module at start up     1 7 1 Manager Information    The manager information should be stored in a file called manager conf    Each entry is a tuple of size two     Variable  Value     e Variable is one of the following   e address   which defines the IP address of the manager  Default is local host   e port   which defines which UDP port the manager uses for communicating with agents  Mandatory   e engine_id  The SnmpEnginelID as defined in SNMP FRAMEWORK MIB  Mandatory     e max_message_size   The snmpEngineMaxMessageSize as defined in SNMP FRAMEWORK   MIB  Mandatory     e Value is the value for the variable              The following example shows a manager  conf file      address   141  aS   ahah  Beal          port  5000     engine_id   mgrEngine        max_message_size  484      The value of engine_idisa string  which should have a very specific structure  See RFC 2271 2571 for details     1 7 2 Users    For each manager user  the manager needs some information  This information is either added in the users  conf  config file or by calling the register_user function in run time     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    37    1 7 Definition of Manager Configuration Files       Each row defines a manager user of the manager   Each entry is a tuple of size four    UserId  UserMod  UserData  DefaultAgentConfig      e Userld is any
230. s    gt  void    Types   Format   string    Args   list     The function is called if a user related error occurs at run time  for example if a user defined instrumentation function    returns erroneous     Format and Args are as in io format  Format  Args      126   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpa_error_io       snmpa_error_io    Erlang module    The module snmpa_error_io implements the snmp_error_report behaviour  see snmpa_error_report   containing two callback functions which are called in order to report SNMP errors     This module provides a simple mechanism for reporting SNMP errors  Errors are written to stdout using the io module   It is provided as an simple example     This module needs to be explicitly configured  see snmpa_error and configuration parameters     Exports    config _err Format  Args    gt  void    Types   Format   string    Args   list    The function is called if an error occurs during the configuration phase  for example if a syntax error is found in a    configuration file     Format and Args areas inio format  Format  Args      user_err  Format  Args    gt  void    Types    Format   string     Args   list       The function is called if a user related error occurs at run time  for example if a user defined instrumentation function  returns erroneous     Format and Args are as in io format  Format  Args      Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    127    
231. s   Format   string    Args   list     The function is called if an error occurs during the configuration phase  for example if a syntax error is found in a    configuration file     Format and Args are as in io format  Format  Args      user_err  Format  Args    gt  void    Types   Format   string    Args   list     The function is called if a user related error occurs at run time  for example if a user defined instrumentation function    returns erroneous     Format and Args are as in io format  Format  Args      Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    125    snmpa_error       snmpa_error    Erlang module    The module snmpa_error contains two callback functions which are called if an error occurs at different times  during agent operation  These functions in turn calls the corresponding function in the configured error report module   which implements the actual report functionality     Two simple implementation s  is provided with the toolkit  the modules snmpa_error_logger which is the default and  snmpa_error_io     The error report module is configured using the directive error_report_mod  see configuration parameters     Exports    config_err  Format  Args    gt  void    Types   Format   string    Args   list     The function is called if an error occurs during the configuration phase  for example if a syntax error is found in a    configuration file     Format and Args are as in io format  Format  Args      user_err  Format  Arg
232. s  as specified in the MIB  If the object is an enumerated integer  or of type BITS  the integer value is used  The list is sorted by Column  increasing  and each Column is  guaranteed to be a valid column number     Valid Return Values        noError  0                  Error  Column  where Error is the same as set for variables  and Column denotes the faulty column   Column must be one of the columns in the Cols list     1 12 Definition of Agent Net if    Bytes Erlang Terms Master  6 alt  Agent  Proxy agent  specific representation  Proxy Agent  Subsystem    Figure 12 1  The Purpose of Agent Net if    The Network Interface  Net if  process delivers SNMP PDUs to a master agent  and receives SNMP PDUs from the  master agent  The most common behaviour of a Net if process is that is receives bytes from a network  decodes them  into an SNMP PDU  which it sends to a master agent  When the master agent has processed the PDU  it sends a  response PDU to the Net if process  which encodes the PDU into bytes and transmits the bytes onto the network     However  that simple behaviour can be modified in numerous ways  For example  the Net if process can apply some  kind of encrypting decrypting scheme on the bytes or act as a proxy filter  which sends some packets to a proxy agent  and some packets to the master agent     It is also possible to write your own Net if process  The default Net if process is implemented in the module  snmpa_net_if and it uses UDP as the transport protocol  
233. s  but the Cols list may contain invalid column  numbers  If it does  we must find the next valid column   or return endOfTable     AP AP oP A o  AP A ol     ole    get_next_cols  Col   Cols   Row  when Col  lt  2   gt     2  element  1  Row    element  2  Row      get_next_cols  Cols  Row        get_next_cols  Col   Cols   Row  when Col  gt  4   gt   endOfTable    get_next_cols Cols  Row      get_next_cols  Col   Cols   Row    gt          Col  element  1  Row    element  Col  Row      get_next_cols  Cols  Row                       get_next_cols     _Row    gt   Ie     Make a list of endOfTable with as many elems as Cols list  enof or tablele Eces m    endOfTable   end_of_table  Cols     end_of_table       gt   iils  adafone toneco lEnNlee macole DE    Cori t1   ada one Co ColsICotsyii      1 8 Agent Implementation Example       Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    43    1 8 Agent Implementation Example       add_one_to_cols          gt   lc    is_row_status_col_changed Cols    gt           case lists keysearch  status_col  1  Cols  of   value  i Pshechemie  oll  SEatCusYal y   gt    true  StatusVal    _  gt  false  end   get_row RowIndex    gt   exl_server    self     get_row  RowIndex     wait_answer     get_next_row  RowIndex    gt   exl_server    self     get_next_row  RowIndex     wait_answer     wait_answer     gt   receive   exl_server  Answer    gt   Answer  end     ole    Server code follows    ae A ol   Ae A oP  ol     ole  
234. s any extra info the user wants to have supplied when the functions in the callback module is called     Exports    add_agent_caps SysORID  SysORDescr    gt  SysORIndex  Types    SysORID   oid     SysORDescr   string     SysORIndex   integer       This function can be used to add an AGENT CAPABILITY statement to the sysORTable in the agent  The table is  defined in the SNMPv2 MIB     del_agent_caps  SysORIndex    gt  void    Types   SysORIndex   integer       This function can be used to delete an AGENT CAPABILITY statement to the sysORTable in the agent  This table  is defined in the SNMPv2 MIB     get_agent_caps     gt    SysORIndex  SysORID  SysORDescr  SysORUpTime     Types    SysORIndex   integer      SysORId   oid      Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    95    snmpa    SysORDescr   string    SysORUpTime   integer       Returns all AGENT CAPABILITY statements in the sysORTable in the agent  This table is defined in the SNMPv2   MIB     get  Agent  Vars    gt  Values    error  Reason   get  Agent  Vars  Context    gt  Values    error  Reason   Types     Agent   pid     atom    Vars    oid      Context   string    Values    term       Reason    atom    oid        Performs a GET operation on the agent  All loaded MIB objects are visible in this operation  The agent calls the  corresponding instrumentation functions just as if it was a GET request coming from a manager     Note that the request specific parameters  such as current_r
235. s in mib_server_opt      mibentry_override     bool    lt optional gt     If this value is false  then when loading a mib each mib  entry is checked prior to installation of the mib  The  purpose of the check is to prevent that the same symbolic mibentry name is used for different oid s     88   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmp       Default is false   trapentry_override     bool    lt optional gt     If this value is false  then when loading a mib each trap is checked prior to installation of the mib  The purpose  of the check is to prevent that the same symbolic trap name is used for different trap s     Default is false   mibs_cache     bool     mibs_cache_opts    lt optional gt   Shall the agent utilize the mib server lookup cache or not     Default is t rue  in which case the mibs_cache_opts    default values apply      mibs_cache_opts      mibs_cache_opt     lt optional gt   mibs_cache_opt       autogc  mibs_cache_autogc      gclimit   mibs_cache_gclimit       age  mibs_cache_age        Defines options specific for the SNMP agent mib server cache   For defaults see the options in mibs_cache_opt      mibs_cache_autogc     bool    lt optional gt   Defines if the mib server shall perform cache gc automatically or leave it to the user  see gc_mibs_cache 0 1 2 3      Default is true        mibs_cache_age     integer    gt  0  lt optional gt     Defines how old the entries in the cache will be allowed before they are GC ed  
236. s to dynamically install management information  The most common way  is to load an MIB into an agent  The other way is to use a sub agent  which is controlled by the application and is  able to register and unregister itself  A sub agent can register itself for managing a sub tree  not to be mixed up with  erlang  register   The sub tree is identified by an Object Identifier  When a sub agent is registered  it receives  all requests for this particular sub tree and it is responsible for answering them  It should also be noted that a sub   agent can be started and stopped at any time     Compared to other SNMP agent packages  there is a significant difference in this way of using sub agents  Other  packages normally use sub agents to load and unload MIBs in run time  In Erlang  it is easy to load code in run time  and it is possible to load an MIB into an existing sub agent  It is not necessary to create a new process for handling  anew MIB     Sub agents are used for the following reasons     e     to provide a more complex set transaction scheme than master agent  e to avoid unnecessary process communication  e to provide a more lightweight mechanism for loading and unloading MIBs in run time    e to provide interaction with other SNMP agent toolkits   Refer to the chapter Advanced Agent Topics in this User s Guide for more information about these topics     The communication protocol between sub agents is the normal message passing which is used in distributed Erlang  syst
237. s to used for manipulating  write append read  the config  files of the SNMP manager     Exports   manager_entry Tag  Val    gt  manager_entry      Types   Tag   address   port   engine_id   max_message_size  Val   term    manager_entry     term      Create an entry for the manager config file  manager  conf     The type of Val depends on the value of Tag  see Manager Information for more info     write_manager_config Dir  Conf    gt  ok    write_manager_config Dir  Hdr  Conf    gt  ok    Types   Dir   string    Hdr   string    Conf    manager_entry        Write the manager config to the manager config file   Dir is the path to the directory where to store the config file   Hdr is an optional file header  note that this text is written to the file as is      See Manager Information for more info     append_manager_config Dir  Conf    gt  ok  Types    Dir   string     Conf    manager_entry      Append the config to the current manager config file     Dir is the path to the directory where to store the config file     See Manager Information for more info     read_manager_config Dir    gt  Conf  Types    Dir   string     Conf    manager_entry      Read the current manager config file     Dir is the path to the directory where to store the config file     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    195    snmpm_conf       See Manager Information for more info     users_entry UserId    gt  users_entry     users_entry UserId  UserMod    gt  users
238. s will be transform into one call to my_table   Mymetealblkel  gecmez litle cel    The function should now return      ts 22 Ue Gro  laz dy Hr er     This is illustrated in the following table              Figure 10 4  GetNext from  3 1 2  and  4 1 2      The manager now issues the following getNext request     getNext   myTable myTableEntry   myTable myTableEntry 1 3 2      This will be transform into two calls to my_table     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    51    1 10 Instrumentation Functions       my_table get_next       0   and  my_table get_next   3  2    1      The function should now return        3  1  1   a   and     3  1  1   a      In both cases  the first accessible element in the table should be returned  As the key columns are not accessible  this  means that the third column is the first row     Note     Normally  the functions described above behave exactly as shown  but they are free to perform other actions   For example  a get request may have side effects such as setting some other variable  perhaps a global  lastAccessed variable     1 10 2 Using the ExtraArgument    The ListOfExtraArguments can be used to write generic functions  This list is appended to the standard  arguments for each function  Consider two read only variables for a device  ipAdr and name with object identifiers  1 1 23 4 and 1 1 7 respectively  To access these variables  one could implement the two Erlang functions ip_access  and name_ac
239. sages are logged     e If read_write  both outgoing and incoming messages are logged   Default is read_write   atl_dir   dir    lt mandatory gt   Specifies where the audit trail log should be stored   If audit_trail_log specifies that logging should take place  this parameter must be defined     atl_size      integer    integer     lt mandatory gt        Specifies the size of the audit trail log  This parameter is sent to disk_log     If audit_trail_log specifies that logging should take place  this parameter must be defined        atl_repair     true   false   truncate   snmp_repair  lt optional gt     Specifies if and how the audit trail log shall be repaired when opened  Unless this parameter has the value  snmp_repair it is sent to disk_log  If  on the other hand  the value is snmp_repair  snmp attempts to  handle certain faults on its own  And even if it cannot repair the file  it does not truncate it directly  but instead  moves it aside for later off line analysis     Default is true     false  lt optional gt     atl_segqno     true    Specifies if the audit trail log entries will be  sequence  numbered or not  The range of the sequence numbers are  according to RFC 5424  i e  1 through 2147483647     Default is false     1 5 2 Modifying the Configuration Files    To to start the application  agent and or manager   the configuration files must be modified and there are two ways of  doing this  Either edit the files manually  or run the configuration tool as follows    
240. se     accept_send_pdu Targets  PduType    gt  Reply  Types   Targets   targets     targets      target      target      ip_address    port      PduType   pdu_type    gt  0  Reply   boolean     NewTargets  NewTargets   targets     Called before the basic message processing  MPD  is done  when a pdu has been received from the master agent     For the message to be discarded all together  the function must return false     Note that it is possible for this function to filter out targets  but not add its own  by returning an updated Targets  list  NewTargets      Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    137    snmpa_notification_delivery_info_receiver    snmpa_notification_delivery_info_receiver    Erlang module    This module defines the behaviour of the notification delivery information receiver     A snmpa_notification_delivery_info_receiver compliant module must export the following  functions        e  delivery_targets 3  e     delivery_info 4    The semantics of them and their exact signatures are explained below     DATA TYPES  address     A 4 tuple  Exports    delivery targets Tag  Targets  Extra    gt  void    Types    Tag   term     Targets    target       target      Address  Port    Address   address      Port   integer      Extra   term      Inform about target addresses     This is the first function called when a notification delivery is in progress  It informs the receiver which targets will  get the notification  The result 
241. sed on to the net if process  The net if process included in this application  makes  with one exception  no use of this info  so the only use for it in such a configuration  when using the built in  net if  would be tracing  The one usage exception is  Any tuple with snmpm_extra_info_tag as its first element  is reserved for internal use        Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    181    snmpm       sync_get_next2 UserId  TargetName  Oids    gt   ok  SnmpReply  Remaining      error  Reason     sync_get_next2 UserId  TargetName  Oids  SendOpts    gt   ok  SnmpReply   Remaining     error  Reason   Types    UserId   term     TargetName   target_name     Oids    oid      SendOpts   send_opts     send_opts      send_opt       send_opt      context  string       timeout  pos_integer       extra   term       community  community       sec_model  sec_model       sec_name   string       sec_level  sec_level       max_message_size  pos_integer        SnmpReply   snmp_reply      Remaining integer       Reason    send_failed  ReqId  ActualReason     invalid_sec_info  SecInfo   SnmpInfo    term      ReqId   term    ActualReason   term      SecInfo    sec_info     sec_info      sec_tag    ExpectedValue  ReceivedValue   sec_tag     atom      ExpectedValue   ReceivedValue   term    SnmpInfo   term         Synchronous get   next    request   Remaining is the remaining time of the given  or default  timeout time     When Reason is  send_failed       i
242. send_opt      context  string       timeout  pos_integer       extra   term       community  community       sec_model  sec_model       sec_name   string       sec_level  sec_level       max_message_size  pos_integer        ReqiId   integer     Reason   term         Asynchronous get     bulk request  See RFC1905    The reply will be delivered to the user through a call to the snmpm_user callback function handle_pdu   The send option timeout specifies for how long the request is valid  after which the manager is free to delete it      The send option ext ra specifies an opaque data structure passed on to the net if process  The net if process included  in this application makes no use of this info  so the only use for it in such a configuration  when using the built in  net if  would be tracing     Some of the send options  community  sec_model  sec_name  sec_level and max_message_size  are  override options  That is  for this request  they override any configuration done when the agent was registered        Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    189    snmpm       async_get_bulk UserId  TargetName  NonRep  MaxRep  Oids    gt   ok  ReqId      error  Reason     async_get_bulk UserId  TargetName  NonRep  MaxRep  ContextName  Oids    gt   ok   ReqiId     error  Reason     async_get_bulk UserId  TargetName  NonRep  MaxRep  Oids  Expire    gt   ok   ReqiId     error  Reason     async_get_bulk UserId  TargetName  NonRep  MaxRep  ContextName  O
243. snmpa_error_logger       snmpa_error_logger    Erlang module    The module snmpa_error_logger implements the snmpa_error_report behaviour  see  snmpa_error_report  containing two callback functions which are called in order to report SNMP errors     This module provides a simple mechanism for reporting SNMP errors  Errors are sent to the error_logger after  a size check  Messages are truncated after 1024 chars  It is provided as an example     This module is the default error report module  but can be explicitly configured  see sumpa_error and configuration  parameters     Exports    config_err  Format  Args    gt  void    Types    Format   string     Args   list       The function is called if an error occurs during the configuration phase  for example if a syntax error is found in a  configuration file     Format and Args are as in io format  Format  Args      user_err  Format  Args    gt  void    Types    Format   string     Args   list       The function is called if a user related error occurs at run time  for example if a user defined instrumentation function  returns erroneous     Format and Args are as in io  format  Format  Args      See Also  error_logger 3     128   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpa_local_db       snmpa_local_db    Erlang module    The module snmpa_local_db contains functions for implementing tables  and variables  using the SNMP built in  database  The database exists in two instances  one volati
244. stance  columns  if any  Having done so  the  value of the status column becomes    notInService   and we  proceed to interaction 4     74   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     1 17 SNMP Appendix B       Interaction 4  Making the Conceptual Row Available    Once the management station is satisfied with the values  associated with the columns of the conceptual row  it issues  a management protocol set operation to set the status column  to    active   If the agent has sufficient information to  make the conceptual row available for use by the managed  device  the management protocol set operation succeeds  a     noError  response is returned   Otherwise  the management  protocol set operation fails with an error of     inconsistentValue      NOTE WELL    A conceptual row having a status column with value     notInService  or    notReady  is unavailable to the  managed device  As such  it is possible for the  managed device to create its own instances during the  time between the management protocol set operation  which sets the status column to    createAndWait  and the  management protocol set operation which sets the status  column to    active   In this case  when the management  protocol set operation is issued to set the status  column to    active   the values held in the agent  supersede those used by the managed device     If the management station is prevented from setting the  status column to    active   e g   due to manag
245. state is B or C   depending on the information available to the agent  If  inconsistentName or inconsistentValue is returned  the row  remains in state A      5  depending on the MIB definition for the column table   either noError or inconsistentValue may be returned     NOTE  Other processing of the set request may result ina  response other than noError being returned  e g    wrongValue  noCreation  etc     Conceptual Row Creation    There are four potential interactions when creating a  conceptual row  selecting an instance identifier which is  not in use  creating the conceptual row  initializing any  objects for which the agent does not supply a default  and   making the conceptual row available for use by the managed  device     Interaction 1  Selecting an Instance Identifier   The algorithm used to select an instance identifier varies  for each conceptual row  In some cases  the instance   identifier is semantically significant  e g   the  destination address of a route  and a management station    selects the instance identifier according to the semantics     In other cases  the instance identifier is used solely to    Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    71    1 17 SNMP Appendix B       distinguish conceptual rows  and a management station  without specific knowledge of the conceptual row might  examine the instances present in order to determine an  unused instance identifier   This approach may be used  but  it is often hi
246. strumentation Functions       For tables     table_access  get  RowIndex Cols   ExtraArgl           Cols is a list of Column  The agent will sort incoming variables so that all operations on one row  same index  will  be supplied at the same time  The reason for this is that a database normally retrieves information row by row     These functions must return the current values of the associated variables     Set Operation    For scalar variables     variable_access set  NewValue    ExtraArgl           For tables     table_access set  RowIndex  Cols    ExtraArgl         Cols isa list of tuples  Column  NewValue         These functions returns noError if the assignment was successful  otherwise an error code     Is set ok Operation    As a complement to the set operation  it is possible to specify a test function  This function has the same syntax as  the set operation above  except that the first argument is is_set_ok instead of set  This function is called before  the variable is set  Its purpose is to ensure that it is permissible to set the variable to the new value     variable_access is_set_ok  NewValue    ExtraArgl         For tables    table_access set  RowIndex  Cols    ExtraArgl       Cols isa list of tuples  Column  NewValue      Undo Operation    A function which has been called with is_set_ok will be called again  either with set if there was no error  or  with undo  if an error occurred  In this way  resources can be reserved in the is_set_ok operation  released i
247. t  Ret    Types   Key   term    Ret   ok    error  Reason     Reason   term      Delete a view tree family definition from the agent config     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    167    snmpc    snmpc    Erlang module    The module snmpc contains interface functions to the SNMP toolkit MIB compiler     Exports    compile  File     compile  File  Options    gt   ok  BinFileName     error  Reason     Types     File   string    Options    opt       opt     db     relaxed_row_name_assign_check     deprecated      description     reference     group_check     i     i1     imports      module     module_identity     module_compliance     agent_capabilities       outdir     no_defs     verbosity     warnings     warnings_as_errors     db      db  volatile persistent  mnesia     deprecated      deprecated  bool       relaxed_row_name_assign_check     relaxed_row_name_assign_check  description     description   reference     reference   group_check      group_check  bool        i      i   dir       il      il   dir       imports      imports   module      module  atom       module_identity     module_identity    module _compliance     module_compliance   agent_capabilities     agent_capabilities   no_defs     no_defs   outdir      outdir  dir      verbosity      verbosity  silence warning info log debug trace   warnings      warnings  bool       warnings_as_errors     warnings_as_errors    dir     string    BinFileName   string      Compiles
248. t  Ret   Types   Opl  Op2   is_set_ok   set   undo  NameDb   name_db     Val  Ret    new   delete   get    value       term     This is the default instrumentation function for variables     The new function creates a new variable in the database with a default value as defined in the MIB  or a zero value   depending on the type      The delete function does not delete the variable from the database     The function returns according to the specification of an instrumentation function     variable_get NameDb    gt   value  Value    undefined  Types    NameDb   name_db     Value   value       Gets the value of a variable     variable set  NameDb  NewVal    gt  true   false    Types   NameDb   name_db    NewVal   value       Sets a new value to a variable  The variable is created if it does not exist  No checks are made on the type of the  new value     Returns false if the NameDb argument is incorrectly specified  otherwise t rue     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    149    snmp_generic       Example    The following example shows an implementation of a table which is stored in Mnesia  but with some checks performed  at set request operations     myTable_func new  NameDb    gt    pass unchanged  snmp_generic table_func new  NameDb      myTable_func  delete  NameDb    gt    pass unchanged  snmp_generic table_func  delete  NameDb         change row  myTable_func is_set_ok  RowIndex  Cols  NameDb    gt   case snmp_generic table_func is
249. t in an MIB when the MIB is unloaded from  the agent  This makes it possible to perform necessary clean up        This function is optional  The return value is discarded     f get    ExtraArgs      The function f  get    ExtraArgs   is called when a get request or a get next request refers to the variable        This function is mandatory     Valid Return Values       value  Value   The Value must be of correct type  length and within ranges  otherwise genErr is  returned in the response PDU  If the object is an enumerated integer  the symbolic enum value may be used as  an atom  If the object is of type BITS  the return value shall be an integer or a list of bits that are set        noValue  noSuchName  SNMPv1        noValue  noSuchObject   noSuchInstance   SNMPv2    e genErr  Used if an error occurred  Note  this should be an internal processing error  e g  a caused by a  programing fault somewhere  If the variable does not exist  use  noValue  noSuchName  or  noValue   noSuchInstance            54   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     1 11 Definition of Instrumentation Functions    f is_set_ok  NewValue    ExtraArgs         The function f  is_set_ok  NewValue    ExtraArgs    is called in phase one of the set request processing  so that the new value can be checked for inconsistencies     NewVa_lue is guaranteed to be of the correct type  length and within ranges  as specified in the MIB  If the object is  an enumerated integer o
250. t means that the net_if process failed to send the message  This could happen because  of any number of reasons  i e  encoding error  ActualReason is the actual reason in this case     The send option ext ra specifies an opaque data structure passed on to the net if process  The net if process included  in this application makes  with one exception  no use of this info  so the only use for it in such a option  when using  the built in net if  would be tracing  The one usage exception is  Any tuple with snmpm_extra_info_tag as its  first element is reserved for internal use        Some of the send options  community  sec_model  sec_name  sec_level and max_message_size  are  override options  That is  for this request  they override any configuration done when the agent was registered        For SnmpInfo  see the user callback function handle_report     182   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpm       sync_get_next UserId  TargetName  Oids    gt   ok  SnmpReply  Remaining      error  Reason     sync_get_next  UserId  TargetName  ContextName  Oids    gt   ok  SnmpReply   Remaining     error  Reason     sync_get_next  UserId  TargetName  Oids  Timeout    gt   ok  SnmpReply   Remaining     error  Reason     sync_get_next UserId  TargetName  ContextName  Oids  Timeout    gt   ok   SnmpReply  Remaining     error  Reason     sync_get_next  UserId  TargetName  ContextName  Oids  Timeout  ExtraInfo    gt    ok  SnmpReply  Remaining     e
251. t_if_filter_module       For defaults see the options in agent_net_if_filter_option     agent_net_if_filter_module     atom    lt optional gt     Module which handles the network interface filter part for the SNMP agent  Must implement the  snmpa_network_interface_filter behaviour     Default is snmpa_net_if_filter   agent_mibs      string     lt optional gt   Specifies a list of MIBs  including path  that defines which MIBs are initially loaded into the SNMP master agent   Note that the following will always be loaded   e version vl  STANDARD MIB    e version v2  SNMP v2     version v3  SNMPv2  SNMP FRAMEWORK MIB and SNMP MPD MIB  Default is           22   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     1 5 Running the application       mib_storage     ets    ets  Dir     ets  Dir  Action    dets    dets  Dir      dets  Dir  Action    mnesia    mnesia  Nodes     mnesia  Nodes  Action    lt optional gt     Specifies how info retrieved from the mibs will be stored     If mib_storage is  ets  Dir   the table will also be stored on file  If Dir is default  then db_dir  will be used     If mib_storage is dets orif Dir is default  then db_dir will be used for Dir   If mib_storage is mnesia then erlang  nodes    will be used for Nodes   Default is ets     Dir   default   string   Diris the directory where the files will be stored  If default  then db_dir  will be used           Nodes   visible   connected    node     Nodes   visible is translated to 
252. target_params config file   Dir is the path to the directory where to store the config file   Hdr is an optional file header  note that this text is written to the file as is      See Target Parameters Definitions for more info     append _target_params_config Dir  Conf    gt  ok  Types   Dir   string    Conf    target_params_entry       Append the target_params config to the current agent target_params config file     Dir is the path to the directory where to store the config file     See Target Parameters Definitions for more info     read_target_params_config Dir    gt  Conf  Types    Dir   string     Conf    target_params_entry       Read the current agent target_params config file     Dir is the path to the directory where to store the config file     See Target Parameters Definitions for more info     vacm_s2g_entry SecModel  SecName  GroupName    gt  vacm_s2g_entry       vacm_acc_entry GroupName  Prefix  SecModel  SecLevel  Match  ReadView   WriteView  NotifyView    gt  vacm_acc_entry       vacm_vtf_entry ViewIndex  ViewSubtree    gt  vacm_vtf_entry       vacm_vtf_entry  ViewIndex  ViewSubtree  ViewStatus  ViewMask    gt   vacm_vtf_entry       Types   SecModel   v1   v2c   usm  SecName   string    GroupName   string    Prefix   string    SecLevel   noAuthNoPriv   authNoPriv   authPriv  Match   prefix   exact  ReadView   string    WriteView   string      118   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpa_conf       NotifyView   s
253. ted from the configuration file will have StorageType nonVolatile     All snmp counters are set to zero     If an error is found in the configuration file  it is reported using the function config_err 2 of the error  report  module and the function fails with reason configuration_error     ConfDir is a string which points to the directory where the configuration files are found     The configuration file read is  community conf     reconfigure  ConfDir    gt  void    Types    ConfDir   string    Inserts all data in the configuration files into the database and destroys all old data  including the rows with StorageType  nonVolatile  The rows created from the configuration file will have StorageType nonVolatile   Thus  the data in the SNMP COMMUNITY MIB  after this function has been called  is from the configuration files   All snmp counters are set to zero     If an error is found in the configuration file  it is reported using the function config_err 2 of the error report  module  and the function fails with reason configuration_error     ConfDir is a string which points to the directory where the configuration files are found     The configuration file read is  community conf     add_community  Idx  CommName  SecName  CtxName  TransportTag    gt  Ret  add_community  Idx  CommName  SecName  EngineId  CtxName  TransportTag    gt  Ret  Types    Idx   string     CommName   string     SecName   string     EngineId   string     CtxName   string      Ericsson AB  All Rights Reserve
254. teger       except that the default time  15 seconds  15000   is used   See snmpm_network_interface  handle_inform and definition of the manager net if for more info   Default is auto    manager_mibs      string     lt optional gt     Specifies a list of MIBs  including path  and defines which MIBs are initially loaded into the SNMP manager     Default is       manager_net_if      manager_net_if_opt     lt optional gt   manager_net_if_opt      module  manager_net_if_module       verbosity   verbosity       options  manager_net_if_options         Defines options specific for the SNMP manager network interface entity     For defaults see the options in manager_net_if_opt       manager_net_if_options      manager_net_if_option     lt optional gt   manager_net_if_option       bind_to  bind_to        sndbuf  sndbuf          recbuf  recbuf         no_reuse  no_reuse       filter     manager_net_if_filter_options         These options are actually specific to the used module  The ones shown here are applicable to the default  manager_net_if_module       For defaults see the options in manager_net_if_option     manager_net_if_module     atom    lt optional gt     The module which handles the network interface part for the SNMP manager  It must implement the  snmpm_network_interface behaviour     Default is snmpm_net_if   manager_net_if_filter_options      manager_net_if_filter_option     lt optional gt   manager_net_if_filter_option      module  manager_net_if_filter_module        Th
255. tegers  which follow the Cols integer in the OBJECT IDENTIFIER     e Cols isa list of integers which represent the column numbers  The Cols are sorted by increasing value and  are guaranteed to be valid column numbers     Valid Return Values    e A list with as many elements as the Cols list  where each element is the value of the corresponding column   Each element can be            value  Value   The Value must be of correct type  length and within ranges  otherwise genErr is  returned in the response PDU  If the object is an enumerated integer  the symbolic enum value may be used   as an atom   If the object is of type BITS  the return value shall be an integer or a list of bits that are set        noValue  noSuchName  SNMPv1        noValue  noSuchObject   noSuchInstance  SNMPv2        noValue  Error   If the row does not exist  because all columns have  noValue  Error     the single tuple  noValue  Error  can be returned  This is a shorthand for a list with all elements   noValue  Error                  e genErr  Used if an error occurred  Note that this should be an internal processing error  e g  a caused  by a programing fault somewhere  If some column does not exist  use  noValue  noSuchName  or   noValue  noSuchInstance      f get_next  Rowlndex  Cols    ExtraArgs      The function f  get_next  RowIndex  Cols    ExtraArgs   is called when a get next  or a get bulk   request refers to the table     The RowIndex argument may refer to an existing row or a non existing r
256. tem    Value      Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    147    snmp_generic       Value   term    Get a specific table info item or  if Item has the value a11  a two tuple list  property list  is instead returned with    all the items and their respctive values of the given table     This function can be used in instrumentation functions to retrieve a given part of the table info     table _func Opl1  NameDb    table _func Op2  RowIndex  Cols  NameDb    gt  Ret   Types   Op1  Op2   get   next   is_set_ok   set   undo  NameDb   name_db      RowIndex   row_index      new   delete    Cols   columns     Ret   term      This is the default instrumentation function for tables     e The new function creates the table if it does not exist  but only if the database is the SNMP internal db     e The delete function does not delete the table from the database since unloading an MIB does not necessarily  mean that the table should be destroyed     e The is_set_ok function checks that a row which is to be modified or deleted exists  and that a row which is  to be created does not exist     e The undo function does nothing     e The set function checks if it has enough information to make the row change its status from not Ready to  not InService  when a row has been been set to createAndWait   If a row is set to createAndWait   columns without a value are set to noinit  If Mnesia is used  the set functionality is handled within a  transaction     I
257. ternal columns in  the set function     To illustrate this  suppose we extend our Mnesia empTable with one internal column  We create it as before  but  with an arity of 4  by adding another attribute     mnesia create_table   name  employees     snmp    key   integer  string        attributes   key  telno  row_status  internal_col         The last column is the internal column  When performing a set operation  which creates a row  we must give a value  to the internal column  The instrumentation functions will now look as follows      define  createAndGo  4     define  createAndWait  5      emp_table  set  RowIndex  Cols    gt   notify_internal_resources  RowIndex  Cols    NewCols      case is_row_created empTable  Cols  of  true   gt  Cols      4   internal   i    add internal column  false  Cols  end   snmp_generic table_func  set  RowIndex  NewCols   empTable  mnesia     emp_table  Op  RowIndex  Cols    gt   snmp_generic table_func  Op  RowIndex  Cols   empTable  mnesia       ole    keep original cols    is_row_created Name  Cols    gt   case snmp_generic get_status_col Name  Cols  of   ok   createAndGo    gt  true    ok   createAndWait    gt  true   _     gt  false  end     If a row is created  we always set the internal column to  internal      1 15 7 Deviations from the Standard    In some aspects the agent does not implement SNMP fully  Here are the differences     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    67    1 16 SNMP Appendix 
258. the object is not defined in any loaded MIB     Db is a reference to the symbolic store database  retrieved by a call to get_symbolic_store_db 0      which_aliasnames     gt  Result  Types   Result    atom        Retrieve all alias names known to the agent     which _tables     gt  Result  Types   Result    atom        Retrieve all tables known to the agent     which _variables     gt  Result  Types   Result    atom        Retrieve all variables known to the agent     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    99    snmpa       which notifications     gt  Result  Types   Result     Name  MibName  Info    Name   atom    MibName   atom    Info   term      Retrieve all notifications  and traps  known to the agent     log_to_txt  LogDir   log_to_txt LogDir  Mibs   log_to_txt LogDir  Mibs  OutFile    gt  ok    error  Reason   log_to_txt LogDir  Mibs  OutFile  LogName    gt  ok    error  Reason   log_to_txt LogDir  Mibs  OutFile  LogName  LogFile    gt  ok    error  Reason   log_to_txt LogDir  Mibs  OutFile  LogName  LogFile  Start    gt  ok    error   Reason   log_to_txt LogDir  Mibs  OutFile  LogName  LogFile  Start  Stop    gt  ok     error  Reason   Types   LogDir   string     Mibs    MibName   MibName   string    OutFile  LogName    string       string      LogFile   string      Start   Stop   null   datetime      local_time datetime        universal _time  datetime        Reason   disk_log_open_error     file_open_error     term    disk_log
259. the only use for it in such a configuration  when using the built in  net if  would be tracing  The one usage exception is  Any tuple with snmpm_ext ra_info_tag as its first element  is reserved for internal use        async_set2 UserId  TargetName  VarsAndVals    gt   ok  ReqId     error  Reason     async_set2 UserId  TargetName  VarsAndVals  SendOpts    gt   ok  ReqId      error  Reason     Types   UserId   term    TargetName   target_name     VarsAndVals   vars_and_vals    SendOpts   send_opts    send_opts      send_opt       send_opt      context  string       timeout  pos_integer       extra   term       community  community       sec_model  sec_model       sec_name   string       sec_level  sec_level       max_message_size  pos_integer        ReqId   term    Reason   term    Asynchronous set    request   The reply will be delivered to the user through a call to the snmpm_user callback function handle_pdu   The send option timeout specifies for how long the request is valid  after which the manager is free to delete it    When var_and_val   is  oid    value     the manager makes an educated guess based on the loaded mibs     The send option ext ra specifies an opaque data structure passed on to the net if process  The net if process included  in this application makes  with one exception  no use of this info  so the only use for it in such a option  when using  the built in net if  would be tracing  The one usage exception is  Any tuple with snmpm_extra_info_tag as its  
260. to be done  Now the manager can read  add  and modify rows  Also  you can use the ordinary  Mnesia API to access the table from your programs  The only explicit action is to create the Mnesia table  an action  the user has to perform in order to create the required table schemas     Adding Own Actions    It is often necessary to take some specific action when a table is modified  This is accomplished with an instrumentation  function  It executes some specific code when the table is set  and passes all other requests down to the pre defined  function     The following example illustrates this idea     66   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     1 15 Advanced Agent Topics       emp_table set  RowIndex  Cols    gt   notify_internal_resources  RowIndex  Cols    snmp_generic table_func set  RowIndex  Cols   empTable  mnesia     emp_table Op  RowIndex  Cols    gt   snmp_generic table_func Op  RowIndex  Cols   empTable  mnesia       The default instrumentation functions are defined in the module snmp_generic  Refer to the Reference Manual   section SNMP  module snmp_generic for details     Extending the Mnesia Table    A table may contain columns that are used internally  but should not be visible to a manager  These internal columns  must be the last columns in the table  The set operation will not work with this arrangement  because there are  columns that the agent does not know about  This situation is handled by adding values for the in
261. to_txt LogDir  Mibs  OutFile  LogName  LogFile    gt  ok    error  Reason   log_to_txt LogDir  Mibs  OutFile  LogName  LogFile  Start    gt  ok    error   Reason   log_to_txt  LogDir  Mibs  OutFile  LogName  LogFile  Start  Stop    gt  ok     error  Reason   Types    LogDir   string     Mibs    MibName    MibName   string      OutFile   string     LogName   string     LogFile   string     Start   Stop   null   datetime      local_time datetime         universal_time  datetime        Reason   disk_log_open_error     file_open_error     term     disk_log_open_error      LogName  term       file_open_error      OutFile  term        Converts an Audit Trail Log to a readable text file  Out File defaults to    snmpm_log txt   LogName defaults to     snmpm_log   LogF ile defaults to  snmpm log   See snmp log_to_txt for more info     log_to_io LogDir    gt  ok    error  Reason   log_to_io LogDir  Mibs    gt  ok    error  Reason   log_to_io LogDir  Mibs    gt  ok    error  Reason   log_to_io LogDir  Mibs  LogName    gt  ok    error  Reason   log_to_io LogDir  Mibs  LogName  LogFile    gt  ok    error  Reason   log_to_io LogDir  Mibs  LogName  LogFile  Start    gt  ok    error  Reason   log_to_io LogDir  Mibs  LogName  LogFile  Start  Stop    gt  ok    error   Reason   Types    LogDir   string     Mibs    MibName    MibName   string       LogName string      LogFile   string     Start   Stop   null   datetime      local_time datetime        universal_time  datetime        Reason   disk
262. tring     ViewIndex   integer     ViewSubtree    integer       ViewStatus   included   excluded    ViewMask   null    zero_or_one      zero_or_one     0   1  vacm_s2g_entry     term    vacm_acc_entry     term    vacm_vtf_entry     term      Create an entry for the agent vacm config file  vacm  conf        vacm_vtf_entry 2 translates to the following call  vacm_vtf_entry  ViewIndex  ViewSubtree   included  null      See MIB Views for VACM for more info     write_vacm_config Dir  Conf    gt  ok    write_vacm_config Dir  Hdr  Conf    gt  ok    Types   Dir   string    Hdr   string    Conf    vacm_entry      vacm_entry     vacm_sg2_entry     vacm_acc_entry     vacm_vtf_entry       Write the agent vacm config to the agent vacm config file   Dir is the path to the directory where to store the config file   Hdr is an optional file header  note that this text is written to the file as is      See MIB Views for VACM for more info     append _vacm_config Dir  Conf    gt  ok  Types   Dir   string    Conf    vacm_entry      Append the vacm config to the current agent vacm config file     Dir is the path to the directory where to store the config file     See MIB Views for VACM for more info     read_vacm_config Dir    gt  Conf  Types    Dir   string     Conf    vacm_entry      Read the current agent vacm config file     Dir is the path to the directory where to store the config file     See MIB Views for VACM for more info     Ericsson AB  All Rights Reserved   Simple Network Management P
263. trumentation function for this table is called my_table              Figure 10 1  Contents of my_table    Note     N A means not accessible     The manager issues the following getNext request     getNext  myTable myTableEntry 3 1 1   myTable myTableEntry 5 1 1      Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    49    1 10 Instrumentation Functions       Since both operations involve the 1 1 index  this is transformed into one call to my_table     my_table get_next   1  1    3  5      In this call   1  1  is the RowIndex  where key 1 has value 1  and key 2 has value 1  and  3  5  is the list of  requested columns  The function should now return the lexicographically next elements     tts  Uy Alr chr ler Ip Al E    This is illustrated in the following table           Figure 10 2  GetNext from  3 1 1  and  5 1 1      The manager now issues the following getNext request     getNext  myTable myTableEntry 3 2 1   myTable myTableEntry 5 2 1      This is transformed into one call to my_table     my tablelget nexe er IPIS Sh    The function should now return     e 1  1   6   endOfTable     This is illustrated in the following table     50   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     1 10 Instrumentation Functions             endOfTable  Figure 10 3  GetNext from  3 2 1  and  5 2 1      The manager now issues the following getNext request     getNext  myTable myTableEntry 3 1 2   myTable myTableEntry 4 1 2        Thi
264. ts Reserved   Simple Network Management Protocol  SNMP    97    snmpa       MibFile   string      Retrieve the list of all the mibs loaded into this agent  Default is the master agent     whereis mib MibName    gt   ok  MibFile     error  Reason   whereis_mib Agent  MibName    gt   ok  MibFile     error  Reason   Types     Agent   pid     atom    MibName   atom     MibFile  Reason   term      string       Get the full path to the  compiled  mib file     current_request_id     gt   value  RequestId    false    current_context     gt   value  Context    false  current_community     gt   value  Community    false  current_address     gt   value  Address    false  Types     RequestId   integer     Context   string    Community   string    Address   term      Get the request id  context  community and address of the request currently being processed by the agent     Note that these functions is intended to be called by the instrumentation functions and only if they are executed in the  context of the agent process  e g  it does not work if called from a spawned process      enum_to_int  Name  Enum    gt   value  Int    false  enum_to_int Db  Name  Enum    gt   value  Int    false  Types    Db   term     Name    atom       Enum atom       Int   int         Converts the symbolic value Enum to the corresponding integer of the enumerated object or type Name in a MIB   The MIB must be loaded     false is returned if the object or type is not defined in any loaded MIB  or if it does not
265. twork Management Protocol  SNMP     snmpa       send_notification Agent  Notification  Receiver     send_notification Agent  Notification  Receiver  Varbinds     send_notification Agent  Notification  Receiver  NotifyName  Varbinds     send_notification Agent  Notification  Receiver  NotifyName  ContextName   Varbinds    gt  void      send_notification Agent  Notification  Receiver  NotifyName  ContextName   Varbinds  LocalEngineID    gt  void      Types     Agent   pid     atom     Notification   atom     Receiver   no_receiver    Tag  Recv    notification_delivery_ info    Tag   term     Recv   receiver      receiver     pid     atom      Mod  Func  Args    Mod   atom     Func   atom     Args   list     NotifyName   string     ContextName   string     Varbinds   varbinds      varbinds      varbind       varbind      Variable  Value     Column  RowIndex  Value     OID  Value   Variable   atom     Column   atom     OID   oid     Value   term     RowIndex    int      LocalEngineID   string      Sends the notification Notification to the management targets defined for NotifyName in the  snmpNotifyTable in SNMP NOTIFICATION MIB from the specified context     Ifno NotifyName is specified  or if itis      the notification is sent to all management targets  Addresses below      If no ContextName is specified  the default    context is used     The parameter Receiver specifies where information about delivery of Inform Requests should be sent  The agent  sends Inform Requests and wa
266. ue false truncate    true   20  Do you wish to assign a default user  yes  or use    the default settings  no   y n    n     Manager snmp config    1  Engine ID  snmpEngineID standard variable   bmk s engine   2  Max message size   484    3  IP address for the manager  only used as id   when sending requests   127 0 0 1    4  Port number  standard 162    5000    5  Configure a user of this manager  y n    y    5b  User id  kalle  5c  User callback module  snmpm_user_default   5d  User  callback  data   undefined    5  Configure a user of this manager  y n    y  n   6  Configure an agent handled by this manager  y n    y   6b  User id  kalle  6c  Target name   bmk s agent    Ge Version  l 2 s  2 MOLS   be eCommunity string e pubiic    6f  Engine ID  snmpEngineID standard variable   bmk s engine   6g  IP address for the agent  127 0 0 1    6h  The UDP port the agent listens to   standard 161   4000   6i  Retransmission timeout  infinity pos integer    infinity              30   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     1 5 Running the application       6j  Max message size   484    6k  Security model  any vl v2c usm    any  usm   61  Security name    initial     6m  Security level  noAuthNoPriv authNoPriv authPriv     noAuthNoPriv  authPriv  6  Configure an agent handled by this manager  y n    y  n   7  Configure an usm user handled by this manager  y n    y    7a  Engine ID  bmk s engine    7b  User name  hobbes   7c  Security name   hobb
267. unctions with a high level programming language    e basic fault handling such as automatic type checking    4   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     1 2 Agent Functional Description    e access control   e authentication   e privacy through encryption   e loading and unloading of MIBs in run time   e the ability to change instrumentation functions without recompiling the MIB    e rapid prototyping environment where the MIB compiler can use generic instrumentation functions  which later  can be refined by the programmer    e a simple and extensible model for transaction handling and consistency checking of set requests  e support of the sub agent concept via distributed Erlang   e a mechanism for sending notifications  traps and informs    e support for implementing SNMP tables in the Mnesia DBMS     1 2 2 SNMPv1  SNMPv2 and SNMPv3    The SNMP development toolkit works with all three versions of Standard Internet Management Framework  SNMPv1   SNMPv2 and SNMPv3  They all share the same basic structure and components  And they follow the same  architecture     The versions are defined in following RFCs    e SNMPv1 RFC 1555  1157 1212  1213 and 1215   e SNMPv2 RFC 1902   1907   e SNMPv3 RFC 2570   2575   Over time  as the Framework has evolved from SNMPv1   through SNMPv2  to SNMPv3 the definitions of each of    these architectural components have become richer and more clearly defined  but the fundamental architecture has  remained co
268. use the same OBJECT IDENTIFIER   If that is the case  it issues an error message  However  the compiler cannot detect Oid conflicts between different  MIBs  These kinds of conflicts generate an error at load time  To avoid this  the following function can be used to  do consistency checking between MIBs                    erl gt snmpc is_consistent  ListOfMibNames       ListOfMibNames is a list of compiled MIBs  for example   RFC1213 MIB    MY MIB    The function also  performs consistency checking of trap definitions   1 4 4 hrl File Generation    It is possible to generate an  hr1 file which contains definitions of Erlang constants from a compiled MIB file  This  file can then be included in Erlang source code  The file will contain constants for     e object Identifiers for tables  table entries and variables  e column numbers  e enumerated values    e default values for variables and table columns     Use the following command to generate a  hrl file from an MIB     erl gt snmpc mib_to_hrl1 MibName       1 4 5 Emacs Integration    With the Emacs editor  the next error  C X    function can be used indicate where a compilation error occurred   provided the error message is described by a line number     Use M x compile to compile an MIB from inside Emacs  and enter   erl  s snmpc compile  lt MibName gt   noshell    An example of  lt MibName gt  is RFC1213 MIB     1 4 6 Compiling from a Shell or a Makefile    The erlc commands can be used to compile SNMP MIBs  Example     18
269. v2   called Counter64  that an SNMPv1 manager cannot decode correctly  Therefore  an agent may never send  a Counter64 object to an SNMPv1 manager  The common practice in these situations is to simple ignore  any Counter64 objects  when sending a reply or a trap to an SNMPv1 manager  For example  if an SNMPv1  manager tries to GET an object of type Counter64  he will get a noSuchName error  while an SNMPv2  manager would get a correct value     1 2 3 Operation  The following steps are needed to get a running agent     e Write your MIB in SMI in a text file    e Write the instrumentation functions in Erlang and compile them    e Put their names in the association file    e Run the MIB together with the association file through the MIB compiler   e Configure the application  agent     e Start the application  agent     e Load the compiled MIB into the agent     The figures in this section illustrate the steps involved in the development of an SNMP agent            MIB in ASN 1   file mib    sysContact OBJECT TYPE            Association file file funcs          SYNTAX DisplayString    MIB  Compiler    Binary  Representation    Figure 2 1  MIB Compiler Principles        sysContact   mymod  sysCFunc                  The compiler parses the SMI file and associates each table or variable with an instrumentation function  see the figure  MIB Compiler Principles   The actual instrumentation functions are not needed at MIB compile time  only their names     The binary output file produ
270. very  e trigger_username        agent_originating_discovery_opts      agent_originating_discovery_opt        lt optional gt   agent_originating_discovery_opt      enable  boolean         These are options effecting discovery originating in this agent   The default values for the originating discovery options are   e enable  true  multi_threaded     bool    lt optional gt   If t rue  the agent is multi threaded  with one thread for each get request   Default is false   db_dir     string    lt mandatory gt   Defines where the SNMP agent internal db files are stored   gb_max_vbs     pos_integer     infinity  lt optional gt   Defines the maximum number of varbinds allowed in a Get BULK response   Default is 1000   local_db      local_db_opt     lt optional gt     local_db_opt      repair  agent_repair       auto_save  agent_auto_save         verbosity  verbosity         Defines options specific for the SNMP agent local database   For defaults see the options in local_db_opt      agent_repair     false   true   force  lt optional gt     When starting snmpa_local_db it always tries to open an existing database  If false  and some errors occur  a  new database is created instead  If t rue  an existing file will be repaired  If force  the table will be repaired  even if it was properly closed     Default is true     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    21    1 5 Running the application       agent_auto_save     integer     infinity  lt option
271. wing call  target_addr_entry  Name  Ip  TagList   ParamsName  Engineld         target_addr_entry 6 translates to the following call  target_addr_entry Name  Ip  162   TagList  ParamsName  EnginelId  TMask  2048            target_addr_entry 8 translates to the following call  target_addr_entry  Name  Ip  Udp  1500   3  TagList  ParamsName  EngineId  TMask  MaxMessageSize         See Target Address Definitions for more info     write_target_addr_config Dir  Conf    gt  ok  write_target_addr_config Dir  Hdr  Conf    gt  ok    Types   Dir   string    Hdr   string      Conf    target_addr_entry      Write the agent target_addr config to the agent target_addr config file   Dir is the path to the directory where to store the config file   Hdr is an optional file header  note that this text is written to the file as is      See Target Address Definitions for more info     116   Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP     snmpa_conf       append _target_addr_config Dir  Conf    gt  ok  Types   Dir   string    Conf    target_addr_entry      Append the target_addr config to the current agent target_addr config file     Dir is the path to the directory where to store the config file     See Target Address Definitions for more info     read _target_addr_config Dir    gt  Conf  Types    Dir   string     Conf    target_addr_entry      Read the current agent target_addr config file     Dir is the path to the directory where to store the config file     See
272. ws  and trap target specification  All objects in this MIB are now obsolete     1 2 7 Notifications    Notifications are defined in SMIv1 with the TRAP TYPE macro in the definition of an MIB  see RFC1215   The  corresponding macro in SMIv2 is NOTIFICATION TYPE  When an application decides to send a notification  it calls  one of the following functions     snmpa send_notification Agent  Notification  Receiver     NotifyName  ContextName  Varbinds    snmpa send_trap  Agent  Notification  Community    Receiver  Varbinds       providing the registered name or process identifier of the agent where the MIB  which defines the notification is loaded  and the symbolic name of the notification     If the send_notification 3  4 function is used  all management targets are selected  as defined in RFC2273   The Receiver parameter defines where the agent should send information about the delivery of inform requests     If the send_notification 5 function is used  an Not ifyName must be provided  This parameter is used as an  index in the snmpNotifyTable  and the management targets defined by that single entry is used     The send_notification 6 function is the most general version of the function  A ContextName must be  specified  from which the notification will be sent  If this parameter is not specified  the default context      is used     The function send_trap is kept for backwards compatibility and should not be used in new code  Applications that  use this function will continue t
273. y  the more is printed     See Also  calendar 3   erlc 1     Ericsson AB  All Rights Reserved   Simple Network Management Protocol  SNMP    111    snmpa_conf       snmpa_conf    Erlang module    The module snmpa_conf contains various utility functions to used for manipulating  write append read  the config  files of the SNMP agent     DATA TYPES    transportDomain     transportDomainUdpIpv4   transportDomainUdpIpv6  transportAddressIPv4      integer     length 4   transportAddressIPv6      integer     length 8   transportAddressMask      integer     length 0  default   6  IPv4  or 10  IPv  6     Exports    agent_entry  Tag  Val    gt  agent_entry     Types     Tag   intAgentIpAddress   intAgentUDPPort   intAgentMaxPacketSize    snmpEngineMaxMessageSize   snmpEngineID    Val   term    agent_entry     term    Create an entry for the agent config file  agent  conf     The type of Val depends on the value of Tag  see Agent Information for more info     write_agent_config Dir  Conf    gt  ok  write_agent_config Dir  Hdr  Conf    gt  ok    Types   Dir   string    Hdr   string      Conf    agent_entry      Write the agent config to the agent config file   Dir is the path to the directory where to store the config file   Hdr is an optional file header  note that this text is written to the file as is      See Agent Information for more info     append _agent_config Dir  Conf    gt  ok  Types    Dir   string     Conf    agent_entry      Append the config to the current agent config fi
    
Download Pdf Manuals
 
 
    
Related Search
    
Related Contents
CPX-Terminal  大口町地域防災計画 資料編  Guide - BREPOLiS  歯周疾患分類模型 PE-PER010  測定機器  Hytec Electronics Ltd – VME64x `Hot Swap` Functionality Support  Horizon Fitness Bicycle User's Manual  biseal fiber  Ayuda - Superintendencia de Industria y Comercio  EziWeigh7 User Manual    Copyright © All rights reserved. 
   Failed to retrieve file