NETSNMP服务端添加自定义节点.docx
- 文档编号:9209274
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:10
- 大小:133.52KB
NETSNMP服务端添加自定义节点.docx
《NETSNMP服务端添加自定义节点.docx》由会员分享,可在线阅读,更多相关《NETSNMP服务端添加自定义节点.docx(10页珍藏版)》请在冰豆网上搜索。
NETSNMP服务端添加自定义节点
NET-SNMP服务端添加自定义节点
NET-SNMP服务端添加自定义节点
编译生成.c和.h文件后,只是一个mib节点文件模板。
1代码修改:
blue.h
/*
*Note:
thisfileoriginallyauto-generatedbymib2cusing
*:
mib2c.old-api.conf144762006-04-1817:
36:
51Zhardaker$
*/
#ifndefBLUE_H
#defineBLUE_H
/*
*functiondeclarations
*/
voidinit_blue(void);
FindVarMethodvar_blue;
WriteMethodwrite_bluenum;
#endif/*BLUE_H*/
我们会发现生成的C文件,其实只是一个模版。
其中功能实现的地方,以及某些关键地方都留了空,并且有较为详细的英文注释。
只需要修改两处即可通过编译,其余部分可根据情况决定是否修改,以及如何修改。
blue.c
/*
*Note:
thisfileoriginallyauto-generatedbymib2cusing
*:
mib2c.old-api.conf144762006-04-1817:
36:
51Zhardaker$
*/
#include
#include
#include
#include"blue.h"
/*
*blue_variables_oid:
*thisisthetopleveloidthatwewanttoregisterunder.This
*isessentiallyaprefix,withthesuffixappearinginthe
*variablebelow.
*/
oidblue_variables_oid[]={1,3,6,1,4,1,1,1};
/*
*variable4blue_variables:
*thisvariabledefinesfunctioncallbacksandtypereturninformation
*forthebluemibsection
*/
structvariable7blue_variables[]={
/*
*magicnumber,variabletype,ro/rw,callbackfn,L,oidsuffix
*/
#defineBLUENUM1
{BLUENUM,ASN_INTEGER,RWRITE,var_blue,1,{4}},
};
/*
*(L=lengthoftheoidsuffix)
*/
/**Initializesthebluemodule*/
void
init_blue(void)
{
DEBUGMSGTL(("blue","Initializing\n"));
/*
*registerourselveswiththeagenttohandleourmibtree
*/
REGISTER_MIB("blue",blue_variables,variable4,blue_variables_oid);
/*
*placeanyotherinitializationjunkyouneedhere
*/
}
/*
*var_blue():
*Thisfunctioniscalledeverytimetheagentgetsarequestfor
*ascalarvariablethatmightbefoundwithinyourmibsection
*registeredabove.Itisuptoyoutodotherightthingand
*returnthecorrectvalue.
*Youshouldalsocorrectthevalueof"var_len"ifnecessary.
*
*Pleaseseethedocumentationformoreinformationaboutwriting
*moduleextensions,andcheckouttheexamplesintheexamples
*andmibIIdirectories.
*/
unsignedchar*
var_blue(structvariable*vp,
oid*name,
size_t*length,
intexact,size_t*var_len,WriteMethod**write_method)
{
/*
*variableswemayuselater
*/
staticlonglong_ret;
staticu_longulong_ret;
staticunsignedcharstring[SPRINT_MAX_LEN];
staticoidobjid[MAX_OID_LEN];
staticstructcounter64c64;
if(header_generic(vp,name,length,exact,var_len,write_method)
==MATCH_FAILED)
returnNULL;
/*
*thisiswherewedothevalueassignmentsforthemibresults.
*/
switch(vp->magic){
caseBLUENUM:
*write_method=write_bluenum;
VAR=VALUE;/*XXX*//*编译时此两处会报错。
注释此行
return(u_char*)&VAR;/*修改完毕可正常编译安装将&VAR修
default:
/*改为固定值
ERROR_MSG("");
}
returnNULL;
}
int
write_bluenum(intaction,
u_char*var_val,
u_charvar_val_type,
size_tvar_val_len,
u_char*statP,oid*name,size_tname_len)
{
longvalue;
intsize;
switch(action){
caseRESERVE1:
if(var_val_type!
=ASN_INTEGER){
fprintf(stderr,"writetobluenotASN_INTEGER\n");
returnSNMP_ERR_WRONGTYPE;
}
if(var_val_len>sizeof(long)){
fprintf(stderr,"writetoblue:
badlength\n");
returnSNMP_ERR_WRONGLENGTH;
}
break;
caseRESERVE2:
size=var_val_len;
value=*(long*)var_val;
break;
caseFREE:
/*
*Releaseanyresourcesthathavebeenallocated
*/
break;
caseACTION:
/*
*Thevariablehasbeenstoredin'value'foryoutouse,
*andyouhavejustbeenaskedtodosomethingwithit.
*NotethatanythingdoneheremustbereversableintheUNDOcase
*/
break;
caseUNDO:
/*
*BackoutanychangesmadeintheACTIONcase
*/
break;
caseCOMMIT:
/*
*Thingsareworkingwell,soit'snowsafetomakethechange
*permanently.Makesurethatanythingdoneherecan'tfail!
*/
break;
}
returnSNMP_ERR_NOERROR;
}
2mib的加载:
上面的
NEW-MIB
BLACK-MIB
GREEN-MIB
BLUE-MIB
NEW-MIB2
WHITE-MIB
由于都是按照SNMP概要设计_0.1.doc进行生成,因此都是在此路径下。
每次只能加载排在首位的NEW-MIB中的节点。
例如现在加载BLACK-MIB中的节点则把原来在前面的NEW-MIB
右键卸载
则有如下结果
mib生成的C代码模板,具体修改方法正在学习中。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NETSNMP 服务端 添加 自定义 节点