/*
 * Note: this file originally auto-generated by mib2c using
 *       version $ of $ 
 *
 * $Id:$
 */
/* standard Net-SNMP includes */
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-features.h>
#include <net-snmp/net-snmp-includes.h>
#include <net-snmp/agent/net-snmp-agent-includes.h>

/* include our parent header */
#include "dot1qVlanStaticTable.h"


/** @defgroup data_get data_get: Routines to get data
 *
 * TODO:230:M: Implement dot1qVlanStaticTable get routines.
 * TODO:240:M: Implement dot1qVlanStaticTable mapping routines (if any).
 *
 * These routine are used to get the value for individual objects. The
 * row context is passed, along with a pointer to the memory where the
 * value should be copied.
 *
 * @{
 */
/**********************************************************************
 **********************************************************************
 ***
 *** Table dot1qVlanStaticTable
 ***
 **********************************************************************
 **********************************************************************/
/*
 * Q-BRIDGE-MIB::dot1qVlanStaticTable is subid 3 of dot1qVlan.
 * Its status is Current.
 * OID: .1.3.6.1.2.1.17.7.1.4.3, length: 11
*/

/* ---------------------------------------------------------------------
 * TODO:200:r: Implement dot1qVlanStaticTable data context functions.
 */


/**
 * set mib index(es)
 *
 * @param tbl_idx mib index structure
 * @param dot1qVlanIndex_val
 *
 * @retval MFD_SUCCESS     : success.
 * @retval MFD_ERROR       : other error.
 *
 * @remark
 *  This convenience function is useful for setting all the MIB index
 *  components with a single function call. It is assume that the C values
 *  have already been mapped from their native/rawformat to the MIB format.
 */
int
dot1qVlanStaticTable_indexes_set_tbl_idx(dot1qVlanStaticTable_mib_index *tbl_idx, u_long dot1qVlanIndex_val)
{
    DEBUGMSGTL(("verbose:dot1qVlanStaticTable:dot1qVlanStaticTable_indexes_set_tbl_idx","called\n"));

    /* dot1qVlanIndex(2)/VlanIndex/ASN_UNSIGNED/u_long(u_long)//l/a/w/e/r/d/H */
    tbl_idx->dot1qVlanIndex = dot1qVlanIndex_val;
    

    return MFD_SUCCESS;
} /* dot1qVlanStaticTable_indexes_set_tbl_idx */

/**
 * @internal
 * set row context indexes
 *
 * @param reqreq_ctx the row context that needs updated indexes
 *
 * @retval MFD_SUCCESS     : success.
 * @retval MFD_ERROR       : other error.
 *
 * @remark
 *  This function sets the mib indexs, then updates the oid indexs
 *  from the mib index.
 */
int
dot1qVlanStaticTable_indexes_set(dot1qVlanStaticTable_rowreq_ctx *rowreq_ctx, u_long dot1qVlanIndex_val)
{
    DEBUGMSGTL(("verbose:dot1qVlanStaticTable:dot1qVlanStaticTable_indexes_set","called\n"));

    if(MFD_SUCCESS != dot1qVlanStaticTable_indexes_set_tbl_idx(&rowreq_ctx->tbl_idx
                                   , dot1qVlanIndex_val
           ))
        return MFD_ERROR;

    /*
     * convert mib index to oid index
     */
    rowreq_ctx->oid_idx.len = sizeof(rowreq_ctx->oid_tmp) / sizeof(oid);
    if(0 != dot1qVlanStaticTable_index_to_oid(&rowreq_ctx->oid_idx,
                                    &rowreq_ctx->tbl_idx)) {
        return MFD_ERROR;
    }

    return MFD_SUCCESS;
} /* dot1qVlanStaticTable_indexes_set */


