From owner-svn-soc-all@FreeBSD.ORG Sat Aug 9 08:40:19 2014 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 55983EDA for ; Sat, 9 Aug 2014 08:40:19 +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 37ECC2021 for ; Sat, 9 Aug 2014 08:40:19 +0000 (UTC) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.9/8.14.9) with ESMTP id s798eJl6020174 for ; Sat, 9 Aug 2014 08:40:19 GMT (envelope-from shonali@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.9/8.14.9/Submit) id s798eHFH020166 for svn-soc-all@FreeBSD.org; Sat, 9 Aug 2014 08:40:17 GMT (envelope-from shonali@FreeBSD.org) Date: Sat, 9 Aug 2014 08:40:17 GMT Message-Id: <201408090840.s798eHFH020166@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: r272116 - 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: Sat, 09 Aug 2014 08:40:19 -0000 Author: shonali Date: Sat Aug 9 08:40:17 2014 New Revision: 272116 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=272116 Log: Review and revision of config.c, export.c, trans_udpv6.c & headers Modified: soc2014/shonali/head/contrib/bsnmp/snmpd/config.c soc2014/shonali/head/contrib/bsnmp/snmpd/export.c soc2014/shonali/head/contrib/bsnmp/snmpd/snmpmod.h soc2014/shonali/head/contrib/bsnmp/snmpd/trans_udpv6.c soc2014/shonali/head/contrib/bsnmp/snmpd/trans_udpv6.h Modified: soc2014/shonali/head/contrib/bsnmp/snmpd/config.c ============================================================================== --- soc2014/shonali/head/contrib/bsnmp/snmpd/config.c Sat Aug 9 05:00:34 2014 (r272115) +++ soc2014/shonali/head/contrib/bsnmp/snmpd/config.c Sat Aug 9 08:40:17 2014 (r272116) @@ -778,6 +778,8 @@ static void gethost(const char *host, u_char *ip) { + struct sockaddr_in *sain; + struct sockaddr_in6 *sain6; struct addrinfo hints, *res; int error; @@ -796,19 +798,22 @@ case 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); - ip[0] = sain->sin_addr.s_addr >> 24; + inet_ntop(AF_INET, &(sain->sin_addr), *ip, INET_ADDRSTRLEN); + + /* + ip[0] = sain->sin_addr.s_addr >> 24; ip[1] = sain->sin_addr.s_addr >> 16; ip[2] = sain->sin_addr.s_addr >> 8; - ip[3] = sain->sin_addr.s_addr >> 0; + ip[3] = sain->sin_addr.s_addr >> 0; + */ + + break; case AF_INET6 : addr_type = AF_INET6; - struct sockaddr_in6 *sain6 ; sain6 = (struct sockaddr_in6 *)(void *)res->ai_addr; - /* ipv6 implementation of network to host byte order function */ /* @@ -894,13 +899,16 @@ gettoken(); } - if (addr_type == AF_INET6){ + else if (addr_type == AF_INET6){ if (oid->len + 16 > ASN_MAXOIDLEN) report("index too long"); for (i = 0; i < 16; i++) oid->subs[oid->len++] = ip[i]; gettoken(); } + + else + report("invalid ip protocol version"); } else report("bad token in index"); Modified: soc2014/shonali/head/contrib/bsnmp/snmpd/export.c ============================================================================== --- soc2014/shonali/head/contrib/bsnmp/snmpd/export.c Sat Aug 9 05:00:34 2014 (r272115) +++ soc2014/shonali/head/contrib/bsnmp/snmpd/export.c Sat Aug 9 08:40:17 2014 (r272116) @@ -153,15 +153,14 @@ int ip_save(struct snmp_value *value, struct snmp_context *ctx, u_char *valp) { - ctx->scratch->int1 = (valp[0] << 24) | (valp[1] << 16) | (valp[2] << 8) - | valp[3]; + ctx->scratch->int1 = (valp[0] << 24) | (valp[1] << 16) | (valp[2] << 8) + | valp[3]; - valp[0] = value->v.ipaddress[0]; - valp[1] = value->v.ipaddress[1]; - valp[2] = value->v.ipaddress[2]; - valp[3] = value->v.ipaddress[3]; + valp[0] = value->v.ipaddress[0]; + valp[1] = value->v.ipaddress[1]; + valp[2] = value->v.ipaddress[2]; + valp[3] = value->v.ipaddress[3]; - return (0); } @@ -173,12 +172,12 @@ int ip6_save(struct snmp_value *value, struct snmp_context *ctx, u_char *valp) { - if ((ctx->scratch->ptr1 = malloc(sizeof(u_int8_t)*16)) == NULL) - return (SNMP_ERR_RES_UNAVAIL); - ctx->scratch->ptr1 = *valp; - for (int i = 0; i < 16; i++) - valp[i] = value->v.ipaddress6[i]; - return (0); + if ((ctx->scratch->ptr1 = malloc(sizeof(u_int8_t)*16)) == NULL) + return (SNMP_ERR_RES_UNAVAIL); + ctx->scratch->ptr1 = *valp; + for (int i = 0; i < 16; i++) + valp[i] = value->v.ipaddress6[i]; + return (0); } /* @@ -187,11 +186,10 @@ void ip_rollback(struct snmp_context *ctx, u_char *valp) { - - valp[0] = ctx->scratch->int1 >> 24; - valp[1] = ctx->scratch->int1 >> 16; - valp[2] = ctx->scratch->int1 >> 8; - valp[3] = ctx->scratch->int1; + valp[0] = ctx->scratch->int1 >> 24; + valp[1] = ctx->scratch->int1 >> 16; + valp[2] = ctx->scratch->int1 >> 8; + valp[3] = ctx->scratch->int1; } /* @@ -200,11 +198,12 @@ void ip6_rollback(struct snmp_context *ctx, u_char *valp) { - *valp = (u_char)ctx->scratch->ptr1; + *valp = (u_char)ctx->scratch->ptr1; + free(ctx->scratch->ptr1); } /* - * Nothing to do for commit + * Nothing to do for IPv4 commit */ void ip_commit(struct snmp_context *ctx __unused) @@ -212,18 +211,25 @@ } /* + * Nothing to do for IPv6 commit + */ +void +ip6_commit(struct snmp_context *ctx __unused) +{ +} + +/* * Retrieve an IPv4 address */ int ip_get(struct snmp_value *value, u_char *valp) { - value->v.ipaddress[0] = valp[0]; - value->v.ipaddress[1] = valp[1]; - value->v.ipaddress[2] = valp[2]; - value->v.ipaddress[3] = valp[3]; - + value->v.ipaddress[0] = valp[0]; + value->v.ipaddress[1] = valp[1]; + value->v.ipaddress[2] = valp[2]; + value->v.ipaddress[3] = valp[3]; - return (SNMP_ERR_NOERROR); + return (SNMP_ERR_NOERROR); } /* @@ -232,13 +238,12 @@ int ip6_get(struct snmp_value *value, u_char *valp) { - for (int i = 0; i < 16; i++){ - value->v.ipaddress6[i] = valp[i]; - } - return (SNMP_ERR_NOERROR); + for (int i = 0; i < 16; i++) { + value->v.ipaddress6[i] = valp[i]; + } + return (SNMP_ERR_NOERROR); } - /* * Object ID support * @@ -354,28 +359,29 @@ } case SNMP_SYNTAX_IPADDRESS: - { u_int8_t *pval; + { + u_int8_t *pval; u_int i; switch (oid->len) { - case 4: if (sub + 4 > oid->len) + case 4: + if (sub + 4 > oid->len) goto err; - //pval = va_arg(ap, u_int8_t *); - pval = malloc(sizeof(u_int8_t)*4); - for (i = 0; i < 4; i++) { - if (oid->subs[sub] > 0xff) - goto err; - pval[i] = oid->subs[sub++]; - } + pval = va_arg(ap, u_int8_t *); + 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 *); - pval = malloc(sizeof(u_int8_t)*16); - for (i = 0; i < 16; i++) { - pval[i] = oid->subs[sub++]; - } + case 16: + if (sub + 16 > oid->len) + goto err; + pval = va_arg(ap, u_int8_t *); + for (i = 0; i < 16; i++) { + pval[i] = oid->subs[sub++]; + } default: return (NULL); Modified: soc2014/shonali/head/contrib/bsnmp/snmpd/snmpmod.h ============================================================================== --- soc2014/shonali/head/contrib/bsnmp/snmpd/snmpmod.h Sat Aug 9 05:00:34 2014 (r272115) +++ soc2014/shonali/head/contrib/bsnmp/snmpd/snmpmod.h Sat Aug 9 08:40:17 2014 (r272116) @@ -475,8 +475,8 @@ #define SNMP_TAG_SIZ (255 + 1) enum target_domain { - TransportAddressIPv4 = 0, - TransportAddressIPv6 = 1, + TransportAddressIPv4 = 0, + TransportAddressIPv6 = 1, }; struct target_address { Modified: soc2014/shonali/head/contrib/bsnmp/snmpd/trans_udpv6.c ============================================================================== --- soc2014/shonali/head/contrib/bsnmp/snmpd/trans_udpv6.c Sat Aug 9 05:00:34 2014 (r272115) +++ soc2014/shonali/head/contrib/bsnmp/snmpd/trans_udpv6.c Sat Aug 9 08:40:17 2014 (r272116) @@ -3,7 +3,13 @@ * Fraunhofer Institute for Open Communication Systems (FhG Fokus). * All rights reserved. * - * Author: Harti Brandt + * Author: Harti Brandt + * + * Copyright (c) 2014 The FreeBSD Foundation + * All rights reserved. + * + * Portions of this software were developed by Shonali Balakrishna + * as a Google Summer of Code student working for The FreeBSD Foundation. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -66,7 +72,7 @@ udpv6_close_port, udpv6_init_port, udpv6_send, - udpv6_recv + udpv6_recv }; static struct transport *my_trans; @@ -113,23 +119,8 @@ syslog(LOG_ERR, "creating UDP socket: %m"); return (SNMP_ERR_RES_UNAVAIL); } - - ip[0] = p->addr[0] >> 120; - ip[1] = p->addr[1] >> 112; - ip[2] = p->addr[2] >> 104; - ip[3] = p->addr[3] >> 96; - ip[4] = p->addr[4] >> 88; - ip[5] = p->addr[5] >> 80; - ip[6] = p->addr[6] >> 72; - ip[7] = p->addr[7] >> 64; - ip[8] = p->addr[8] >> 56; - ip[9] = p->addr[9] >> 48; - ip[10] = p->addr[10] >> 40; - ip[11] = p->addr[11] >> 32; - ip[12] = p->addr[12] >> 24; - ip[13] = p->addr[13] >> 16; - ip[14] = p->addr[14] >> 8; - ip[15] = p->addr[15] >> 0; + + inet_ntop(AF_INET6, &(p->addr), &ip, INET6_ADDRSTRLEN); /* Need to check - can use getaddrinfo instead to fill up addr structure */ memset(&addr, 0, sizeof(addr)); @@ -138,7 +129,7 @@ addr.sin6_family = AF_INET6; addr.sin6_len = sizeof(addr); if ((addr.sin6_addr.s6_addr == in6addr_any.s6_addr) && - ( setsockopt(p->input.fd, IPPROTO_IPV6, IPV6_V6ONLY, &on, + (setsockopt(p->input.fd, IPPROTO_IPV6, IPV6_V6ONLY, &on, sizeof(on)) == -1)) { syslog(LOG_ERR, "setsockopt(IP_RECVDSTADDR): %m"); close(p->input.fd); Modified: soc2014/shonali/head/contrib/bsnmp/snmpd/trans_udpv6.h ============================================================================== --- soc2014/shonali/head/contrib/bsnmp/snmpd/trans_udpv6.h Sat Aug 9 05:00:34 2014 (r272115) +++ soc2014/shonali/head/contrib/bsnmp/snmpd/trans_udpv6.h Sat Aug 9 08:40:17 2014 (r272116) @@ -3,7 +3,13 @@ * Fraunhofer Institute for Open Communication Systems (FhG Fokus). * All rights reserved. * - * Author: Harti Brandt + * Author: Harti Brandt + * + * Copyright (c) 2014 The FreeBSD Foundation + * All rights reserved. + * + * Portions of this software were developed by Shonali Balakrishna + * as a Google Summer of Code student working for The FreeBSD Foundation. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions