Synergy Software Package User's Manual
NetX/NetX Duo SNMP Agent

NetX/NetX Duo SNMP Agent Introduction

The NetX/NetX Duo SNMP Agent module provides a high-level API for implementing the SNMP agent for the SSP architecture and is part of the NetX and NetX Duo application bundle included in the SSP Azure RTOS integration. This module is MCU independent, so any MCU that supports NetX and NetX Duo can implement the SNMP agent.

Note
Except for internal processing, the NetX Duo™ SNMP Agent module is identical in the application, set-up and running of an SNMP Agent session as the NetX™ SNMP Agent module. 

NetX/NetX Duo SNMP Agent Module Features

  • The NetX/NetX Duo SNMP Agent module is compliant with RFC1155, RFC1157, RFC1215, RFC1901, RFC1905, RFC1906, RFC1907, RFC1908, RFC2571, RFC2572, RFC2574, RFC2575, RFC 3414 and related RFCs.
  • Operates only in UDP. TCP is not supported.
  • Doesn't support Transport Layer Security (TLS) or Datagram Transport Layer Security (DTLS).
  • The NetX/NetX Duo SNMP protocol implements SNMP Version 1, 2 and 3. The SNMPv3 implementation supports MD5 and Secure Hash Algorithm 1(SHA-1) authentication and Data Encryption Standard (DES) encryption. This version of the NetX and NetX Duo SNMP Agent has the following constraints:
    • One SNMP Agent per NetX IP Instance.
    • No support for RMON.
    • SNMP v3 Inform messages are not supported
  • Provides a mechanism to register callbacks for handling username, get, set and getnext when creating a SNMP agent.
nx_snmp_agent_BD.png
NetX/NetX Duo SNMP Agent Module Block Diagram
Note
In the figure above, the NetX (or NetX Duo) Network Driver modules has multiple implementation options available. See the description just after the module stack figure in Including the NetX/NetX Duo SNMP Agent Module in an Application for additional details.

NetX/NetX Duo SNMP Agent Module APIs Overview

The NetX Duo SNMP Agent defines APIs for creating and deleting the SNMP Agent instance and getting its messages. A complete list of the available APIs, an example API call and a short description of each can be found in the following table. A table of status return values follows the API summary table.

NetX/NetX Duo SNMP Agent Module API Summary (Part 1)

