[Bridge] [PATCH] skip . and .. in accurately in isbridge()

Stephen Hemminger shemminger at vyatta.com
Mon Sep 5 09:43:21 PDT 2011


On Mon, 5 Sep 2011 22:58:07 +0800
Xiaochen Wang <wangxiaochen0 at gmail.com> wrote:

> Hi all,
> 
>  In commit f88f8 "Skip . and .. in foreach_bridge test", the code skips
>  all directories starting with dot.
> 
>  But if we create a bridge staring with dot, e.g. `.br0`, then `brctl show`
>  cannot show this one.
>  `.br0` should not be hidden, because we cannot find it except the command
>  `brctl show .br0`.
> 
> Signed-off-by: Xiaochen Wang <wangxiaochen0 at gmail.com>
> ---
>  libbridge/libbridge_init.c |    7 +++++--
>  1 files changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/libbridge/libbridge_init.c b/libbridge/libbridge_init.c
> index 1c1acbd..177a391 100644
> --- a/libbridge/libbridge_init.c
> +++ b/libbridge/libbridge_init.c
> @@ -49,9 +49,12 @@ static int isbridge(const struct dirent *entry)
>  	char path[SYSFS_PATH_MAX];
>  	struct stat st;
>  
> -	if (entry->d_name[0] == '.')
> +	if (entry->d_name[0] == '.'
> +	    && (entry->d_name[1] == '\0'
> +		|| (entry->d_name[1] == '.'
> +		    && entry->d_name[2] == '\0')))
>  		return 0;
> -	
> +
>  	snprintf(path, SYSFS_PATH_MAX, 
>  		 SYSFS_CLASS_NET "%s/bridge", entry->d_name);
>  	return stat(path, &st) == 0 && S_ISDIR(st.st_mode);

This was an accident originally, but allowing hidden bridges might be useful.
And is common for other commands to not show names starting with .


More information about the Bridge mailing list