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