Function Name Example API Call and Description
nx_snmp_agent_authenticate_key_use (NX_SNMP_AGENT *agent_ptr, NX_SNMP_SECURITY_KEY *key);
Register a previously created authentication key with the SNMP Agent for SNMP Agent responses
nx_snmp_agent_auth_trap_key_use (NX_SNMP_AGENT *agent_ptr, NX_SNMP_SECURITY_KEY *key);
Register a previously created authentication key with the SNMP Agent for SNMP trap messages.
nx_snmp_agent_community_get (NX_SNMP_AGENT *agent_ptr, UCHAR **community_string_ptr);
Retrieve the community string from the SNMP manager GET or GETNEXT request. The SNMP Agent should compare that to its own community string (see the nx_snmp_agent_public_string_test API description).
nx_snmp_agent_context_engine_set (NX_SNMP_AGENT *agent_ptr, UCHAR *context_engine, UINT context_engine_size);
Set the context engine ID of the SNMP Agent. Must specify the size of the ID string. Only used in SNMPv3 to identify the Agent to the SNMP Manager.
nx_snmp_agent_context_name_set (NX_SNMP_AGENT *agent_ptr, UCHAR *context_name, UINT context_name_size);
Set the context name of the SNMP Agent. This string must be null terminated and the size of the name must be specified. This name must be known to the SNMP Manager.  Only used in SNMPv3.
nx_snmp_agent_create (NX_SNMP_AGENT *agent_ptr, CHAR *snmp_agent_name, NX_IP *ip_ptr, VOID *stack_ptr, ULONG stack_size, NX_PACKET_POOL *pool_ptr,
UINT (*snmp_agent_username_process)(struct NX_SNMP_AGENT_STRUCT *agent_ptr, UCHAR *username),
UINT (*snmp_agent_get_process)(struct NX_SNMP_AGENT_STRUCT *agent_ptr, UCHAR *object_requested, NX_SNMP_OBJECT_DATA *object_data),
UINT (*snmp_agent_getnext_process)(struct NX_SNMP_AGENT_STRUCT *agent_ptr, UCHAR *object_requested, NX_SNMP_OBJECT_DATA *object_data),
UINT (*snmp_agent_set_process)(struct NX_SNMP_AGENT_STRUCT *agent_ptr, UCHAR *object_requested, NX_SNMP_OBJECT_DATA *object_data));
Create the SNMP Agent and set the Agent thread task size, packet pool for transmitting SNMP messages, and user defined callbacks for handling GET, GETNEXT, SET and username requests.
nx_snmp_agent_current_version_get (NX_SNMP_AGENT *agent_ptr, UINT *version);
Obtain the current version of SNMP based on the last message received.
nx_snmp_agent_delete (NX_SNMP_AGENT *agent_ptr);
Delete the SNMP instance
nx_snmp_agent_md5_key_create (NX_SNMP_AGENT *agent_ptr, UCHAR *password, NX_SNMP_SECURITY_KEY *destination_key);
Create a key based on a supplied password and SNMP Agent context engine ID using the MD5 algorithm. This key can be used for authentication or encryption.
nx_snmp_agent_privacy_key_use (NX_SNMP_AGENT *agent_ptr, NX_SNMP_SECURITY_KEY *key);
Register a previously created security key with the SNMP Agent for encrypting and decrypting SNMPv3 messages.
nx_snmp_agent_priv_trap_key_use (NX_SNMP_AGENT *agent_ptr, NX_SNMP_SECURITY_KEY *key);
Register a previously created security key with the SNMP Agent for encrypting SNMPv3 trap messages.
nx_snmp_agent_private_string_set (NX_SNMP_AGENT *agent_ptr, UCHAR *private_string);
Register a null terminated privacy string to the SNMP Agent. Only used in SNMP1 and SNMPv2.
nx_snmp_agent_private_string_test (NX_SNMP_AGENT *agent_ptr, UCHAR *community_string, UINT *is_private);
The SNMP Agent compares the privacy string in a SET request with the its own privacy string to determine if the SET request will be permitted.
nx_snmp_agent_public_string_set (NX_SNMP_AGENT *agent_ptr, UCHAR *public_string);
Register a null terminated public string to the SNMP Agent. Only used in SNMP1 and SNMPv2.
nx_snmp_agent_public_string_test (NX_SNMP_AGENT *agent_ptr, UCHAR *community_string, UINT *is_public);
The SNMP Agent compares the public string in a GET or GETNEXT request with the its own public string to determine if the request will be permitted.
nx_snmp_agent_request_get_type_test (NX_SNMP_AGENT *agent_ptr, UINT *is_get_type);
Determine if the last SNMP packet received was a GET, GETNEXT, or GET_BULT_REQUEST request type (returns TRUE) or a SET request (returns FALSE). Intended for use in the username callback for type of request received and checking public or private strings in the request message.
nx_snmp_agent_set_interface (NX_SNMP_AGENT *agent_ptr, UINT if_index);
Determine on which network interface to run the SNMP Agent protocol.  The default interface is the primary (0) interface.
nx_snmp_agent_sha_key_create (NX_SNMP_AGENT *agent_ptr, UCHAR *password, NX_SNMP_SECURITY_KEY *destination_key);
Create a key based on a supplied password and SNMP Agent context engine ID using the SHA1 algorithm. This key can be used for authentication or encryption.
nx_snmp_agent_start (NX_SNMP_AGENT *agent_ptr);
Start the SNMP Agent thread task. This task waits to receive SNMP messages and formulates the response to the SNMP Manager.
nx_snmp_agent_stop (NX_SNMP_AGENT *agent_ptr);
Stop the SNMP Agent task thread. The SNMP Agent thread can be restarted by calling the nx_snmp_agent_start API.
nx_snmp_agent_trap_send (NX_SNMP_AGENT *agent_ptr, ULONG ip_address, UCHAR * username, UCHAR *enterprise, UINT trap_type, UINT trap_code, ULONG elapsed_time, NX_SNMP_TRAP_OBJECT *object_list_ptr);
Send a trap message in SNMPv1. This does not result from a request from the SNMP Manager. The SNMP application sends out traps as needed.
nx_snmp_agent_trapv2_send (NX_SNMP_AGENT *agent_ptr, ULONG ip_address, UCHAR *username, UINT trap_type, ULONG elapsed_time, NX_SNMP_TRAP_OBJECT *object_list_ptr);
Send a trap message in SNMPv2. This does not result from a request from the SNMP Manager. The SNMP application sends out traps as needed.
nx_snmp_agent_trapv3_send (NX_SNMP_AGENT *agent_ptr, ULONG ip_address, UCHAR * username, UINT trap_type, ULONG elapsed_time, NX_SNMP_TRAP_OBJECT *object_list_ptr);
Send a trap message in SNMPv3. This does not result from a request from the SNMP Manager. The SNMP application sends out traps as needed. Both the SNMP agent and browser must previously agree on the security (authentication and encryption) settings.
nx_snmp_agent_trapv2_oid_send (NX_SNMP_AGENT *agent_ptr, ULONG ip_address, UCHAR *username, UCHAR *oid, ULONG elapsed_time, NX_SNMP_TRAP_OBJECT *object_list_ptr);
Send a trap message in SNMPv2. This differs from nx_snmp_agent_trapv2_send in that it allows the caller to specify the OID directly.
nx_snmp_agent_trapv3_oid_send (NX_SNMP_AGENT *agent_ptr, ULONG ip_address, UCHAR * username, UCHAR *oid, ULONG elapsed_time, NX_SNMP_TRAP_OBJECT *object_list_ptr);
Send a trap message in SNMPv3. This differs from nx_snmp_agent_trapv3_send in that it allows the caller to specify the OID directly.
nx_snmp_agent_v3_context_boots_set (NX_SNMP_AGENT *agent_ptr, UINT boots);
Set the number of times the SNMP Agent has rebooted since the last communication with the SNMP Manager. Used in SNMPv3 only.
nx_snmp_agent_version_set (NX_SNMP_AGENT *agent_ptr, UINT enabled_v1, UINT enable_v2, UINT enable_v3);
Determine which type of SNMP packets the SNMP Agent will process. The application can choose V1, V2 and/or V3.  Packets received from which the SNMP Agent is not enabled are dropped.
**nxd_snmp_agent_trap_send (NX_SNMP_AGENT *agent_ptr, NXD_ADDRESS *ip_address, UCHAR * username, UCHAR *enterprise, UINT trap_type, UINT trap_code, ULONG elapsed_time, NX_SNMP_TRAP_OBJECT *object_list_ptr);
Send a trap message in SNMPv1 over IPv6. Note that this takes an NXD_ADDRESS* ip_address instead of ULONG ip_address.
**nxd _snmp_agent_trapv2_send (NX_SNMP_AGENT *agent_ptr, NXD_ADDRESS *ip_address, UCHAR * username, UINT trap_type, ULONG elapsed_time, NX_SNMP_TRAP_OBJECT *object_list_ptr);
Send a trap message in SNMPv2. Note that this takes an NXD_ADDRESS* ip_address instead of ULONG ip_address
**nxd _snmp_agent_trapv3_send (NX_SNMP_AGENT *agent_ptr, NXD_ADDRESS *ip_address, UCHAR *username, UINT trap_type, ULONG elapsed_time, NX_SNMP_TRAP_OBJECT *object_list_ptr);
Send a trap message in SNMPv3. Note that this takes an NXD_ADDRESS* ip_address instead of ULONG ip_address
nx_snmp_agent_trapv2_oid_send (NX_SNMP_AGENT *agent_ptr, NXD_ADDRESS *ip_address,, UCHAR *username, UCHAR *oid, ULONG elapsed_time, NX_SNMP_TRAP_OBJECT *object_list_ptr);
Send a trap message in SNMPv2. Note that this takes an NXD_ADDRESS* ip_address instead of ULONG ip_address
**nxd _snmp_agent_trapv3_oid_send (NX_SNMP_AGENT *agent_ptr, NXD_ADDRESS *ip_address, UCHAR * username, UCHAR *oid, ULONG elapsed_time, NX_SNMP_TRAP_OBJECT *object_list_ptr);
Send a trap message in SNMPv3. Note that this takes an NXD_ADDRESS* ip_address instead of ULONG ip_address
Note
For details on operation and definitions for the function data structures, typedefs, defines, API data, API structures, and function variables, review the associated Azure RTOS User's Manual in the References section.