/*---------------------------------------------------------------------
 * Q-BRIDGE-MIB::dot1qVlanStaticEntry.dot1qVlanStaticName
 * dot1qVlanStaticName is subid 1 of dot1qVlanStaticEntry.
 * Its status is Current, and its access level is Create.
 * OID: .1.3.6.1.2.1.17.7.1.4.3.1.1
 * Description:
An administratively assigned string, which may be used
        to identify the VLAN.
 *
 * Attributes:
 *   accessible 1     isscalar 0     enums  0      hasdefval 0
 *   readable   1     iscolumn 1     ranges 1      hashint   1
 *   settable   1
 *   hint: 255t
 *
 * Ranges:  0 - 32;
 *
 * Its syntax is SnmpAdminString (based on perltype OCTETSTR)
 * The net-snmp type is ASN_OCTET_STR. The C type decl is char (char)
 * This data type requires a length.  (Max 32)
 */
/**
 * Extract the current value of the dot1qVlanStaticName data.
 *
 * Set a value using the data context for the row.
 *
 * @param rowreq_ctx
 *        Pointer to the row request context.
 * @param dot1qVlanStaticName_val_ptr_ptr
 *        Pointer to storage for a char variable
 * @param dot1qVlanStaticName_val_ptr_len_ptr
 *        Pointer to a size_t. On entry, it will contain the size (in bytes)
 *        pointed to by dot1qVlanStaticName.
 *        On exit, this value should contain the data size (in bytes).
 *
 * @retval MFD_SUCCESS         : success
 * @retval MFD_SKIP            : skip this node (no value for now)
 * @retval MFD_ERROR           : Any other error
*
 * @note If you need more than (*dot1qVlanStaticName_val_ptr_len_ptr) bytes of memory,
 *       allocate it using malloc() and update dot1qVlanStaticName_val_ptr_ptr.
 *       <b>DO NOT</b> free the previous pointer.
 *       The MFD helper will release the memory you allocate.
 *
 * @remark If you call this function yourself, you are responsible
 *         for checking if the pointer changed, and freeing any
 *         previously allocated memory. (Not necessary if you pass
 *         in a pointer to static memory, obviously.)
 */
int
dot1qVlanStaticName_get( dot1qVlanStaticTable_rowreq_ctx *rowreq_ctx, char **dot1qVlanStaticName_val_ptr_ptr, size_t *dot1qVlanStaticName_val_ptr_len_ptr )
{
   /** we should have a non-NULL pointer and enough storage */
   netsnmp_assert( (NULL != dot1qVlanStaticName_val_ptr_ptr) && (NULL != *dot1qVlanStaticName_val_ptr_ptr));
   netsnmp_assert( NULL != dot1qVlanStaticName_val_ptr_len_ptr );


    DEBUGMSGTL(("verbose:dot1qVlanStaticTable:dot1qVlanStaticName_get","called\n"));

    netsnmp_assert(NULL != rowreq_ctx);

/*
 * TODO:231:o: |-> Extract the current value of the dot1qVlanStaticName data.
 * copy (* dot1qVlanStaticName_val_ptr_ptr ) data and (* dot1qVlanStaticName_val_ptr_len_ptr ) from rowreq_ctx->data
 */
    /*
     * make sure there is enough space for dot1qVlanStaticName data
     */
    if ((NULL == (* dot1qVlanStaticName_val_ptr_ptr )) ||
        ((* dot1qVlanStaticName_val_ptr_len_ptr ) <
         (rowreq_ctx->data.dot1qVlanStaticName_len* sizeof(rowreq_ctx->data.dot1qVlanStaticName[0])))) {
        /*
         * allocate space for dot1qVlanStaticName data
         */
        (* dot1qVlanStaticName_val_ptr_ptr ) = malloc(rowreq_ctx->data.dot1qVlanStaticName_len* sizeof(rowreq_ctx->data.dot1qVlanStaticName[0]));
        if(NULL == (* dot1qVlanStaticName_val_ptr_ptr )) {
            snmp_log(LOG_ERR,"could not allocate memory (rowreq_ctx->data.dot1qVlanStaticName)\n");
            return MFD_ERROR;
        }
    }
    (* dot1qVlanStaticName_val_ptr_len_ptr ) = rowreq_ctx->data.dot1qVlanStaticName_len* sizeof(rowreq_ctx->data.dot1qVlanStaticName[0]);
    memcpy( (* dot1qVlanStaticName_val_ptr_ptr ), rowreq_ctx->data.dot1qVlanStaticName, rowreq_ctx->data.dot1qVlanStaticName_len* sizeof(rowreq_ctx->data.dot1qVlanStaticName[0]) );

    return MFD_SUCCESS;
} /* dot1qVlanStaticName_get */

