Date: Mon, 28 Mar 2022 15:26:04 GMT From: "Alexander V. Chernikov" <melifaro@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Subject: git: 2eb4ac1e6fc9 - releng/13.1 - ifconfig: improve vlan options parsing Message-ID: <202203281526.22SFQ4xG086991@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch releng/13.1 has been updated by melifaro: URL: https://cgit.FreeBSD.org/src/commit/?id=2eb4ac1e6fc946ca8d175863b16602885fae61b7 commit 2eb4ac1e6fc946ca8d175863b16602885fae61b7 Author: Alexander V. Chernikov <melifaro@FreeBSD.org> AuthorDate: 2022-01-17 09:30:26 +0000 Commit: Alexander V. Chernikov <melifaro@FreeBSD.org> CommitDate: 2022-03-28 15:25:23 +0000 ifconfig: improve vlan options parsing PR: 261136 Reported by: Daniel O'Connor Approved by: re(gjb) MFC after: 2 weeks (cherry picked from commit 779fd05344662aeec79c29470258bf657318eab3) (cherry picked from commit 157bf2c9964a54124e05bb7c354d8e5ad784802a) --- sbin/ifconfig/ifvlan.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/sbin/ifconfig/ifvlan.c b/sbin/ifconfig/ifvlan.c index 60f97338ee27..1e74b504fc26 100644 --- a/sbin/ifconfig/ifvlan.c +++ b/sbin/ifconfig/ifvlan.c @@ -126,11 +126,6 @@ vlan_parse_ethervid(const char *name) strlcpy(ifname, name, IFNAMSIZ); if ((cp = strrchr(ifname, '.')) == NULL) return; - /* - * Don't mix vlan/vlandev parameters with dot notation. - */ - if (params.vlr_tag != NOTAG || params.vlr_parent[0] != '\0') - errx(1, "ambiguous vlan specification"); /* * Derive params from interface name: "parent.vid". */ @@ -144,8 +139,20 @@ vlan_parse_ethervid(const char *name) if ((*cp != '\0') || (vid & ~0xFFF)) errx(1, "invalid vlan tag"); - strlcpy(params.vlr_parent, ifname, IFNAMSIZ); - params.vlr_tag = (vid & 0xFFF); + /* + * allow "devX.Y vlandev devX vlan Y" syntax + */ + if (params.vlr_tag == NOTAG || params.vlr_tag == vid) + params.vlr_tag = vid; + else + errx(1, "ambiguous vlan specification"); + + /* Restrict overriding interface name */ + if (params.vlr_parent[0] == '\0' || !strcmp(params.vlr_parent, ifname)) + strlcpy(params.vlr_parent, ifname, IFNAMSIZ); + else + errx(1, "ambiguous vlan specification"); + printf("CR: %s %d\n", params.vlr_parent, params.vlr_tag); } static void
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202203281526.22SFQ4xG086991>