Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 31 Jul 2014 14:29:18 GMT
From:      shonali@FreeBSD.org
To:        svn-soc-all@FreeBSD.org
Subject:   socsvn commit: r271638 - in soc2014/shonali/head: contrib/bsnmp/lib contrib/bsnmp/snmpd usr.sbin/bsnmpd
Message-ID:  <201407311429.s6VETIhG026107@socsvn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: shonali
Date: Thu Jul 31 14:29:18 2014
New Revision: 271638
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=271638

Log:
  Added some fixes for trap.c, export.c. Made changes to header files.
  

Modified:
  soc2014/shonali/head/contrib/bsnmp/lib/snmp.h
  soc2014/shonali/head/contrib/bsnmp/snmpd/export.c
  soc2014/shonali/head/contrib/bsnmp/snmpd/snmpd.h
  soc2014/shonali/head/contrib/bsnmp/snmpd/trap.c
  soc2014/shonali/head/usr.sbin/bsnmpd/Makefile

Modified: soc2014/shonali/head/contrib/bsnmp/lib/snmp.h
==============================================================================
--- soc2014/shonali/head/contrib/bsnmp/lib/snmp.h	Thu Jul 31 13:02:56 2014	(r271637)
+++ soc2014/shonali/head/contrib/bsnmp/lib/snmp.h	Thu Jul 31 14:29:18 2014	(r271638)
@@ -76,6 +76,7 @@
 	  }			octetstring;
 	  struct asn_oid	oid;
 	  u_char		ipaddress[4];
+          u_char                ipaddress6[16];
 	  uint32_t		uint32;		/* also gauge32, counter32,
 						   unsigned32, timeticks */
 	  uint64_t		counter64;

Modified: soc2014/shonali/head/contrib/bsnmp/snmpd/export.c
==============================================================================
--- soc2014/shonali/head/contrib/bsnmp/snmpd/export.c	Thu Jul 31 13:02:56 2014	(r271637)
+++ soc2014/shonali/head/contrib/bsnmp/snmpd/export.c	Thu Jul 31 14:29:18 2014	(r271638)
@@ -380,22 +380,31 @@
 		    {
 			u_int8_t *pval;
 			u_int i;
+                        
+                     	switch (oid->len) {
+                
+                		case 4: if (sub + 4 > oid->len)
+                               			goto err;
+                        		//pval = va_arg(ap, u_int8_t *);
+                                        u_int8_t pval[4];
+                        		for (i = 0; i < 4; i++) {
+                                		if (oid->subs[sub] > 0xff)
+                                        		goto err;
+                                		pval[i] = oid->subs[sub++];
+                        		}
+						
+				case 16: if (sub + 16 > oid->len)
+                               			 goto err;
+                       			 //pval = va_arg(ap, u_int8_t *);
+                                         u_int8_t pval[16];
+                        		 for (i = 0; i < 16; i++) {
+                                	 	pval[i] = oid->subs[sub++];
+                        		}
+						
+				default:
+                        		return (NULL);
+        		}
 
-			if (sub + 16 > oid->len)
-				goto err;
-			pval = va_arg(ap, u_int8_t *);
-                        if (sizeof(*pval)== 4) {
-			for (i = 0; i < 4; i++) {
-				if (oid->subs[sub] > 0xff)
-					goto err;
-				pval[i] = oid->subs[sub++];
-			}
-                        }
-                        if (sizeof(*pval)== 16) {
-                        for (i = 0; i < 16; i++) {
-                                pval[i] = oid->subs[sub++];
-                        }
-                        }
 			break;
 		    }
 

Modified: soc2014/shonali/head/contrib/bsnmp/snmpd/snmpd.h
==============================================================================
--- soc2014/shonali/head/contrib/bsnmp/snmpd/snmpd.h	Thu Jul 31 13:02:56 2014	(r271637)
+++ soc2014/shonali/head/contrib/bsnmp/snmpd/snmpd.h	Thu Jul 31 14:29:18 2014	(r271638)
@@ -241,6 +241,9 @@
 	/* source address for V1 traps */
 	u_char		trap1addr[4];
 
