From owner-svn-src-all@freebsd.org Thu May 19 00:16:22 2016 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C83F2B41729; Thu, 19 May 2016 00:16:22 +0000 (UTC) (envelope-from kmacybsd@gmail.com) Received: from mail-io0-x241.google.com (mail-io0-x241.google.com [IPv6:2607:f8b0:4001:c06::241]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 8573113BE; Thu, 19 May 2016 00:16:22 +0000 (UTC) (envelope-from kmacybsd@gmail.com) Received: by mail-io0-x241.google.com with SMTP id d62so12376860iof.1; Wed, 18 May 2016 17:16:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc; bh=YtNO4PdRWbXdBOQwwaAJlteZ1x/YsA8q+za7AllZptw=; b=v1D/Yp7T+nS9SK2qWdi9YUurvASF5DRDU6bq5IPz+D5c7sL4/PJoufPfJUiW2TDzv8 TPO03/7rGdUTenGuftzYwtoa5nXCOlKmjMgENMgJpfIG4t0EFS/TOeNo5wJrUW6lJ0ug rT+tEp3oisfvO4FdDIiTs+ZlC5HZ7VrrLgh38tooQnGPoB25hJZ+UAWpRmtYVa1PX0Ks sMiz15R/IspEMQLJrgp5sdGpSwB/68rDVn+1kmDmt5j5yWgg5D+wx5F2eY37gFwkcAKi Q3CcqCr87UQ8AuJ9AKgvzssspaDdwTLTTbTkx608bP5gaelPdxM5D46GGmCC1r6w7923 mr8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:sender:in-reply-to:references:date :message-id:subject:from:to:cc; bh=YtNO4PdRWbXdBOQwwaAJlteZ1x/YsA8q+za7AllZptw=; b=hvt6hIgr2Q3LkZtPsjuoJMfVMeRrsFbQAxJlVNNcVaZP/Iw+DHABRhgeN8C33bs9n3 jd+wtrvHDJ/TTjTcfp1PkdLbv8qx9aQGEy81zwlKx/g55RnCtyog3zm26GgrLzF+22/9 iewBUybKtm46LOlfGhackZ05Ww1lytYijhdEqbJz1/zQkoUS6ySzY8FmgpKFwsAlSFec 6kf6C5is0oBE9JKifY89oQ71ViLPtEPRat4vrPnZIWOoXzQ/7w8w1YV5fkb0vmXbkPXi a4TLUycol7PWeePlvNKVCcaNU50Ty0V8r9z6shtPF4KuwvG3GCBg8CRlQO7OFLQutuBU ysKA== X-Gm-Message-State: AOPr4FVhdQoxgvUkrJq7q/0uMN7n/JytHbSIvxRBx5hTNOxpMWrt3cKXJr9YxoNDJgYyNDhzQgYK6dopAgR8qg== MIME-Version: 1.0 X-Received: by 10.107.37.16 with SMTP id l16mr6936220iol.138.1463616981715; Wed, 18 May 2016 17:16:21 -0700 (PDT) Sender: kmacybsd@gmail.com Received: by 10.107.140.8 with HTTP; Wed, 18 May 2016 17:16:21 -0700 (PDT) In-Reply-To: <20160518235830.GQ1015@FreeBSD.org> References: <201605180435.u4I4ZwYh025096@repo.freebsd.org> <20160518235830.GQ1015@FreeBSD.org> Date: Wed, 18 May 2016 17:16:21 -0700 X-Google-Sender-Auth: w26K9zV8iVVaYKZCl85r_daWJg0 Message-ID: Subject: Re: svn commit: r300113 - in head/sys: conf kern net sys From: "K. Macy" To: Gleb Smirnoff Cc: "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , "svn-src-head@freebsd.org" Content-Type: text/plain; charset=UTF-8 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 May 2016 00:16:22 -0000 Those are new. Please just patch iflib to use them and let's move on. -M On Wed, May 18, 2016 at 4:58 PM, Gleb Smirnoff wrote: > Hi! > > On Wed, May 18, 2016 at 04:35:58AM +0000, Scott Long wrote: > S> ============================================================================== > S> --- head/sys/net/if.c Wed May 18 04:04:14 2016 (r300112) > S> +++ head/sys/net/if.c Wed May 18 04:35:58 2016 (r300113) > S> @@ -3900,6 +3900,19 @@ if_multiaddr_count(if_t ifp, int max) > S> return (count); > S> } > S> > S> +int > S> +if_multi_apply(struct ifnet *ifp, int (*filter)(void *, struct ifmultiaddr *, int), void *arg) > S> +{ > S> + struct ifmultiaddr *ifma; > S> + int cnt = 0; > S> + > S> + if_maddr_rlock(ifp); > S> + TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) > S> + cnt += filter(arg, ifma, cnt); > S> + if_maddr_runlock(ifp); > S> + return (cnt); > S> +} > S> + > S> struct mbuf * > S> if_dequeue(if_t ifp) > S> { > > In my projects/ifnet a similar functions exist: > > /* > * Traversing through interface address lists. > */ > typedef void ifaddr_cb_t(void *, struct sockaddr *, struct sockaddr *, > struct sockaddr *); > typedef void ifmaddr_cb_t(void *, struct sockaddr *); > void if_foreach_addr(if_t, ifaddr_cb_t, void *); > void if_foreach_maddr(if_t, ifmaddr_cb_t, void *); > > /* > * Methods for drivers to access interface unicast and multicast > * addresses. Driver do not know 'struct ifaddr' neither 'struct ifmultiaddr'. > */ > void > if_foreach_addr(if_t ifp, ifaddr_cb_t cb, void *cb_arg) > { > struct ifaddr *ifa; > > IF_ADDR_RLOCK(ifp); > TAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) > (*cb)(cb_arg, ifa->ifa_addr, ifa->ifa_dstaddr, > ifa->ifa_netmask); > IF_ADDR_RUNLOCK(ifp); > } > > void > if_foreach_maddr(if_t ifp, ifmaddr_cb_t cb, void *cb_arg) > { > struct ifmultiaddr *ifma; > > IF_ADDR_RLOCK(ifp); > TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) > (*cb)(cb_arg, ifma->ifma_addr); > IF_ADDR_RUNLOCK(ifp); > } > > Do you mind if I adopt head to them instead of if_multi_apply()? > > -- > Totus tuus, Glebius.