From owner-svn-soc-all@FreeBSD.ORG Mon Jun 23 19:36:44 2014 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 748737FB for ; Mon, 23 Jun 2014 19:36:44 +0000 (UTC) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 558A42BDD for ; Mon, 23 Jun 2014 19:36:44 +0000 (UTC) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.8/8.14.8) with ESMTP id s5NJaiUT035144 for ; Mon, 23 Jun 2014 19:36:44 GMT (envelope-from shonali@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.8/8.14.8/Submit) id s5NJah0k034811 for svn-soc-all@FreeBSD.org; Mon, 23 Jun 2014 19:36:43 GMT (envelope-from shonali@FreeBSD.org) Date: Mon, 23 Jun 2014 19:36:43 GMT Message-Id: <201406231936.s5NJah0k034811@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to shonali@FreeBSD.org using -f From: shonali@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r269945 - soc2014/shonali/head/contrib/bsnmp/snmpd MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 Jun 2014 19:36:44 -0000 Author: shonali Date: Mon Jun 23 19:36:42 2014 New Revision: 269945 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=269945 Log: First compile. Modified: soc2014/shonali/head/contrib/bsnmp/snmpd/config.c soc2014/shonali/head/contrib/bsnmp/snmpd/main.c soc2014/shonali/head/contrib/bsnmp/snmpd/trans_udpv6.c soc2014/shonali/head/contrib/bsnmp/snmpd/trap.c Modified: soc2014/shonali/head/contrib/bsnmp/snmpd/config.c ============================================================================== --- soc2014/shonali/head/contrib/bsnmp/snmpd/config.c Mon Jun 23 18:40:21 2014 (r269944) +++ soc2014/shonali/head/contrib/bsnmp/snmpd/config.c Mon Jun 23 19:36:42 2014 (r269945) @@ -46,7 +46,7 @@ #include #include #include - +#include #include "snmpmod.h" #include "snmpd.h" #include "tree.h" @@ -780,7 +780,6 @@ { struct addrinfo hints, *res; int error; - struct sockaddr_storage *sain; memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_UNSPEC; @@ -794,7 +793,8 @@ report("%s: unknown hostname", host); if(res->ai_family == AF_INET) { - addr_type = AF_INET; + addr_type = AF_INET; + struct sockaddr_in *sain ; sain = (struct sockaddr_in *)(void *)res->ai_addr; sain->sin_addr.s_addr = ntohl(sain->sin_addr.s_addr); @@ -804,16 +804,39 @@ ip[3] = sain->sin_addr.s_addr >> 0; } else if(res->ai_family == AF_INET6) { - addr_type = AF_INET6; + + addr_type = AF_INET6; + struct sockaddr_in6 *sain ; sain = (struct sockaddr_in6 *)(void *)res->ai_addr; u_int32_t tmp[4]; - tmp[0] = htonl((sain->sin6_addr.s6_addr[0] << 24) | (sain->sin6_addr.s6_addr[1] << 16) | (sain->sin6_addr.s6_addr[2] << 8) | sain->sin6_addr.s6_addr[3]); - tmp[1] = htonl((sain->sin6_addr.s6_addr[4] << 24) | (sain->sin6_addr.s6_addr[5] << 16) | (sain->sin6_addr.s6_addr[6] << 8) | sain->sin6_addr.s6_addr[7]); - tmp[2] = htonl((sain->sin6_addr.s6_addr[8] << 24) | (sain->sin6_addr.s6_addr[9] << 16) | (sain->sin6_addr.s6_addr[10] << 8) | sain->sin6_addr.s6_addr[11]); - tmp[3] = htonl((sain->sin6_addr.s6_addr[12] << 24) | (sain->sin6_addr.s6_addr[13] << 16) | (sain->sin6_addr.s6_addr[14] << 8) | sain->sin6_addr.s6_addr[15]); - sain->sin6_addr.s6_addr = *tmp; - inet_ntop(AF_INET6, &(sain.sin6_addr), *ip, INET6_ADDRSTRLEN) + /* ipv6 implementation of network to host byte order function */ + + if (BYTE_ORDER == LITTLE_ENDIAN) { + tmp[3] = ntohl((sain->sin6_addr.s6_addr[0] << 24) | (sain->sin6_addr.s6_addr[1] << 16) | (sain->sin6_addr.s6_addr[2] << 8) | sain->sin6_addr.s6_addr[3]); + tmp[2] = ntohl((sain->sin6_addr.s6_addr[4] << 24) | (sain->sin6_addr.s6_addr[5] << 16) | (sain->sin6_addr.s6_addr[6] << 8) | sain->sin6_addr.s6_addr[7]); + tmp[1] = ntohl((sain->sin6_addr.s6_addr[8] << 24) | (sain->sin6_addr.s6_addr[9] << 16) | (sain->sin6_addr.s6_addr[10] << 8) | sain->sin6_addr.s6_addr[11]); + tmp[0] = ntohl((sain->sin6_addr.s6_addr[12] << 24) | (sain->sin6_addr.s6_addr[13] << 16) | (sain->sin6_addr.s6_addr[14] << 8) | sain->sin6_addr.s6_addr[15]); + } + + else { + tmp[0] = (sain->sin6_addr.s6_addr[0] << 24) | (sain->sin6_addr.s6_addr[1] << 16) | (sain->sin6_addr.s6_addr[2] << 8) | sain->sin6_addr.s6_addr[3]; + tmp[1] = (sain->sin6_addr.s6_addr[4] << 24) | (sain->sin6_addr.s6_addr[5] << 16) | (sain->sin6_addr.s6_addr[6] << 8) | sain->sin6_addr.s6_addr[7]; + tmp[2] = (sain->sin6_addr.s6_addr[8] << 24) | (sain->sin6_addr.s6_addr[9] << 16) | (sain->sin6_addr.s6_addr[10] << 8) | sain->sin6_addr.s6_addr[11]; + tmp[3] = (sain->sin6_addr.s6_addr[12] << 24) | (sain->sin6_addr.s6_addr[13] << 16) | (sain->sin6_addr.s6_addr[14] << 8) | sain->sin6_addr.s6_addr[15]; + } + + /* + unsigned char addr[16] ; + strcpy(addr, tmp[0]); + strcat(addr, tmp[1]); + strcat(addr, tmp[2]); + strcat(addr, tmp[3]); + sain->sin6_addr.s6_addr = (unsigned char *)tmp; + */ + + strcpy(sain->sin6_addr.s6_addr, (unsigned char *)tmp) ; + inet_ntop(AF_INET6, &(sain->sin6_addr), *ip, INET6_ADDRSTRLEN); /* incase inet_ntop doesn't work as expected ip[0] = sain->sin6_addr.s6_addr >> 120; @@ -859,7 +882,8 @@ while (token == '.') { if (gettoken() == TOK_NUM) { if (numval > ASN_MAXID) - report("subid too large %#"QUADXFMT, numval); + // report("subid too large %#"QUADXFMT, numval); + report("subid too large %", numval); if (oid->len == ASN_MAXOIDLEN) report("index too long"); if (gettoken() != ':') @@ -923,7 +947,8 @@ if (token != TOK_NUM) report("bad INTEGER syntax"); if (numval > 0x7fffffff) - report("INTEGER too large %"QUADFMT, numval); +// report("INTEGER too large %"QUADFMT, numval); + report("INTEGER too large %", numval); value->v.integer = numval; gettoken(); @@ -1046,7 +1071,7 @@ } else if (i == 16) { struct in6_addr dst; - if (!inet_pton(AF_INET,value->v.ipaddress[i++],(void *)&dst)) + if (!inet_pton(AF_INET6,value->v.ipaddress[i++],(void *)&dst)) report("ipv6 address not valid"); } Modified: soc2014/shonali/head/contrib/bsnmp/snmpd/main.c ============================================================================== --- soc2014/shonali/head/contrib/bsnmp/snmpd/main.c Mon Jun 23 18:40:21 2014 (r269944) +++ soc2014/shonali/head/contrib/bsnmp/snmpd/main.c Mon Jun 23 19:36:42 2014 (r269945) @@ -49,6 +49,7 @@ #include #include #include +#include #include #include #include @@ -1217,7 +1218,7 @@ ret = recv_dgram(pi, laddr); - if (laddr->s_addr == 0) { + if (laddr->s6_addr == 0) { msg.msg_control = NULL; msg.msg_controllen = 0; } Modified: soc2014/shonali/head/contrib/bsnmp/snmpd/trans_udpv6.c ============================================================================== --- soc2014/shonali/head/contrib/bsnmp/snmpd/trans_udpv6.c Mon Jun 23 18:40:21 2014 (r269944) +++ soc2014/shonali/head/contrib/bsnmp/snmpd/trans_udpv6.c Mon Jun 23 19:36:42 2014 (r269945) @@ -116,15 +116,15 @@ ip[2] = htonl((p->addr[8] << 24) | (p->addr[9] << 16) | (p->addr[10] << 8) | p->addr[11]); ip[3] = htonl((p->addr[12] << 24) | (p->addr[13] << 16) | (p->addr[14] << 8) | p->addr[15]); - % Need to check - can use getaddrinfo instead to fill up addr structure % + /* Need to check - can use getaddrinfo instead to fill up addr structure */ memset(&addr, 0, sizeof(addr)); - addr.sin6_addr.s6_addr = *ip; + strcpy(addr.sin6_addr.s6_addr, (char *)ip); addr.sin6_port = htons(p->port); addr.sin6_family = AF_INET6; - addr.sin_len = sizeof(addr); - if (addr.sin6_addr.s6_addr == IN6ADDR_ANY && - setsockopt(p->input.fd, IPPROTO_IPV6, IPV6_V6ONLY, &on, - sizeof(on)) == -1) { + addr.sin6_len = sizeof(addr); + if ((addr.sin6_addr.s6_addr == in6addr_any.s6_addr) && + ( setsockopt(p->input.fd, IPPROTO_IPV6, IPV6_V6ONLY, &on, + sizeof(on)) == -1)) { syslog(LOG_ERR, "setsockopt(IP_RECVDSTADDR): %m"); close(p->input.fd); p->input.fd = -1; @@ -136,14 +136,14 @@ p->input.fd = -1; return (SNMP_ERR_INCONS_NAME); } - inet_ntop(AF_INET6, &(addr.sin6_addr), str, INET6_ADDRSTRLEN) + inet_ntop(AF_INET6, &(addr.sin6_addr), str, INET6_ADDRSTRLEN); syslog(LOG_ERR, "bind: %s:%u %m", str, p->port); close(p->input.fd); p->input.fd = -1; return (SNMP_ERR_GENERR); } - if ((p->input.id = fd_select(p->input.fd, udp_input, + if ((p->input.id = fd_select(p->input.fd, udpv6_input, p, NULL)) == NULL) { close(p->input.fd); p->input.fd = -1; Modified: soc2014/shonali/head/contrib/bsnmp/snmpd/trap.c ============================================================================== --- soc2014/shonali/head/contrib/bsnmp/snmpd/trap.c Mon Jun 23 18:40:21 2014 (r269944) +++ soc2014/shonali/head/contrib/bsnmp/snmpd/trap.c Mon Jun 23 19:36:42 2014 (r269945) @@ -57,6 +57,9 @@ #include "tree.h" #include "oid.h" +#define RowStatus_active 1 + + struct trapsink_list trapsink_list = TAILQ_HEAD_INITIALIZER(trapsink_list); /* List of target addresses */