+        /* ipv6 source address for V1 traps */
+        u_char          trap1addr6[16];
+
 	/* version enable flags */
 	uint32_t	version_enable;
 };

Modified: soc2014/shonali/head/contrib/bsnmp/snmpd/trap.c
==============================================================================
--- soc2014/shonali/head/contrib/bsnmp/snmpd/trap.c	Thu Jul 31 13:02:56 2014	(r271637)
+++ soc2014/shonali/head/contrib/bsnmp/snmpd/trap.c	Thu Jul 31 14:29:18 2014	(r271638)
@@ -113,7 +113,7 @@
 	t->comm[0] = '\0';
 	t->version = TRAPSINK_V2;
 
-	switch (sizeof(t->index.subs)) {
+	switch (t->index.len)) {
                 /* IPv4 - Check if there is a better way of determining address type */
                 case 6:
         	        trapsink_create_sock(t);
@@ -200,10 +200,11 @@
            (t->index.subs[9] << 48) | (t->index.subs[10] << 40) | (t->index.subs[11] << 32) | (t->index.subs[12] << 24) | 
 	   (t->index.subs[13] << 16) | (t->index.subs[14] << 8) | t->index.subs[15];
         sa.sin6_port = htons(t->index.subs[16]);
-
+        
+        char dst[INET6_ADDRSTRLEN];
+        inet_ntop(AF_INET6,&(sa.sin6_addr), dst, INET6_ADDRSTRLEN);
         if (connect(t->socket, (struct sockaddr *)&sa, sa.sin6_len) == -1) {
-                syslog(LOG_ERR, "connect(%s,%u): %m",
-                    inet_ntoa(sa.sin6_addr), ntohs(sa.sin6_port));
+                syslog(LOG_ERR, "connect(%s,%u): %m", dst, ntohs(sa.sin6_port));
                 (void)close(t->socket);
                 free(t);
                 return (SNMP_ERR_GENERR);
@@ -373,6 +374,7 @@
 		break;
 
 	  case SNMP_OP_SET:
+                /* XX - Check, if reqd add ipv6 support for ipa */ 
 		if (index_decode(&value->var, sub, iidx, ipa, &port) ||
 		    port == 0 || port > 65535)
 			return (SNMP_ERR_NO_CREATION);
@@ -771,9 +773,15 @@
 int
 target_activate_address(struct target_address *addrs)
 {
-        /* XXX - IPv4/IPv6 - Check if there is a better way of determining address type - Change switch code */
-        
-	switch (sizeof(*addrs->address)) {
+        /* XXX - IPv4/IPv6 - Check if there is a better way of determining address type */
+        if(addrs->address == NULL && addrs->address6 != NULL)
+        int len = 18; 
+        else if (addrs->address != NULL && addrs->address6 == NULL)
+        int len = 6;
+        else
+        syslog(LOG_ERR, "Target address %s does not exist", addrs->name);
+         
+	switch (len) {
                 
 		case 6:
                 	struct sockaddr_in sa;

Modified: soc2014/shonali/head/usr.sbin/bsnmpd/Makefile
==============================================================================
--- soc2014/shonali/head/usr.sbin/bsnmpd/Makefile	Thu Jul 31 13:02:56 2014	(r271637)
+++ soc2014/shonali/head/usr.sbin/bsnmpd/Makefile	Thu Jul 31 14:29:18 2014	(r271638)
@@ -1,8 +1,13 @@
 # $FreeBSD$
 
-SUBDIR=	gensnmptree	\
-	bsnmpd		\
-	modules		\
-	tools
-
+SUBDIR= gensnmpdef      \ gensnmptree     \ bsnmpd          \ modules         \ tools
 .include <bsd.subdir.mk>
+	cd usr.sbin/bsnmpd
+	mkdir gensnmpdef
+	cd gensnmpdef/
+	fetch http://people.freebsd.org/~syrinx/Makefile
+	cd ..
+	make
+	make install
+	rehash
+	which gensnmpdef



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201407311429.s6VETIhG026107>