/*---------------------------------------------------------------------
 * Q-BRIDGE-MIB::dot1qVlanStaticEntry.dot1qVlanStaticEgressPorts
 * dot1qVlanStaticEgressPorts is subid 2 of dot1qVlanStaticEntry.
 * Its status is Current, and its access level is Create.
 * OID: .1.3.6.1.2.1.17.7.1.4.3.1.2
 * Description:
The set of ports that are permanently assigned to the
        egress list for this VLAN by management.  Changes to a
        bit in this object affect the per-port, per-VLAN
        Registrar control for Registration Fixed for the
        relevant GVRP state machine on each port.  A port may
        not be added in this set if it is already a member of
        the set of ports in dot1qVlanForbiddenEgressPorts.  The
        default value of this object is a string of zeros of
        appropriate length, indicating not fixed.
 *
 * Attributes:
 *   accessible 1     isscalar 0     enums  0      hasdefval 0
 *   readable   1     iscolumn 1     ranges 0      hashint   0
 *   settable   1
 *
 *
 * Its syntax is PortList (based on perltype OCTETSTR)
 * The net-snmp type is ASN_OCTET_STR. The C type decl is char (char)
 * This data type requires a length.
 */
/**
 * Extract the current value of the dot1qVlanStaticEgressPorts data.
 *
 * Set a value using the data context for the row.
 *
 * @param rowreq_ctx
 *        Pointer to the row request context.
 * @param dot1qVlanStaticEgressPorts_val_ptr_ptr
 *        Pointer to storage for a char variable
 * @param dot1qVlanStaticEgressPorts_val_ptr_len_ptr
 *        Pointer to a size_t. On entry, it will contain the size (in bytes)
 *        pointed to by dot1qVlanStaticEgressPorts.
 *        On exit, this value should contain the data size (in bytes).
 *
 * @retval MFD_SUCCESS         : success
 * @retval MFD_SKIP            : skip this node (no value for now)
 * @retval MFD_ERROR           : Any other error
*
 * @note If you need more than (*dot1qVlanStaticEgressPorts_val_ptr_len_ptr) bytes of memory,
 *       allocate it using malloc() and update dot1qVlanStaticEgressPorts_val_ptr_ptr.
 *       <b>DO NOT</b> free the previous pointer.
 *       The MFD helper will release the memory you allocate.
 *
 * @remark If you call this function yourself, you are responsible
 *         for checking if the pointer changed, and freeing any
 *         previously allocated memory. (Not necessary if you pass
 *         in a pointer to static memory, obviously.)
 */