**This API is only available in NetX Duo SNMP Agent. Please refer to the NetX Duo User Guide for the Renesas Synergy™ Platform for definition of NetX Duo specific data types.

The following API calls are for processing data items into the SNMP Agent response.

NetX/NetX Duo SNMP Agent Module API Summary (Part 2)

Function Name Example API Call and Description
nx_snmp_object_copy (UCHAR *source_object_name, UCHAR *destination_object_name);
This copies the string pointed to by source_object_name into the destination_object_name buffer (typically a trap message).
nx_snmp_object_counter_get (VOID *source_ptr, NX_SNMP_OBJECT_DATA *object_data);
This extracts the counter data from the location pointed to by source_ptr into the object data. Also used internally to copy internal counters of SNMPv3 statistics into error messages in SNMPv3 messages
nx_snmp_object_counter_set (VOID *destination_ptr, NX_SNMP_OBJECT_DATA *object_data);
This sets the value of data extracted from the object_data into the location pointed to by the destination_ptr.
nx_snmp_object_counter64_get (VOID *source_ptr, NX_SNMP_OBJECT_DATA *object_data);
This extracts the counter data from the location pointed to by source_ptr into the object data. The difference with nx_snmp_objext_counter_get is the value is two words instead of one.
nx_snmp_object_counter64_set (VOID *source_ptr, NX_SNMP_OBJECT_DATA *object_data);
This sets the value of data extracted from the object_data into the location pointed to by the destination_ptr. The difference with nx_snmp_objext_counter_set is the value is two words instead of one.
nx_snmp_object_compare (UCHAR *requested_object, UCHAR *reference_object);
This compares the two input objects and if equal returns NX_SUCCESS.
nx_snmp_object_copy (UCHAR *source_object_name, UCHAR *destination_object_name)
This copies the data pointed to by the source object pointer into memory pointed to by the destination object pointer. Also used internally to copy internal counters of SNMPv3 statistics into error messages in SNMPv3 messages.
nx_snmp_object_end_of_mib (VOID *not_used_ptr, NX_SNMP_OBJECT_DATA *object_data);
This appends an END_OF_MIB_VIEW macro as the input object's value. This signals the end of the MIB. See the snmp_mib_helper.h for an example.
nx_snmp_object_gauge_get (VOID *source_ptr, NX_SNMP_OBJECT_DATA *object_data);
This sets the input object to type SNMP GAUGE and places the value pointed to by the source_ptr into the object value.
nx_snmp_object_gauge_set (VOID *destination_ptr, NX_SNMP_OBJECT_DATA *object_data);
This verifies the input object is an SNMP GAUGE data type, and extracts the value into the location pointed to by the destination pointer.
nx_snmp_object_id_get (VOID *source_ptr, NX_SNMP_OBJECT_DATA *object_data);
This function retrieves the object ID from the specified source location and writes it into the object data value.
nx_snmp_object_id_set (VOID *destination_ptr, NX_SNMP_OBJECT_DATA *object_data);
This function retrieves the ASCII string from the input object and writes it to the area pointed to by the destination pointer.
nx_snmp_object_integer_get (VOID *source_ptr, NX_SNMP_OBJECT_DATA *object_data);
This retrieves the object integer from the specified source location and stores it to the object data.
nx_snmp_object_integer_set (VOID *destination_ptr, NX_SNMP_OBJECT_DATA *object_data);
This retrieves the integer from the input object and places it in the destination.
nx_snmp_object_ip_address_get (VOID *source_ptr, NX_SNMP_OBJECT_DATA *object_data);
This retrieves the IP address from the specified source location and stores it to the object data.
nx_snmp_object_ip_address_set (VOID *destination_ptr, NX_SNMP_OBJECT_DATA *object_data);
This retrieves the IP address from the input object and places it in the destination.
**nx_snmp_object_ipv6_address_get (VOID *source_ptr, NX_SNMP_OBJECT_DATA *object_data);
This retrieves the IPv6 address from the specified source location and stores it to the object data.
**nx_snmp_object_ipv6_address_set (VOID *destination_ptr, NX_SNMP_OBJECT_DATA *object_data);
This retrieves the IPv6 address from the input object and places it in the destination.
nx_snmp_object_octet_string_get (VOID *source_ptr, NX_SNMP_OBJECT_DATA *object_data, UINT length);
This retrieves the string data from the specified source location and stores it to the object data.
nx_snmp_object_octet_string_set (VOID *destination_ptr, NX_SNMP_OBJECT_DATA *object_data);
This retrieves the string from the input object and places it in the destination.
nx_snmp_object_no_instance (VOID *not_used_ptr, NX_SNMP_OBJECT_DATA *object_data);
This function places a no-instance value (NX_SNMP_ANS1_NO_SUCH_INSTANCE) in the object data.
nx_snmp_object_not_found (VOID *not_used_ptr, NX_SNMP_OBJECT_DATA *object_data);
This function places a not-found value (NX_SNMP_ANS1_NO_SUCH_OBJECT) in the object data.
nx_snmp_object_string_get (VOID *source_ptr, NX_SNMP_OBJECT_DATA *object_data, UINT length);
This function retrieves the ASCII string from the specified source location and stores it to the object data.
nx_snmp_object_string_set (VOID *destination_ptr, NX_SNMP_OBJECT_DATA *object_data);
This retrieves the ASCII string from the input object and stores it to the destination.
nx_snmp_object_timetics_get (VOID *source_ptr, NX_SNMP_OBJECT_DATA *object_data);
This function retrieves the data of type timer ticks from the specified source location and stores it to the object data.
nx_snmp_object_timetics_set (VOID *destination_ptr, NX_SNMP_OBJECT_DATA *object_data);
This retrieves the timer tick from the input object and stores it to the destination.
Note
For details on operation and definitions for the function data structures, typedefs, defines, API data, API structures, and function variables, review the associated Azure RTOS User's Manual in the References section.

