/* * Note: this file originally auto-generated by mib2c using * version : 12088 $ of $ * * $Id:$ */ /* * standard Net-SNMP includes */ #include #include #include /* * include our parent header */ #include "etherStatsTable.h" /** @defgroup data_get data_get: Routines to get data * * TODO:230:M: Implement etherStatsTable get routines. * TODO:240:M: Implement etherStatsTable 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 etherStatsTable *** ********************************************************************** **********************************************************************/ /* * RMON-MIB::etherStatsTable is subid 1 of statistics. * Its status is Current. * OID: .1.3.6.1.2.1.16.1.1, length: 9 */ /* * --------------------------------------------------------------------- * * TODO:200:r: Implement etherStatsTable data context functions. */ /** * set mib index(es) * * @param tbl_idx mib index structure * @param etherStatsIndex_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 etherStatsTable_indexes_set_tbl_idx(etherStatsTable_mib_index * tbl_idx, long etherStatsIndex_val) { DEBUGMSGTL(("verbose:etherStatsTable:etherStatsTable_indexes_set_tbl_idx", "called\n")); /* * etherStatsIndex(1)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/R/d/h */ tbl_idx->etherStatsIndex = etherStatsIndex_val; return MFD_SUCCESS; } /* etherStatsTable_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 etherStatsTable_indexes_set(etherStatsTable_rowreq_ctx * rowreq_ctx, long etherStatsIndex_val) { DEBUGMSGTL(("verbose:etherStatsTable:etherStatsTable_indexes_set", "called\n")); if (MFD_SUCCESS != etherStatsTable_indexes_set_tbl_idx(&rowreq_ctx->tbl_idx, etherStatsIndex_val)) return MFD_ERROR; /* * convert mib index to oid index */ rowreq_ctx->oid_idx.len = sizeof(rowreq_ctx->oid_tmp) / sizeof(oid); if (0 != etherStatsTable_index_to_oid(&rowreq_ctx->oid_idx, &rowreq_ctx->tbl_idx)) { return MFD_ERROR; } return MFD_SUCCESS; } /* etherStatsTable_indexes_set */ /*--------------------------------------------------------------------- * RMON-MIB::etherStatsEntry.etherStatsDataSource * etherStatsDataSource is subid 2 of etherStatsEntry. * Its status is Current, and its access level is Create. * OID: .1.3.6.1.2.1.16.1.1.1.2 * Description: This object identifies the source of the data that this etherStats entry is configured to analyze. This source can be any ethernet interface on this device. In order to identify a particular interface, this object shall identify the instance of the ifIndex object, defined in RFC 2233 [17], for the desired interface. For example, if an entry were to receive data from interface #1, this object would be set to ifIndex.1. The statistics in this group reflect all packets on the local network segment attached to the identified interface. An agent may or may not be able to tell if fundamental changes to the media of the interface have occurred and necessitate an invalidation of this entry. For example, a hot-pluggable ethernet card could be pulled out and replaced by a token-ring card. In such a case, if the agent has such knowledge of the change, it is recommended that it invalidate this entry. This object may not be modified if the associated etherStatsStatus object is equal to valid(1). * * Attributes: * accessible 1 isscalar 0 enums 0 hasdefval 0 * readable 1 iscolumn 1 ranges 0 hashint 0 * settable 1 * * * Its syntax is OBJECTID (based on perltype OBJECTID) * The net-snmp type is ASN_OBJECT_ID. The C type decl is oid (oid) * This data type requires a length. */ /** * Extract the current value of the etherStatsDataSource data. * * Set a value using the data context for the row. * * @param rowreq_ctx * Pointer to the row request context. * @param etherStatsDataSource_val_ptr_ptr * Pointer to storage for a oid variable * @param etherStatsDataSource_val_ptr_len_ptr * Pointer to a size_t. On entry, it will contain the size (in bytes) * pointed to by etherStatsDataSource. * 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 (*etherStatsDataSource_val_ptr_len_ptr) bytes of memory, * allocate it using malloc() and update etherStatsDataSource_val_ptr_ptr. * DO NOT 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 etherStatsDataSource_get(etherStatsTable_rowreq_ctx * rowreq_ctx, oid ** etherStatsDataSource_val_ptr_ptr, size_t *etherStatsDataSource_val_ptr_len_ptr) { /** we should have a non-NULL pointer and enough storage */ netsnmp_assert((NULL != etherStatsDataSource_val_ptr_ptr) && (NULL != *etherStatsDataSource_val_ptr_ptr)); netsnmp_assert(NULL != etherStatsDataSource_val_ptr_len_ptr); DEBUGMSGTL(("verbose:etherStatsTable:etherStatsDataSource_get", "called\n")); netsnmp_assert(NULL != rowreq_ctx); /* * TODO:231:o: |-> Extract the current value of the etherStatsDataSource data. * copy (* etherStatsDataSource_val_ptr_ptr ) data and (* etherStatsDataSource_val_ptr_len_ptr ) from rowreq_ctx->data */ /* * make sure there is enough space for etherStatsDataSource data */ if ((NULL == (*etherStatsDataSource_val_ptr_ptr)) || ((*etherStatsDataSource_val_ptr_len_ptr) < (rowreq_ctx->data.etherStatsDataSource_len * sizeof(rowreq_ctx->data.etherStatsDataSource[0])))) { /* * allocate space for etherStatsDataSource data */ (*etherStatsDataSource_val_ptr_ptr) = malloc(rowreq_ctx->data.etherStatsDataSource_len * sizeof(rowreq_ctx->data.etherStatsDataSource[0])); if (NULL == (*etherStatsDataSource_val_ptr_ptr)) { snmp_log(LOG_ERR, "could not allocate memory\n"); return MFD_ERROR; } } (*etherStatsDataSource_val_ptr_len_ptr) = rowreq_ctx->data.etherStatsDataSource_len * sizeof(rowreq_ctx->data.etherStatsDataSource[0]); memcpy((*etherStatsDataSource_val_ptr_ptr), rowreq_ctx->data.etherStatsDataSource, rowreq_ctx->data.etherStatsDataSource_len * sizeof(rowreq_ctx->data.etherStatsDataSource[0])); return MFD_SUCCESS; } /* etherStatsDataSource_get */ /*--------------------------------------------------------------------- * RMON-MIB::etherStatsEntry.etherStatsDropEvents * etherStatsDropEvents is subid 3 of etherStatsEntry. * Its status is Current, and its access level is ReadOnly. * OID: .1.3.6.1.2.1.16.1.1.1.3 * Description: The total number of events in which packets were dropped by the probe due to lack of resources. Note that this number is not necessarily the number of packets dropped; it is just the number of times this condition has been detected. * * Attributes: * accessible 1 isscalar 0 enums 0 hasdefval 0 * readable 1 iscolumn 1 ranges 0 hashint 0 * settable 0 * * * Its syntax is COUNTER (based on perltype COUNTER) * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long) */ /** * Extract the current value of the etherStatsDropEvents data. * * Set a value using the data context for the row. * * @param rowreq_ctx * Pointer to the row request context. * @param etherStatsDropEvents_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 etherStatsDropEvents_get(etherStatsTable_rowreq_ctx * rowreq_ctx, u_long * etherStatsDropEvents_val_ptr) { /** we should have a non-NULL pointer */ netsnmp_assert(NULL != etherStatsDropEvents_val_ptr); DEBUGMSGTL(("verbose:etherStatsTable:etherStatsDropEvents_get", "called\n")); netsnmp_assert(NULL != rowreq_ctx); /* * TODO:231:o: |-> Extract the current value of the etherStatsDropEvents data. * copy (* etherStatsDropEvents_val_ptr ) from rowreq_ctx->data */ (*etherStatsDropEvents_val_ptr) = rowreq_ctx->data.etherStatsDropEvents; return MFD_SUCCESS; } /* etherStatsDropEvents_get */ /*--------------------------------------------------------------------- * RMON-MIB::etherStatsEntry.etherStatsOctets * etherStatsOctets is subid 4 of etherStatsEntry. * Its status is Current, and its access level is ReadOnly. * OID: .1.3.6.1.2.1.16.1.1.1.4 * Description: The total number of octets of data (including those in bad packets) received on the network (excluding framing bits but including FCS octets). This object can be used as a reasonable estimate of 10-Megabit ethernet utilization. If greater precision is desired, the etherStatsPkts and etherStatsOctets objects should be sampled before and after a common interval. The differences in the sampled values are Pkts and Octets, respectively, and the number of seconds in the interval is Interval. These values are used to calculate the Utilization as follows: Pkts * (9.6 + 6.4) + (Octets * .8) Utilization = ------------------------------------- Interval * 10,000 The result of this equation is the value Utilization which is the percent utilization of the ethernet segment on a scale of 0 to 100 percent. * * Attributes: * accessible 1 isscalar 0 enums 0 hasdefval 0 * readable 1 iscolumn 1 ranges 0 hashint 0 * settable 0 * * * Its syntax is COUNTER (based on perltype COUNTER) * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long) */ /** * Extract the current value of the etherStatsOctets data. * * Set a value using the data context for the row. * * @param rowreq_ctx * Pointer to the row request context. * @param etherStatsOctets_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 etherStatsOctets_get(etherStatsTable_rowreq_ctx * rowreq_ctx, u_long * etherStatsOctets_val_ptr) { /** we should have a non-NULL pointer */ netsnmp_assert(NULL != etherStatsOctets_val_ptr); DEBUGMSGTL(("verbose:etherStatsTable:etherStatsOctets_get", "called\n")); netsnmp_assert(NULL != rowreq_ctx); /* * TODO:231:o: |-> Extract the current value of the etherStatsOctets data. * copy (* etherStatsOctets_val_ptr ) from rowreq_ctx->data */ (*etherStatsOctets_val_ptr) = rowreq_ctx->data.etherStatsOctets; return MFD_SUCCESS; } /* etherStatsOctets_get */ /*--------------------------------------------------------------------- * RMON-MIB::etherStatsEntry.etherStatsPkts * etherStatsPkts is subid 5 of etherStatsEntry. * Its status is Current, and its access level is ReadOnly. * OID: .1.3.6.1.2.1.16.1.1.1.5 * Description: The total number of packets (including bad packets, broadcast packets, and multicast packets) received. * * Attributes: * accessible 1 isscalar 0 enums 0 hasdefval 0 * readable 1 iscolumn 1 ranges 0 hashint 0 * settable 0 * * * Its syntax is COUNTER (based on perltype COUNTER) * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long) */ /** * Extract the current value of the etherStatsPkts data. * * Set a value using the data context for the row. * * @param rowreq_ctx * Pointer to the row request context. * @param etherStatsPkts_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 etherStatsPkts_get(etherStatsTable_rowreq_ctx * rowreq_ctx, u_long * etherStatsPkts_val_ptr) { /** we should have a non-NULL pointer */ netsnmp_assert(NULL != etherStatsPkts_val_ptr); DEBUGMSGTL(("verbose:etherStatsTable:etherStatsPkts_get", "called\n")); netsnmp_assert(NULL != rowreq_ctx); /* * TODO:231:o: |-> Extract the current value of the etherStatsPkts data. * copy (* etherStatsPkts_val_ptr ) from rowreq_ctx->data */ (*etherStatsPkts_val_ptr) = rowreq_ctx->data.etherStatsPkts; return MFD_SUCCESS; } /* etherStatsPkts_get */ /*--------------------------------------------------------------------- * RMON-MIB::etherStatsEntry.etherStatsBroadcastPkts * etherStatsBroadcastPkts is subid 6 of etherStatsEntry. * Its status is Current, and its access level is ReadOnly. * OID: .1.3.6.1.2.1.16.1.1.1.6 * Description: The total number of good packets received that were directed to the broadcast address. Note that this does not include multicast packets. * * Attributes: * accessible 1 isscalar 0 enums 0 hasdefval 0 * readable 1 iscolumn 1 ranges 0 hashint 0 * settable 0 * * * Its syntax is COUNTER (based on perltype COUNTER) * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long) */ /** * Extract the current value of the etherStatsBroadcastPkts data. * * Set a value using the data context for the row. * * @param rowreq_ctx * Pointer to the row request context. * @param etherStatsBroadcastPkts_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 etherStatsBroadcastPkts_get(etherStatsTable_rowreq_ctx * rowreq_ctx, u_long * etherStatsBroadcastPkts_val_ptr) { /** we should have a non-NULL pointer */ netsnmp_assert(NULL != etherStatsBroadcastPkts_val_ptr); DEBUGMSGTL(("verbose:etherStatsTable:etherStatsBroadcastPkts_get", "called\n")); netsnmp_assert(NULL != rowreq_ctx); /* * TODO:231:o: |-> Extract the current value of the etherStatsBroadcastPkts data. * copy (* etherStatsBroadcastPkts_val_ptr ) from rowreq_ctx->data */ (*etherStatsBroadcastPkts_val_ptr) = rowreq_ctx->data.etherStatsBroadcastPkts; return MFD_SUCCESS; } /* etherStatsBroadcastPkts_get */ /*--------------------------------------------------------------------- * RMON-MIB::etherStatsEntry.etherStatsMulticastPkts * etherStatsMulticastPkts is subid 7 of etherStatsEntry. * Its status is Current, and its access level is ReadOnly. * OID: .1.3.6.1.2.1.16.1.1.1.7 * Description: The total number of good packets received that were directed to a multicast address. Note that this number does not include packets directed to the broadcast address. * * Attributes: * accessible 1 isscalar 0 enums 0 hasdefval 0 * readable 1 iscolumn 1 ranges 0 hashint 0 * settable 0 * * * Its syntax is COUNTER (based on perltype COUNTER) * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long) */ /** * Extract the current value of the etherStatsMulticastPkts data. * * Set a value using the data context for the row. * * @param rowreq_ctx * Pointer to the row request context. * @param etherStatsMulticastPkts_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 etherStatsMulticastPkts_get(etherStatsTable_rowreq_ctx * rowreq_ctx, u_long * etherStatsMulticastPkts_val_ptr) { /** we should have a non-NULL pointer */ netsnmp_assert(NULL != etherStatsMulticastPkts_val_ptr); DEBUGMSGTL(("verbose:etherStatsTable:etherStatsMulticastPkts_get", "called\n")); netsnmp_assert(NULL != rowreq_ctx); /* * TODO:231:o: |-> Extract the current value of the etherStatsMulticastPkts data. * copy (* etherStatsMulticastPkts_val_ptr ) from rowreq_ctx->data */ (*etherStatsMulticastPkts_val_ptr) = rowreq_ctx->data.etherStatsMulticastPkts; return MFD_SUCCESS; } /* etherStatsMulticastPkts_get */ /*--------------------------------------------------------------------- * RMON-MIB::etherStatsEntry.etherStatsCRCAlignErrors * etherStatsCRCAlignErrors is subid 8 of etherStatsEntry. * Its status is Current, and its access level is ReadOnly. * OID: .1.3.6.1.2.1.16.1.1.1.8 * Description: The total number of packets received that had a length (excluding framing bits, but including FCS octets) of between 64 and 1518 octets, inclusive, but had either a bad Frame Check Sequence (FCS) with an integral number of octets (FCS Error) or a bad FCS with a non-integral number of octets (Alignment Error). * * Attributes: * accessible 1 isscalar 0 enums 0 hasdefval 0 * readable 1 iscolumn 1 ranges 0 hashint 0 * settable 0 * * * Its syntax is COUNTER (based on perltype COUNTER) * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long) */ /** * Extract the current value of the etherStatsCRCAlignErrors data. * * Set a value using the data context for the row. * * @param rowreq_ctx * Pointer to the row request context. * @param etherStatsCRCAlignErrors_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 etherStatsCRCAlignErrors_get(etherStatsTable_rowreq_ctx * rowreq_ctx, u_long * etherStatsCRCAlignErrors_val_ptr) { /** we should have a non-NULL pointer */ netsnmp_assert(NULL != etherStatsCRCAlignErrors_val_ptr); DEBUGMSGTL(("verbose:etherStatsTable:etherStatsCRCAlignErrors_get", "called\n")); netsnmp_assert(NULL != rowreq_ctx); /* * TODO:231:o: |-> Extract the current value of the etherStatsCRCAlignErrors data. * copy (* etherStatsCRCAlignErrors_val_ptr ) from rowreq_ctx->data */ (*etherStatsCRCAlignErrors_val_ptr) = rowreq_ctx->data.etherStatsCRCAlignErrors; return MFD_SUCCESS; } /* etherStatsCRCAlignErrors_get */ /*--------------------------------------------------------------------- * RMON-MIB::etherStatsEntry.etherStatsUndersizePkts * etherStatsUndersizePkts is subid 9 of etherStatsEntry. * Its status is Current, and its access level is ReadOnly. * OID: .1.3.6.1.2.1.16.1.1.1.9 * Description: The total number of packets received that were less than 64 octets long (excluding framing bits, but including FCS octets) and were otherwise well formed. * * Attributes: * accessible 1 isscalar 0 enums 0 hasdefval 0 * readable 1 iscolumn 1 ranges 0 hashint 0 * settable 0 * * * Its syntax is COUNTER (based on perltype COUNTER) * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long) */ /** * Extract the current value of the etherStatsUndersizePkts data. * * Set a value using the data context for the row. * * @param rowreq_ctx * Pointer to the row request context. * @param etherStatsUndersizePkts_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 etherStatsUndersizePkts_get(etherStatsTable_rowreq_ctx * rowreq_ctx, u_long * etherStatsUndersizePkts_val_ptr) { /** we should have a non-NULL pointer */ netsnmp_assert(NULL != etherStatsUndersizePkts_val_ptr); DEBUGMSGTL(("verbose:etherStatsTable:etherStatsUndersizePkts_get", "called\n")); netsnmp_assert(NULL != rowreq_ctx); /* * TODO:231:o: |-> Extract the current value of the etherStatsUndersizePkts data. * copy (* etherStatsUndersizePkts_val_ptr ) from rowreq_ctx->data */ (*etherStatsUndersizePkts_val_ptr) = rowreq_ctx->data.etherStatsUndersizePkts; return MFD_SUCCESS; } /* etherStatsUndersizePkts_get */ /*--------------------------------------------------------------------- * RMON-MIB::etherStatsEntry.etherStatsOversizePkts * etherStatsOversizePkts is subid 10 of etherStatsEntry. * Its status is Current, and its access level is ReadOnly. * OID: .1.3.6.1.2.1.16.1.1.1.10 * Description: The total number of packets received that were longer than 1518 octets (excluding framing bits, but including FCS octets) and were otherwise well formed. * * Attributes: * accessible 1 isscalar 0 enums 0 hasdefval 0 * readable 1 iscolumn 1 ranges 0 hashint 0 * settable 0 * * * Its syntax is COUNTER (based on perltype COUNTER) * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long) */ /** * Extract the current value of the etherStatsOversizePkts data. * * Set a value using the data context for the row. * * @param rowreq_ctx * Pointer to the row request context. * @param etherStatsOversizePkts_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 etherStatsOversizePkts_get(etherStatsTable_rowreq_ctx * rowreq_ctx, u_long * etherStatsOversizePkts_val_ptr) { /** we should have a non-NULL pointer */ netsnmp_assert(NULL != etherStatsOversizePkts_val_ptr); DEBUGMSGTL(("verbose:etherStatsTable:etherStatsOversizePkts_get", "called\n")); netsnmp_assert(NULL != rowreq_ctx); /* * TODO:231:o: |-> Extract the current value of the etherStatsOversizePkts data. * copy (* etherStatsOversizePkts_val_ptr ) from rowreq_ctx->data */ (*etherStatsOversizePkts_val_ptr) = rowreq_ctx->data.etherStatsOversizePkts; return MFD_SUCCESS; } /* etherStatsOversizePkts_get */ /*--------------------------------------------------------------------- * RMON-MIB::etherStatsEntry.etherStatsFragments * etherStatsFragments is subid 11 of etherStatsEntry. * Its status is Current, and its access level is ReadOnly. * OID: .1.3.6.1.2.1.16.1.1.1.11 * Description: The total number of packets received that were less than 64 octets in length (excluding framing bits but including FCS octets) and had either a bad Frame Check Sequence (FCS) with an integral number of octets (FCS Error) or a bad FCS with a non-integral number of octets (Alignment Error). Note that it is entirely normal for etherStatsFragments to increment. This is because it counts both runts (which are normal occurrences due to collisions) and noise hits. * * Attributes: * accessible 1 isscalar 0 enums 0 hasdefval 0 * readable 1 iscolumn 1 ranges 0 hashint 0 * settable 0 * * * Its syntax is COUNTER (based on perltype COUNTER) * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long) */ /** * Extract the current value of the etherStatsFragments data. * * Set a value using the data context for the row. * * @param rowreq_ctx * Pointer to the row request context. * @param etherStatsFragments_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 etherStatsFragments_get(etherStatsTable_rowreq_ctx * rowreq_ctx, u_long * etherStatsFragments_val_ptr) { /** we should have a non-NULL pointer */ netsnmp_assert(NULL != etherStatsFragments_val_ptr); DEBUGMSGTL(("verbose:etherStatsTable:etherStatsFragments_get", "called\n")); netsnmp_assert(NULL != rowreq_ctx); /* * TODO:231:o: |-> Extract the current value of the etherStatsFragments data. * copy (* etherStatsFragments_val_ptr ) from rowreq_ctx->data */ (*etherStatsFragments_val_ptr) = rowreq_ctx->data.etherStatsFragments; return MFD_SUCCESS; } /* etherStatsFragments_get */ /*--------------------------------------------------------------------- * RMON-MIB::etherStatsEntry.etherStatsJabbers * etherStatsJabbers is subid 12 of etherStatsEntry. * Its status is Current, and its access level is ReadOnly. * OID: .1.3.6.1.2.1.16.1.1.1.12 * Description: The total number of packets received that were longer than 1518 octets (excluding framing bits, but including FCS octets), and had either a bad Frame Check Sequence (FCS) with an integral number of octets (FCS Error) or a bad FCS with a non-integral number of octets (Alignment Error). Note that this definition of jabber is different than the definition in IEEE-802.3 section 8.2.1.5 (10BASE5) and section 10.3.1.4 (10BASE2). These documents define jabber as the condition where any packet exceeds 20 ms. The allowed range to detect jabber is between 20 ms and 150 ms. * * Attributes: * accessible 1 isscalar 0 enums 0 hasdefval 0 * readable 1 iscolumn 1 ranges 0 hashint 0 * settable 0 * * * Its syntax is COUNTER (based on perltype COUNTER) * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long) */ /** * Extract the current value of the etherStatsJabbers data. * * Set a value using the data context for the row. * * @param rowreq_ctx * Pointer to the row request context. * @param etherStatsJabbers_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 etherStatsJabbers_get(etherStatsTable_rowreq_ctx * rowreq_ctx, u_long * etherStatsJabbers_val_ptr) { /** we should have a non-NULL pointer */ netsnmp_assert(NULL != etherStatsJabbers_val_ptr); DEBUGMSGTL(("verbose:etherStatsTable:etherStatsJabbers_get", "called\n")); netsnmp_assert(NULL != rowreq_ctx); /* * TODO:231:o: |-> Extract the current value of the etherStatsJabbers data. * copy (* etherStatsJabbers_val_ptr ) from rowreq_ctx->data */ (*etherStatsJabbers_val_ptr) = rowreq_ctx->data.etherStatsJabbers; return MFD_SUCCESS; } /* etherStatsJabbers_get */ /*--------------------------------------------------------------------- * RMON-MIB::etherStatsEntry.etherStatsCollisions * etherStatsCollisions is subid 13 of etherStatsEntry. * Its status is Current, and its access level is ReadOnly. * OID: .1.3.6.1.2.1.16.1.1.1.13 * Description: The best estimate of the total number of collisions on this Ethernet segment. The value returned will depend on the location of the RMON probe. Section 8.2.1.3 (10BASE-5) and section 10.3.1.3 (10BASE-2) of IEEE standard 802.3 states that a station must detect a collision, in the receive mode, if three or more stations are transmitting simultaneously. A repeater port must detect a collision when two or more stations are transmitting simultaneously. Thus a probe placed on a repeater port could record more collisions than a probe connected to a station on the same segment would. Probe location plays a much smaller role when considering 10BASE-T. 14.2.1.4 (10BASE-T) of IEEE standard 802.3 defines a collision as the simultaneous presence of signals on the DO and RD circuits (transmitting and receiving at the same time). A 10BASE-T station can only detect collisions when it is transmitting. Thus probes placed on a station and a repeater, should report the same number of collisions. Note also that an RMON probe inside a repeater should ideally report collisions between the repeater and one or more other hosts (transmit collisions as defined by IEEE 802.3k) plus receiver collisions observed on any coax segments to which the repeater is connected. * * Attributes: * accessible 1 isscalar 0 enums 0 hasdefval 0 * readable 1 iscolumn 1 ranges 0 hashint 0 * settable 0 * * * Its syntax is COUNTER (based on perltype COUNTER) * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long) */ /** * Extract the current value of the etherStatsCollisions data. * * Set a value using the data context for the row. * * @param rowreq_ctx * Pointer to the row request context. * @param etherStatsCollisions_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 etherStatsCollisions_get(etherStatsTable_rowreq_ctx * rowreq_ctx, u_long * etherStatsCollisions_val_ptr) { /** we should have a non-NULL pointer */ netsnmp_assert(NULL != etherStatsCollisions_val_ptr); DEBUGMSGTL(("verbose:etherStatsTable:etherStatsCollisions_get", "called\n")); netsnmp_assert(NULL != rowreq_ctx); /* * TODO:231:o: |-> Extract the current value of the etherStatsCollisions data. * copy (* etherStatsCollisions_val_ptr ) from rowreq_ctx->data */ (*etherStatsCollisions_val_ptr) = rowreq_ctx->data.etherStatsCollisions; return MFD_SUCCESS; } /* etherStatsCollisions_get */ /*--------------------------------------------------------------------- * RMON-MIB::etherStatsEntry.etherStatsPkts64Octets * etherStatsPkts64Octets is subid 14 of etherStatsEntry. * Its status is Current, and its access level is ReadOnly. * OID: .1.3.6.1.2.1.16.1.1.1.14 * Description: The total number of packets (including bad packets) received that were 64 octets in length (excluding framing bits but including FCS octets). * * Attributes: * accessible 1 isscalar 0 enums 0 hasdefval 0 * readable 1 iscolumn 1 ranges 0 hashint 0 * settable 0 * * * Its syntax is COUNTER (based on perltype COUNTER) * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long) */ /** * Extract the current value of the etherStatsPkts64Octets data. * * Set a value using the data context for the row. * * @param rowreq_ctx * Pointer to the row request context. * @param etherStatsPkts64Octets_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 etherStatsPkts64Octets_get(etherStatsTable_rowreq_ctx * rowreq_ctx, u_long * etherStatsPkts64Octets_val_ptr) { /** we should have a non-NULL pointer */ netsnmp_assert(NULL != etherStatsPkts64Octets_val_ptr); DEBUGMSGTL(("verbose:etherStatsTable:etherStatsPkts64Octets_get", "called\n")); netsnmp_assert(NULL != rowreq_ctx); /* * TODO:231:o: |-> Extract the current value of the etherStatsPkts64Octets data. * copy (* etherStatsPkts64Octets_val_ptr ) from rowreq_ctx->data */ (*etherStatsPkts64Octets_val_ptr) = rowreq_ctx->data.etherStatsPkts64Octets; return MFD_SUCCESS; } /* etherStatsPkts64Octets_get */ /*--------------------------------------------------------------------- * RMON-MIB::etherStatsEntry.etherStatsPkts65to127Octets * etherStatsPkts65to127Octets is subid 15 of etherStatsEntry. * Its status is Current, and its access level is ReadOnly. * OID: .1.3.6.1.2.1.16.1.1.1.15 * Description: The total number of packets (including bad packets) received that were between 65 and 127 octets in length inclusive (excluding framing bits but including FCS octets). * * Attributes: * accessible 1 isscalar 0 enums 0 hasdefval 0 * readable 1 iscolumn 1 ranges 0 hashint 0 * settable 0 * * * Its syntax is COUNTER (based on perltype COUNTER) * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long) */ /** * Extract the current value of the etherStatsPkts65to127Octets data. * * Set a value using the data context for the row. * * @param rowreq_ctx * Pointer to the row request context. * @param etherStatsPkts65to127Octets_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 etherStatsPkts65to127Octets_get(etherStatsTable_rowreq_ctx * rowreq_ctx, u_long * etherStatsPkts65to127Octets_val_ptr) { /** we should have a non-NULL pointer */ netsnmp_assert(NULL != etherStatsPkts65to127Octets_val_ptr); DEBUGMSGTL(("verbose:etherStatsTable:etherStatsPkts65to127Octets_get", "called\n")); netsnmp_assert(NULL != rowreq_ctx); /* * TODO:231:o: |-> Extract the current value of the etherStatsPkts65to127Octets data. * copy (* etherStatsPkts65to127Octets_val_ptr ) from rowreq_ctx->data */ (*etherStatsPkts65to127Octets_val_ptr) = rowreq_ctx->data.etherStatsPkts65to127Octets; return MFD_SUCCESS; } /* etherStatsPkts65to127Octets_get */ /*--------------------------------------------------------------------- * RMON-MIB::etherStatsEntry.etherStatsPkts128to255Octets * etherStatsPkts128to255Octets is subid 16 of etherStatsEntry. * Its status is Current, and its access level is ReadOnly. * OID: .1.3.6.1.2.1.16.1.1.1.16 * Description: The total number of packets (including bad packets) received that were between 128 and 255 octets in length inclusive (excluding framing bits but including FCS octets). * * Attributes: * accessible 1 isscalar 0 enums 0 hasdefval 0 * readable 1 iscolumn 1 ranges 0 hashint 0 * settable 0 * * * Its syntax is COUNTER (based on perltype COUNTER) * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long) */ /** * Extract the current value of the etherStatsPkts128to255Octets data. * * Set a value using the data context for the row. * * @param rowreq_ctx * Pointer to the row request context. * @param etherStatsPkts128to255Octets_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 etherStatsPkts128to255Octets_get(etherStatsTable_rowreq_ctx * rowreq_ctx, u_long * etherStatsPkts128to255Octets_val_ptr) { /** we should have a non-NULL pointer */ netsnmp_assert(NULL != etherStatsPkts128to255Octets_val_ptr); DEBUGMSGTL(("verbose:etherStatsTable:etherStatsPkts128to255Octets_get", "called\n")); netsnmp_assert(NULL != rowreq_ctx); /* * TODO:231:o: |-> Extract the current value of the etherStatsPkts128to255Octets data. * copy (* etherStatsPkts128to255Octets_val_ptr ) from rowreq_ctx->data */ (*etherStatsPkts128to255Octets_val_ptr) = rowreq_ctx->data.etherStatsPkts128to255Octets; return MFD_SUCCESS; } /* etherStatsPkts128to255Octets_get */ /*--------------------------------------------------------------------- * RMON-MIB::etherStatsEntry.etherStatsPkts256to511Octets * etherStatsPkts256to511Octets is subid 17 of etherStatsEntry. * Its status is Current, and its access level is ReadOnly. * OID: .1.3.6.1.2.1.16.1.1.1.17 * Description: The total number of packets (including bad packets) received that were between 256 and 511 octets in length inclusive (excluding framing bits but including FCS octets). * * Attributes: * accessible 1 isscalar 0 enums 0 hasdefval 0 * readable 1 iscolumn 1 ranges 0 hashint 0 * settable 0 * * * Its syntax is COUNTER (based on perltype COUNTER) * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long) */ /** * Extract the current value of the etherStatsPkts256to511Octets data. * * Set a value using the data context for the row. * * @param rowreq_ctx * Pointer to the row request context. * @param etherStatsPkts256to511Octets_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 etherStatsPkts256to511Octets_get(etherStatsTable_rowreq_ctx * rowreq_ctx, u_long * etherStatsPkts256to511Octets_val_ptr) { /** we should have a non-NULL pointer */ netsnmp_assert(NULL != etherStatsPkts256to511Octets_val_ptr); DEBUGMSGTL(("verbose:etherStatsTable:etherStatsPkts256to511Octets_get", "called\n")); netsnmp_assert(NULL != rowreq_ctx); /* * TODO:231:o: |-> Extract the current value of the etherStatsPkts256to511Octets data. * copy (* etherStatsPkts256to511Octets_val_ptr ) from rowreq_ctx->data */ (*etherStatsPkts256to511Octets_val_ptr) = rowreq_ctx->data.etherStatsPkts256to511Octets; return MFD_SUCCESS; } /* etherStatsPkts256to511Octets_get */ /*--------------------------------------------------------------------- * RMON-MIB::etherStatsEntry.etherStatsPkts512to1023Octets * etherStatsPkts512to1023Octets is subid 18 of etherStatsEntry. * Its status is Current, and its access level is ReadOnly. * OID: .1.3.6.1.2.1.16.1.1.1.18 * Description: The total number of packets (including bad packets) received that were between 512 and 1023 octets in length inclusive (excluding framing bits but including FCS octets). * * Attributes: * accessible 1 isscalar 0 enums 0 hasdefval 0 * readable 1 iscolumn 1 ranges 0 hashint 0 * settable 0 * * * Its syntax is COUNTER (based on perltype COUNTER) * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long) */ /** * Extract the current value of the etherStatsPkts512to1023Octets data. * * Set a value using the data context for the row. * * @param rowreq_ctx * Pointer to the row request context. * @param etherStatsPkts512to1023Octets_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 etherStatsPkts512to1023Octets_get(etherStatsTable_rowreq_ctx * rowreq_ctx, u_long * etherStatsPkts512to1023Octets_val_ptr) { /** we should have a non-NULL pointer */ netsnmp_assert(NULL != etherStatsPkts512to1023Octets_val_ptr); DEBUGMSGTL(("verbose:etherStatsTable:etherStatsPkts512to1023Octets_get", "called\n")); netsnmp_assert(NULL != rowreq_ctx); /* * TODO:231:o: |-> Extract the current value of the etherStatsPkts512to1023Octets data. * copy (* etherStatsPkts512to1023Octets_val_ptr ) from rowreq_ctx->data */ (*etherStatsPkts512to1023Octets_val_ptr) = rowreq_ctx->data.etherStatsPkts512to1023Octets; return MFD_SUCCESS; } /* etherStatsPkts512to1023Octets_get */ /*--------------------------------------------------------------------- * RMON-MIB::etherStatsEntry.etherStatsPkts1024to1518Octets * etherStatsPkts1024to1518Octets is subid 19 of etherStatsEntry. * Its status is Current, and its access level is ReadOnly. * OID: .1.3.6.1.2.1.16.1.1.1.19 * Description: The total number of packets (including bad packets) received that were between 1024 and 1518 octets in length inclusive (excluding framing bits but including FCS octets). * * Attributes: * accessible 1 isscalar 0 enums 0 hasdefval 0 * readable 1 iscolumn 1 ranges 0 hashint 0 * settable 0 * * * Its syntax is COUNTER (based on perltype COUNTER) * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long) */ /** * Extract the current value of the etherStatsPkts1024to1518Octets data. * * Set a value using the data context for the row. * * @param rowreq_ctx * Pointer to the row request context. * @param etherStatsPkts1024to1518Octets_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 etherStatsPkts1024to1518Octets_get(etherStatsTable_rowreq_ctx * rowreq_ctx, u_long * etherStatsPkts1024to1518Octets_val_ptr) { /** we should have a non-NULL pointer */ netsnmp_assert(NULL != etherStatsPkts1024to1518Octets_val_ptr); DEBUGMSGTL(("verbose:etherStatsTable:etherStatsPkts1024to1518Octets_get", "called\n")); netsnmp_assert(NULL != rowreq_ctx); /* * TODO:231:o: |-> Extract the current value of the etherStatsPkts1024to1518Octets data. * copy (* etherStatsPkts1024to1518Octets_val_ptr ) from rowreq_ctx->data */ (*etherStatsPkts1024to1518Octets_val_ptr) = rowreq_ctx->data.etherStatsPkts1024to1518Octets; return MFD_SUCCESS; } /* etherStatsPkts1024to1518Octets_get */ /*--------------------------------------------------------------------- * RMON-MIB::etherStatsEntry.etherStatsOwner * etherStatsOwner is subid 20 of etherStatsEntry. * Its status is Current, and its access level is Create. * OID: .1.3.6.1.2.1.16.1.1.1.20 * Description: The entity that configured this entry and is therefore using the resources assigned to it. * * Attributes: * accessible 1 isscalar 0 enums 0 hasdefval 0 * readable 1 iscolumn 1 ranges 1 hashint 0 * settable 1 * * Ranges: 0 - 127; * * Its syntax is OwnerString (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 127) */ /** * Extract the current value of the etherStatsOwner data. * * Set a value using the data context for the row. * * @param rowreq_ctx * Pointer to the row request context. * @param etherStatsOwner_val_ptr_ptr * Pointer to storage for a char variable * @param etherStatsOwner_val_ptr_len_ptr * Pointer to a size_t. On entry, it will contain the size (in bytes) * pointed to by etherStatsOwner. * 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 (*etherStatsOwner_val_ptr_len_ptr) bytes of memory, * allocate it using malloc() and update etherStatsOwner_val_ptr_ptr. * DO NOT 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 etherStatsOwner_get(etherStatsTable_rowreq_ctx * rowreq_ctx, char **etherStatsOwner_val_ptr_ptr, size_t *etherStatsOwner_val_ptr_len_ptr) { /** we should have a non-NULL pointer and enough storage */ netsnmp_assert((NULL != etherStatsOwner_val_ptr_ptr) && (NULL != *etherStatsOwner_val_ptr_ptr)); netsnmp_assert(NULL != etherStatsOwner_val_ptr_len_ptr); DEBUGMSGTL(("verbose:etherStatsTable:etherStatsOwner_get", "called\n")); netsnmp_assert(NULL != rowreq_ctx); /* * TODO:231:o: |-> Extract the current value of the etherStatsOwner data. * copy (* etherStatsOwner_val_ptr_ptr ) data and (* etherStatsOwner_val_ptr_len_ptr ) from rowreq_ctx->data */ /* * make sure there is enough space for etherStatsOwner data */ if ((NULL == (*etherStatsOwner_val_ptr_ptr)) || ((*etherStatsOwner_val_ptr_len_ptr) < (rowreq_ctx->data.etherStatsOwner_len * sizeof(rowreq_ctx->data.etherStatsOwner[0])))) { /* * allocate space for etherStatsOwner data */ (*etherStatsOwner_val_ptr_ptr) = malloc(rowreq_ctx->data.etherStatsOwner_len * sizeof(rowreq_ctx->data.etherStatsOwner[0])); if (NULL == (*etherStatsOwner_val_ptr_ptr)) { snmp_log(LOG_ERR, "could not allocate memory\n"); return MFD_ERROR; } } (*etherStatsOwner_val_ptr_len_ptr) = rowreq_ctx->data.etherStatsOwner_len * sizeof(rowreq_ctx->data.etherStatsOwner[0]); memcpy((*etherStatsOwner_val_ptr_ptr), rowreq_ctx->data.etherStatsOwner, rowreq_ctx->data.etherStatsOwner_len * sizeof(rowreq_ctx->data.etherStatsOwner[0])); return MFD_SUCCESS; } /* etherStatsOwner_get */ /*--------------------------------------------------------------------- * RMON-MIB::etherStatsEntry.etherStatsStatus * etherStatsStatus is subid 21 of etherStatsEntry. * Its status is Current, and its access level is Create. * OID: .1.3.6.1.2.1.16.1.1.1.21 * Description: The status of this etherStats entry. * * Attributes: * accessible 1 isscalar 0 enums 1 hasdefval 0 * readable 1 iscolumn 1 ranges 0 hashint 0 * settable 1 * * Enum range: 2/8. Values: valid(1), createRequest(2), underCreation(3), invalid(4) * * Its syntax is EntryStatus (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 etherStatsStatus data. * * Set a value using the data context for the row. * * @param rowreq_ctx * Pointer to the row request context. * @param etherStatsStatus_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 etherStatsStatus_get(etherStatsTable_rowreq_ctx * rowreq_ctx, u_long * etherStatsStatus_val_ptr) { /** we should have a non-NULL pointer */ netsnmp_assert(NULL != etherStatsStatus_val_ptr); DEBUGMSGTL(("verbose:etherStatsTable:etherStatsStatus_get", "called\n")); netsnmp_assert(NULL != rowreq_ctx); /* * TODO:231:o: |-> Extract the current value of the etherStatsStatus data. * copy (* etherStatsStatus_val_ptr ) from rowreq_ctx->data */ (*etherStatsStatus_val_ptr) = rowreq_ctx->data.etherStatsStatus; return MFD_SUCCESS; } /* etherStatsStatus_get */ /** @} */