int
dot1qVlanStaticEgressPorts_get( dot1qVlanStaticTable_rowreq_ctx *rowreq_ctx, char **dot1qVlanStaticEgressPorts_val_ptr_ptr, size_t *dot1qVlanStaticEgressPorts_val_ptr_len_ptr )
{
   /** we should have a non-NULL pointer and enough storage */
   netsnmp_assert( (NULL != dot1qVlanStaticEgressPorts_val_ptr_ptr) && (NULL != *dot1qVlanStaticEgressPorts_val_ptr_ptr));
   netsnmp_assert( NULL != dot1qVlanStaticEgressPorts_val_ptr_len_ptr );


    DEBUGMSGTL(("verbose:dot1qVlanStaticTable:dot1qVlanStaticEgressPorts_get","called\n"));

    netsnmp_assert(NULL != rowreq_ctx);

/*
 * TODO:231:o: |-> Extract the current value of the dot1qVlanStaticEgressPorts data.
 * copy (* dot1qVlanStaticEgressPorts_val_ptr_ptr ) data and (* dot1qVlanStaticEgressPorts_val_ptr_len_ptr ) from rowreq_ctx->data
 */
    /*
     * make sure there is enough space for dot1qVlanStaticEgressPorts data
     */
    if ((NULL == (* dot1qVlanStaticEgressPorts_val_ptr_ptr )) ||
        ((* dot1qVlanStaticEgressPorts_val_ptr_len_ptr ) <
         (rowreq_ctx->data.dot1qVlanStaticEgressPorts_len* sizeof(rowreq_ctx->data.dot1qVlanStaticEgressPorts[0])))) {
        /*
         * allocate space for dot1qVlanStaticEgressPorts data
         */
        (* dot1qVlanStaticEgressPorts_val_ptr_ptr ) = malloc(rowreq_ctx->data.dot1qVlanStaticEgressPorts_len* sizeof(rowreq_ctx->data.dot1qVlanStaticEgressPorts[0]));
        if(NULL == (* dot1qVlanStaticEgressPorts_val_ptr_ptr )) {
            snmp_log(LOG_ERR,"could not allocate memory (rowreq_ctx->data.dot1qVlanStaticEgressPorts)\n");
            return MFD_ERROR;
        }
    }
    (* dot1qVlanStaticEgressPorts_val_ptr_len_ptr ) = rowreq_ctx->data.dot1qVlanStaticEgressPorts_len* sizeof(rowreq_ctx->data.dot1qVlanStaticEgressPorts[0]);
    memcpy( (* dot1qVlanStaticEgressPorts_val_ptr_ptr ), rowreq_ctx->data.dot1qVlanStaticEgressPorts, rowreq_ctx->data.dot1qVlanStaticEgressPorts_len* sizeof(rowreq_ctx->data.dot1qVlanStaticEgressPorts[0]) );

    return MFD_SUCCESS;
} /* dot1qVlanStaticEgressPorts_get */

/*---------------------------------------------------------------------
 * Q-BRIDGE-MIB::dot1qVlanStaticEntry.dot1qVlanForbiddenEgressPorts
 * dot1qVlanForbiddenEgressPorts is subid 3 of dot1qVlanStaticEntry.
 * Its status is Current, and its access level is Create.
 * OID: .1.3.6.1.2.1.17.7.1.4.3.1.3
 * Description:
The set of ports that are prohibited by management
        from being included in the egress list for this VLAN.
        Changes to this object that cause a port to be included
        or excluded affect the per-port, per-VLAN Registrar
        control for Registration Forbidden for the relevant GVRP
        state machine on each port.  A port may not be added in
        this set if it is already a member of the set of ports
        in dot1qVlanStaticEgressPorts.  The default value of
        this object is a string of zeros of appropriate length,
        excluding all ports from the forbidden set.
 *
 * Attributes:
 *   accessible 1     isscalar 0     enums  0      hasdefval 0
 *   readable   1     iscolumn 1     ranges 0      hashint   0
 *   settable   1
 *
 *
 * Its syntax is PortList (based on perltype OCTETSTR)
 * The net-snmp type is ASN_OCTET_STR. The C type decl is char (char)
 * This data type requires a length.
 */
/**
 * Extract the current value of the dot1qVlanForbiddenEgressPorts data.
 *
 * Set a value using the data context for the row.
 *
 * @param rowreq_ctx
 *        Pointer to the row request context.
 * @param dot1qVlanForbiddenEgressPorts_val_ptr_ptr
 *        Pointer to storage for a char variable
 * @param dot1qVlanForbiddenEgressPorts_val_ptr_len_ptr
 *        Pointer to a size_t. On entry, it will contain the size (in bytes)
 *        pointed to by dot1qVlanForbiddenEgressPorts.
 *        On exit, this value should contain the data size (in bytes).
 *
 * @retval MFD_SUCCESS         : success
 * @retval MFD_SKIP            : skip this node (no value for now)
 * @retval MFD_ERROR           : Any other error
*
 * @note If you need more than (*dot1qVlanForbiddenEgressPorts_val_ptr_len_ptr) bytes of memory,
 *       allocate it using malloc() and update dot1qVlanForbiddenEgressPorts_val_ptr_ptr.
 *       <b>DO NOT</b> free the previous pointer.
 *       The MFD helper will release the memory you allocate.
 *
 * @remark If you call this function yourself, you are responsible
 *         for checking if the pointer changed, and freeing any
 *         previously allocated memory. (Not necessary if you pass
 *         in a pointer to static memory, obviously.)
 */
