From nobody Fri Jan 12 17:53:02 2024 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TBTf64KPZz57FfC; Fri, 12 Jan 2024 17:53:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TBTf63T0Vz4kXh; Fri, 12 Jan 2024 17:53:02 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705081982; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=demYKFCs0RzN1twlGoRge3ZPGHKttyYwrDtZyXXx8l4=; b=ISOKX8o6mfw8WXi1FLkkaa4cxbSRqZ+6OHsZpu+fQ4768hSv6jnN2fy4GVzUVVYlRirJTA 1iuEW95PU2ZTDiO9L0a39tGJtdsZQx0W1nTBoG45B13DhbbvA/aIlgzq9Yq4qavu3ehO6W gftwrzhVsnwWnWoGinpn3d1xdgpZ0dC1gT7mYEQ1hRJxkmAg62chdenFUWPFZBGrWkfPEx dg+Wk7/wpXXjFDUBXnYAqbn6gCni+AOEZG7TMCSsoSeGnOmd190FDO1WCOkgQPEuFsWmEf rSa0MRFQUXtLqN6cQaCCfWknwOPpn0KXl8cTNSnMbUcapxabfi5DO8JtD+pKUg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1705081982; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=demYKFCs0RzN1twlGoRge3ZPGHKttyYwrDtZyXXx8l4=; b=n/Os8PTMZ52Oy7xmEjdssh+2zr80QNBTpQOnN8NO1kjyEW8nP0ZAdmi2wJxm2k3dZsPGsM 4r/AvpQSLOhiJMNzv7X4KWCzDRK1I/IWX4u5VqR78lnDpZVn5jrwuuX27h1LfZMqdYSsGE YSw5cEwOfIRD/ATbH+s/O72Zk+50O8U9o+HGvXy4fjWcc+vPgdjwp2plsAofD5ZNdjYRkQ 9ADGV77r8JJ5QV+O1COVGv/9eO5vDBTfojClam7V0807yTvs+drbkHkVdYQcoA7tt3FCSZ 0XYrIwEMrqh70k8+cNpJ1nmvF1fCOH6j4//3p0vRqBU4ErzK8M49RkTaYBf/9g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1705081982; a=rsa-sha256; cv=none; b=s987mwQk34q2AnFb753y8qAE1icIMvH/3b+vWa6OW8+QKq/EOoDZwNeNwHrRJTmfPkSZ5k 1kpyGJaAsOJ0d4ViYnz57C5pGppUFH7YgakZ23xirYw54OwHgeT8N5kKomNl/uxsjD1p2z s/+5FgZV8RUct2X5T2bdcDe0RdlO7NIp0cc88zcd3gVov6G8N5w67jchXY2c6s+k0ZWfzo M2gwS7rI3FiDsNGeSoXjNi4e0XRitgfKSE9C9d8iyO+S+LIYnrzQanZHE2Ci3/kX5OfCqJ 0Nv1vye83x/gdUku3LNI1rVNnPg93X/BvWUm925aEnMTwceQvyFpTPWOZeLJQQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TBTf62YJQz1BcL; Fri, 12 Jan 2024 17:53:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 40CHr2qs099425; Fri, 12 Jan 2024 17:53:02 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40CHr2DF099422; Fri, 12 Jan 2024 17:53:02 GMT (envelope-from git) Date: Fri, 12 Jan 2024 17:53:02 GMT Message-Id: <202401121753.40CHr2DF099422@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Michael Tuexen Subject: git: f6aae554b076 - stable/13 - if_tuntap: trigger the bpf hook on transmitting for the tap interface List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: f6aae554b0764dcf9fcb9fe886bdf722f3856e0d Auto-Submitted: auto-generated The branch stable/13 has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=f6aae554b0764dcf9fcb9fe886bdf722f3856e0d commit f6aae554b0764dcf9fcb9fe886bdf722f3856e0d Author: Michael Tuexen AuthorDate: 2023-11-05 19:32:46 +0000 Commit: Michael Tuexen CommitDate: 2024-01-12 17:52:36 +0000 if_tuntap: trigger the bpf hook on transmitting for the tap interface The tun interface triggers the bpf hook when a packet is transmitted, the tap interface triggers it when the packet is read from the character device. This is inconsistent. So fix the tap device such that it behaves like the tun device. This is needed for adding support for the tap device to packetdrill. Reviewed by: kevans, rscheff Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D42467 (cherry picked from commit 35af22ac986c4f3e8160c943a478492e748b6f23) --- sys/net/if_tuntap.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/sys/net/if_tuntap.c b/sys/net/if_tuntap.c index d9243ae8bb6c..29e9c05e52bc 100644 --- a/sys/net/if_tuntap.c +++ b/sys/net/if_tuntap.c @@ -926,6 +926,16 @@ tunstart_l2(struct ifnet *ifp) TUN_UNLOCK(tp); } /* tunstart_l2 */ +static int +tap_transmit(struct ifnet *ifp, struct mbuf *m) +{ + int error; + + BPF_MTAP(ifp, m); + IFQ_HANDOFF(ifp, m, error); + return (error); +} + /* XXX: should return an error code so it can fail. */ static void tuncreate(struct cdev *dev) @@ -965,6 +975,8 @@ tuncreate(struct cdev *dev) if ((tp->tun_flags & TUN_L2) != 0) { ifp->if_init = tunifinit; ifp->if_start = tunstart_l2; + ifp->if_transmit = tap_transmit; + ifp->if_qflush = if_qflush; ether_gen_addr(ifp, &eaddr); ether_ifattach(ifp, eaddr.octet); @@ -1706,9 +1718,6 @@ tunread(struct cdev *dev, struct uio *uio, int flag) } TUN_UNLOCK(tp); - if ((tp->tun_flags & TUN_L2) != 0) - BPF_MTAP(ifp, m); - len = min(tp->tun_vhdrlen, uio->uio_resid); if (len > 0) { struct virtio_net_hdr_mrg_rxbuf vhdr;