From owner-svn-soc-all@FreeBSD.ORG Tue Jul 29 18:20:08 2014 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id F0DC4D6 for ; Tue, 29 Jul 2014 18:20:07 +0000 (UTC) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id DCECE21E0 for ; Tue, 29 Jul 2014 18:20:07 +0000 (UTC) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.9/8.14.9) with ESMTP id s6TIK7Al036992 for ; Tue, 29 Jul 2014 18:20:07 GMT (envelope-from shonali@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.9/8.14.9/Submit) id s6TIK7mn036827 for svn-soc-all@FreeBSD.org; Tue, 29 Jul 2014 18:20:07 GMT (envelope-from shonali@FreeBSD.org) Date: Tue, 29 Jul 2014 18:20:07 GMT Message-Id: <201407291820.s6TIK7mn036827@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to shonali@FreeBSD.org using -f From: shonali@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r271542 - soc2014/shonali/head/contrib/bsnmp/snmpd MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 Jul 2014 18:20:08 -0000 Author: shonali Date: Tue Jul 29 18:20:06 2014 New Revision: 271542 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=271542 Log: Added ipv6 support for target_address(trap) Modified: soc2014/shonali/head/contrib/bsnmp/snmpd/snmpmod.h soc2014/shonali/head/contrib/bsnmp/snmpd/trap.c Modified: soc2014/shonali/head/contrib/bsnmp/snmpd/snmpmod.h ============================================================================== --- soc2014/shonali/head/contrib/bsnmp/snmpd/snmpmod.h Tue Jul 29 17:18:46 2014 (r271541) +++ soc2014/shonali/head/contrib/bsnmp/snmpd/snmpmod.h Tue Jul 29 18:20:06 2014 (r271542) @@ -477,6 +477,7 @@ struct target_address { char name[SNMP_ADM_STR32_SIZ]; uint8_t address[SNMP_UDP_ADDR_SIZ]; + uint8_t address6[SNMP_UDP_ADDRv6_SIZ]; int32_t timeout; int32_t retry; char taglist[SNMP_TAG_SIZ]; Modified: soc2014/shonali/head/contrib/bsnmp/snmpd/trap.c ============================================================================== --- soc2014/shonali/head/contrib/bsnmp/snmpd/trap.c Tue Jul 29 17:18:46 2014 (r271541) +++ soc2014/shonali/head/contrib/bsnmp/snmpd/trap.c Tue Jul 29 18:20:06 2014 (r271542) @@ -771,8 +771,9 @@ int target_activate_address(struct target_address *addrs) { - /* IPv4/IPv6 - Check if there is a better way of determining address type */ - switch (sizeof(*addrs)) { + /* XXX - IPv4/IPv6 - Check if there is a better way of determining address type - Change switch code */ + + switch (sizeof(*addrs->address)) { case 6: struct sockaddr_in sa; @@ -814,16 +815,16 @@ sa.sin6_len = sizeof(sa); sa.sin6_family = AF_INET6; /* Host to network byte order not reqd - check */ - sa.sin6_addr.s6_addr = (addrs->address[0] << 120) | (addrs->address[1] << 112) | (addrs->address[2] << 104) | (addrs->address[3] << 96) | (addrs->address[4] << 88) | - (addrs->address[5] << 80) | (addrs->address[6] << 72) | (addrs->address[7] << 64) | (addrs->address[8] << 56) | - (addrs->address[9] << 48) | (addrs->address[10] << 40) | (addrs->address[11] << 32) | (addrs->address[12] << 24) | - (addrs->address[13] << 16) | (addrs->address[14] << 8) | addrs->address[15]; - sa.sin6_port = htons(addrs->address[16]) << 8 | - htons(addrs->address[17]) << 0; - + sa.sin6_addr.s6_addr = (addrs->address6[0] << 120) | (addrs->address6[1] << 112) | (addrs->address6[2] << 104) | (addrs->address6[3] << 96) | (addrs->address6[4] << 88) | + (addrs->address6[5] << 80) | (addrs->address6[6] << 72) | (addrs->address6[7] << 64) | (addrs->address6[8] << 56) | + (addrs->address6[9] << 48) | (addrs->address6[10] << 40) | (addrs->address6[11] << 32) | (addrs->address6[12] << 24) | + (addrs->address6[13] << 16) | (addrs->address6[14] << 8) | addrs->address6[15]; + sa.sin6_port = htons(addrs->address6[16]) << 8 | + htons(addrs->address6[17]) << 0; + char dst[INET6_ADDRSTRLEN]; + inet_ntop(AF_INET6,&(sa.sin6_addr), dst, INET6_ADDRSTRLEN); if (connect(addrs->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(addrs->socket); return (SNMP_ERR_GENERR); }