int
dot1qVlanForbiddenEgressPorts_get( dot1qVlanStaticTable_rowreq_ctx *rowreq_ctx, char **dot1qVlanForbiddenEgressPorts_val_ptr_ptr, size_t *dot1qVlanForbiddenEgressPorts_val_ptr_len_ptr )
{
   /** we should have a non-NULL pointer and enough storage */
   netsnmp_assert( (NULL != dot1qVlanForbiddenEgressPorts_val_ptr_ptr) && (NULL != *dot1qVlanForbiddenEgressPorts_val_ptr_ptr));
   netsnmp_assert( NULL != dot1qVlanForbiddenEgressPorts_val_ptr_len_ptr );


    DEBUGMSGTL(("verbose:dot1qVlanStaticTable:dot1qVlanForbiddenEgressPorts_get","called\n"));

    netsnmp_assert(NULL != rowreq_ctx);

/*
 * TODO:231:o: |-> Extract the current value of the dot1qVlanForbiddenEgressPorts data.
 * copy (* dot1qVlanForbiddenEgressPorts_val_ptr_ptr ) data and (* dot1qVlanForbiddenEgressPorts_val_ptr_len_ptr ) from rowreq_ctx->data
 */
    /*
     * make sure there is enough space for dot1qVlanForbiddenEgressPorts data
     */
    if ((NULL == (* dot1qVlanForbiddenEgressPorts_val_ptr_ptr )) ||
        ((* dot1qVlanForbiddenEgressPorts_val_ptr_len_ptr ) <
         (rowreq_ctx->data.dot1qVlanForbiddenEgressPorts_len* sizeof(rowreq_ctx->data.dot1qVlanForbiddenEgressPorts[0])))) {
        /*
         * allocate space for dot1qVlanForbiddenEgressPorts data
         */
        (* dot1qVlanForbiddenEgressPorts_val_ptr_ptr ) = malloc(rowreq_ctx->data.dot1qVlanForbiddenEgressPorts_len* sizeof(rowreq_ctx->data.dot1qVlanForbiddenEgressPorts[0]));
        if(NULL == (* dot1qVlanForbiddenEgressPorts_val_ptr_ptr )) {
            snmp_log(LOG_ERR,"could not allocate memory (rowreq_ctx->data.dot1qVlanForbiddenEgressPorts)\n");
            return MFD_ERROR;
        }
    }
    (* dot1qVlanForbiddenEgressPorts_val_ptr_len_ptr ) = rowreq_ctx->data.dot1qVlanForbiddenEgressPorts_len* sizeof(rowreq_ctx->data.dot1qVlanForbiddenEgressPorts[0]);
    memcpy( (* dot1qVlanForbiddenEgressPorts_val_ptr_ptr ), rowreq_ctx->data.dot1qVlanForbiddenEgressPorts, rowreq_ctx->data.dot1qVlanForbiddenEgressPorts_len* sizeof(rowreq_ctx->data.dot1qVlanForbiddenEgressPorts[0]) );

    return MFD_SUCCESS;
} /* dot1qVlanForbiddenEgressPorts_get */

