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>