**This API is only available in NetX Duo SNMP Agent. Please refer to the NetX Duo User Guide for the Renesas Synergy™ Platform for definition of NetX Duo specific data types.

Status Return Values

Name Description
NX_SUCCESS API Call Successful
NX_PTR_ERROR* Invalid input pointer parameter
NX_SNMP_UNSUPPORTED_AUTHENTICATION* The authentication key is of an unknown or unsupported type (for example, not MD5 or SHA).
NX_SNMP_INVALID_PDU_ENCRYPTION* The encryption key is of an unknown or unsupported type (for example, not MD5 or SHA).
NX_IP_ADDRESS_ERROR* IP address supplied in a trap send API is null or invalid.
NX_SNMP_ERROR Internal processing error e.g. not able to append data into the SNMP response.
NX_NOT_ENABLED SNMP Agent is not enabled with the correct security settings for certain operations such as sending messages or processing authentication and encryption keys.
NX_SNMP_ERROR_TOOBIG Data exceeds the size of the response buffer or exceed the allowable size of the parameter e.g. NX_SNMP_MAX_USER_NAME.
**NX_SNMP_INVALID_IP_PROTOCOL_ERROR An IPv6 address is received in a trap send API but the NetX Duo library is not enabled for IPv6.
Note
Lower-level drivers may return common error codes. Refer to the SSP User's Manual API References for the associated module for a definition of all relevant status return values.
  • These are error codes which are only returned if error checking is enabled. Refer to the NetX User Guide for the Renesas Synergy™ Platform or NetX Duo User's Guide for the Renesas Synergy™ Platform for more details on error-checking services in NetX and NetX Duo, respectively.

