📄 udpendpointtable_interface.c
字号:
memset(&var_udpEndpointLocalAddress, 0x00, sizeof(var_udpEndpointLocalAddress)); var_udpEndpointLocalAddress.type = ASN_OCTET_STR; memset(&var_udpEndpointLocalPort, 0x00, sizeof(var_udpEndpointLocalPort)); var_udpEndpointLocalPort.type = ASN_UNSIGNED; memset(&var_udpEndpointRemoteAddressType, 0x00, sizeof(var_udpEndpointRemoteAddressType)); var_udpEndpointRemoteAddressType.type = ASN_INTEGER; memset(&var_udpEndpointRemoteAddress, 0x00, sizeof(var_udpEndpointRemoteAddress)); var_udpEndpointRemoteAddress.type = ASN_OCTET_STR; memset(&var_udpEndpointRemotePort, 0x00, sizeof(var_udpEndpointRemotePort)); var_udpEndpointRemotePort.type = ASN_UNSIGNED; memset(&var_udpEndpointInstance, 0x00, sizeof(var_udpEndpointInstance)); var_udpEndpointInstance.type = ASN_UNSIGNED; /* * chain temp index varbinds together */ var_udpEndpointLocalAddressType.next_variable = &var_udpEndpointLocalAddress; var_udpEndpointLocalAddress.next_variable = &var_udpEndpointLocalPort; var_udpEndpointLocalPort.next_variable = &var_udpEndpointRemoteAddressType; var_udpEndpointRemoteAddressType.next_variable = &var_udpEndpointRemoteAddress; var_udpEndpointRemoteAddress.next_variable = &var_udpEndpointRemotePort; var_udpEndpointRemotePort.next_variable = &var_udpEndpointInstance; var_udpEndpointInstance.next_variable = NULL; DEBUGMSGTL(("verbose:udpEndpointTable:udpEndpointTable_index_to_oid", "called\n")); /* * udpEndpointLocalAddressType(1)/InetAddressType/ASN_INTEGER/long(u_long)//l/a/w/E/r/d/h */ snmp_set_var_value(&var_udpEndpointLocalAddressType, (u_char *) & mib_idx->udpEndpointLocalAddressType, sizeof(mib_idx->udpEndpointLocalAddressType)); /* * udpEndpointLocalAddress(2)/InetAddress/ASN_OCTET_STR/char(char)//L/a/w/e/R/d/h */ snmp_set_var_value(&var_udpEndpointLocalAddress, (u_char *) & mib_idx->udpEndpointLocalAddress, mib_idx->udpEndpointLocalAddress_len * sizeof(mib_idx->udpEndpointLocalAddress[0])); /* * udpEndpointLocalPort(3)/InetPortNumber/ASN_UNSIGNED/u_long(u_long)//l/a/w/e/R/d/H */ snmp_set_var_value(&var_udpEndpointLocalPort, (u_char *) & mib_idx->udpEndpointLocalPort, sizeof(mib_idx->udpEndpointLocalPort)); /* * udpEndpointRemoteAddressType(4)/InetAddressType/ASN_INTEGER/long(u_long)//l/a/w/E/r/d/h */ snmp_set_var_value(&var_udpEndpointRemoteAddressType, (u_char *) & mib_idx->udpEndpointRemoteAddressType, sizeof(mib_idx->udpEndpointRemoteAddressType)); /* * udpEndpointRemoteAddress(5)/InetAddress/ASN_OCTET_STR/char(char)//L/a/w/e/R/d/h */ snmp_set_var_value(&var_udpEndpointRemoteAddress, (u_char *) & mib_idx->udpEndpointRemoteAddress, mib_idx->udpEndpointRemoteAddress_len * sizeof(mib_idx->udpEndpointRemoteAddress[0])); /* * udpEndpointRemotePort(6)/InetPortNumber/ASN_UNSIGNED/u_long(u_long)//l/a/w/e/R/d/H */ snmp_set_var_value(&var_udpEndpointRemotePort, (u_char *) & mib_idx->udpEndpointRemotePort, sizeof(mib_idx->udpEndpointRemotePort)); /* * udpEndpointInstance(7)/UNSIGNED32/ASN_UNSIGNED/u_long(u_long)//l/a/w/e/R/d/h */ snmp_set_var_value(&var_udpEndpointInstance, (u_char *) & mib_idx->udpEndpointInstance, sizeof(mib_idx->udpEndpointInstance)); err = build_oid_noalloc(oid_idx->oids, oid_idx->len, &oid_idx->len, NULL, 0, &var_udpEndpointLocalAddressType); if (err) snmp_log(LOG_ERR, "error %d converting index to oid\n", err); /* * parsing may have allocated memory. free it. */ snmp_reset_var_buffers(&var_udpEndpointLocalAddressType); return err;} /* udpEndpointTable_index_to_oid *//** * extract udpEndpointTable indexes from a netsnmp_index * * @retval SNMP_ERR_NOERROR : no error * @retval SNMP_ERR_GENERR : error */intudpEndpointTable_index_from_oid(netsnmp_index * oid_idx, udpEndpointTable_mib_index * mib_idx){ int err = SNMP_ERR_NOERROR; /* * temp storage for parsing indexes */ /* * udpEndpointLocalAddressType(1)/InetAddressType/ASN_INTEGER/long(u_long)//l/a/w/E/r/d/h */ netsnmp_variable_list var_udpEndpointLocalAddressType; /* * udpEndpointLocalAddress(2)/InetAddress/ASN_OCTET_STR/char(char)//L/a/w/e/R/d/h */ netsnmp_variable_list var_udpEndpointLocalAddress; /* * udpEndpointLocalPort(3)/InetPortNumber/ASN_UNSIGNED/u_long(u_long)//l/a/w/e/R/d/H */ netsnmp_variable_list var_udpEndpointLocalPort; /* * udpEndpointRemoteAddressType(4)/InetAddressType/ASN_INTEGER/long(u_long)//l/a/w/E/r/d/h */ netsnmp_variable_list var_udpEndpointRemoteAddressType; /* * udpEndpointRemoteAddress(5)/InetAddress/ASN_OCTET_STR/char(char)//L/a/w/e/R/d/h */ netsnmp_variable_list var_udpEndpointRemoteAddress; /* * udpEndpointRemotePort(6)/InetPortNumber/ASN_UNSIGNED/u_long(u_long)//l/a/w/e/R/d/H */ netsnmp_variable_list var_udpEndpointRemotePort; /* * udpEndpointInstance(7)/UNSIGNED32/ASN_UNSIGNED/u_long(u_long)//l/a/w/e/R/d/h */ netsnmp_variable_list var_udpEndpointInstance; /* * set up varbinds */ memset(&var_udpEndpointLocalAddressType, 0x00, sizeof(var_udpEndpointLocalAddressType)); var_udpEndpointLocalAddressType.type = ASN_INTEGER; memset(&var_udpEndpointLocalAddress, 0x00, sizeof(var_udpEndpointLocalAddress)); var_udpEndpointLocalAddress.type = ASN_OCTET_STR; memset(&var_udpEndpointLocalPort, 0x00, sizeof(var_udpEndpointLocalPort)); var_udpEndpointLocalPort.type = ASN_UNSIGNED; memset(&var_udpEndpointRemoteAddressType, 0x00, sizeof(var_udpEndpointRemoteAddressType)); var_udpEndpointRemoteAddressType.type = ASN_INTEGER; memset(&var_udpEndpointRemoteAddress, 0x00, sizeof(var_udpEndpointRemoteAddress)); var_udpEndpointRemoteAddress.type = ASN_OCTET_STR; memset(&var_udpEndpointRemotePort, 0x00, sizeof(var_udpEndpointRemotePort)); var_udpEndpointRemotePort.type = ASN_UNSIGNED; memset(&var_udpEndpointInstance, 0x00, sizeof(var_udpEndpointInstance)); var_udpEndpointInstance.type = ASN_UNSIGNED; /* * chain temp index varbinds together */ var_udpEndpointLocalAddressType.next_variable = &var_udpEndpointLocalAddress; var_udpEndpointLocalAddress.next_variable = &var_udpEndpointLocalPort; var_udpEndpointLocalPort.next_variable = &var_udpEndpointRemoteAddressType; var_udpEndpointRemoteAddressType.next_variable = &var_udpEndpointRemoteAddress; var_udpEndpointRemoteAddress.next_variable = &var_udpEndpointRemotePort; var_udpEndpointRemotePort.next_variable = &var_udpEndpointInstance; var_udpEndpointInstance.next_variable = NULL; DEBUGMSGTL(("verbose:udpEndpointTable:udpEndpointTable_index_from_oid", "called\n")); /* * parse the oid into the individual index components */ err = parse_oid_indexes(oid_idx->oids, oid_idx->len, &var_udpEndpointLocalAddressType); if (err == SNMP_ERR_NOERROR) { /* * copy out values */ mib_idx->udpEndpointLocalAddressType = *((u_long *) var_udpEndpointLocalAddressType.val.string); /* * NOTE: val_len is in bytes, udpEndpointLocalAddress_len might not be */ if (var_udpEndpointLocalAddress.val_len > sizeof(mib_idx->udpEndpointLocalAddress)) err = SNMP_ERR_GENERR; else { memcpy(mib_idx->udpEndpointLocalAddress, var_udpEndpointLocalAddress.val.string, var_udpEndpointLocalAddress.val_len); mib_idx->udpEndpointLocalAddress_len = var_udpEndpointLocalAddress.val_len / sizeof(mib_idx->udpEndpointLocalAddress[0]); } mib_idx->udpEndpointLocalPort = *((u_long *) var_udpEndpointLocalPort.val.string); mib_idx->udpEndpointRemoteAddressType = *((u_long *) var_udpEndpointRemoteAddressType.val.string); /* * NOTE: val_len is in bytes, udpEndpointRemoteAddress_len might not be */ if (var_udpEndpointRemoteAddress.val_len > sizeof(mib_idx->udpEndpointRemoteAddress)) err = SNMP_ERR_GENERR; else { memcpy(mib_idx->udpEndpointRemoteAddress, var_udpEndpointRemoteAddress.val.string, var_udpEndpointRemoteAddress.val_len); mib_idx->udpEndpointRemoteAddress_len = var_udpEndpointRemoteAddress.val_len / sizeof(mib_idx->udpEndpointRemoteAddress[0]); } mib_idx->udpEndpointRemotePort = *((u_long *) var_udpEndpointRemotePort.val.string); mib_idx->udpEndpointInstance = *((u_long *) var_udpEndpointInstance.val.string); } /* * parsing may have allocated memory. free it. */ snmp_reset_var_buffers(&var_udpEndpointLocalAddressType); return err;} /* udpEndpointTable_index_from_oid *//* ********************************************************************* * @internal * allocate resources for a udpEndpointTable_rowreq_ctx */udpEndpointTable_rowreq_ctx *udpEndpointTable_allocate_rowreq_ctx(void){ udpEndpointTable_rowreq_ctx *rowreq_ctx = SNMP_MALLOC_TYPEDEF(udpEndpointTable_rowreq_ctx); DEBUGMSGTL(("internal:udpEndpointTable:udpEndpointTable_allocate_rowreq_ctx", "called\n")); if (NULL == rowreq_ctx) { snmp_log(LOG_ERR, "Couldn't allocate memory for a " "udpEndpointTable_rowreq_ctx.\n"); return NULL; } rowreq_ctx->oid_idx.oids = rowreq_ctx->oid_tmp; rowreq_ctx->udpEndpointTable_data_list = NULL; return rowreq_ctx;} /* udpEndpointTable_allocate_rowreq_ctx *//* * @internal * release resources for a udpEndpointTable_rowreq_ctx */voidudpEndpointTable_release_rowreq_ctx(udpEndpointTable_rowreq_ctx * rowreq_ctx){ DEBUGMSGTL(("internal:udpEndpointTable:udpEndpointTable_release_rowreq_ctx", "called\n")); netsnmp_assert(NULL != rowreq_ctx); /* * free index oid pointer */ if (rowreq_ctx->oid_idx.oids != rowreq_ctx->oid_tmp) free(rowreq_ctx->oid_idx.oids); SNMP_FREE(rowreq_ctx);} /* udpEndpointTable_release_rowreq_ctx *//** * @internal * wrapper */static int_mfd_udpEndpointTable_pre_request(netsnmp_mib_handler *handler, netsnmp_handler_registration *reginfo, netsnmp_agent_request_info *agtreq_info, netsnmp_request_info *requests){ int rc; DEBUGMSGTL(("internal:udpEndpointTable:_mfd_udpEndpointTable_pre_request", "called\n")); if (1 != netsnmp_row_merge_status_first(reginfo, agtreq_info)) { DEBUGMSGTL(("internal:udpEndpointTable", "skipping additional pre_request\n")); return SNMP_ERR_NOERROR; } rc = udpEndpointTable_pre_request(udpEndpointTable_if_ctx.user_ctx); if (MFD_SUCCESS != rc) { /* * nothing we can do about it but log it */ DEBUGMSGTL(("udpEndpointTable", "error %d from " "udpEndpointTable_pre_request\n", rc)); netsnmp_request_set_error_all(requests, SNMP_VALIDATE_ERR(rc)); } return SNMP_ERR_NOERROR;} /* _mfd_udpEndpointTable_pre_request *//** * @internal * wrapper */static int_mfd_udpEndpointTable_post_request(netsnmp_mib_handler *handler, netsnmp_handler_registration *reginfo, netsnmp_agent_request_info *agtreq_info, netsnmp_request_info *requests){ udpEndpointTable_rowreq_ctx *rowreq_ctx = netsnmp_container_table_row_extract(requests); int rc, packet_rc; DEBUGMSGTL(("internal:udpEndpointTable:_mfd_udpEndpointTable_post_request", "called\n")); /* * release row context, if deleted */ if (rowreq_ctx && (rowreq_ctx->rowreq_flags & MFD_ROW_DELETED)) udpEndpointTable_release_rowreq_ctx(rowreq_ctx); /* * wait for last call before calling user */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -