Correct the code for SNMPSET/SNMPGET of IPADDRESS datatype - SNMP

This is a discussion on Correct the code for SNMPSET/SNMPGET of IPADDRESS datatype - SNMP ; Dear all, Below I am attaching a piece of code for handling GET and SET requests for a node variable "cdsprVpnConcentrator1IpAddress". Although this piece of code works, I am not confident that it is a perfect code. I request you ...

+ Reply to Thread
Results 1 to 2 of 2

Thread: Correct the code for SNMPSET/SNMPGET of IPADDRESS datatype

  1. Correct the code for SNMPSET/SNMPGET of IPADDRESS datatype

    Dear all,

    Below I am attaching a piece of code for handling GET and SET
    requests for a node variable "cdsprVpnConcentrator1IpAddress".
    Although this piece of code works, I am not confident that it is a
    perfect code. I request you to kindly have look and suggest changes,
    modification or point out blunders/mistakes if any?


    /*Handler function definitions*/
    int
    handle_cdsprVpnConcentrator1IpAddress(netsnmp_mib_ handler *handler,
    netsnmp_handler_registration *reginfo,
    netsnmp_agent_request_info *reqinfo,
    netsnmp_request_info *requests)
    {
    int ret;




    switch(reqinfo->mode) {

    case MODE_GET:

    snmp_set_var_typed_value(requests->requestvb, ASN_IPADDRESS,
    (u_char
    *)&(cdsprVpnConcentrator1IpAddress),
    sizeof(cdsprVpnConcentrator1IpAddress));
    break;

    /*
    * SET REQUEST
    * multiple states in the transaction.
    */
    case MODE_SET_RESERVE1:
    /* Check node variable type and size */
    ret = netsnmp_check_vb_type_and_size(requests->requestvb,
    ASN_IPADDRESS, requests->requestvb->val_len);
    /* Found error related to variable type and size? */
    if ( ret != SNMP_ERR_NOERROR ) {
    netsnmp_request_set_error(requests, ret);
    }
    break;

    case MODE_SET_RESERVE2:
    /* Create storage buffer to "UNDO" SET operation if required later */
    temp_cdsprVpnConcentrator1IpAddress =
    cdsprVpnConcentrator1IpAddress;

    /*Failed store backup value for undo purpose in Buffer? */
    if ( &(temp_cdsprVpnConcentrator1IpAddress) == NULL)
    {
    netsnmp_request_set_error(requests,
    SNMP_ERR_RESOURCEUNAVAILABLE);
    }


    break;

    case MODE_SET_FREE:
    /* Free resources allocated in RESERVE1 and/or
    RESERVE2. Something failed somewhere, and the states
    below won't be called. */
    free( &(temp_cdsprVpnConcentrator1IpAddress) );
    free( &(cdsprVpnConcentrator1IpAddress) );
    break;

    case MODE_SET_ACTION:
    /*Finally SET the new value*/
    /*Failed in SET new value?*/
    cdsprVpnConcentrator1IpAddress = *(requests->requestvb->val.integer);
    if ( &(cdsprVpnConcentrator1IpAddress) == NULL)
    {
    netsnmp_request_set_error(requests,
    SNMP_ERR_RESOURCEUNAVAILABLE);
    }


    break;

    case MODE_SET_COMMIT:
    break;

    case MODE_SET_UNDO:

    /*Integer based ASN.1 type*/
    cdsprVpnConcentrator1IpAddress =
    temp_cdsprVpnConcentrator1IpAddress;
    /*Failed to UNDO?*/
    if (&(temp_cdsprVpnConcentrator1IpAddress) == NULL)
    {
    netsnmp_request_set_error(requests,
    SNMP_ERR_RESOURCEUNAVAILABLE);
    }

    break;

    break;

    default:
    /* we should never get here, so this is a really bad error */
    snmp_log(LOG_ERR, "unknown mode (%d) in
    handle_cdsprVpnConcentrator1IpAddress\n", reqinfo->mode );
    return SNMP_ERR_GENERR;
    }

    return SNMP_ERR_NOERROR;
    }

    -------------------------------------------------------------------------
    This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
    Build the coolest Linux based applications with Moblin SDK & win great prizes
    Grand prize is a trip for two to an Open Source event anywhere in the world
    http://moblin-contest.org/redirect.p...r_id=100&url=/
    _______________________________________________
    Net-snmp-users mailing list
    Net-snmp-users@lists.sourceforge.net
    Please see the following page to unsubscribe or change other options:
    https://lists.sourceforge.net/lists/...net-snmp-users


  2. Re: Correct the code for SNMPSET/SNMPGET of IPADDRESS datatype

    Where the variable " cdsprVpnConcentrator1IpAddress" is of type u_long.

    -------------------------------------------------------------------------
    This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
    Build the coolest Linux based applications with Moblin SDK & win great prizes
    Grand prize is a trip for two to an Open Source event anywhere in the world
    http://moblin-contest.org/redirect.p...r_id=100&url=/
    _______________________________________________
    Net-snmp-users mailing list
    Net-snmp-users@lists.sourceforge.net
    Please see the following page to unsubscribe or change other options:
    https://lists.sourceforge.net/lists/...net-snmp-users


+ Reply to Thread