本文整理汇总了C++中snmp_add_null_var函数的典型用法代码示例。如果您正苦于以下问题:C++ snmp_add_null_var函数的具体用法?C++ snmp_add_null_var怎么用?C++ snmp_add_null_var使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了snmp_add_null_var函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: snmp_start_read_rssi
void snmp_start_read_rssi(char *host) {
struct snmp_pdu *pdu;
struct snmp_session session;
const char *community = "public";
if (oid_rssi_ts1_length == 0 || oid_rssi_ts2_length == 0)
return;
snmp_rssi_received = 0;
if (snmp_session_rssi != NULL) {
snmp_close(snmp_session_rssi);
snmp_session_rssi = NULL;
}
snmp_sess_init(&session);
session.version = SNMP_VERSION_1;
session.peername = strdup(host);
session.community = (unsigned char *)strdup(community);
session.community_len = strlen(community);
session.callback = snmp_get_rssi_cb;
if (!(snmp_session_rssi = snmp_open(&session))) {
console_log("snmp error: error opening session to host %s\n", host);
return;
}
pdu = snmp_pdu_create(SNMP_MSG_GET);
snmp_add_null_var(pdu, oid_rssi_ts1, oid_rssi_ts1_length);
snmp_add_null_var(pdu, oid_rssi_ts2, oid_rssi_ts2_length);
if (!snmp_send(snmp_session_rssi, pdu))
console_log("snmp error: error sending rssi request to host %s\n", host);
free(session.peername);
free(session.community);
}
开发者ID:n8ohu,项目名称:dmrshark,代码行数:34,代码来源:snmp.c
示例2: simpleSNMPsend
void
simpleSNMPsend(struct snmp_session *session,
oid *name,
size_t name_length)
{
struct snmp_pdu *pdu;
oid uptime[MAX_OID_LEN];
size_t uptime_length;
/*
* Create PDU for GET request and add object names to request.
*/
pdu = snmp_pdu_create(SNMP_MSG_GET);
/*
* First insert uptime request into PDU.
*/
uptime_length = MAX_OID_LEN;
if (!snmp_parse_oid("system.sysUpTime.0",
uptime, &uptime_length)) {
printf("error parsing oid: system.sysUpTime.0\n");
}
snmp_add_null_var(pdu, uptime, uptime_length);
snmp_add_null_var(pdu, name, name_length);
/*
* Perform the request.
*/
snmp_send(session, pdu);
}
开发者ID:zuckschwerdt,项目名称:gkrellm-snmp,代码行数:32,代码来源:gkrellm_snmp.c
示例3: ups_mib_mgr_get_upsBypassEntry
int ups_mib_mgr_get_upsBypassEntry(struct snmp_session *s, upsBypassEntry_t **upsBypassEntry)
{
struct snmp_session *peer;
struct snmp_pdu *request, *response;
struct variable_list *vars;
int status;
request = snmp_pdu_create(SNMP_MSG_GETNEXT);
snmp_add_null_var(request, upsBypassVoltage, sizeof(upsBypassVoltage)/sizeof(oid));
snmp_add_null_var(request, upsBypassCurrent, sizeof(upsBypassCurrent)/sizeof(oid));
snmp_add_null_var(request, upsBypassPower, sizeof(upsBypassPower)/sizeof(oid));
peer = snmp_open(s);
if (!peer) {
return -1;
}
status = snmp_synch_response(peer, request, &response);
if (status != STAT_SUCCESS) {
if (response) snmp_free_pdu(response);
snmp_close(peer);
return -2;
}
*upsBypassEntry = (upsBypassEntry_t *) malloc(sizeof(upsBypassEntry_t));
if (! *upsBypassEntry) {
if (response) snmp_free_pdu(response);
snmp_close(peer);
return -4;
}
for (vars = response->variables; vars; vars = vars->next_variable) {
if (vars->name_length > sizeof(upsBypassVoltage)/sizeof(oid)
&& memcmp(vars->name, upsBypassVoltage, sizeof(upsBypassVoltage)) == 0) {
(*upsBypassEntry)->__upsBypassVoltage = *vars->val.integer;
(*upsBypassEntry)->upsBypassVoltage = &((*upsBypassEntry)->__upsBypassVoltage);
}
if (vars->name_length > sizeof(upsBypassCurrent)/sizeof(oid)
&& memcmp(vars->name, upsBypassCurrent, sizeof(upsBypassCurrent)) == 0) {
(*upsBypassEntry)->__upsBypassCurrent = *vars->val.integer;
(*upsBypassEntry)->upsBypassCurrent = &((*upsBypassEntry)->__upsBypassCurrent);
}
if (vars->name_length > sizeof(upsBypassPower)/sizeof(oid)
&& memcmp(vars->name, upsBypassPower, sizeof(upsBypassPower)) == 0) {
(*upsBypassEntry)->__upsBypassPower = *vars->val.integer;
(*upsBypassEntry)->upsBypassPower = &((*upsBypassEntry)->__upsBypassPower);
}
}
if (response) snmp_free_pdu(response);
if (snmp_close(peer) == 0) {
return -5;
}
return 0;
}
开发者ID:AllardJ,项目名称:Tomato,代码行数:57,代码来源:rfc1628-mib-mgr.c
示例4: ups_mib_mgr_get_upsOutput
int ups_mib_mgr_get_upsOutput(struct snmp_session *s, upsOutput_t **upsOutput)
{
struct snmp_session *peer;
struct snmp_pdu *request, *response;
struct variable_list *vars;
int status;
request = snmp_pdu_create(SNMP_MSG_GETNEXT);
snmp_add_null_var(request, upsOutputSource, sizeof(upsOutputSource)/sizeof(oid));
snmp_add_null_var(request, upsOutputFrequency, sizeof(upsOutputFrequency)/sizeof(oid));
snmp_add_null_var(request, upsOutputNumLines, sizeof(upsOutputNumLines)/sizeof(oid));
peer = snmp_open(s);
if (!peer) {
return -1;
}
status = snmp_synch_response(peer, request, &response);
if (status != STAT_SUCCESS) {
if (response) snmp_free_pdu(response);
snmp_close(peer);
return -2;
}
*upsOutput = (upsOutput_t *) malloc(sizeof(upsOutput_t));
if (! *upsOutput) {
if (response) snmp_free_pdu(response);
snmp_close(peer);
return -4;
}
for (vars = response->variables; vars; vars = vars->next_variable) {
if (vars->name_length > sizeof(upsOutputSource)/sizeof(oid)
&& memcmp(vars->name, upsOutputSource, sizeof(upsOutputSource)) == 0) {
(*upsOutput)->__upsOutputSource = *vars->val.integer;
(*upsOutput)->upsOutputSource = &((*upsOutput)->__upsOutputSource);
}
if (vars->name_length > sizeof(upsOutputFrequency)/sizeof(oid)
&& memcmp(vars->name, upsOutputFrequency, sizeof(upsOutputFrequency)) == 0) {
(*upsOutput)->__upsOutputFrequency = *vars->val.integer;
(*upsOutput)->upsOutputFrequency = &((*upsOutput)->__upsOutputFrequency);
}
if (vars->name_length > sizeof(upsOutputNumLines)/sizeof(oid)
&& memcmp(vars->name, upsOutputNumLines, sizeof(upsOutputNumLines)) == 0) {
(*upsOutput)->__upsOutputNumLines = *vars->val.integer;
(*upsOutput)->upsOutputNumLines = &((*upsOutput)->__upsOutputNumLines);
}
}
if (response) snmp_free_pdu(response);
if (snmp_close(peer) == 0) {
return -5;
}
return 0;
}
开发者ID:AllardJ,项目名称:Tomato,代码行数:57,代码来源:rfc1628-mib-mgr.c
示例5: snmp_get_item
static struct snmp_pdu *
snmp_get_item(char *host, char *community, char *mib_item)
{
struct snmp_session session, *ss;
struct snmp_pdu *request = NULL, *result = NULL;
oid Oid[MAX_OID_LEN];
unsigned int oid_len = MAX_OID_LEN;
/* initialize the SNMP session */
snmp_sess_init(&session);
session.peername = host;
session.community = (uchar_t *)community;
session.community_len = strlen((const char *)session.community);
session.version = SNMP_VERSION_1;
session.retries = 0;
if ((ss = snmp_open(&session)) == NULL)
return (NULL);
/* add the requested data */
if (!read_objid(mib_item, Oid, &oid_len))
snmp_perror(mib_item);
/* initialize the request PDU */
request = snmp_pdu_create(SNMP_MSG_GET);
snmp_add_null_var(request, Oid, oid_len);
(void) snmp_synch_response(ss, request, &result);
snmp_close(ss);
return (result);
}
开发者ID:drscream,项目名称:illumos-joyent,代码行数:33,代码来源:probe-snmp.c
示例6: prsnmpstr
void prsnmpstr(char *stroid) {
struct snmp_pdu *pdu, *resp;
oid tmp_oid[MAX_OID_LEN];
size_t tmp_oid_len=MAX_OID_LEN;
int stat;
char *tmp;
pdu=snmp_pdu_create(SNMP_MSG_GET);
read_objid(stroid, tmp_oid, &tmp_oid_len);
snmp_add_null_var(pdu, tmp_oid, tmp_oid_len);
stat=snmp_synch_response(ses, pdu, &resp);
if (stat != STAT_SUCCESS || resp->errstat != SNMP_ERR_NOERROR)
perr(resp);
if(resp->variables->val_len && strlen((char *)resp->variables->val.string)) {
tmp=malloc((resp->variables->val_len+1) * sizeof(char));
memcpy(tmp, resp->variables->val.string, resp->variables->val_len);
tmp[resp->variables->val_len]=0;
printf("%s", tmp);
free(tmp);
}
if(resp)
snmp_free_pdu(resp);
}
开发者ID:xiongshaogang,项目名称:NetAndSysMonitor,代码行数:27,代码来源:ttg-snmp.cpp
示例7: prifalias
void prifalias(oid inst) {
struct snmp_pdu *pdu, *resp;
oid tmp_oid[] = { 1,3,6,1,2,1,31,1,1,1,18,0 };
int stat;
char *tmp;
if(!extended) {
fprintf(stderr, "ifalias is only available in eXtended mode\n");
snmp_close(ses);
SOCK_CLEANUP;
exit(1);
}
tmp_oid[11]=inst;
pdu=snmp_pdu_create(SNMP_MSG_GET);
snmp_add_null_var(pdu, tmp_oid, sizeof(tmp_oid)/sizeof(oid));
stat=snmp_synch_response(ses, pdu, &resp);
if (stat != STAT_SUCCESS || resp->errstat != SNMP_ERR_NOERROR)
perr(resp);
if(resp->variables->val_len && strlen((char *)resp->variables->val.string)) {
tmp=malloc((resp->variables->val_len+1) * sizeof(char));
memcpy(tmp, resp->variables->val.string, resp->variables->val_len);
tmp[resp->variables->val_len]=0;
printf(" \"%s\"", tmp);
free(tmp);
}
if(resp)
snmp_free_pdu(resp);
}
开发者ID:xiongshaogang,项目名称:NetAndSysMonitor,代码行数:33,代码来源:ttg-snmp.cpp
示例8: getcntr32
uint32_t getcntr32(int dir, oid inst) {
struct snmp_pdu *pdu, *resp;
oid iftable_oid[] = { 1,3,6,1,2,1,2,2,1,0,0 }; // dir=9 ; inst=10
int stat;
uint32_t tmp;
pdu=snmp_pdu_create(SNMP_MSG_GET);
iftable_oid[9]=dir;
iftable_oid[10]=inst;
snmp_add_null_var(pdu, iftable_oid, sizeof(iftable_oid)/sizeof(oid));
stat=snmp_synch_response(ses, pdu, &resp);
if (stat != STAT_SUCCESS || resp->errstat != SNMP_ERR_NOERROR)
perr(resp);
if(resp->variables->type != ASN_COUNTER) {
fprintf(stderr, "\nError: unsupported data type (only 32bit counter is supported in normal mode)\n");
snmp_close(ses);
SOCK_CLEANUP;
exit(1);
}
tmp=resp->variables->val.counter64->high;
if(resp)
snmp_free_pdu(resp);
return tmp;
}
开发者ID:xiongshaogang,项目名称:NetAndSysMonitor,代码行数:29,代码来源:ttg-snmp.cpp
示例9: asynch_response
/*
* response handler
*/
int asynch_response(int operation, struct snmp_session *sp, int reqid,
struct snmp_pdu *pdu, void *magic)
{
struct session *host = (struct session *)magic;
struct snmp_pdu *req;
if (operation == NETSNMP_CALLBACK_OP_RECEIVED_MESSAGE) {
if (print_result(STAT_SUCCESS, host->sess, pdu)) {
host->current_oid++; /* send next GET (if any) */
if (host->current_oid->Name) {
req = snmp_pdu_create(SNMP_MSG_GET);
snmp_add_null_var(req, host->current_oid->Oid, host->current_oid->OidLen);
if (snmp_send(host->sess, req))
return 1;
else {
snmp_perror("snmp_send");
snmp_free_pdu(req);
}
}
}
}
else
print_result(STAT_TIMEOUT, host->sess, pdu);
/* something went wrong (or end of variables)
* this host not active any more
*/
active_hosts--;
return 1;
}
开发者ID:dear531,项目名称:snmp_source,代码行数:33,代码来源:asyncapp.c
示例10: snmp_getn_bulk
/**
* snmp_getn_bulk: Builds and sends a SNMP_BET_BULK pdu using snmp
* @sessp: snmp session
* @bulk_objid: string containing the OID entry.
* @bulk_objid_len: len of OID string
* @bulk_pdu: pointer to the PDU to be created
* @bulk_response: pointer to the response for this PDU request
* @num_repetitions: max OIDs for this request.
* Note: this is the max requested. Actual number returned can be less
* than maximum. That depends on the target snmp agent.
*
* Return value: status from snmp_sess_synch_response(). See snmp_client.h of net-snmp library.
* STAT_SUCCESS
* STAT_ERROR
* STAT_TIMEOUT
*
* Additionally, if status == STAT_SUCCESS, consumer of this routine needs to check for exception
* conditions.
* Possible exception conditions are SNMP_ENDOFMIBVIEW, SNMP_NOSUCHOBJECT, SNMP_NOSUCHINSTANCE
**/
int snmp_getn_bulk( void *sessp,
oid *bulk_objid,
size_t bulk_objid_len,
struct snmp_pdu *bulk_pdu,
struct snmp_pdu **bulk_response,
int num_repetitions )
{
int status;
bulk_pdu = snmp_pdu_create(SNMP_MSG_GETBULK);
bulk_pdu->non_repeaters = 0;
bulk_pdu->max_repetitions = num_repetitions;
snmp_add_null_var(bulk_pdu, bulk_objid, bulk_objid_len);
/* Send the Request out.*/
status = snmp_sess_synch_response(sessp, bulk_pdu, bulk_response);
/*
* Return the status. Consumer of this util has to process the response.
*/
return(status);
}
开发者ID:openhpi1,项目名称:testrepo,代码行数:46,代码来源:snmp_utils.c
示例11: agentx_remove_agentcaps
int
agentx_remove_agentcaps(netsnmp_session * ss,
oid * agent_cap, size_t agent_caplen)
{
netsnmp_pdu *pdu, *response;
if (ss == NULL || !IS_AGENTX_VERSION(ss->version)) {
return 0;
}
pdu = snmp_pdu_create(AGENTX_MSG_REMOVE_AGENT_CAPS);
if (pdu == NULL)
return 0;
pdu->time = 0;
pdu->sessid = ss->sessid;
snmp_add_null_var(pdu, agent_cap, agent_caplen);
if (agentx_synch_response(ss, pdu, &response) != STAT_SUCCESS)
return 0;
if (response->errstat != SNMP_ERR_NOERROR) {
snmp_free_pdu(response);
return 0;
}
snmp_free_pdu(response);
return 1;
}
开发者ID:KrisChaplin,项目名称:LRT2x4_v1.0.2.06_GPL_source,代码行数:28,代码来源:client.c
示例12: snmp_get_ifcount
/* report the value interfaces.ifNumber.0, actually the number of interfaces */
static int snmp_get_ifcount(struct snmp_session *ss) {
int nifaces = -1;
oid ifcount[] = { 1, 3, 6, 1, 2, 1, 2, 1, 0 };
struct snmp_pdu *pdu;
struct snmp_pdu *response = NULL;
int status;
if ((pdu = snmp_pdu_create(SNMP_MSG_GET)) == NULL) {
ifstat_error("snmp_pdu_create: %s", snmp_api_errstring(snmp_errno));
return -1;
}
snmp_add_null_var(pdu, ifcount, sizeof(ifcount) / sizeof(oid));
if ((status = snmp_synch_response(ss, pdu, &response)) != STAT_SUCCESS ||
response->errstat != SNMP_ERR_NOERROR ||
response->variables == NULL ||
response->variables->type != ASN_INTEGER) {
if (status == STAT_SUCCESS)
ifstat_error("snmp: Error: %s", snmp_errstring(response->errstat));
else
ifstat_error("snmpget(interfaces.ifNumber.0): %s", snmp_sess_errstring(ss));
if (response)
snmp_free_pdu(response);
return -1;
}
nifaces = *(response->variables->val.integer);
snmp_free_pdu(response);
if (nifaces < 0)
return -1;
return nifaces;
}
开发者ID:RaonControl,项目名称:siteApps,代码行数:34,代码来源:snmp.c
示例13: get_snmp
void get_snmp(void *precord)
{
snmpRecord *psnmp = (snmpRecord *)precord;
SNMP_INFO *snmpinfo = (SNMP_INFO*)psnmp->dpvt;
if (!(snmpinfo->sess = snmp_open(&snmpinfo->ss))) {
snmp_perror("snmp_open");
};
snmpinfo->getreq = snmp_pdu_create(SNMP_MSG_GET); /* send the first GET */
if (! snmpinfo->getreq) {
snmp_close(snmpinfo->sess); /* cleanup */
}
snmp_add_null_var(snmpinfo->getreq, snmpinfo->oid_info.Oid, snmpinfo->oid_info.OidLen);
if (snmp_send(snmpinfo->sess, snmpinfo->getreq))
hosts++;
else {
snmp_perror("snmp_setsend");
snmp_free_pdu(snmpinfo->getreq);
}
active_hosts();
snmp_close(snmpinfo->sess); /* cleanup */
}
开发者ID:RaonControl,项目名称:siteLibs,代码行数:26,代码来源:snmpDevAsync_onlyint.c
示例14: session_add_null_var
void session_add_null_var(struct snmp_pdu *pdu, const char *name) {
oid anOID[MAX_OID_LEN+1];
size_t anOID_len = MAX_OID_LEN;
get_node(name, anOID, &anOID_len);
snmp_add_null_var(pdu, anOID, anOID_len);
}
开发者ID:Ancient,项目名称:NetGuard,代码行数:7,代码来源:snmp_layer.c
示例15: synchronous
/*
* simple synchronous loop
*/
void synchronous (void)
{
struct host *hp;
for (hp = hosts; hp->name; hp++) {
struct snmp_session ss, *sp;
struct oid *op;
snmp_sess_init(&ss); /* initialize session */
ss.version = SNMP_VERSION_2c;
ss.peername = strdup(hp->name);
ss.community = strdup(hp->community);
ss.community_len = strlen(ss.community);
if (!(sp = snmp_open(&ss))) {
snmp_perror("snmp_open");
continue;
}
for (op = oids; op->Name; op++) {
struct snmp_pdu *req, *resp;
int status;
req = snmp_pdu_create(SNMP_MSG_GET);
snmp_add_null_var(req, op->Oid, op->OidLen);
status = snmp_synch_response(sp, req, &resp);
if (!print_result(status, sp, resp)) break;
snmp_free_pdu(resp);
}
snmp_close(sp);
}
}
开发者ID:dear531,项目名称:snmp_source,代码行数:32,代码来源:asyncapp.c
示例16: snmp_get_bulk
int snmp_get_bulk( struct snmp_session *ss,
const char *bulk_objid,
struct snmp_pdu *bulk_pdu,
struct snmp_pdu **bulk_response )
{
size_t anOID_len = MAX_OID_LEN;
oid anOID[MAX_OID_LEN];
int status;
/* Create the PDU for theenrty_count data for our request. */
read_objid(bulk_objid, anOID, &anOID_len);
bulk_pdu = snmp_pdu_create(SNMP_MSG_GETBULK);
bulk_pdu->non_repeaters = 0;
bulk_pdu->max_repetitions = NUM_REPITIONS;
snmp_add_null_var(bulk_pdu, anOID, anOID_len);
/* Send the Request out.*/
status = snmp_synch_response(ss, bulk_pdu, bulk_response);
return(status);
}
开发者ID:openhpi1,项目名称:testrepo,代码行数:27,代码来源:snmp_client_discover.c
示例17: add
int
add(netsnmp_pdu *pdu, const char *mibnodename,
oid * index, size_t indexlen)
{
oid base[MAX_OID_LEN];
size_t base_length = MAX_OID_LEN;
memset(base, 0, MAX_OID_LEN * sizeof(oid));
if (!snmp_parse_oid(mibnodename, base, &base_length)) {
snmp_perror(mibnodename);
fprintf(stderr, "couldn't find mib node %s, giving up\n",
mibnodename);
#if HAVE_CURSES_H
endwin();
#endif
exit(1);
}
if (index && indexlen) {
memcpy(&(base[base_length]), index, indexlen * sizeof(oid));
base_length += indexlen;
}
DEBUGMSGTL(("add", "created: "));
DEBUGMSGOID(("add", base, base_length));
DEBUGMSG(("add", "\n"));
snmp_add_null_var(pdu, base, base_length);
return base_length;
}
开发者ID:michalklempa,项目名称:net-snmp,代码行数:30,代码来源:snmpps.c
示例18: asynchronous
void asynchronous(void)
{
struct session *hs;
struct host *hp;
/* startup all hosts */
for (hs = sessions, hp = hosts; hp->name; hs++, hp++) {
struct snmp_pdu *req;
struct snmp_session sess;
snmp_sess_init(&sess); /* initialize session */
sess.version = SNMP_VERSION_2c;
sess.peername = strdup(hp->name);
sess.community = strdup(hp->community);
sess.community_len = strlen(sess.community);
sess.callback = asynch_response; /* default callback */
sess.callback_magic = hs;
if (!(hs->sess = snmp_open(&sess))) {
snmp_perror("snmp_open");
continue;
}
hs->current_oid = oids;
req = snmp_pdu_create(SNMP_MSG_GET); /* send the first GET */
snmp_add_null_var(req, hs->current_oid->Oid, hs->current_oid->OidLen);
if (snmp_send(hs->sess, req))
active_hosts++;
else {
snmp_perror("snmp_send");
snmp_free_pdu(req);
}
}
/* loop while any active hosts */
while (active_hosts) {
int fds = 0, block = 1;
fd_set fdset;
struct timeval timeout;
FD_ZERO(&fdset);
snmp_select_info(&fds, &fdset, &timeout, &block);
fds = select(fds, &fdset, NULL, NULL, block ? NULL : &timeout);
if (fds < 0) {
perror("select failed");
exit(1);
}
if (fds)
snmp_read(&fdset);
else
snmp_timeout();
}
/* cleanup */
for (hp = hosts, hs = sessions; hp->name; hs++, hp++) {
if (hs->sess) snmp_close(hs->sess);
}
}
开发者ID:dear531,项目名称:snmp_source,代码行数:58,代码来源:asyncapp.c
示例19: processSnmpGet
void processSnmpGet(char * oid){
read_objid(oid, id_oid, &id_len);
snmp_add_null_var(pdu, id_oid, id_len);
int status = snmp_synch_response(session_handle, pdu, &response);
for(vars = response->variables; vars; vars = vars->next_variable){
snprint_variable(outbuff, 256, vars->name, vars->name_length, vars);
resultString = strrchr(outbuff, ':');
}
}
开发者ID:und3ath,项目名称:centreon_plugins,代码行数:9,代码来源:check_netapp_native.c
示例20: agentx_register
int
agentx_register(netsnmp_session * ss, oid start[], size_t startlen,
int priority, int range_subid, oid range_ubound,
int timeout, u_char flags, const char *contextName)
{
netsnmp_pdu *pdu, *response;
DEBUGMSGTL(("agentx/subagent", "registering: "));
DEBUGMSGOIDRANGE(("agentx/subagent", start, startlen, range_subid,
range_ubound));
DEBUGMSG(("agentx/subagent", "\n"));
if (ss == NULL || !IS_AGENTX_VERSION(ss->version)) {
return 0;
}
pdu = snmp_pdu_create(AGENTX_MSG_REGISTER);
if (pdu == NULL) {
return 0;
}
pdu->time = timeout;
pdu->priority = priority;
pdu->sessid = ss->sessid;
pdu->range_subid = range_subid;
if (contextName) {
pdu->flags |= AGENTX_MSG_FLAG_NON_DEFAULT_CONTEXT;
pdu->community = strdup(contextName);
pdu->community_len = strlen(contextName);
}
if (flags & FULLY_QUALIFIED_INSTANCE) {
pdu->flags |= AGENTX_MSG_FLAG_INSTANCE_REGISTER;
}
if (range_subid) {
snmp_pdu_add_variable(pdu, start, startlen, ASN_OBJECT_ID,
(u_char *) start, startlen * sizeof(oid));
pdu->variables->val.objid[range_subid - 1] = range_ubound;
} else {
snmp_add_null_var(pdu, start, startlen);
}
if (agentx_synch_response(ss, pdu, &response) != STAT_SUCCESS) {
DEBUGMSGTL(("agentx/subagent", "registering failed!\n"));
return 0;
}
if (response->errstat != SNMP_ERR_NOERROR) {
snmp_log(LOG_ERR,"registering pdu failed: %d!\n", response->errstat);
snmp_free_pdu(response);
return 0;
}
snmp_free_pdu(response);
DEBUGMSGTL(("agentx/subagent", "registered\n"));
return 1;
}
开发者ID:KrisChaplin,项目名称:LRT2x4_v1.0.2.06_GPL_source,代码行数:57,代码来源:client.c
注:本文中的snmp_add_null_var函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论