void error_status (unsigned char code) { char *ep= estack.msg[estack.count]; if ( _error_overflow() ) return; snprintf(ep, MAX_ERRLEN, "%s", error_status_string(code)); irlinc_error= EO_BADSTATUS; estack.count++; }
int request_snmpEnableAuthTraps(char *error_label) { static int my_ip_address_initialized = False; static IPAddress my_ip_address; SNMP_pdu *request; SNMP_pdu *response; SNMP_variable *variable; int snmpEnableAuthTraps; struct timeval timeout; timeout.tv_sec = 5; timeout.tv_usec = 0; error_label[0] = '\0'; if(my_ip_address_initialized == False) { if(get_my_ip_address(&my_ip_address, error_label)) { return -1; } my_ip_address_initialized = True; } request = request_create("public", GET_REQ_MSG, error_label); if(request == NULL) { return -1; } if(snmp_pdu_append_null_variable(request, &snmpEnableAuthTraps_name, error_label) == NULL) { snmp_pdu_free(request); return -1; } response = request_send_to_port_time_out_blocking(&my_ip_address, \ SNMP_PORT, &timeout, request, error_label); if(response == NULL) { snmp_pdu_free(request); return -1; } snmp_pdu_free(request); if(response->error_status) { sprintf(error_label, "%s", error_status_string(response->error_status)); snmp_pdu_free(response); return -1; } variable = response->first_variable; if(variable->next_variable || SSAOidCmp(&(variable->name), &snmpEnableAuthTraps_name) || (variable->type != INTEGER) || (variable->val.integer == NULL) || (variable->val_len != sizeof(int32_t)) ) { sprintf(error_label, ERR_MSG_BAD_RESPONSE); snmp_pdu_free(response); return -1; } snmpEnableAuthTraps = *(variable->val.integer); snmp_pdu_free(response); if(trace_level > 0) { trace("snmpAuthTraps: %s\n\n", (snmpEnableAuthTraps == 1)? "enabled(1)": "disabled(2)"); } switch(snmpEnableAuthTraps) { case 1: /* enabled(1) */ return TRUE; case 2: /* disable(2) */ return FALSE; default: sprintf(error_label, ERR_MSG_BAD_VALUE); return -1; } }
int32_t request_sysUpTime(char *error_label, char *community_name) { static int my_ip_address_initialized = False; static IPAddress my_ip_address; SNMP_pdu *request; SNMP_pdu *response; SNMP_variable *variable; static int32_t sysUpTime = 0; static clock_t last = 0; clock_t now; struct tms buffer; error_label[0] = '\0'; now = times(&buffer); if( (last == 0) || ((now - last) > 360000) ) /* 1 hour */ { if(my_ip_address_initialized == False) { if(get_my_ip_address(&my_ip_address, error_label)) { return 0; } my_ip_address_initialized = True; } if(community_name == NULL) request = request_create("public", GET_REQ_MSG, error_label); else request = request_create(community_name, GET_REQ_MSG, error_label); if(request == NULL) { return 0; } if(snmp_pdu_append_null_variable(request, &sysUptime_instance, error_label) == NULL) { snmp_pdu_free(request); return 0; } response = request_send_blocking(&my_ip_address, request, error_label); if(response == NULL) { snmp_pdu_free(request); return 0; } snmp_pdu_free(request); if(response->error_status) { sprintf(error_label, "%s", error_status_string(response->error_status)); snmp_pdu_free(response); return 0; } variable = response->first_variable; if(variable->next_variable || SSAOidCmp(&(variable->name), &sysUptime_instance) || (variable->type != TIMETICKS) || (variable->val.integer == NULL) || (variable->val_len != sizeof(int32_t)) ) { sprintf(error_label, ERR_MSG_BAD_RESPONSE); snmp_pdu_free(response); return 0; } sysUpTime = *(variable->val.integer); last = now; snmp_pdu_free(response); if(trace_level > 0) { trace("sysUpTime: %d\n\n", sysUpTime); } return sysUpTime; } /* LINTED */ return (sysUpTime + (int32_t)(now - last)); }