Date: Wed, 18 Jun 2014 17:50:40 GMT From: shonali@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r269724 - soc2014/shonali/head/contrib/bsnmp/snmpd Message-ID: <201406181750.s5IHoeQf090588@socsvn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: shonali Date: Wed Jun 18 17:50:39 2014 New Revision: 269724 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=269724 Log: ipv6 support in main.c Modified: soc2014/shonali/head/contrib/bsnmp/snmpd/main.c soc2014/shonali/head/contrib/bsnmp/snmpd/trans_udpv6.c Modified: soc2014/shonali/head/contrib/bsnmp/snmpd/main.c ============================================================================== --- soc2014/shonali/head/contrib/bsnmp/snmpd/main.c Wed Jun 18 16:03:58 2014 (r269723) +++ soc2014/shonali/head/contrib/bsnmp/snmpd/main.c Wed Jun 18 17:50:39 2014 (r269724) @@ -1107,11 +1107,11 @@ * Each receive should return one datagram. */ static int -recv_dgram(struct port_input *pi, struct in_addr *laddr) +recv_dgram(struct port_input *pi, struct in6_addr *laddr) { u_char embuf[1000]; char cbuf[CMSG_SPACE(SOCKCREDSIZE(CMGROUP_MAX)) + - CMSG_SPACE(sizeof(struct in_addr))]; + CMSG_SPACE(sizeof(struct in6_addr))]; struct msghdr msg; struct iovec iov[1]; ssize_t len; @@ -1161,9 +1161,9 @@ for (cmsg = CMSG_FIRSTHDR(&msg); cmsg != NULL; cmsg = CMSG_NXTHDR(&msg, cmsg)) { - if (cmsg->cmsg_level == IPPROTO_IP && - cmsg->cmsg_type == IP_RECVDSTADDR) - memcpy(laddr, CMSG_DATA(cmsg), sizeof(struct in_addr)); + if (cmsg->cmsg_level == IPPROTO_IPV6 && + cmsg->cmsg_type == IP_RECVDSTADDR) /* Check for ipv6 alternative */ + memcpy(laddr, CMSG_DATA(cmsg), sizeof(struct in6_addr)); if (cmsg->cmsg_level == SOL_SOCKET && cmsg->cmsg_type == SCM_CREDS) cred = (struct sockcred *)CMSG_DATA(cmsg); @@ -1186,7 +1186,7 @@ struct snmp_pdu pdu; enum snmpd_input_err ierr, ferr; enum snmpd_proxy_err perr; - int32_t vi; + int32_t vi[4]; int ret; ssize_t slen; #ifdef USE_TCPWRAPPERS @@ -1194,7 +1194,7 @@ #endif struct msghdr msg; struct iovec iov[1]; - char cbuf[CMSG_SPACE(sizeof(struct in_addr))]; + char cbuf[CMSG_SPACE(sizeof(struct in6_addr))]; struct cmsghdr *cmsgp; /* get input depending on the transport */ @@ -1204,16 +1204,16 @@ ret = recv_stream(pi); } else { - struct in_addr *laddr; + struct in6_addr *laddr; - memset(cbuf, 0, CMSG_SPACE(sizeof(struct in_addr))); + memset(cbuf, 0, CMSG_SPACE(sizeof(struct in6_addr))); msg.msg_control = cbuf; - msg.msg_controllen = CMSG_SPACE(sizeof(struct in_addr)); + msg.msg_controllen = CMSG_SPACE(sizeof(struct in6_addr)); cmsgp = CMSG_FIRSTHDR(&msg); - cmsgp->cmsg_len = CMSG_LEN(sizeof(struct in_addr)); - cmsgp->cmsg_level = IPPROTO_IP; - cmsgp->cmsg_type = IP_SENDSRCADDR; - laddr = (struct in_addr *)CMSG_DATA(cmsgp); + cmsgp->cmsg_len = CMSG_LEN(sizeof(struct in6_addr)); + cmsgp->cmsg_level = IPPROTO_IPV6; + cmsgp->cmsg_type = IP_SENDSRCADDR; /* Check for ipv6 alternative */ + laddr = (struct in6_addr *)CMSG_DATA(cmsgp); ret = recv_dgram(pi, laddr); @@ -1232,7 +1232,7 @@ */ if (pi->peer->sa_family != AF_LOCAL && inet_ntop(pi->peer->sa_family, - &((const struct sockaddr_in *)(const void *)pi->peer)->sin_addr, + &((const struct sockaddr_in6 *)(const void *)pi->peer)->sin6_addr, client, sizeof(client)) != NULL) { request_set(&req, RQ_CLIENT_ADDR, client, 0); if (hosts_access(&req) == 0) { Modified: soc2014/shonali/head/contrib/bsnmp/snmpd/trans_udpv6.c ============================================================================== --- soc2014/shonali/head/contrib/bsnmp/snmpd/trans_udpv6.c Wed Jun 18 16:03:58 2014 (r269723) +++ soc2014/shonali/head/contrib/bsnmp/snmpd/trans_udpv6.c Wed Jun 18 17:50:39 2014 (r269724) @@ -112,7 +112,6 @@ return (SNMP_ERR_RES_UNAVAIL); } - /* Need to check - modify ip so as to store ipv6 */ ip[0] = htonl((p->addr[0] << 24) | (p->addr[1] << 16) | (p->addr[2] << 8) | p->addr[3]); ip[1] = htonl((p->addr[4] << 24) | (p->addr[5] << 16) | (p->addr[6] << 8) |
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201406181750.s5IHoeQf090588>
