summaryrefslogtreecommitdiff
path: root/accel-pppd/extra/net-snmp/sessionTable_data_get.c
diff options
context:
space:
mode:
authorKozlov Dmitry <dima@server>2011-08-19 14:04:55 +0400
committerKozlov Dmitry <dima@server>2011-08-19 14:04:55 +0400
commit5ef49162ea9763ca9878c22e3736766d8f1db014 (patch)
treef58da9adfc87ece6c608265fc694e66bd5db162c /accel-pppd/extra/net-snmp/sessionTable_data_get.c
parentfd52e4578dcc7de2301480fece9395563d643045 (diff)
downloadaccel-ppp-5ef49162ea9763ca9878c22e3736766d8f1db014.tar.gz
accel-ppp-5ef49162ea9763ca9878c22e3736766d8f1db014.zip
snmp support
Diffstat (limited to 'accel-pppd/extra/net-snmp/sessionTable_data_get.c')
-rw-r--r--accel-pppd/extra/net-snmp/sessionTable_data_get.c696
1 files changed, 696 insertions, 0 deletions
diff --git a/accel-pppd/extra/net-snmp/sessionTable_data_get.c b/accel-pppd/extra/net-snmp/sessionTable_data_get.c
new file mode 100644
index 00000000..1dcea1e8
--- /dev/null
+++ b/accel-pppd/extra/net-snmp/sessionTable_data_get.c
@@ -0,0 +1,696 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ * version : 12088 $ of $
+ *
+ * $Id:$
+ */
+/* standard Net-SNMP includes */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/* include our parent header */
+#include "sessionTable.h"
+
+
+/** @defgroup data_get data_get: Routines to get data
+ *
+ * TODO:230:M: Implement sessionTable get routines.
+ * TODO:240:M: Implement sessionTable 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 sessionTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * ACCEL-PPP-MIB::sessionTable is subid 1 of accelPPPSessions.
+ * Its status is Current.
+ * OID: .1.3.6.1.4.1.8072.100.2.1, length: 10
+*/
+
+/* ---------------------------------------------------------------------
+ * TODO:200:r: Implement sessionTable data context functions.
+ */
+/*
+ * sessionTable_allocate_data
+ *
+ * Purpose: create new sessionTable_data->
+ */
+sessionTable_data *
+sessionTable_allocate_data(void)
+{
+ sessionTable_data *rtn = SNMP_MALLOC_TYPEDEF(sessionTable_data);
+
+ DEBUGMSGTL(("verbose:sessionTable:sessionTable_allocate_data","called\n"));
+
+ if(NULL == rtn) {
+ snmp_log(LOG_ERR, "unable to malloc memory for new "
+ "sessionTable_data->\n");
+ }
+
+ memset(rtn, 0, sizeof(*rtn));
+
+ return rtn;
+} /* sessionTable_allocate_data */
+
+/*
+ * sessionTable_release_data
+ *
+ * Purpose: release sessionTable data->
+ */
+void
+sessionTable_release_data(sessionTable_data *data)
+{
+ DEBUGMSGTL(("verbose:sessionTable:sessionTable_release_data","called\n"));
+
+ if (data->username)
+ free(data->username);
+
+ if (data->calling_sid)
+ free(data->calling_sid);
+
+ if (data->called_sid)
+ free(data->called_sid);
+
+ free(data);
+} /* sessionTable_release_data */
+
+
+
+/**
+ * set mib index(es)
+ *
+ * @param tbl_idx mib index structure
+ * @param sesSID_ptr
+ * @param sesSID_ptr_len
+ *
+ * @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
+sessionTable_indexes_set_tbl_idx(sessionTable_mib_index *tbl_idx, char *sesSID_val_ptr, size_t sesSID_val_ptr_len)
+{
+ DEBUGMSGTL(("verbose:sessionTable:sessionTable_indexes_set_tbl_idx","called\n"));
+
+ /* sesSID(1)/OCTETSTR/ASN_OCTET_STR/char(char)//L/A/w/e/R/d/h */
+ tbl_idx->sesSID_len = sizeof(tbl_idx->sesSID)/sizeof(tbl_idx->sesSID[0]); /* max length */
+ /** WARNING: this code might not work for struct sessionTable_data_s */
+ /*
+ * make sure there is enough space for sesSID data
+ */
+ if ((NULL == tbl_idx->sesSID) ||
+ (tbl_idx->sesSID_len <
+ (sesSID_val_ptr_len))) {
+ snmp_log(LOG_ERR,"not enough space for value\n");
+ return MFD_ERROR;
+ }
+ tbl_idx->sesSID_len = sesSID_val_ptr_len;
+ memcpy( tbl_idx->sesSID, sesSID_val_ptr, sesSID_val_ptr_len* sizeof(sesSID_val_ptr[0]) );
+
+
+ return MFD_SUCCESS;
+} /* sessionTable_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
+sessionTable_indexes_set(sessionTable_rowreq_ctx *rowreq_ctx, char *sesSID_val_ptr, size_t sesSID_val_ptr_len)
+{
+ DEBUGMSGTL(("verbose:sessionTable:sessionTable_indexes_set","called\n"));
+
+ if(MFD_SUCCESS != sessionTable_indexes_set_tbl_idx(&rowreq_ctx->tbl_idx
+ , sesSID_val_ptr, sesSID_val_ptr_len
+ ))
+ return MFD_ERROR;
+
+ /*
+ * convert mib index to oid index
+ */
+ rowreq_ctx->oid_idx.len = sizeof(rowreq_ctx->oid_tmp) / sizeof(oid);
+ if(0 != sessionTable_index_to_oid(&rowreq_ctx->oid_idx,
+ &rowreq_ctx->tbl_idx)) {
+ return MFD_ERROR;
+ }
+
+ return MFD_SUCCESS;
+} /* sessionTable_indexes_set */
+
+
+/*---------------------------------------------------------------------
+ * ACCEL-PPP-MIB::sessionEntry.sesIfName
+ * sesIfName is subid 2 of sessionEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.4.1.8072.100.2.1.1.2
+ * Description:
+name of ppp interface
+ *
+ * Attributes:
+ * accessible 1 isscalar 0 enums 0 hasdefval 0
+ * readable 1 iscolumn 1 ranges 0 hashint 0
+ * settable 0
+ *
+ *
+ * Its syntax is OCTETSTR (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 sesIfName data->
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ * Pointer to the row request context.
+ * @param sesIfName_val_ptr_ptr
+ * Pointer to storage for a char variable
+ * @param sesIfName_val_ptr_len_ptr
+ * Pointer to a size_t. On entry, it will contain the size (in bytes)
+ * pointed to by sesIfName.
+ * 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 (*sesIfName_val_ptr_len_ptr) bytes of memory,
+ * allocate it using malloc() and update sesIfName_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
+sesIfName_get( sessionTable_rowreq_ctx *rowreq_ctx, char **sesIfName_val_ptr_ptr, size_t *sesIfName_val_ptr_len_ptr )
+{
+ int len;
+ /** we should have a non-NULL pointer and enough storage */
+ netsnmp_assert( (NULL != sesIfName_val_ptr_ptr) && (NULL != *sesIfName_val_ptr_ptr));
+ netsnmp_assert( NULL != sesIfName_val_ptr_len_ptr );
+
+
+ DEBUGMSGTL(("verbose:sessionTable:sesIfName_get","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ len = strlen(rowreq_ctx->data->ifname);
+
+ if ((NULL == (* sesIfName_val_ptr_ptr )) ||
+ ((* sesIfName_val_ptr_len_ptr ) < len)) {
+ /*
+ * allocate space for sesIfName data
+ */
+ (* sesIfName_val_ptr_ptr ) = malloc(len);
+ if(NULL == (* sesIfName_val_ptr_ptr )) {
+ snmp_log(LOG_ERR,"could not allocate memory\n");
+ return MFD_ERROR;
+ }
+ }
+ (* sesIfName_val_ptr_len_ptr ) = len;
+ memcpy( (* sesIfName_val_ptr_ptr ), rowreq_ctx->data->ifname, len);
+
+ return MFD_SUCCESS;
+} /* sesIfName_get */
+
+/*---------------------------------------------------------------------
+ * ACCEL-PPP-MIB::sessionEntry.sesUsername
+ * sesUsername is subid 3 of sessionEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.4.1.8072.100.2.1.1.3
+ * Description:
+session user name
+ *
+ * Attributes:
+ * accessible 1 isscalar 0 enums 0 hasdefval 0
+ * readable 1 iscolumn 1 ranges 0 hashint 0
+ * settable 0
+ *
+ *
+ * Its syntax is OCTETSTR (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 sesUsername data->
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ * Pointer to the row request context.
+ * @param sesUsername_val_ptr_ptr
+ * Pointer to storage for a char variable
+ * @param sesUsername_val_ptr_len_ptr
+ * Pointer to a size_t. On entry, it will contain the size (in bytes)
+ * pointed to by sesUsername.
+ * 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 (*sesUsername_val_ptr_len_ptr) bytes of memory,
+ * allocate it using malloc() and update sesUsername_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
+sesUsername_get( sessionTable_rowreq_ctx *rowreq_ctx, char **sesUsername_val_ptr_ptr, size_t *sesUsername_val_ptr_len_ptr )
+{
+ int len;
+ /** we should have a non-NULL pointer and enough storage */
+ netsnmp_assert( (NULL != sesUsername_val_ptr_ptr) && (NULL != *sesUsername_val_ptr_ptr));
+ netsnmp_assert( NULL != sesUsername_val_ptr_len_ptr );
+
+
+ DEBUGMSGTL(("verbose:sessionTable:sesUsername_get","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ len = strlen(rowreq_ctx->data->username);
+
+ if ((NULL == (* sesUsername_val_ptr_ptr )) ||
+ ((* sesUsername_val_ptr_len_ptr ) < len)) {
+ /*
+ * allocate space for sesIfName data
+ */
+ (* sesUsername_val_ptr_ptr ) = malloc(len);
+ if(NULL == (* sesUsername_val_ptr_ptr )) {
+ snmp_log(LOG_ERR,"could not allocate memory\n");
+ return MFD_ERROR;
+ }
+ }
+ (* sesUsername_val_ptr_len_ptr ) = len;
+ memcpy( (* sesUsername_val_ptr_ptr ), rowreq_ctx->data->username, len);
+
+ return MFD_SUCCESS;
+} /* sesUsername_get */
+
+/*---------------------------------------------------------------------
+ * ACCEL-PPP-MIB::sessionEntry.sesIP
+ * sesIP is subid 4 of sessionEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.4.1.8072.100.2.1.1.4
+ * Description:
+assigned IP address
+ *
+ * Attributes:
+ * accessible 1 isscalar 0 enums 0 hasdefval 0
+ * readable 1 iscolumn 1 ranges 0 hashint 0
+ * settable 0
+ *
+ *
+ * Its syntax is OCTETSTR (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 sesIP data->
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ * Pointer to the row request context.
+ * @param sesIP_val_ptr_ptr
+ * Pointer to storage for a char variable
+ * @param sesIP_val_ptr_len_ptr
+ * Pointer to a size_t. On entry, it will contain the size (in bytes)
+ * pointed to by sesIP.
+ * 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 (*sesIP_val_ptr_len_ptr) bytes of memory,
+ * allocate it using malloc() and update sesIP_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
+sesIP_get( sessionTable_rowreq_ctx *rowreq_ctx, char **sesIP_val_ptr_ptr, size_t *sesIP_val_ptr_len_ptr )
+{
+ int len = 4;
+ /** we should have a non-NULL pointer and enough storage */
+ netsnmp_assert( (NULL != sesIP_val_ptr_ptr) && (NULL != *sesIP_val_ptr_ptr));
+ netsnmp_assert( NULL != sesIP_val_ptr_len_ptr );
+
+
+ DEBUGMSGTL(("verbose:sessionTable:sesIP_get","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ if ((NULL == (* sesIP_val_ptr_ptr )) ||
+ ((* sesIP_val_ptr_len_ptr ) < len)) {
+ /*
+ * allocate space for sesIfName data
+ */
+ (* sesIP_val_ptr_ptr ) = malloc(len);
+ if(NULL == (* sesIP_val_ptr_ptr )) {
+ snmp_log(LOG_ERR,"could not allocate memory\n");
+ return MFD_ERROR;
+ }
+ }
+ (* sesIP_val_ptr_len_ptr ) = len;
+ memcpy( (* sesIP_val_ptr_ptr ), &rowreq_ctx->data->peer_addr, len);
+
+ return MFD_SUCCESS;
+} /* sesIP_get */
+
+/*---------------------------------------------------------------------
+ * ACCEL-PPP-MIB::sessionEntry.sesType
+ * sesType is subid 5 of sessionEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.4.1.8072.100.2.1.1.5
+ * Description:
+name of ppp interface
+ *
+ * Attributes:
+ * accessible 1 isscalar 0 enums 1 hasdefval 0
+ * readable 1 iscolumn 1 ranges 0 hashint 0
+ * settable 0
+ *
+ * Enum range: 10/16. Values: other(1), direct(2), gre(3), minimal(4), l2tp(5), pptp(6), l2f(7), udp(8), atmp(9), msdp(10), sixToFour(11), sixOverFour(12), isatap(13), teredo(14)
+ *
+ * Its syntax is IANAtunnelType (based on perltype INTEGER)
+ * The net-snmp type is ASN_INTEGER. The C type decl is long (u_long)
+ */
+/**
+ * Extract the current value of the sesType data->
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ * Pointer to the row request context.
+ * @param sesType_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
+sesType_get( sessionTable_rowreq_ctx *rowreq_ctx, u_long * sesType_val_ptr )
+{
+ /** we should have a non-NULL pointer */
+ netsnmp_assert( NULL != sesType_val_ptr );
+
+
+ DEBUGMSGTL(("verbose:sessionTable:sesType_get","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ (* sesType_val_ptr ) = rowreq_ctx->data->type;
+
+ return MFD_SUCCESS;
+} /* sesType_get */
+
+/*---------------------------------------------------------------------
+ * ACCEL-PPP-MIB::sessionEntry.sesState
+ * sesState is subid 6 of sessionEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.4.1.8072.100.2.1.1.6
+ * Description:
+state of session
+ *
+ * Attributes:
+ * accessible 1 isscalar 0 enums 1 hasdefval 0
+ * readable 1 iscolumn 1 ranges 0 hashint 0
+ * settable 0
+ *
+ * Enum range: 3/8. Values: starting(1), active(2), finishing(3)
+ *
+ * Its syntax is INTEGER (based on perltype INTEGER)
+ * The net-snmp type is ASN_INTEGER. The C type decl is long (u_long)
+ */
+/**
+ * Extract the current value of the sesState data->
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ * Pointer to the row request context.
+ * @param sesState_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
+sesState_get( sessionTable_rowreq_ctx *rowreq_ctx, u_long * sesState_val_ptr )
+{
+ /** we should have a non-NULL pointer */
+ netsnmp_assert( NULL != sesState_val_ptr );
+
+
+ DEBUGMSGTL(("verbose:sessionTable:sesState_get","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ (* sesState_val_ptr ) = rowreq_ctx->data->state;
+
+ return MFD_SUCCESS;
+} /* sesState_get */
+
+/*---------------------------------------------------------------------
+ * ACCEL-PPP-MIB::sessionEntry.sesUptime
+ * sesUptime is subid 7 of sessionEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.4.1.8072.100.2.1.1.7
+ * Description:
+uptime of session
+ *
+ * Attributes:
+ * accessible 1 isscalar 0 enums 0 hasdefval 0
+ * readable 1 iscolumn 1 ranges 0 hashint 0
+ * settable 0
+ *
+ *
+ * Its syntax is TICKS (based on perltype TICKS)
+ * The net-snmp type is ASN_TIMETICKS. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the sesUptime data->
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ * Pointer to the row request context.
+ * @param sesUptime_val_ptr
+ * Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS : success
+ * @retval MFD_SKIP : skip this node (no value for now)
+ * @retval MFD_ERROR : Any other error
+ */
+int
+sesUptime_get( sessionTable_rowreq_ctx *rowreq_ctx, u_long * sesUptime_val_ptr )
+{
+ /** we should have a non-NULL pointer */
+ netsnmp_assert( NULL != sesUptime_val_ptr );
+
+
+ DEBUGMSGTL(("verbose:sessionTable:sesUptime_get","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ (* sesUptime_val_ptr ) = rowreq_ctx->data->uptime;
+
+ return MFD_SUCCESS;
+} /* sesUptime_get */
+
+/*---------------------------------------------------------------------
+ * ACCEL-PPP-MIB::sessionEntry.sesCallingSID
+ * sesCallingSID is subid 8 of sessionEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.4.1.8072.100.2.1.1.8
+ * Description:
+Calling-Station-ID
+ *
+ * Attributes:
+ * accessible 1 isscalar 0 enums 0 hasdefval 0
+ * readable 1 iscolumn 1 ranges 0 hashint 0
+ * settable 0
+ *
+ *
+ * Its syntax is OCTETSTR (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 sesCallingSID data->
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ * Pointer to the row request context.
+ * @param sesCallingSID_val_ptr_ptr
+ * Pointer to storage for a char variable
+ * @param sesCallingSID_val_ptr_len_ptr
+ * Pointer to a size_t. On entry, it will contain the size (in bytes)
+ * pointed to by sesCallingSID.
+ * 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 (*sesCallingSID_val_ptr_len_ptr) bytes of memory,
+ * allocate it using malloc() and update sesCallingSID_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
+sesCallingSID_get( sessionTable_rowreq_ctx *rowreq_ctx, char **sesCallingSID_val_ptr_ptr, size_t *sesCallingSID_val_ptr_len_ptr )
+{
+ int len;
+ /** we should have a non-NULL pointer and enough storage */
+ netsnmp_assert( (NULL != sesCallingSID_val_ptr_ptr) && (NULL != *sesCallingSID_val_ptr_ptr));
+ netsnmp_assert( NULL != sesCallingSID_val_ptr_len_ptr );
+
+
+ DEBUGMSGTL(("verbose:sessionTable:sesCallingSID_get","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ len = strlen(rowreq_ctx->data->calling_sid);
+
+ if ((NULL == (* sesCallingSID_val_ptr_ptr )) ||
+ ((* sesCallingSID_val_ptr_len_ptr ) < len)) {
+ /*
+ * allocate space for sesCallingSID data
+ */
+ (* sesCallingSID_val_ptr_ptr ) = malloc(len);
+ if(NULL == (* sesCallingSID_val_ptr_ptr )) {
+ snmp_log(LOG_ERR,"could not allocate memory\n");
+ return MFD_ERROR;
+ }
+ }
+ (* sesCallingSID_val_ptr_len_ptr ) = len;
+ memcpy( (* sesCallingSID_val_ptr_ptr ), rowreq_ctx->data->calling_sid, len);
+
+ return MFD_SUCCESS;
+} /* sesCallingSID_get */
+
+/*---------------------------------------------------------------------
+ * ACCEL-PPP-MIB::sessionEntry.sesCalledSID
+ * sesCalledSID is subid 9 of sessionEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.4.1.8072.100.2.1.1.9
+ * Description:
+Called-Station-ID
+ *
+ * Attributes:
+ * accessible 1 isscalar 0 enums 0 hasdefval 0
+ * readable 1 iscolumn 1 ranges 0 hashint 0
+ * settable 0
+ *
+ *
+ * Its syntax is OCTETSTR (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 sesCalledSID data->
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ * Pointer to the row request context.
+ * @param sesCalledSID_val_ptr_ptr
+ * Pointer to storage for a char variable
+ * @param sesCalledSID_val_ptr_len_ptr
+ * Pointer to a size_t. On entry, it will contain the size (in bytes)
+ * pointed to by sesCalledSID.
+ * 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 (*sesCalledSID_val_ptr_len_ptr) bytes of memory,
+ * allocate it using malloc() and update sesCalledSID_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
+sesCalledSID_get( sessionTable_rowreq_ctx *rowreq_ctx, char **sesCalledSID_val_ptr_ptr, size_t *sesCalledSID_val_ptr_len_ptr )
+{
+ int len;
+
+ /** we should have a non-NULL pointer and enough storage */
+ netsnmp_assert( (NULL != sesCalledSID_val_ptr_ptr) && (NULL != *sesCalledSID_val_ptr_ptr));
+ netsnmp_assert( NULL != sesCalledSID_val_ptr_len_ptr );
+
+
+ DEBUGMSGTL(("verbose:sessionTable:sesCalledSID_get","called\n"));
+
+ netsnmp_assert(NULL != rowreq_ctx);
+
+ len = strlen(rowreq_ctx->data->called_sid);
+
+ if ((NULL == (* sesCalledSID_val_ptr_ptr )) ||
+ ((* sesCalledSID_val_ptr_len_ptr ) < len)) {
+ /*
+ * allocate space for sesCalledSID data
+ */
+ (* sesCalledSID_val_ptr_ptr ) = malloc(len);
+ if(NULL == (* sesCalledSID_val_ptr_ptr )) {
+ snmp_log(LOG_ERR,"could not allocate memory\n");
+ return MFD_ERROR;
+ }
+ }
+ (* sesCalledSID_val_ptr_len_ptr ) = len;
+ memcpy( (* sesCalledSID_val_ptr_ptr ), rowreq_ctx->data->called_sid, len);
+
+ return MFD_SUCCESS;
+} /* sesCalledSID_get */
+
+/** @} */