/*---------------------------------------------------------------------
 * Q-BRIDGE-MIB::dot1qVlanStaticEntry.dot1qVlanStaticUntaggedPorts
 * dot1qVlanStaticUntaggedPorts is subid 4 of dot1qVlanStaticEntry.
 * Its status is Current, and its access level is Create.
 * OID: .1.3.6.1.2.1.17.7.1.4.3.1.4
 * Description:
The set of ports that should transmit egress packets
        for this VLAN as untagged.  The default value of this
        object for the default VLAN (dot1qVlanIndex = 1) is a string
        of appropriate length including all ports.  There is no
        specified default for other VLANs.  If a device agent cannot
        support the set of ports being set, then it will reject the
        set operation with an error.  For example, a
        manager might attempt to set more than one VLAN to be untagged
        on egress where the device does not support this IEEE 802.1Q
        option.
 *
 * Attributes:
 *   accessible 1     isscalar 0     enums  0      hasdefval 0
 *   readable   1     iscolumn 1     ranges 0      hashint   0
 *   settable   1
 *
 *
 * Its syntax is PortList (based on perltype OCTETSTR)
 * The net-snmp type is ASN_OCTET_STR. The C type decl is char (char)
 * This data type requires a length.
 */
/**
 * Extract the current value of the dot1qVlanStaticUntaggedPorts data.
 *
 * Set a value using the data context for the row.
 *
 * @param rowreq_ctx
 *        Pointer to the row request context.
 * @param dot1qVlanStaticUntaggedPorts_val_ptr_ptr
 *        Pointer to storage for a char variable
 * @param dot1qVlanStaticUntaggedPorts_val_ptr_len_ptr
 *        Pointer to a size_t. On entry, it will contain the size (in bytes)
 *        pointed to by dot1qVlanStaticUntaggedPorts.
 *        On exit, this value should contain the data size (in bytes).
 *
 * @retval MFD_SUCCESS         : success
 * @retval MFD_SKIP            : skip this node (no value for now)
 * @retval MFD_ERROR           : Any other error
*
 * @note If you need more than (*dot1qVlanStaticUntaggedPorts_val_ptr_len_ptr) bytes of memory,
 *       allocate it using malloc() and update dot1qVlanStaticUntaggedPorts_val_ptr_ptr.
 *       <b>DO NOT</b> free the previous pointer.
 *       The MFD helper will release the memory you allocate.
 *
 * @remark If you call this function yourself, you are responsible
 *         for checking if the pointer changed, and freeing any
 *         previously allocated memory. (Not necessary if you pass
 *         in a pointer to static memory, obviously.)
 */
int
dot1qVlanStaticUntaggedPorts_get( dot1qVlanStaticTable_rowreq_ctx *rowreq_ctx, char **dot1qVlanStaticUntaggedPorts_val_ptr_ptr, size_t *dot1qVlanStaticUntaggedPorts_val_ptr_len_ptr )
{
   /** we should have a non-NULL pointer and enough storage */
   netsnmp_assert( (NULL != dot1qVlanStaticUntaggedPorts_val_ptr_ptr) && (NULL != *dot1qVlanStaticUntaggedPorts_val_ptr_ptr));
   netsnmp_assert( NULL != dot1qVlanStaticUntaggedPorts_val_ptr_len_ptr );


    DEBUGMSGTL(("verbose:dot1qVlanStaticTable:dot1qVlanStaticUntaggedPorts_get","called\n"));

    netsnmp_assert(NULL != rowreq_ctx);

/*
 * TODO:231:o: |-> Extract the current value of the dot1qVlanStaticUntaggedPorts data.
 * copy (* dot1qVlanStaticUntaggedPorts_val_ptr_ptr ) data and (* dot1qVlanStaticUntaggedPorts_val_ptr_len_ptr ) from rowreq_ctx->data
 */
    /*
     * make sure there is enough space for dot1qVlanStaticUntaggedPorts data
     */
    if ((NULL == (* dot1qVlanStaticUntaggedPorts_val_ptr_ptr )) ||
        ((* dot1qVlanStaticUntaggedPorts_val_ptr_len_ptr ) <
         (rowreq_ctx->data.dot1qVlanStaticUntaggedPorts_len* sizeof(rowreq_ctx->data.dot1qVlanStaticUntaggedPorts[0])))) {
        /*
         * allocate space for dot1qVlanStaticUntaggedPorts data
         */
        (* dot1qVlanStaticUntaggedPorts_val_ptr_ptr ) = malloc(rowreq_ctx->data.dot1qVlanStaticUntaggedPorts_len* sizeof(rowreq_ctx->data.dot1qVlanStaticUntaggedPorts[0]));
        if(NULL == (* dot1qVlanStaticUntaggedPorts_val_ptr_ptr )) {
            snmp_log(LOG_ERR,"could not allocate memory (rowreq_ctx->data.dot1qVlanStaticUntaggedPorts)\n");
            return MFD_ERROR;
        }
    }
    (* dot1qVlanStaticUntaggedPorts_val_ptr_len_ptr ) = rowreq_ctx->data.dot1qVlanStaticUntaggedPorts_len* sizeof(rowreq_ctx->data.dot1qVlanStaticUntaggedPorts[0]);
    memcpy( (* dot1qVlanStaticUntaggedPorts_val_ptr_ptr ), rowreq_ctx->data.dot1qVlanStaticUntaggedPorts, rowreq_ctx->data.dot1qVlanStaticUntaggedPorts_len* sizeof(rowreq_ctx->data.dot1qVlanStaticUntaggedPorts[0]) );

    return MFD_SUCCESS;
} /* dot1qVlanStaticUntaggedPorts_get */

