1、NETSNMP服务端添加自定义节点NET-SNMP服务端添加自定义节点 NET-SNMP服务端添加自定义节点编译生成.c和.h文件后,只是一个mib节点文件模板。1 代码修改:blue.h/* * Note: this file originally auto-generated by mib2c using * : mib2c.old-api.conf 14476 2006-04-18 17:36:51Z hardaker $ */#ifndef BLUE_H#define BLUE_H/* * function declarations */void init_blue(void);Fin
2、dVarMethod var_blue;WriteMethod write_bluenum;#endif /* BLUE_H */我们会发现生成的C文件,其实只是一个模版。其中功能实现的地方,以及某些关键地方都留了空,并且有较为详细的英文注释。只需要修改两处即可通过编译,其余部分可根据情况决定是否修改,以及如何修改。blue.c/* * Note: this file originally auto-generated by mib2c using * : mib2c.old-api.conf 14476 2006-04-18 17:36:51Z hardaker $ */#include #
3、include #include #include blue.h/* * blue_variables_oid: * this is the top level oid that we want to register under. This * is essentially a prefix, with the suffix appearing in the * variable below. */oid blue_variables_oid = 1, 3, 6, 1, 4, 1, 1, 1 ;/* * variable4 blue_variables: * this variable de
4、fines function callbacks and type return information * for the blue mib section */struct variable7 blue_variables = /* * magic number , variable type , ro/rw , callback fn , L, oidsuffix */#define BLUENUM 1 BLUENUM, ASN_INTEGER, RWRITE, var_blue, 1, 4,;/* * (L = length of the oidsuffix) */* Initiali
5、zes the blue module */voidinit_blue(void) DEBUGMSGTL(blue, Initializingn); /* * register ourselves with the agent to handle our mib tree */ REGISTER_MIB(blue, blue_variables, variable4, blue_variables_oid); /* * place any other initialization junk you need here */* * var_blue(): * This function is c
6、alled every time the agent gets a request for * a scalar variable that might be found within your mib section * registered above. It is up to you to do the right thing and * return the correct value. * You should also correct the value of var_len if necessary. * * Please see the documentation for mo
7、re information about writing * module extensions, and check out the examples in the examples * and mibII directories. */unsigned char *var_blue(struct variable *vp, oid * name, size_t *length, int exact, size_t *var_len, WriteMethod * write_method) /* * variables we may use later */ static long long
8、_ret; static u_long ulong_ret; static unsigned char stringSPRINT_MAX_LEN; static oid objidMAX_OID_LEN; static struct counter64 c64; if (header_generic(vp, name, length, exact, var_len, write_method) = MATCH_FAILED) return NULL; /* * this is where we do the value assignments for the mib results. */ s
9、witch (vp-magic) case BLUENUM: *write_method = write_bluenum; VAR = VALUE; /* XXX */ /* 编译 时 此两处会报错。注释此行 return (u_char *) & VAR; /* 修改完毕可正常编译安装 将&VAR修 default: /* 改为固定值 ERROR_MSG(); return NULL;intwrite_bluenum(int action, u_char * var_val, u_char var_val_type, size_t var_val_len, u_char * statP, o
10、id * name, size_t name_len) long value; int size; switch (action) case RESERVE1: if (var_val_type != ASN_INTEGER) fprintf(stderr, write to blue not ASN_INTEGERn); return SNMP_ERR_WRONGTYPE; if (var_val_len sizeof(long) fprintf(stderr, write to blue: bad lengthn); return SNMP_ERR_WRONGLENGTH; break;
11、case RESERVE2: size = var_val_len; value = *(long *) var_val; break; case FREE: /* * Release any resources that have been allocated */ break; case ACTION: /* * The variable has been stored in value for you to use, * and you have just been asked to do something with it. * Note that anything done here
12、 must be reversable in the UNDO case */ break; case UNDO: /* * Back out any changes made in the ACTION case */ break; case COMMIT: /* * Things are working well, so its now safe to make the change * permanently. Make sure that anything done here cant fail! */ break; return SNMP_ERR_NOERROR;2 mib的加载:上面的NEW-MIBBLACK-MIBGREEN-MIBBLUE-MIBNEW-MIB2WHITE-MIB由于都是按照 SNMP概要设计_0.1.doc 进行生成,因此都是在此路径下。每次只能加载排在首位的NEW-MIB中的节点。例如现在加载BLACK-MIB中的节点 则把原来在前面的NEW-MIB右键卸载则有如下结果mib生成的C代码模板,具体修改方法正在学习中。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1