NetX/NetX Duo SNMP Agent Module Operational Overview

The SNMP agent module makes use of the underlying NetX/NetX Duo stack to perform operations. Along with the IP stack, it makes use of the NetX MD5, NetX SHA1 and NetX DES modules for authentication and encryption in SNMP v3 operation.

The SNMP agent module can be created with the nx_snmp_agent_create API. For the implementation of the SNMP agent, the user needs to define the handler functions for username, get, getnext, and set operations.

NetX/NetX Duo SNMP Agent Module Important Operational Notes and Limitations

NetX/NetX Duo SNMP Agent Module Operational Notes

Disabling SNMP Version 1

The SNMP Agent module can disable processing of version 1 requests by selecting Disable in the configuration properties for the SNMP Agent for SNMP Version 1. By default, this is enabled. When disabled, the SNMP Agent simply drops the packet with version 1, resulting in a timeout for the SNMP manager.

Disabling SNMP Version 2

The SNMP Agent module can disable processing of version 2 requests by selecting Disable in the configuration properties for the SNMP Agent for SNMP Version 2. By default, this is enabled. When disabled, the SNMP Agent simply drops the packet with version 2, resulting in a timeout for the SNMP manager.

Disabling SNMP Version 3

The SNMP Agent can disable processing of version 3 requests by selecting Disable in the configuration properties for the SNMP Agent for SNMP Version 3. By default, this is enabled. When disabled, the SNMP Agent simply drops the packet with version 3 resulting in a timeout for the SNMP manager. Enabling SNMP version 3 requires MD5, SHA1 authentication and DES encryption.

