From owner-svn-soc-all@FreeBSD.ORG Sat Aug 9 21:05:30 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 4E24D8C1 for ; Sat, 9 Aug 2014 21:05:30 +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 39CFF285A for ; Sat, 9 Aug 2014 21:05:30 +0000 (UTC) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.9/8.14.9) with ESMTP id s79L5Ujm087179 for ; Sat, 9 Aug 2014 21:05:30 GMT (envelope-from shonali@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.9/8.14.9/Submit) id s79L5SN5086744 for svn-soc-all@FreeBSD.org; Sat, 9 Aug 2014 21:05:28 GMT (envelope-from shonali@FreeBSD.org) Date: Sat, 9 Aug 2014 21:05:28 GMT Message-Id: <201408092105.s79L5SN5086744@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: r272148 - in soc2014/shonali/head: contrib/bsnmp/snmpd usr.sbin/bsnmpd/bsnmpd 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 21:05:30 -0000 Author: shonali Date: Sat Aug 9 21:05:28 2014 New Revision: 272148 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=272148 Log: Moved check_priv_XX functions to transport modules, modify Makefile to compile trans_udpv6.c Modified: soc2014/shonali/head/contrib/bsnmp/snmpd/main.c soc2014/shonali/head/contrib/bsnmp/snmpd/trans_lsock.c soc2014/shonali/head/contrib/bsnmp/snmpd/trans_udp.c soc2014/shonali/head/contrib/bsnmp/snmpd/trans_udpv6.c soc2014/shonali/head/usr.sbin/bsnmpd/bsnmpd/Makefile Modified: soc2014/shonali/head/contrib/bsnmp/snmpd/main.c ============================================================================== --- soc2014/shonali/head/contrib/bsnmp/snmpd/main.c Sat Aug 9 20:40:03 2014 (r272147) +++ soc2014/shonali/head/contrib/bsnmp/snmpd/main.c Sat Aug 9 21:05:28 2014 (r272148) @@ -1028,33 +1028,6 @@ pi->length -= pi->consumed; } -static void -check_priv_dgram(struct port_input *pi, struct sockcred *cred) -{ - - /* process explicitly sends credentials */ - if (cred) - pi->priv = (cred->sc_euid == 0); - else - pi->priv = 0; -} - -static void -check_priv_stream(struct port_input *pi) -{ - struct xucred ucred; - socklen_t ucredlen; - - /* obtain the accept time credentials */ - ucredlen = sizeof(ucred); - - if (getsockopt(pi->fd, 0, LOCAL_PEERCRED, &ucred, &ucredlen) == 0 && - ucredlen >= sizeof(ucred) && ucred.cr_version == XUCRED_VERSION) - pi->priv = (ucred.cr_uid == 0); - else - pi->priv = 0; -} - /* * Input from a socket */ @@ -1072,6 +1045,7 @@ #ifdef USE_TCPWRAPPERS char client[16]; #endif + struct msghdr msg; struct iovec iov[1]; ret = tport->transport->vtab->recv(tport, pi); Modified: soc2014/shonali/head/contrib/bsnmp/snmpd/trans_lsock.c ============================================================================== --- soc2014/shonali/head/contrib/bsnmp/snmpd/trans_lsock.c Sat Aug 9 20:40:03 2014 (r272147) +++ soc2014/shonali/head/contrib/bsnmp/snmpd/trans_lsock.c Sat Aug 9 21:05:28 2014 (r272148) @@ -33,6 +33,7 @@ #include #include #include +#include #include #include @@ -59,6 +60,7 @@ static ssize_t lsock_send(struct tport *, const u_char *, size_t, const struct sockaddr *, size_t); static ssize_t lsock_recv(struct tport *, struct port_input *); +static void check_priv_stream(struct port_input *); /* exported */ const struct transport_def lsock_trans = { @@ -471,6 +473,22 @@ return (0); } +static void +check_priv_stream(struct port_input *pi) +{ + struct xucred ucred; + socklen_t ucredlen; + + /* obtain the accept time credentials */ + ucredlen = sizeof(ucred); + + if (getsockopt(pi->fd, 0, LOCAL_PEERCRED, &ucred, &ucredlen) == 0 && + ucredlen >= sizeof(ucred) && ucred.cr_version == XUCRED_VERSION) + pi->priv = (ucred.cr_uid == 0); + else + pi->priv = 0; +} + /* * Dependency to create a lsock port */ Modified: soc2014/shonali/head/contrib/bsnmp/snmpd/trans_udp.c ============================================================================== --- soc2014/shonali/head/contrib/bsnmp/snmpd/trans_udp.c Sat Aug 9 20:40:03 2014 (r272147) +++ soc2014/shonali/head/contrib/bsnmp/snmpd/trans_udp.c Sat Aug 9 21:05:28 2014 (r272148) @@ -32,6 +32,7 @@ */ #include #include +#include #include #include @@ -56,6 +57,7 @@ const struct sockaddr *, size_t); static ssize_t udp_recv(struct tport *, struct port_input *); static int recv_dgram(struct port_input *, struct in_addr *); +static void check_priv_dgram(struct port_input *, struct sockcred *); /* exported */ const struct transport_def udp_trans = { @@ -326,6 +328,17 @@ return (0); } +static void +check_priv_dgram(struct port_input *pi, struct sockcred *cred) +{ + + /* process explicitly sends credentials */ + if (cred) + pi->priv = (cred->sc_euid == 0); + else + pi->priv = 0; +} + /* * Port table */ Modified: soc2014/shonali/head/contrib/bsnmp/snmpd/trans_udpv6.c ============================================================================== --- soc2014/shonali/head/contrib/bsnmp/snmpd/trans_udpv6.c Sat Aug 9 20:40:03 2014 (r272147) +++ soc2014/shonali/head/contrib/bsnmp/snmpd/trans_udpv6.c Sat Aug 9 21:05:28 2014 (r272148) @@ -38,6 +38,7 @@ */ #include #include +#include #include #include @@ -62,6 +63,7 @@ const struct sockaddr *, size_t); static ssize_t udpv6_recv(struct tport *, struct port_input *); static int recv_v6dgram(struct port_input *, struct in6_addr *); +static void check_priv_dgram(struct port_input *, struct sockcred *); /* exported */ const struct transport_def udpv6_trans = { @@ -334,6 +336,17 @@ return (0); } +static void +check_priv_dgram(struct port_input *pi, struct sockcred *cred) +{ + + /* process explicitly sends credentials */ + if (cred) + pi->priv = (cred->sc_euid == 0); + else + pi->priv = 0; +} + /* * Port table */ Modified: soc2014/shonali/head/usr.sbin/bsnmpd/bsnmpd/Makefile ============================================================================== --- soc2014/shonali/head/usr.sbin/bsnmpd/bsnmpd/Makefile Sat Aug 9 20:40:03 2014 (r272147) +++ soc2014/shonali/head/usr.sbin/bsnmpd/bsnmpd/Makefile Sat Aug 9 21:05:28 2014 (r272148) @@ -8,11 +8,12 @@ .PATH: ${CONTRIB}/snmpd PROG= bsnmpd -SRCS= main.c action.c config.c export.c trap.c trans_udp.c trans_lsock.c +SRCS= main.c action.c config.c export.c trap.c trans_udp.c trans_lsock.c trans_udpv6.c SRCS+= oid.h tree.c tree.h XSYM= snmpMIB begemotSnmpdModuleTable begemotSnmpd begemotTrapSinkTable \ sysUpTime snmpTrapOID coldStart authenticationFailure \ begemotSnmpdTransUdp begemotSnmpdTransLsock begemotSnmpdLocalPortTable \ + begemotSnmpdTransIpv6Udp \ freeBSD freeBSDVersion CLEANFILES= oid.h tree.c tree.h MAN= bsnmpd.1 snmpmod.3