Lines Matching refs:snmp_client

68 struct snmp_client snmp_client;
125 seterr(struct snmp_client *sc, const char *fmt, ...)
196 seterr(&snmp_client, "no memory for table entry");
200 seterr(&snmp_client, "no memory for table entry");
214 seterr(&snmp_client, "bad index: need integer");
218 seterr(&snmp_client,
228 seterr(&snmp_client,
234 seterr(&snmp_client,
239 seterr(&snmp_client,
245 seterr(&snmp_client,
262 seterr(&snmp_client,
268 seterr(&snmp_client,
280 seterr(&snmp_client,
286 seterr(&snmp_client,
298 seterr(&snmp_client,
303 seterr(&snmp_client,
378 seterr(&snmp_client, "bad syntax (%u instead of %u)", b->syntax,
392 seterr(&snmp_client, "no memory for string");
442 if (snmp_client.version == SNMP_V1)
474 if (snmp_client.version == SNMP_V1 &&
481 seterr(&snmp_client, "error fetching table: status=%d index=%d",
491 seterr(&snmp_client,
496 seterr(&snmp_client,
506 seterr(&snmp_client,
541 seterr(&snmp_client,
547 seterr(&snmp_client, "inconsistency detected %llx %llx",
633 seterr(&snmp_client, "no response to fetch table request");
711 seterr(&snmp_client, "%s", strerror(errno));
844 snmp_client_init(struct snmp_client *c)
886 if (snmp_client.chost == NULL) {
887 if ((snmp_client.chost = malloc(1 + sizeof(DEFAULT_HOST)))
889 seterr(&snmp_client, "%s", strerror(errno));
892 strcpy(snmp_client.chost, DEFAULT_HOST);
896 seterr(&snmp_client, "%s", strerror(errno));
899 free(snmp_client.chost);
900 snmp_client.chost = ptr;
901 strcpy(snmp_client.chost, host);
903 if (snmp_client.cport == NULL) {
904 if ((snmp_client.cport = malloc(1 + sizeof(DEFAULT_PORT)))
906 seterr(&snmp_client, "%s", strerror(errno));
909 strcpy(snmp_client.cport, DEFAULT_PORT);
913 seterr(&snmp_client, "%s", strerror(errno));
916 free(snmp_client.cport);
917 snmp_client.cport = ptr;
918 strcpy(snmp_client.cport, port);
927 error = getaddrinfo(snmp_client.chost, snmp_client.cport, &hints, &res0);
929 seterr(&snmp_client, "%s: %s", snmp_client.chost,
935 if ((snmp_client.fd = socket(res->ai_family, res->ai_socktype,
938 seterr(&snmp_client, "%s", strerror(errno));
942 } else if (connect(snmp_client.fd, res->ai_addr,
945 seterr(&snmp_client, "%s", strerror(errno));
959 (void)remove(snmp_client.local_path);
972 if (snmp_client.chost == NULL) {
973 if ((snmp_client.chost = malloc(1 + sizeof(DEFAULT_LOCAL)))
975 seterr(&snmp_client, "%s", strerror(errno));
978 strcpy(snmp_client.chost, DEFAULT_LOCAL);
982 seterr(&snmp_client, "%s", strerror(errno));
985 free(snmp_client.chost);
986 snmp_client.chost = ptr;
987 strcpy(snmp_client.chost, path);
990 if (snmp_client.trans == SNMP_TRANS_LOC_DGRAM)
995 if ((snmp_client.fd = socket(PF_LOCAL, stype, 0)) == -1) {
996 seterr(&snmp_client, "%s", strerror(errno));
1000 snprintf(snmp_client.local_path, sizeof(snmp_client.local_path),
1003 if (mktemp(snmp_client.local_path) == NULL) {
1004 seterr(&snmp_client, "%s", strerror(errno));
1005 (void)close(snmp_client.fd);
1006 snmp_client.fd = -1;
1012 strcpy(sa.sun_path, snmp_client.local_path);
1014 if (bind(snmp_client.fd, (struct sockaddr *)&sa, sizeof(sa)) == -1) {
1015 seterr(&snmp_client, "%s", strerror(errno));
1016 (void)close(snmp_client.fd);
1017 snmp_client.fd = -1;
1018 (void)remove(snmp_client.local_path);
1025 strlen(snmp_client.chost);
1026 strncpy(sa.sun_path, snmp_client.chost, sizeof(sa.sun_path) - 1);
1029 if (connect(snmp_client.fd, (struct sockaddr *)&sa, sa.sun_len) == -1) {
1030 seterr(&snmp_client, "%s", strerror(errno));
1031 (void)close(snmp_client.fd);
1032 snmp_client.fd = -1;
1033 (void)remove(snmp_client.local_path);
1049 if (snmp_client.fd != -1) {
1051 seterr(&snmp_client, "%s", strerror(errno));
1057 strlcpy(snmp_client.read_community, readcomm,
1058 sizeof(snmp_client.read_community));
1060 strlcpy(snmp_client.write_community, writecomm,
1061 sizeof(snmp_client.write_community));
1063 switch (snmp_client.trans) {
1077 seterr(&snmp_client, "bad transport mapping");
1082 if (setsockopt(snmp_client.fd, SOL_SOCKET, SO_SNDTIMEO,
1084 seterr(&snmp_client, "%s", strerror(errno));
1085 (void)close(snmp_client.fd);
1086 snmp_client.fd = -1;
1087 if (snmp_client.local_path[0] != '\0')
1088 (void)remove(snmp_client.local_path);
1117 if (snmp_client.fd != -1) {
1118 (void)close(snmp_client.fd);
1119 snmp_client.fd = -1;
1120 if (snmp_client.local_path[0] != '\0')
1121 (void)remove(snmp_client.local_path);
1126 snmp_client.timeout_stop(p1->timeout_id);
1130 free(snmp_client.chost);
1131 free(snmp_client.cport);
1143 strlcpy(pdu->community, snmp_client.write_community,
1146 strlcpy(pdu->community, snmp_client.read_community,
1150 pdu->version = snmp_client.version;
1155 if (snmp_client.version != SNMP_V3)
1158 pdu->identifier = ++snmp_client.identifier;
1159 pdu->engine.max_msg_size = snmp_client.engine.max_msg_size;
1161 pdu->security_model = snmp_client.security_model;
1163 if (snmp_client.security_model == SNMP_SECMODEL_USM) {
1164 memcpy(&pdu->engine, &snmp_client.engine, sizeof(pdu->engine));
1165 memcpy(&pdu->user, &snmp_client.user, sizeof(pdu->user));
1168 seterr(&snmp_client, "unknown security model");
1170 if (snmp_client.clen > 0) {
1171 memcpy(pdu->context_engine, snmp_client.cengine,
1172 snmp_client.clen);
1173 pdu->context_engine_len = snmp_client.clen;
1175 memcpy(pdu->context_engine, snmp_client.engine.engine_id,
1176 snmp_client.engine.engine_len);
1177 pdu->context_engine_len = snmp_client.engine.engine_len;
1180 strlcpy(pdu->context_name, snmp_client.cname,
1212 snmp_next_reqid(struct snmp_client * c)
1234 if ((buf = malloc(snmp_client.txbuflen)) == NULL) {
1235 seterr(&snmp_client, "%s", strerror(errno));
1239 pdu->request_id = snmp_next_reqid(&snmp_client);
1242 b.asn_len = snmp_client.txbuflen;
1244 seterr(&snmp_client, "%s", strerror(errno));
1249 if (snmp_client.dump_pdus)
1252 if ((ret = send(snmp_client.fd, buf, b.asn_ptr - buf, 0)) == -1) {
1253 seterr(&snmp_client, "%s", strerror(errno));
1272 listentry->reqid, listentry->retrycount, snmp_client.retries);
1276 if (listentry->retrycount > snmp_client.retries) {
1286 snmp_client.timeout_start(&snmp_client.timeout,
1298 seterr(&snmp_client, "%s", strerror(errno));
1318 snmp_client.timeout_start(&snmp_client.timeout, snmp_timeout,
1355 if ((buf = malloc(snmp_client.rxbuflen)) == NULL) {
1356 seterr(&snmp_client, "%s", strerror(errno));
1365 if (setsockopt(snmp_client.fd, SOL_SOCKET, SO_RCVTIMEO,
1367 seterr(&snmp_client, "setsockopt: %s",
1373 if (getsockopt(snmp_client.fd, SOL_SOCKET, SO_RCVTIMEO,
1375 seterr(&snmp_client, "getsockopt: %s",
1391 if ((flags = fcntl(snmp_client.fd, F_GETFL, 0)) == -1) {
1392 seterr(&snmp_client, "fcntl: %s",
1400 if (fcntl(snmp_client.fd, F_SETFL, flags) == -1) {
1401 seterr(&snmp_client, "fcntl: %s",
1409 ret = recv(snmp_client.fd, buf, snmp_client.rxbuflen, 0);
1415 (void)fcntl(snmp_client.fd, F_SETFL, flags);
1420 (void)setsockopt(snmp_client.fd, SOL_SOCKET, SO_RCVTIMEO,
1428 seterr(&snmp_client, "recv: %s", strerror(saved_errno));
1435 seterr(&snmp_client, "recv: socket closed by peer");
1444 if (snmp_client.security_model == SNMP_SECMODEL_USM) {
1445 memcpy(&pdu->engine, &snmp_client.engine, sizeof(pdu->engine));
1446 memcpy(&pdu->user, &snmp_client.user, sizeof(pdu->user));
1451 seterr(&snmp_client, "snmp_decode_pdu: failed %d", ret);
1457 if (snmp_client.dump_pdus)
1460 snmp_client.engine.engine_time = pdu->engine.engine_time;
1461 snmp_client.engine.engine_boots = pdu->engine.engine_boots;
1485 snmp_client.timeout_stop(listentry->timeout_id);
1503 seterr(&snmp_client, "no memory for returning PDU");
1600 if (snmp_client.version != SNMP_V1 &&
1687 struct timeval tv = snmp_client.timeout;
1702 for (i = 0; i <= snmp_client.retries; i++) {
1704 timeradd(&end, &snmp_client.timeout, &end);
1728 seterr(&snmp_client, "retry count exceeded");
1740 if (snmp_client.version != SNMP_V3)
1741 seterr(&snmp_client, "wrong version");
1743 strlcpy(cname, snmp_client.user.sec_name, sizeof(cname));
1744 cap = snmp_client.user.auth_proto;
1745 cpp = snmp_client.user.priv_proto;
1747 snmp_client.engine.engine_len = 0;
1748 snmp_client.engine.engine_boots = 0;
1749 snmp_client.engine.engine_time = 0;
1750 snmp_client.user.auth_proto = SNMP_AUTH_NOAUTH;
1751 snmp_client.user.priv_proto = SNMP_PRIV_NOPRIV;
1752 memset(snmp_client.user.sec_name, 0, sizeof(snmp_client.user.sec_name));
1760 seterr(&snmp_client, "wrong version");
1765 seterr(&snmp_client, "Error %d in responce", resp.error_status);
1769 snmp_client.engine.engine_len = resp.engine.engine_len;
1770 snmp_client.engine.max_msg_size = resp.engine.max_msg_size;
1771 memcpy(snmp_client.engine.engine_id, resp.engine.engine_id,
1774 strlcpy(snmp_client.user.sec_name, cname,
1775 sizeof(snmp_client.user.sec_name));
1776 snmp_client.user.auth_proto = cap;
1777 snmp_client.user.priv_proto = cpp;
1779 if (snmp_client.user.auth_proto == SNMP_AUTH_NOAUTH)
1783 snmp_passwd_to_keys(&snmp_client.user, passwd) != SNMP_CODE_OK ||
1784 snmp_get_local_keys(&snmp_client.user, snmp_client.engine.engine_id,
1785 snmp_client.engine.engine_len) != SNMP_CODE_OK)
1789 snmp_client.engine.engine_boots = resp.engine.engine_boots;
1792 snmp_client.engine.engine_time = resp.engine.engine_time;
1804 seterr(&snmp_client, "wrong version");
1809 seterr(&snmp_client, "Error %d in responce", resp.error_status);
1813 snmp_client.engine.engine_boots = resp.engine.engine_boots;
1814 snmp_client.engine.engine_time = resp.engine.engine_time;
1820 snmp_client_set_host(struct snmp_client *cl, const char *h)
1840 snmp_client_set_port(struct snmp_client *cl, const char *p)
1865 snmp_parse_server(struct snmp_client *sc, const char *str)