NetX/NetX Duo SNMP Agent Module Limitations

  • One SNMP Agent per NetX IP Instance.
  • No support for RMON
  • SNMP v3 Informs are not supported
  • Refer to the most recent SSP Release Notes for any additional operational limitations for this module.

Including the NetX/NetX Duo SNMP Agent Module in an Application

This section describes how to include either or both the NetX and NetX Duo SNMP Agent module in an application using the SSP configurator.

Note
It is assumed you are familiar with creating a project, adding threads, adding a stack to a thread, and configuring a block within the stack. If you are unfamiliar with any of these items, refer to the first few chapters of the SSP User's Manual to learn how to manage each of these important steps in creating SSP-based applications.

To add the NetX/NetX Duo SNMP Agent module to an application, simply add it to a thread using the stacks selection sequence given in the following table.

NetX/NetX Duo SNMP Agent Module Selection Sequence

Resource ISDE Tab Stacks Selection Sequence
g_snmp_agent0 NetX SNMP Agent Threads New Stack> X-Ware> NetX> Protocols> NetX SNMP Agent
g_snmp_agent0 NetX Duo SNMP Agent Threads New Stack> X-Ware> NetX Duo> Protocols> NetX Duo SNMP Agent

When the NetX and/or NetX Duo SNMP Agent module is added to the thread stack as shown in the following figure, the configurator automatically adds any needed lower‑level modules. Any modules needing additional configuration information have the box text highlighted in Red. Modules with a Gray band are individual modules that stand alone. Modules with a Blue band are shared or common; they need only be added once and can be used by multiple stacks. Modules with a Pink band can require the selection of lower-level modules; these are either optional or recommended. (This is indicated in the block with the inclusion of this text.) If the addition of lower-level modules is required, the module description include Add in the text. Clicking on any Pink banded modules brings up the New icon and displays possible choices.

nx_snmp_agent_MS.png
NetX/NetX Duo SNMP Agent Module Stack

In the stack above, the NetX Network Driver (or NetX Duo Network Driver in a NetX Duo stack) has not been populated yet. There are multiple possible selections for the Network Driver; they are not all provided so as not to needlessly complicate the figure and the following configuration tables. The available options depend on the MCU target, but some typical options include:

  • NetX Duo Port using PPP on nxd_ppp
  • NetX Port ETHER on sf_el_nx
  • NetX Port using Cellular Framework on sf_cellular_nsal_nx
  • NetX Port using PPP on nx_ppp
  • NetX Port using Wi-Fi Framework on sf_wifi_nsal_nx

Configuring the NetX/NetX Duo SNMP Agent Module

The NetX/NetX Duo SNMP Agent module must be configured by the user for the desired operation. The SSP configuration window automatically identifies (by highlighting the block in red) any required configuration selections, such as interrupts or operating modes, which must be configured for lower-level modules for successful operation. Only properties that can be changed without causing conflicts are available for modification. Other properties are locked and not available for changes and are identified with a lock icon for the locked property in the Properties window in the ISDE. This approach simplifies the configuration process and makes it much less error-prone than previous manual approaches to configuration. The available configuration settings and defaults for all the user-accessible properties are given in the Properties tab within the SSP Configurator and are shown in the following tables for easy reference.

Note
You may want to open your ISDE, create the module and explore the property settings in parallel with looking over the following configuration table values. This helps to orient you and can be a useful hands-on approach to learning the ins and outs of developing with SSP.

Configuration Settings for the NetX/NetX Duo SNMP Agent Module

ISDE Property Value Description
Internal thread stack size (bytes) 4096 Internal thread stack size selection
SNMP agent priority 16 SNMP agent priority selection
Type of service for SNMP responses Normal, Minimum Delay, Maximum Delay, Maximum Reliability, Minimum Cost

Default: Normal
Type of service for SNMP responses selection
Fragment enable for SNMP PDU requests Fragment, Don't Fragment