/**
 * Extract the current value of the dot1qVlanStaticRowStatus data.
 *
 * Set a value using the data context for the row.
 *
 * @param rowreq_ctx
 *        Pointer to the row request context.
 * @param dot1qVlanStaticRowStatus_val_ptr
 *        Pointer to storage for a long variable
 *
 * @retval MFD_SUCCESS         : success
 * @retval MFD_SKIP            : skip this node (no value for now)
 * @retval MFD_ERROR           : Any other error
 */
int
dot1qVlanStaticRowStatus_get( dot1qVlanStaticTable_rowreq_ctx *rowreq_ctx, u_long * dot1qVlanStaticRowStatus_val_ptr )
{
   /** we should have a non-NULL pointer */
   netsnmp_assert( NULL != dot1qVlanStaticRowStatus_val_ptr );

    (* dot1qVlanStaticRowStatus_val_ptr ) = rowreq_ctx->data.dot1qVlanStaticRowStatus;
    /*
     * TODO:245:o: |-> Implement dot1qVlanStaticTable RowStatus mapping
     */
    /*
     * update INTERNAL_* macros defined in the header, if neccessary
     */
    switch ((* dot1qVlanStaticRowStatus_val_ptr )) {

        /* `active', which indicates that the conceptual row is
              available for use by the managed device */
    case INTERNAL_DOT1QVLANSTATICTABLE_DOT1QVLANSTATICROWSTATUS_ACTIVE:
        (* dot1qVlanStaticRowStatus_val_ptr ) = ROWSTATUS_ACTIVE;
        break;

        /* `notInService', which indicates that the conceptual
                 row exists in the agent, but is unavailable for use by
                 the managed device (see NOTE below); 'notInService' has
                 no implication regarding the internal consistency of
                 the row, availability of resources, or consistency with
                 the current state of the managed device */
    case INTERNAL_DOT1QVLANSTATICTABLE_DOT1QVLANSTATICROWSTATUS_NOTINSERVICE:
        (* dot1qVlanStaticRowStatus_val_ptr ) = ROWSTATUS_NOTINSERVICE;
        break;

        /* `notReady', which indicates that the conceptual row
                 exists in the agent, but is missing information
                 necessary in order to be available for use by the
                 managed device (i.e., one or more required columns in
                 the conceptual row have not been instanciated) */
    case INTERNAL_DOT1QVLANSTATICTABLE_DOT1QVLANSTATICROWSTATUS_NOTREADY:
        (* dot1qVlanStaticRowStatus_val_ptr ) = ROWSTATUS_NOTREADY;
        break;

    default:
        snmp_log(LOG_ERR,
                 "couldn't map value %ld for dot1qVlanStaticRowStatus RowStatus\n",
                 (* dot1qVlanStaticRowStatus_val_ptr ));
        return SNMP_ERR_GENERR;
    }


    return MFD_SUCCESS;
} /* dot1qVlanStaticRowStatus_get */



/** @} */
