socsvn commit: r271638 - in soc2014/shonali/head: contrib/bsnmp/lib contrib/bsnmp/snmpd usr.sbin/bsnmpd
shonali at FreeBSD.org
shonali at FreeBSD.org
Thu Jul 31 14:29:20 UTC 2014
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
More information about the svn-soc-all
mailing list