socsvn commit: r269945 - soc2014/shonali/head/contrib/bsnmp/snmpd

shonali at FreeBSD.org shonali at FreeBSD.org
Mon Jun 23 19:36:44 UTC 2014


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 <netdb.h>
 #include <setjmp.h>
 #include <inttypes.h>
-
+#include <machine/endian.h>
 #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 <stdarg.h>
 #include <ctype.h>
 #include <errno.h>
+#include <getopt.h>
 #include <syslog.h>
 #include <unistd.h>
 #include <signal.h>
@@ -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 */


More information about the svn-soc-all mailing list