From nobody Mon May 16 02:33:07 2022 X-Original-To: dev-commits-src-branches@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 E63B11AE5938; Mon, 16 May 2022 02:33:07 +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 4L1jwM65hqz4XD1; Mon, 16 May 2022 02:33:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1652668387; 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=P208FjyrnQi2GnjI4j/wzNra/ZZ+t36gB/Jz89wRm1s=; b=JRSfyuwtaplFKK1CqkXblvNhry0zpXUC+p/PAakUYvtYwbmKIx5+bZJZAtqVm8z6dvjsgy p+XgpFQPoDwW0bidMaT2q3MvsiGH/sTfE8kZvKIcvCcHJsG14lUvu9RtgZgALV4JpfVmlT BEEEm6X1Xy5V6QfNs65JDSGr0xZdhprwmz9JHiW4UqbR6VJ6+vVpvlJ0lKL/i7kzcAtNmc Mhg70oFWTwtbIoqF+mtylzF8c6RMTkXv+Blj1L1jpiM7kgBhz12DtSQPjnq27ZGX4VcNag cgdSAJ520SxNMbNis6qmSoT3Y3yhwTQ4V9Sa3vYOvEVVSZPqitlvSfycgGRLKw== 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 B2A9917C1D; Mon, 16 May 2022 02:33:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 24G2X76s055843; Mon, 16 May 2022 02:33:07 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 24G2X7jn055842; Mon, 16 May 2022 02:33:07 GMT (envelope-from git) Date: Mon, 16 May 2022 02:33:07 GMT Message-Id: <202205160233.24G2X7jn055842@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Eugene Grosbein Subject: git: 5c332527d15f - stable/13 - ng_pppoe: introduce new sysctl net.graph.pppoe.lcp_pcp List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: eugen X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 5c332527d15fa3bd93e157477454dfe0bab68cd7 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1652668387; 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=P208FjyrnQi2GnjI4j/wzNra/ZZ+t36gB/Jz89wRm1s=; b=Ww/R3t4Kyz84mUqbq1IwJO/3+jIvIc7be2PDLegLeolySHPnBgMvuprs2pFS+R2Di3rFhv Vb1sdRFaak0e7UzUanxC3lagxT1z7/D5fMWd2MjE72EqP+WYcJ0uWkgFEsKrFrba+e56Kl S8xr0hu2X1p6Wzvw+FeCy5V+gDldN0IAwnOf2LeKnU6GwaNWGXVUtrYjY4SJTwau/AmR05 oz0rlhjnh1rRy9zJEz/XV+sOGIGOQppdiLZK6PumNm8K6PxQj3cVy0QKRv6E0C4GzsAxvA XsERJXXHQuDVkNJfcVP2cZv/9WJQ2zejnb7pj8PAWMdpou4H4mgAwrdvLQ6Rog== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1652668387; a=rsa-sha256; cv=none; b=Cc4OaZJqm46xH8qT0fwIfG6l7ArQ1k89ISLTTcGj+2WXS+hNoxp9NeBTlAeW5DjXQObxIu V8IQ7na8X0DpbP+EJHpRg22Y4nOjCmYQgNEvbq5GTbLVY29LpZR18LTsz1Skb5Fj/jDo8U u92kKFn10B5aAc+RTinEIDuzIKGtsMdBDup5v8ulizDTSJWwfJhwI78f8lBxLIB1O2zcMj Sfk+s1Fni0Gw/KPM+MP3zzmBDOeSQPlZIeQsQoqHWnklJCZOlWg0kDPVvncCq9YKL9pWWi f3HXQIveJdZnAADEDuvW0IBphDt9f3E1jwpbpVKMR5Qn0pS3jWFqCVM1QPmtmQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by eugen: URL: https://cgit.FreeBSD.org/src/commit/?id=5c332527d15fa3bd93e157477454dfe0bab68cd7 commit 5c332527d15fa3bd93e157477454dfe0bab68cd7 Author: Eugene Grosbein AuthorDate: 2022-05-01 16:34:08 +0000 Commit: Eugene Grosbein CommitDate: 2022-05-16 02:31:56 +0000 ng_pppoe: introduce new sysctl net.graph.pppoe.lcp_pcp New sysctl allows to mark transmitted PPPoE LCP Control ethernet frames with needed 3-bit Priority Code Point (PCP) value. Confirming driver like if_vlan(4) uses the value to fill IEEE 802.1p class of service field. This is similar to Cisco IOS "control-packets vlan cos priority" command. It helps to avoid premature disconnection of user sessions due to control frame drops (LCP Echo etc.) if network infrastructure has a botteleck at a switch or the xdsl DSLAM. See also: https://sourceforge.net/p/mpd/discussion/44692/thread/c7abe70e3a/ Tested by: Klaus Fokuhl at SourceForge (cherry picked from commit 2e547442ab3822d3d7c46a68f152032ef5fe337c) (cherry picked from commit 28903f396af4b151e16ea606cda66a9244fb179f) --- share/man/man4/ng_pppoe.4 | 17 +++++++++++++++-- sys/netgraph/ng_pppoe.c | 22 ++++++++++++++++++++++ 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/share/man/man4/ng_pppoe.4 b/share/man/man4/ng_pppoe.4 index d4ca53e68714..ff53d4ef3a95 100644 --- a/share/man/man4/ng_pppoe.4 +++ b/share/man/man4/ng_pppoe.4 @@ -35,7 +35,7 @@ .\" $FreeBSD$ .\" $Whistle: ng_pppoe.8,v 1.1 1999/01/25 23:46:27 archie Exp $ .\" -.Dd February 14, 2018 +.Dd May 1, 2022 .Dt NG_PPPOE 4 .Os .Sh NAME @@ -320,6 +320,18 @@ This node shuts down upon receipt of a control message, when all session have been disconnected or when the .Dv ethernet hook is disconnected. +.Sh SYSCTL VARIABLES +The node can mark transmitted LCP Ethernet packets (protocol 0xc021) +with 3-bit Priority Code Point (PCP) referring to IEEE 802.1p +class of service with following +.Xr sysctl 8 +variable. +.Bl -tag -width indent +.It Va net.graph.pppoe.lcp_pcp: 0..7 (default: 0) +Set it to non-zero value to be used by parent network interface driver +like +.Xr vlan 4 +.El .Sh EXAMPLES The following code uses .Dv libnetgraph @@ -556,7 +568,8 @@ setup(char *ethername, char *service, char *sessname, .Xr ng_ppp 4 , .Xr ng_socket 4 , .Xr ngctl 8 , -.Xr ppp 8 +.Xr ppp 8 , +.Xr vlan 4 .Rs .%A L. Mamakos .%A K. Lidl diff --git a/sys/netgraph/ng_pppoe.c b/sys/netgraph/ng_pppoe.c index e07f77b9d541..92a17286ccae 100644 --- a/sys/netgraph/ng_pppoe.c +++ b/sys/netgraph/ng_pppoe.c @@ -49,8 +49,13 @@ #include #include #include +#include +#include #include #include +#include +#include +#include #include #include @@ -64,8 +69,19 @@ static MALLOC_DEFINE(M_NETGRAPH_PPPOE, "netgraph_pppoe", "netgraph pppoe node"); #define M_NETGRAPH_PPPOE M_NETGRAPH #endif +/* Some PPP protocol numbers we're interested in */ +#define PROT_LCP 0xc021 + #define SIGNOFF "session closed" +VNET_DEFINE_STATIC(u_int32_t, ng_pppoe_lcp_pcp) = 0; +#define V_ng_pppoe_lcp_pcp VNET(ng_pppoe_lcp_pcp) + +SYSCTL_NODE(_net_graph, OID_AUTO, pppoe, CTLFLAG_RW, 0, "PPPoE"); +SYSCTL_UINT(_net_graph_pppoe, OID_AUTO, lcp_pcp, + CTLFLAG_VNET | CTLFLAG_RW, &VNET_NAME(ng_pppoe_lcp_pcp), 0, + "Set PCP for LCP"); + /* * This section contains the netgraph method declarations for the * pppoe node. These methods define the netgraph pppoe 'type'. @@ -1438,6 +1454,12 @@ ng_pppoe_rcvdata(hook_p hook, item_p item) mtod(m, u_char *)[1] == 0x03) m_adj(m, 2); } + + if (V_ng_pppoe_lcp_pcp && m->m_pkthdr.len >= 2 && + m->m_len >= 2 && (m = m_pullup(m, 2)) && + mtod(m, uint16_t *)[0] == htons(PROT_LCP)) + EVL_APPLY_PRI(m, (uint8_t)(V_ng_pppoe_lcp_pcp & 0x7)); + /* * Bang in a pre-made header, and set the length up * to be correct. Then send it to the ethernet driver.