国产探花免费观看_亚洲丰满少妇自慰呻吟_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參數詳解

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 昌都县| 大悟县| 襄城县| 吉安市| 磐安县| 德江县| 乳山市| 华亭县| 大同市| 柳林县| 应用必备| 东山县| 孟州市| 当涂县| 涞源县| 西宁市| 临湘市| 安仁县| 松溪县| 尼木县| 锡林浩特市| 吉安县| 阳原县| 偏关县| 武强县| 宁陕县| 大新县| 望谟县| 河源市| 临高县| 安图县| 乌鲁木齐县| 玉环县| 陵水| 会泽县| 廉江市| 江川县| 略阳县| 南投市| 江川县| 韶山市|