Default: Don't Fragment
Fragment enable for SNMP PDU requests selection
SNMP socket time to live 128 SNMP socket time to live selection
Agent timeout 100 Agent timeout selection
Max octet string size 255 Max octet string size selection
Max content string size 32 Max content string size selection
Max User Name Size 64 Max user name size selection
Max security Key Size 64 Max security key size selection
Minimum SNMP packet size 560 Minimum SNMP packet size selection (Value must be between 560 to 1500)
UDP port number 161 UDP port number selection (Value must be between 1 to 65535)
Trap destination port 162 Trap destination port selection
Max trap Name Size 64 Max trap Name Size selection
Max trap Key Size 64 Max trap Key Size selection
Interval between SNMP packet processing timer ticks 100 Interval between SNMP packet processing timer ticks selection
SNMP Version 1 Enable, Disable

Default: Enable
SNMP Version 1 selection
SNMP Version 2 Enable, Disable

Default: Enable
SNMP Version 2 selection
SNMP Version 3 Enable, Disable

Default: Enable
SNMP Version 3 selection
Name g_snmp_agent0 Name selection
Read Community String public Read Community String selection (Must be less than 64 chars)
Write Community String private Write Community String selection (Must be less than 64 chars)
Name of SNMP Username Handler sf_snmp0_username_handler Name of SNMP Username Handler selection
Name of SNMP GET Handler sf_snmp0_get_handler Name of SNMP GET Handler selection
Name of SNMP GETNEXT Handler sf_snmp0_getnext_handler Name of SNMP GETNEXT Handler selection
Name of SNMP SET Handler sf_snmp0_set_handler Name of SNMP SET Handler selection
Name of generated initialization function snmp_agent_init0 Name of generated initialization function selection
Auto Initialization Enable, Disable

Default: Enable
Auto Initialization selection
SNMP agent instance id 0 SNMP agent instance id selection
Note
The example settings and defaults are for a project using the S7G2 Synergy MCU Group. Other MCUs may have different default values and available configuration settings.

In some cases, settings other than the defaults for stack modules can be desirable. For example, it might be useful to select different addresses for the Ethernet port. The configurable properties for the lower-level stack modules are given in the following sections for completeness and as a reference. 

Note:  Most of the property settings for lower-level modules are intuitive and usually can be determined by inspection of the associated properties window from the SSP configurator.

Configuration Settings for the NetX/NetX Duo SNMP Agent Lower-Level Modules

Only a small number of settings must be modified from the default for the IP layer and lower-level drivers as indicated via the red text in the thread stack block. Notice that some of the configuration properties must be set to a certain value for proper framework operation and are locked to prevent user modification. The following table identifies all the settings within the properties section for the module:

Configuration Settings for the NetX/NetX Duo IP Instance

ISDE Property Value Description
Name g_ip0 Module name
IPv4 Address (use commas for separation) 0,0,0,0 IPv4 Address selection
Subnet Mask (use commas for separation) 255,255,255,0 Subnet Mask selection
**IPv6 Global Address (use commas for separation) 0x2001, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1 IPv6 global address selection
**IPv6 Link Local Address (use commas for separation, All zeros means use MAC address) 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 IPv6 link local address selection
IP Helper Thread Stack Size (bytes) 2048 IP Helper Thread Stack Size (bytes) selection
IP Helper Thread Priority 3 IP Helper Thread Priority selection
ARP Enable ARP selection
ARP Cache Size in Bytes 512 ARP Cache Size in Bytes selection
Reverse ARP Enable, Disable

Default: Disable
Reverse ARP selection
TCP Enable, Disable

Default: Enable
TCP selection
UDP Enable, Disable

Default: Enable
UDP selection
ICMP Enable, Disable

Default: Enable
ICMP selection
IGMP Enable, Disable

Default: Enable
IGMP selection
IP fragmentation Enable, Disable

Default: Disable
IP fragmentation selection
Name of generated initialization function ip_init0 Name of generated initialization function selection
Auto Initialization Enable, Disable

Default: Enable
Auto initialization selection
Note
The example settings and defaults are for a project using the Synergy S7G2 MCU Group. Other MCUs may have different default values and available configuration settings.

** Indicates properties that are only available in NetX Duo.

Configuration Settings for the NetX/NetX Duo Packet Pool Instance

ISDE Property Value Description
Name g_packet_pool0 Module name
Packet Size in Bytes 640 Packet size selection
Number of Packets in Pool 16 Number of packets in pool selection
Name of generated initialization function packet_pool_init0 Name of generated initialization function selection
Auto Initialization Enable, Disable

