[Bridge] libbridge<->sysfs interface - some bugs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,
 
I think I detected some bugs in libbridge 1.2. Probably none detected
them so far because of the fallback to ioctl() whenever anything fails.
On my system (user 32 bits, kernel 64 bits) the fallback doesn't work.

It would be nice BTW to have a compile time option that leaves the ioctl
fallback out...

Here's what I've found (first patch is a compilation patch I posted last
week):

diff -ru --strip-trailing-cr bridge-utils-1.2/libbridge/Makefile.in
/Arrow75/CN3XXX-SDK/linux/embedded_rootfs/build/bridge-utils-1.2/libbrid
ge/Makefile.in
--- bridge-utils-1.2/libbridge/Makefile.in	2006-09-09
09:30:32.000000000 +0300
+++
/Arrow75/CN3XXX-SDK/linux/embedded_rootfs/build/bridge-utils-1.2/libbrid
ge/Makefile.in	2006-12-31 10:21:01.584005800 +0200
@@ -5,7 +5,8 @@
 RANLIB=@RANLIB@
 
 CC=@CC@
-CFLAGS = -Wall -g $(KERNEL_HEADERS)
+CFLAGS = -Wall @CFLAGS@
+INCLUDE=$(KERNEL_HEADERS)
 
 prefix=@prefix@
 exec_prefix=@exec_prefix@
diff -ru --strip-trailing-cr
bridge-utils-1.2/libbridge/libbridge_devif.c
/Arrow75/CN3XXX-SDK/linux/embedded_rootfs/build/bridge-utils-1.2/libbrid
ge/libbridge_devif.c
--- bridge-utils-1.2/libbridge/libbridge_devif.c	2006-09-09
09:30:32.000000000 +0300
+++
/Arrow75/CN3XXX-SDK/linux/embedded_rootfs/build/bridge-utils-1.2/libbrid
ge/libbridge_devif.c	2007-01-01 08:22:29.063200300 +0200
@@ -56,7 +56,7 @@
 	if (!f) 
 		fprintf(stderr, "%s: %s\n", dev, strerror(errno));
 	else {
-		fscanf(f, "%d", &value);
+		fscanf(f, "%i", &value);
 		fclose(f);
 	}
 	return value;
@@ -282,7 +282,7 @@
 	char path[SYSFS_PATH_MAX];
 	FILE *f;
 
-	snprintf(path, SYSFS_PATH_MAX, SYSFS_CLASS_NET "%s/%s", bridge,
name);
+	snprintf(path, SYSFS_PATH_MAX, SYSFS_CLASS_NET "%s/bridge/%s",
bridge, name);
 
 	f = fopen(path, "w");
 	if (f) {
diff -ru --strip-trailing-cr bridge-utils-1.2/libbridge/libbridge_init.c
/Arrow75/CN3XXX-SDK/linux/embedded_rootfs/build/bridge-utils-1.2/libbrid
ge/libbridge_init.c
--- bridge-utils-1.2/libbridge/libbridge_init.c	2006-09-09
09:30:32.000000000 +0300
+++
/Arrow75/CN3XXX-SDK/linux/embedded_rootfs/build/bridge-utils-1.2/libbrid
ge/libbridge_init.c	2007-01-01 07:35:25.610075300 +0200
@@ -186,7 +186,7 @@
 	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);



[Index of Archives]     [Netdev]     [AoE Tools]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]     [Video 4 Linux]

  Powered by Linux