LINK="#0000bb" VLINK="#551a8b" ALINK="#ff0000">

Synchronous I/O engine

The following code implements network transport that performs synchronous, blocking I/O over a single BSD socket. It is intended to serve as a network transport for SNMP messages, within a synchronous SNMP entity process, over a TCP/IP network.

The pysnmp.mapping.udp.role module defines the following items:

class manager([dst[,iface]])

Returns a new instance of manager class, representing network client (SNMP manager) optionally connected to a network server running at dst address. The dst argument, whenever given, must follow the socket module notation -- ('hostname', port) where hostname is a string and port is an integer.

The default for dst is None what means no default destination, so user would unconditionally have to specify destination to each manager.send() method (see below).

Once a default dst is specified, specific destination may not be given to the manager.send() method.

The iface parameter, if given, specifies the interface and port on local machine to bind() to. This argument must also follow the socket module notation. All further requests would then be originated from the given interface/port (for example, ('', 0)).

The default for iface is ('', 0) what stands for binding to a primary interface at the local machine.

class agent([(cb_fun, cb_ctx)[, ifaces]])

Returns a new instance of agent class, representing network server optionally bound to specific network interfaces/ports ifaces at the local machine. The ifaces argument, whenever given, must be a list of ('ifacename', port) tuples given in socket module notation.

The optional cb_fun and cb_ctx parameters may be used on class instaniation to specify default user callback function to be invoked on message receiption. A reference to user-specific data (context) may be passed as cb_ctx parameter.

The cb_fun, if given, must match the following prototype:

cb_fun(cb_ctx, (question, src))

Where question is an octet-string, as received from network, and src is question's source address given in socket module notation.

The callback function is expected to return a tuple of (answer, dst), where answer (string) is the data item to be replied back to manager by address dst (given in socket module notation).

The default for the ifaces is to listen on the loopback interface, port 161/UDP, so the default value is [('', 161)].

Be aware that for a UNIX process to bind(2) to a low port, such as 161 (that is less than 1024), a superuser privelege is required. Since running scripts under superuser privelege is not particular secure in UNIX environment, binding to a non-priveleged port is therefore strongly recommended.

Methods of the above classes may raise exceptions based on error.SnmpOverUdpError base class.