⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 registry.c

📁 ucd-snmp源代码
💻 C
字号:
/* *  registry:  displays a list of all loaded mib modules. * */#include <config.h>#include <sys/types.h>#if HAVE_STDLIB_H#include <stdlib.h>#endif#if HAVE_NETINET_IN_H#include <netinet/in.h>#endif#if HAVE_WINSOCK_H#include <winsock.h>#endif#if HAVE_STRING_H#include <string.h>#endif#include "mibincl.h"#include "registry.h"#include "system.h"	/*********************	 *	 *  Kernel & interface information,	 *   and internal forward declarations	 *	 *********************/extern int subtree_size;extern struct subtree *subtrees;void init_registry(void) {  struct variable2 registry_variables[] = {    { REGISTRYINDEX,  ASN_OBJECT_ID, RONLY, var_registry, 1, {1}},    { REGISTRYNAME,   ASN_OCTET_STR, RONLY, var_registry, 1, {2}}  };  /* Define the OID pointer to the top of the mib tree that we're   registering underneath */  oid registry_variables_oid[] = { 1,3,6,1,4,1,2021,102,1 };    /* register ourselves with the agent to handle our mib tree */  REGISTER_MIB("ucd-snmp/registry", registry_variables, variable2,               registry_variables_oid);}static struct subtree *header_registry(struct variable *vp,		oid *name,		size_t *length,		int exact,		size_t *var_len,		WriteMethod **write_method){#define REGISTRY_NAME_LENGTH	10    oid newname[MAX_OID_LEN];    struct subtree *mine = NULL;        DEBUGMSGTL(("ucd-snmp/registry", "var_registry: "));    DEBUGMSGOID(("ucd-snmp/registry", name, *length));    DEBUGMSG(("ucd-snmp/registry"," %d\n", exact));    if (*length < REGISTRY_NAME_LENGTH ||        snmp_oid_compare(name, *length, vp->name, vp->namelen) < 1)      mine = subtrees;    else      mine = find_subtree_next(&(name[REGISTRY_NAME_LENGTH]),                               *length-REGISTRY_NAME_LENGTH,                               subtrees);    if (mine != NULL) {      memcpy( (char *)newname,(char *)vp->name, (int)vp->namelen * sizeof(oid));      memcpy( (char *)name,(char *)newname,              ((int)vp->namelen + 1) * sizeof(oid));      memcpy((char *)(name+vp->namelen), (char *)mine->start,            ((int)mine->start_len) * sizeof(oid));      *length = vp->namelen + mine->start_len;    }    DEBUGMSGTL(("ucd-snmp/registry", "var_registry result: "));    DEBUGMSGOID(("ucd-snmp/registry", name, *length));    DEBUGMSG(("ucd-snmp/registry","\n"));    return mine;}	/*********************	 *	 *  System specific implementation functions	 *	 *********************/u_char *var_registry(struct variable *vp,	     oid *name,	     size_t *length,	     int exact,	     size_t *var_len,	     WriteMethod **write_method){  struct subtree *tp;    if ((tp =         header_registry(vp, name, length, exact, var_len, write_method))        == NULL )      return NULL;    switch (vp->magic){	case REGISTRYINDEX:            *var_len = sizeof(oid)*(tp->namelen);            return (u_char *) tp->name;        case REGISTRYNAME:            *var_len = strlen(tp->label);            return (u_char *) tp->label;        default:	    DEBUGMSGTL(("snmpd", "unknown sub-id %d in var_registry\n", vp->magic));    }    return NULL;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -