22 Jan 2004 lyxmoo   » (Apprentice)

Title::An net-snmp API example program for Redback SMS 10000

//The example do one things: send a RBN subscriber reauth snmp to SMS //comile command as: gcc -o redweb redweb.c -lkstat -lm -lsocket -ladm -lnetsnmp -lcrypto

static char snmpreauth[]=".1.3.6.1.4.1.2352.2.14.1.2.1.1."; 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\n");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\n", 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 */

Latest blog entries     Older blog entries

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!