Re: git: 779fd0534466 - main - ifconfig: improve vlan options parsing

From: John Baldwin <jhb_at_FreeBSD.org>
Date: Fri, 28 Jan 2022 17:34:20 UTC
On 1/17/22 1:35 AM, Alexander V. Chernikov wrote:
> The branch main has been updated by melifaro:
> 
> URL: https://cgit.FreeBSD.org/src/commit/?id=779fd05344662aeec79c29470258bf657318eab3
> 
> commit 779fd05344662aeec79c29470258bf657318eab3
> Author:     Alexander V. Chernikov <melifaro@FreeBSD.org>
> AuthorDate: 2022-01-17 09:30:26 +0000
> Commit:     Alexander V. Chernikov <melifaro@FreeBSD.org>
> CommitDate: 2022-01-17 09:35:15 +0000
> 
>      ifconfig: improve vlan options parsing
>      
>      PR:     261136
>      Reported by:    Daniel O'Connor
>      MFC after:      2 weeks
> ---
>   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
> @@ -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);

Did you mean to leave this printf in?  I see it when adding a vlan interface now:

root@frodo:~ # ifconfig cxl0.200 create
CR: cxl0 200

-- 
John Baldwin