diff --git a/libbridge/libbridge_devif.c b/libbridge/libbridge_devif.c
diff --git a/libbridge/libbridge_init.c b/libbridge/libbridge_init.c
index e2eab77..38b8a18 100644
--- a/libbridge/libbridge_init.c
+++ b/libbridge/libbridge_init.c
@@ -186,12 +186,15 @@ int br_foreach_port(const char *brname,
struct dirent **namelist;
char path[SYSFS_PATH_MAX];
- snprintf(path, SYSFS_PATH_MAX, SYSFS_CLASS_NET "%s/brport", brname);
+ snprintf(path, SYSFS_PATH_MAX, SYSFS_CLASS_NET "%s/brif", brname);
count = scandir(path, &namelist, 0, alphasort);
if (count < 0)
return old_foreach_port(brname, iterator, arg);
for (i = 0; i < count; i++) {
+ if (!strcmp(namelist[i]->d_name, ".") ||
+ !strcmp(namelist[i]->d_name, ".."))
+ continue;
if (iterator(brname, namelist[i]->d_name, arg))
break;
}