国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

使用net-snmp API編程

2019-11-17 05:27:10
字體:
來源:轉載
供稿:網友

  在一個項目中使用了Redback SMS10000 的接入服務器,作為附加要求,需要做一個snmp的接口程序,目的是起發送一個subscriber reauth 的 snmp 包給接入服務器;

  由于snmp的例程相對較少,所以在此截選程序中的snmp 相關部分以后,做一個注腳,記錄下來。

  程序使用了net-snmp 的API,所以系統要預先安裝net-snmp;

  編譯時需要使用帶入netsnmp的行命令:


gcc -o redweb redweb.c -lkstat -lm -lsocket -ladm -lnetsnmp -lcrypto

  不要更多羅嗦了,都寫在程序里了。所謂知識無價值。


static char snm
strUCt snmp_
session session, *ss;
struct snmp_pdu *response;
struct snmp_pdu *pdu;

char snmpcommunity[32];
char snmpstr[256];
char tmpstr[128];
char *endptr;

oid name[512];
int name_length;
int cnt,id=0;
int snmpsetvalue=1;

init_mib();
add_mibdir("/opt/weblogin/mibs");
// include Redback Mibs file


snmp_sess_init(&session);
session.version=SNMP_VERSION_1;
session.peername=strdup(data.nas_address);
session.community=strdup(snmpcommunity);
session.community_len=strlen(session.community);
session.retries=0;
session.timeout=12000;
session.sessid=strtol(data.timeid, &endptr, 0);

SOCK_STARTUP;


/* Macro
* open an SNMP session
*/

ss = snmp_open(&session);
if (ss == NULL) {
/*
* diagnose snmp_open errors with the input netsnmp_session pointer
*/
snmp_sess_perror("snmptable", &session);
SOCK_CLEANUP;
}


/*
* create PDU for SET request and add object names and values to request
*/

pdu = (struct snmp_pdu *)snmp_pdu_create(SNMP_MSG_SET);
if(pdu==NULL)
{
printf("Unable to create the pdu");
}

sprintf(snmpstr,"%s17",snmpreauth);
for(cnt=0;cnt<17;cnt++)
{
sprintf(tmpstr,".%d",(char *)data.session_id[cnt]);
// data.session_id MAC format string

strcat(snmpstr,tmpstr);
}

//FIXME
name_length=512;

if(!read_objid(snmpstr,name,&name_length)) {
printf("Error in read_objid");
exit(1);
};

snmp_pdu_add_variable(pdu,name,name_length,ASN_INTEGER,
&snmpsetvalue,sizeof(snmpsetvalue));

status = snmp_synch_response(ss, pdu, &response);
// sync snmp

if (status == STAT_SUCCESS) {
if (response->errstat == SNMP_ERR_NOERROR) {
}
exitval = 2;

} else if (status == STAT_TIMEOUT) {

fprintf(stderr, "SNMP Timeout: No Response from %s",
session.peername);
exitval = 1;
} else {
snmp_sess_perror("snmpset", ss);
printf("snmp session else");
exitval = 1;
}

if (response)
snmp_free_pdu(response);

snmp_close(ss);

SOCK_CLEANUP;

/* Macro off
* final a snmp session
*/

上一篇:AT&T/x86/asm語法

下一篇:GCC參數詳解

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乌什县| 张家港市| 平湖市| 手游| 沙田区| 宜君县| 双流县| 常山县| 桓仁| 阿坝| 上虞市| 青州市| 蒲城县| 阿勒泰市| 长宁区| 应用必备| 正宁县| 富民县| 惠水县| 乐陵市| 辽源市| 易门县| 泰州市| 万宁市| 铜陵市| 萍乡市| 乃东县| 佛教| 铁岭市| 武平县| 开封县| 翁源县| 巩义市| 长丰县| 台南市| 阿合奇县| 邹平县| 靖安县| 磴口县| 蕲春县| 威宁|