/* * Note: this file originally auto-generated by mib2c using * version : 1.48 $ of : mfd-top.m2c,v $ * * $Id$ */ /** \page MFD helper for udpEndpointTable * * \section intro Introduction * Introductory text. * */ /* * standard Net-SNMP includes */ #include #include #include /* * include our parent header */ #include "udpEndpointTable.h" #include #include "udpEndpointTable_interface.h" const oid udpEndpointTable_oid[] = { UDPENDPOINTTABLE_OID }; const int udpEndpointTable_oid_size = OID_LENGTH(udpEndpointTable_oid); udpEndpointTable_registration udpEndpointTable_user_context; static udpEndpointTable_registration *udpEndpointTable_user_context_p; void initialize_table_udpEndpointTable(void); void shutdown_table_udpEndpointTable(void); /** * Initializes the udpEndpointTable module */ void init_udpEndpointTable(void) { DEBUGMSGTL(("verbose:udpEndpointTable:init_udpEndpointTable", "called\n")); /* * TODO:300:o: Perform udpEndpointTable one-time module initialization. */ /* * here we initialize all the tables we're planning on supporting */ if (should_init("udpEndpointTable")) initialize_table_udpEndpointTable(); } /* init_udpEndpointTable */ /** * Shut-down the udpEndpointTable module (agent is exiting) */ void shutdown_udpEndpointTable(void) { if (should_init("udpEndpointTable")) shutdown_table_udpEndpointTable(); } /** * Initialize the table udpEndpointTable * (Define its contents and how it's structured) */ void initialize_table_udpEndpointTable(void) { u_long flags; DEBUGMSGTL(("verbose:udpEndpointTable:initialize_table_udpEndpointTable", "called\n")); /* * TODO:301:o: Perform udpEndpointTable one-time table initialization. */ /* * TODO:302:o: |->Initialize udpEndpointTable user context * if you'd like to pass in a pointer to some data for this * table, allocate or set it up here. */ /* * a netsnmp_data_list is a simple way to store void pointers. A simple * string token is used to add, find or remove pointers. */ udpEndpointTable_user_context_p = netsnmp_create_data_list("udpEndpointTable", NULL, NULL); /* * No support for any flags yet, but in the future you would * set any flags here. */ flags = 0; /* * call interface initialization code */ _udpEndpointTable_initialize_interface (udpEndpointTable_user_context_p, flags); } /* initialize_table_udpEndpointTable */ /** * Shutdown the table udpEndpointTable */ void shutdown_table_udpEndpointTable(void) { /* * call interface shutdown code */ _udpEndpointTable_shutdown_interface(udpEndpointTable_user_context_p); netsnmp_free_all_list_data(udpEndpointTable_user_context_p); udpEndpointTable_user_context_p = NULL; } /** * pre-request callback * * @param user_context * @retval MFD_SUCCESS : success. * @retval MFD_ERROR : other error */ int udpEndpointTable_pre_request(udpEndpointTable_registration * user_context) { DEBUGMSGTL(("verbose:udpEndpointTable:udpEndpointTable_pre_request", "called\n")); /* * TODO:510:o: Perform udpEndpointTable pre-request actions. */ return MFD_SUCCESS; } /* udpEndpointTable_pre_request */ /** * post-request callback * * Note: * New rows have been inserted into the container, and * deleted rows have been removed from the container and * released. * @param user_context * @param rc : MFD_SUCCESS if all requests succeeded * * @retval MFD_SUCCESS : success. * @retval MFD_ERROR : other error (ignored) */ int udpEndpointTable_post_request(udpEndpointTable_registration * user_context, int rc) { DEBUGMSGTL(("verbose:udpEndpointTable:udpEndpointTable_post_request", "called\n")); /* * TODO:511:o: Perform udpEndpointTable post-request actions. */ return MFD_SUCCESS; } /* udpEndpointTable_post_request */ /********************************************************************** ********************************************************************** *** *** Table udpEndpointTable *** ********************************************************************** **********************************************************************/ /* * UDP-MIB::udpEndpointTable is subid 7 of udp. * Its status is Current. * OID: .1.3.6.1.2.1.7.7, length: 8 */ /* * --------------------------------------------------------------------- * * TODO:200:r: Implement udpEndpointTable data context functions. */ /** * set mib index(es) * * @param tbl_idx mib index structure * @param udpEndpointLocalAddressType_val * @param udpEndpointLocalAddress_val_ptr * @param udpEndpointLocalAddress_val_ptr_len * @param udpEndpointLocalPort_val * @param udpEndpointRemoteAddressType_val * @param udpEndpointRemoteAddress_val_ptr * @param udpEndpointRemoteAddress_val_ptr_len * @param udpEndpointRemotePort_val * @param udpEndpointInstance_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 udpEndpointTable_indexes_set_tbl_idx(udpEndpointTable_mib_index * tbl_idx, u_long udpEndpointLocalAddressType_val, char *udpEndpointLocalAddress_val_ptr, size_t udpEndpointLocalAddress_val_ptr_len, u_long udpEndpointLocalPort_val, u_long udpEndpointRemoteAddressType_val, char *udpEndpointRemoteAddress_val_ptr, size_t udpEndpointRemoteAddress_val_ptr_len, u_long udpEndpointRemotePort_val, u_long udpEndpointInstance_val, u_long udpEndpointProcess_val) { DEBUGMSGTL(("verbose:udpEndpointTable:udpEndpointTable_indexes_set_tbl_idx", "called\n")); /* * udpEndpointLocalAddressType(1)/InetAddressType/ASN_INTEGER/long(u_long)//l/a/w/E/r/d/h */ tbl_idx->udpEndpointLocalAddressType = udpEndpointLocalAddressType_val; /* * udpEndpointLocalAddress(2)/InetAddress/ASN_OCTET_STR/char(char)//L/a/w/e/R/d/h */ tbl_idx->udpEndpointLocalAddress_len = sizeof(tbl_idx->udpEndpointLocalAddress) / sizeof(tbl_idx->udpEndpointLocalAddress[0]); /* max length */ /* * make sure there is enough space for udpEndpointLocalAddress data */ if (tbl_idx->udpEndpointLocalAddress_len < udpEndpointLocalAddress_val_ptr_len) { snmp_log(LOG_ERR, "not enough space for value\n"); return MFD_ERROR; } tbl_idx->udpEndpointLocalAddress_len = udpEndpointLocalAddress_val_ptr_len; memcpy(tbl_idx->udpEndpointLocalAddress, udpEndpointLocalAddress_val_ptr, udpEndpointLocalAddress_val_ptr_len * sizeof(udpEndpointLocalAddress_val_ptr[0])); /* * udpEndpointLocalPort(3)/InetPortNumber/ASN_UNSIGNED/u_long(u_long)//l/a/w/e/R/d/H */ tbl_idx->udpEndpointLocalPort = udpEndpointLocalPort_val; /* * udpEndpointRemoteAddressType(4)/InetAddressType/ASN_INTEGER/long(u_long)//l/a/w/E/r/d/h */ tbl_idx->udpEndpointRemoteAddressType = udpEndpointRemoteAddressType_val; /* * udpEndpointRemoteAddress(5)/InetAddress/ASN_OCTET_STR/char(char)//L/a/w/e/R/d/h */ tbl_idx->udpEndpointRemoteAddress_len = sizeof(tbl_idx->udpEndpointRemoteAddress) / sizeof(tbl_idx->udpEndpointRemoteAddress[0]); /* max length */ /* * make sure there is enough space for udpEndpointRemoteAddress data */ if (tbl_idx->udpEndpointRemoteAddress_len < udpEndpointRemoteAddress_val_ptr_len) { snmp_log(LOG_ERR, "not enough space for value\n"); return MFD_ERROR; } tbl_idx->udpEndpointRemoteAddress_len = udpEndpointRemoteAddress_val_ptr_len; memcpy(tbl_idx->udpEndpointRemoteAddress, udpEndpointRemoteAddress_val_ptr, udpEndpointRemoteAddress_val_ptr_len * sizeof(udpEndpointRemoteAddress_val_ptr[0])); /* * udpEndpointRemotePort(6)/InetPortNumber/ASN_UNSIGNED/u_long(u_long)//l/a/w/e/R/d/H */ tbl_idx->udpEndpointRemotePort = udpEndpointRemotePort_val; /* * udpEndpointInstance(7)/UNSIGNED32/ASN_UNSIGNED/u_long(u_long)//l/a/w/e/R/d/h */ tbl_idx->udpEndpointInstance = udpEndpointInstance_val; /* * udpEndpointProcess(8)/UNSIGNED32/ASN_UNSIGNED/u_long(u_long)//l/a/w/e/R/d/h */ tbl_idx->udpEndpointProcess = udpEndpointProcess_val; return MFD_SUCCESS; } /* udpEndpointTable_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 udpEndpointTable_indexes_set(udpEndpointTable_rowreq_ctx * rowreq_ctx, u_long udpEndpointLocalAddressType_val, char *udpEndpointLocalAddress_val_ptr, size_t udpEndpointLocalAddress_val_ptr_len, u_long udpEndpointLocalPort_val, u_long udpEndpointRemoteAddressType_val, char *udpEndpointRemoteAddress_val_ptr, size_t udpEndpointRemoteAddress_val_ptr_len, u_long udpEndpointRemotePort_val, u_long udpEndpointInstance_val, u_long udpEndpointProcess_val) { DEBUGMSGTL(("verbose:udpEndpointTable:udpEndpointTable_indexes_set", "called\n")); if (MFD_SUCCESS != udpEndpointTable_indexes_set_tbl_idx(&rowreq_ctx->tbl_idx, udpEndpointLocalAddressType_val, udpEndpointLocalAddress_val_ptr, udpEndpointLocalAddress_val_ptr_len, udpEndpointLocalPort_val, udpEndpointRemoteAddressType_val, udpEndpointRemoteAddress_val_ptr, udpEndpointRemoteAddress_val_ptr_len, udpEndpointRemotePort_val, udpEndpointInstance_val, udpEndpointProcess_val)) return MFD_ERROR; /* * convert mib index to oid index */ rowreq_ctx->oid_idx.len = sizeof(rowreq_ctx->oid_tmp) / sizeof(oid); if (0 != udpEndpointTable_index_to_oid(&rowreq_ctx->oid_idx, &rowreq_ctx->tbl_idx)) { return MFD_ERROR; } return MFD_SUCCESS; } /* udpEndpointTable_indexes_set */ /*--------------------------------------------------------------------- * UDP-MIB::udpEndpointEntry.udpEndpointProcess * udpEndpointProcess is subid 8 of udpEndpointEntry. * Its status is Current, and its access level is ReadOnly. * OID: .1.3.6.1.2.1.7.7.1.8 * Description: The system's process ID for the process associated with this endpoint, or zero if there is no such process. This value is expected to be the same as HOST-RESOURCES-MIB::hrSWRunIndex or SYSAPPL-MIB:: sysApplElmtRunIndex for some row in the appropriate tables. * * Attributes: * accessible 1 isscalar 0 enums 0 hasdefval 0 * readable 1 iscolumn 1 ranges 0 hashint 0 * settable 0 * * * Its syntax is UNSIGNED32 (based on perltype UNSIGNED32) * The net-snmp type is ASN_UNSIGNED. The C type decl is u_long (u_long) */ /** * Extract the current value of the udpEndpointProcess data. * * Set a value using the data context for the row. * * @param rowreq_ctx * Pointer to the row request context. * @param udpEndpointProcess_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 udpEndpointProcess_get(udpEndpointTable_rowreq_ctx * rowreq_ctx, u_long * udpEndpointProcess_val_ptr) { /** we should have a non-NULL pointer */ netsnmp_assert(NULL != udpEndpointProcess_val_ptr); DEBUGMSGTL(("verbose:udpEndpointTable:udpEndpointProcess_get", "called\n")); netsnmp_assert(NULL != rowreq_ctx); /* * TODO:231:o: |-> Extract the current value of the udpEndpointProcess data. * copy (* udpEndpointProcess_val_ptr ) from rowreq_ctx->tbl_idx.udpEndpointProcess */ (*udpEndpointProcess_val_ptr) = rowreq_ctx->tbl_idx.udpEndpointProcess; return MFD_SUCCESS; } /* udpEndpointProcess_get */ /** @} */ /** @} */ /** @{ */