NUTSCAN_SCAN_SNMP(3)
====================

NAME
----

nutscan_scan_snmp - Scan network for SNMP devices.

SYNOPSIS
--------

 #include <nut-scan.h>

 nutscan_device_t * nutscan_scan_snmp(const char * start_ip,const char * stop_ip,long timeout, nutscan_snmp_t * sec);

DESCRIPTION
-----------

The *nutscan_scan_snmp()* function try to detect NUT compatible SNMP devices. It tries SNMP queries on every IP ranging from 'start_ip' to 'stop_ip'. Those IP may be either IPv4 or IPv6 addresses or host names.

You MUST call linkman:nutscan_init[3] before using this function.

This function waits up to 'timeout' microseconds before considering an IP address does not respond to SNMP queries.

A valid `nutscan_snmp_t` structure must be passed to this function.

The `nutscan_snmp_t` structure contains the following members which must be filled as described below:

	char * 'community';
	char * 'secLevel';
	char * 'secName';
	char * 'authPassword';
	char * 'privPassword';
	char * 'authProtocol';
	char * 'privProtocol';

If 'community' is not NULL, SNMP v1 request are sent using this 'community'.

If 'community' is NULL and 'secLevel' is NULL, SNMP v1 is selected and 'community' is set to "public".

In the other cases, SNMP v3 is used. 'secLevel' may be one of `SNMP_SEC_LEVEL_NOAUTH`, `SNMP_SEC_LEVEL_AUTHNOPRIV` or `SNMP_SEC_LEVEL_AUTHPRIV`. 'secName' is the security name and must be non NULL.

If 'secLevel' is set to `SNMP_SEC_LEVEL_AUTHNOPRIV`, 'authPassword' must be non NULL.

If 'secLevel' is set to `SNMP_SEC_LEVEL_AUTHPRIV`, 'authPassword' and 'privPassword' must be non NULL.

If 'authProtocol' is NULL, MD5 protocol is used. Else you can set 'authProtocol' to either "MD5" or "SHA".

If 'privProtocol' is NULL, DES protocol is used. Else you can set 'privProtocol' to either "AES" or "DES".

'peername' and 'handle' are used internally and do not need any initialization.

RETURN VALUE
------------

The *nutscan_scan_snmp()* function returns a pointer to a `nutscan_device_t` structure containing all found devices or NULL if an error occurs or no device is found.

SEE ALSO
--------
linkman:nutscan_init[3],
linkman:nutscan_scan_usb[3], linkman:nutscan_scan_xml_http[3], 
linkman:nutscan_scan_nut[3], linkman:nutscan_scan_avahi[3], 
linkman:nutscan_scan_ipmi[3], linkman:nutscan_display_ups_conf[3], 
linkman:nutscan_display_parsable[3], linkman:nutscan_new_device[3],
linkman:nutscan_free_device[3], linkman:nutscan_add_option_to_device[3],
linkman:nutscan_add_device_to_device[3], linkman:nutscan_scan_eaton_serial[3],
linkman:nutscan_cidr_to_ip[3]
