variable_list * snmp_sysFn(variable_list * Var, snint * ErrP) { variable_list *Answer = NULL; debug(49, 5) ("snmp_sysFn: Processing request:\n", Var->name[LEN_SQ_SYS]); snmpDebugOid(5, Var->name, Var->name_length); *ErrP = SNMP_ERR_NOERROR; switch (Var->name[LEN_SQ_SYS]) { case SYSVMSIZ: Answer = snmp_var_new_integer(Var->name, Var->name_length, store_mem_size >> 10, ASN_INTEGER); break; case SYSSTOR: Answer = snmp_var_new_integer(Var->name, Var->name_length, store_swap_size, ASN_INTEGER); break; case SYS_UPTIME: Answer = snmp_var_new_integer(Var->name, Var->name_length, tvSubDsec(squid_start, current_time) * 100, SMI_TIMETICKS); break; default: *ErrP = SNMP_ERR_NOSUCHNAME; break; } return Answer; }
/* * The function to return the DNS via SNMP */ variable_list * snmp_netDnsFn(variable_list * Var, snint * ErrP) { variable_list *Answer = NULL; debug(49, 5) ("snmp_netDnsFn: Processing request: %d\n", Var->name[LEN_SQ_NET + 1]); snmpDebugOid(5, Var->name, Var->name_length); *ErrP = SNMP_ERR_NOERROR; switch (Var->name[LEN_SQ_NET + 1]) { case DNS_REQ: Answer = snmp_var_new_integer(Var->name, Var->name_length, dnsservers->stats.requests, SMI_COUNTER32); break; case DNS_REP: Answer = snmp_var_new_integer(Var->name, Var->name_length, dnsservers->stats.replies, SMI_COUNTER32); break; case DNS_SERVERS: Answer = snmp_var_new_integer(Var->name, Var->name_length, dnsservers->n_running, SMI_COUNTER32); break; default: *ErrP = SNMP_ERR_NOSUCHNAME; break; } return Answer; }
/* * The function to return the DNS via SNMP */ variable_list * snmp_netIdnsFn(variable_list * Var, snint * ErrP) { int i, n = 0; variable_list *Answer = NULL; debug(49, 5) ("snmp_netIdnsFn: Processing request: \n"); snmpDebugOid(5, Var->name, Var->name_length); *ErrP = SNMP_ERR_NOERROR; switch (Var->name[LEN_SQ_NET + 1]) { case DNS_REQ: for (i = 0; i < nns; i++) n += nameservers[i].nqueries; Answer = snmp_var_new_integer(Var->name, Var->name_length, n, SMI_COUNTER32); break; case DNS_REP: for (i = 0; i < nns; i++) n += nameservers[i].nreplies; Answer = snmp_var_new_integer(Var->name, Var->name_length, n, SMI_COUNTER32); break; case DNS_SERVERS: Answer = snmp_var_new_integer(Var->name, Var->name_length, nns, SMI_COUNTER32); break; default: *ErrP = SNMP_ERR_NOSUCHNAME; break; } return Answer; }
variable_list * snmp_meshCtblFn(variable_list * Var, snint * ErrP) { variable_list *Answer = NULL; static char key[16]; ClientInfo *c = NULL; int aggr = 0; log_type l; *ErrP = SNMP_ERR_NOERROR; debug(49, 6) ("snmp_meshCtblFn: Current : \n"); snmpDebugOid(6, Var->name, Var->name_length); snprintf(key, sizeof(key), "%d.%d.%d.%d", Var->name[LEN_SQ_NET + 3], Var->name[LEN_SQ_NET + 4], Var->name[LEN_SQ_NET + 5], Var->name[LEN_SQ_NET + 6]); debug(49, 5) ("snmp_meshCtblFn: [%s] requested!\n", key); c = (ClientInfo *) hash_lookup(client_table, key); if (c == NULL) { debug(49, 5) ("snmp_meshCtblFn: not found.\n"); *ErrP = SNMP_ERR_NOSUCHNAME; return NULL; } switch (Var->name[LEN_SQ_NET + 2]) { case MESH_CTBL_ADDR: Answer = snmp_var_new_integer(Var->name, Var->name_length, (snint) c->addr.s_addr, SMI_IPADDRESS); break; case MESH_CTBL_HTBYTES: Answer = snmp_var_new_integer(Var->name, Var->name_length, (snint) c->Http.kbytes_out.kb, SMI_COUNTER32); break; case MESH_CTBL_HTREQ: Answer = snmp_var_new_integer(Var->name, Var->name_length, (snint) c->Http.n_requests, SMI_COUNTER32); break; case MESH_CTBL_HTHITS: aggr = 0; for (l = LOG_TAG_NONE; l < LOG_TYPE_MAX; l++) { if (isTcpHit(l)) aggr += c->Http.result_hist[l]; } Answer = snmp_var_new_integer(Var->name, Var->name_length, (snint) aggr, SMI_COUNTER32); break; case MESH_CTBL_HTHITBYTES: Answer = snmp_var_new_integer(Var->name, Var->name_length, (snint) c->Http.hit_kbytes_out.kb, SMI_COUNTER32); break; case MESH_CTBL_ICPBYTES: Answer = snmp_var_new_integer(Var->name, Var->name_length, (snint) c->Icp.kbytes_out.kb, SMI_COUNTER32); break; case MESH_CTBL_ICPREQ: Answer = snmp_var_new_integer(Var->name, Var->name_length, (snint) c->Icp.n_requests, SMI_COUNTER32); break; case MESH_CTBL_ICPHITS: aggr = c->Icp.result_hist[LOG_UDP_HIT]; Answer = snmp_var_new_integer(Var->name, Var->name_length, (snint) aggr, SMI_COUNTER32); break; case MESH_CTBL_ICPHITBYTES: Answer = snmp_var_new_integer(Var->name, Var->name_length, (snint) c->Icp.hit_kbytes_out.kb, SMI_COUNTER32); break; default: *ErrP = SNMP_ERR_NOSUCHNAME; debug(49, 5) ("snmp_meshCtblFn: illegal column.\n"); break; } return Answer; }