Default: Enable
Auto initialization selection
Note
The example settings and defaults are for a project using the S7G2 Synergy MCU Group. Other MCUs may have different default values and available configuration settings.

Configuration Settings for the NetX/NetX Duo MD5 Instance

ISDE Property Value Description
No configurable properties
Note
The example settings and defaults are for a project using the S7G2 Synergy MCU Group. Other MCUs may have different default values and available configuration settings.

Configuration Settings for the NetX/NetX Duo DES Instance

ISDE Property Value Description
No configurable properties
Note
The example settings and defaults are for a project using the S7G2 Synergy MCU Group. Other MCUs may have different default values and available configuration settings.

Configuration Settings for the NetX/NetX Duo SHA1 Instance

ISDE Property Value Description
No configurable properties
Note
The example settings and defaults are for a project using the S7G2 Synergy MCU Group. Other MCUs may have different default values and available configuration settings.

Configuration Settings for the NetX/NetX Duo Common Instance

ISDE Property Value Description
Name of generated initialization function nx_common_init0 Name of generated initialization function selection
Auto Initialization Enable, Disable

Default: Enable
Auto initialization selection
Note
The example settings and defaults are for a project using the S7G2 Synergy MCU Group. Other MCUs may have different default values and available configuration settings.

NetX/NetX Duo SNMP Agent Module Clock Configuration

The ETHERC peripheral module uses PCLKA as its clock source. The PCLKA frequency is set using the SSP configurator clock tab prior to a build, or by using the CGC interface at run-time.

NetX/NetX Duo SNMP Agent Module Pin Configuration

The ETHERC peripheral module uses pins on the MCU device to communicate to external devices. I/O pins must be selected and configured by the external device as required.  The following table illustrates the method for selecting the pins within the SSP configuration window and the subsequent table illustrates an example selection for the I2C pins.

Note
The selected operation mode determines the peripheral signals available and the MCU pins required.

Pin Selection for the ETHERC Module

Resource ISDE Tab Pin selection Sequence
ETHERC Pins Select Peripherals > Connectivity:ETHERC > ETHERC1.RMII
Note
The selection sequence assumes ETHERC1 is the desired hardware target for the driver.

Pin Configuration Settings for the ETHERC1

Property Value Description
Operation Mode Disabled, Custom, RMII

Default: Disabled
Select RMII as the Operation Mode for ETHERC1
Pin Group Selection Mixed, _A only

Default: _A only
Pin group selection
REF50CK P701 REF50CK Pin
TXD0 P700 TXD0 Pin
TXD1 P406 TXD1 Pin
TXD_EN P405 TXD_EN Pin
RXD0 P702 RXD0 Pin
RXD1 P703 RXD1 Pin
RX_ER P704 RX_ER Pin
CRS_DV P705 CRS_DV Pin
MDC P403 MDC Pin
MDIO P404 MDIO Pin
Note
The example settings are for a project using the S7G2 Synergy MCU and the SK-S7G2 Kit. Other Synergy MCUs and other Synergy Kits may have different available pin configuration settings.

Using the NetX/NetX Duo SNMP Agent Module in an Application

The steps in using the NetX/NetX Duo SNMP Agent module in a typical application are:

  1. Create an agent with nx_snmp_agent_create API
  2. Define handler functions
    1. username handler function nx_snmp_agent_username_process in user code
    2. get handler function nx_snmp_agent_get_process in user code
    3. get next handler function nx_snmp_agent_getnext_process in user code
    4. set handler function nx_snmp_agent_set_process in user code
  3. Create a structure to map OIDs to action handlers in user code
  4. Configure read, write community strings nx_snmp_agent_public_string_set and nx_snmp_agent_private_string_set
  5. If the user wants to use SNMPv3, they must create the keys using the nx_snmp_agent_md5_key_create API or the nx_snmp_agent_sha_key_create and associate the keys with authentication, encryption and trap services nx_snmp_agent_authenticate_key_use, nx_snmp_agent_privacy_key_use, nx_snmp_agent_auth_trap_key_use and nx_snmp_agent_priv_trap_key_use
  6. Start the SNMP agent using the nx_snmp_agent_start API

The following figure illustrates common steps in a typical operational flow diagram:

nx_snmp_agent_TA.png
Flow Diagram of a Typical NetX/NetX Duo SNMP Agent Module Application