Secure SNMP Application

This application demonstrates:
    - The SNMP version 3 API

This example should work on all development boards.

The SNMPv3 API allows applications to add, delete, and
update entries in the SNMP agent's security tables.  These
tables determine what operations remote consoles are 
allowed to perform.  See RFCs 3411-3415 for details.

The example application implements a simple command line
interface (CLI) that can be used to modify the agent's 
security tables.  The CLI uses stdin and stdout.  Set 
APP_STDIO_PORT in appconf.h to the serial port to be
used for the CLI.  

show versions       list the versions of the SNMP protocol that
                    are permitted by the agent.

set versions        set the versions of the SNMP protocol that
                    are permitted by the agent.

show engineInfo     list the engine ID, the number of times the
                    agent has been booted, and the number of 
                    seconds the agent has been running
                    
set id              set the engine ID

set boots n         set the number of boots to n

set vacm s2g        Create or update a Security-to-Group table
                    entry.
                    
set vacm vtf        Create or update a view tree family entry.

set vacm access     Create or update a VACM access entry.

create              Create a new user entry.

update              Update an existing user entry.

delete user         Delete a user entry.

delete vacm s2g     Delete a security-to-group table entry.

delete vacm vtf     Delete a vew tree family entry.

delete vacm access  Delete a VACM access entry.

start               Start the SNMP agent.  Creates some default users.

list users          List the user entries.

list groups         List the groups.

list vacm vtf       List the view tree family table.

list vacm s2g       List the security-to-group table.

list vacm access group-name
                    List the VACM access entries associated with 'group-name'.

sendTrap genericTrap interfaceIndex     Send a trap                 



Three MULTI build files are provided if the option to install Green Hills
support is selected.  The build file project.gpj is used to control how
application specific files are built.  All updates to the build should be
made to this file.  Project.gpj is a subproject to the other build files
image.gpj and rom.gpj.  Image.gpj is used to generate a debuggable version
of the application, and also creates the file image.bin that can be written
into ROM if the bootloader is used.  Rom.gpj is used to generate a 
ROM image of the application if the bootloader is not used.

One GNU make file is provided.  Build the target 'image' to
generate an image that can be debugged with gdb, and the file 
image.bin which can be written to flash if the bootloader is used.
Build the target 'rom.bin' to create the file rom.bin which 
can be written to ROM if the bootloader is not used.

The following files are provided in this template.

appconf.h         sets application configuration settings
.\32b\image.gpj   used to build the big endian Green Hills version of the
                  application.  The build script creates a version that
                  can be debugged with Multi, and the file image.bin 
                  which can be written into a ROM that uses the bootloader.
makefile          Make file for the GNU toolset.
project.gpj       contains application specific build settings
readme            this file
.\32b\rom.gpj     used to build the big endian ROM image of application
root.c            contains applicationStart() function
cli.c             implements the command line interface.

                    dictionary definitions.


In addition, the following files in the BSP directory are built
as part of this application.

reset.s         contains the reset code
appconf_api.c   contains code used to read settings in appconf.h


The application build file links in the following libraries.

bsp.a           contains the BSP code
tcpip.a         contains the Net+Works TCP/IP stack
tx.a            contains the ThreadX kernel
na1.lib,na2.lib contains the NET+Works API libraries.
snmpd.lib           Contains the SNMP API
snmpv3.lib          Contains the SNMP version 3 API.
rphttpd.a           Contains the NET+Works AWS API library.
crypto.a            Contains the NET+OS Security library.
sntp.a              Contains the NET+OS SNTP Client.


The application uses the following files located in the
netos\src\linkerScripts directory.

bootldr.dat     bootloader configuration file used to generate the
                file image.bin.  It controls the information placed
                in the bootloader header of the image.

image.ld        GNU linker script used to build an image that can
                be debugged and used with the bootloader.

image.lx        Green Hills linker script used to build an image
                that can be debugged and used with the bootloader.

rom.ld          GNU linker script used to build an image that will
                run from ROM.  The bootloader is not used with
                this type of image.

rom.lx          Green Hills linker script used to build an image
                that will run from ROM.  The bootloader is not used
                with this type of image.

