aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbuytenh <buytenh>2002-01-06 11:43:01 +0000
committerbuytenh <buytenh>2002-01-06 11:43:01 +0000
commit4fa147f871be9cfa6c96c1d47d47af6f8ec4907c (patch)
treefc323c2d2fcadbb6097bca5fc238fa436643b67a
parente5c9c8107e669554b1c2418df263e554ae8d62aa (diff)
downloadbridge-utils-4fa147f871be9cfa6c96c1d47d47af6f8ec4907c.tar.gz
Try to work around sparc64 braindamage.
-rw-r--r--libbridge/libbridge_devif.c6
-rw-r--r--libbridge/libbridge_if.c2
-rw-r--r--libbridge/libbridge_private.h11
3 files changed, 14 insertions, 5 deletions
diff --git a/libbridge/libbridge_devif.c b/libbridge/libbridge_devif.c
index a1ff232..0d342e1 100644
--- a/libbridge/libbridge_devif.c
+++ b/libbridge/libbridge_devif.c
@@ -28,7 +28,7 @@
int br_device_ioctl(struct bridge *br, unsigned long arg0, unsigned long arg1, unsigned long arg2, unsigned long arg3)
{
- unsigned long args[4];
+ arg_t args[4];
struct ifreq ifr;
args[0] = arg0;
@@ -37,9 +37,9 @@ int br_device_ioctl(struct bridge *br, unsigned long arg0, unsigned long arg1, u
args[3] = arg3;
memcpy(ifr.ifr_name, br->ifname, IFNAMSIZ);
- ((unsigned long *)(&ifr.ifr_data))[0] = (unsigned long)args;
+ ((arg_t *)(&ifr.ifr_data))[0] = (arg_t)args;
- return ioctl(br_socket_fd, SIOCDEVPRIVATE, &ifr);
+ return ioctl(br_socket_fd, BRIDGE_IOCTL, &ifr);
}
int br_add_interface(struct bridge *br, int ifindex)
diff --git a/libbridge/libbridge_if.c b/libbridge/libbridge_if.c
index b9185b3..6394279 100644
--- a/libbridge/libbridge_if.c
+++ b/libbridge/libbridge_if.c
@@ -28,7 +28,7 @@
int br_ioctl(unsigned long arg0, unsigned long arg1, unsigned long arg2)
{
- unsigned long arg[3];
+ arg_t arg[3];
arg[0] = arg0;
arg[1] = arg1;
diff --git a/libbridge/libbridge_private.h b/libbridge/libbridge_private.h
index 57b9852..97d74a3 100644
--- a/libbridge/libbridge_private.h
+++ b/libbridge/libbridge_private.h
@@ -21,7 +21,16 @@
#include <asm/param.h>
-int br_socket_fd;
+#if defined(__arch64__) && defined(sparc)
+#define BRIDGE_IOCTL (SIOCDEVPRIVATE + 3)
+typedef unsigned long long arg_t;
+#else
+#define BRIDGE_IOCTL (SIOCDEVPRIVATE)
+typedef unsigned long arg_t;
+#endif
+
+
+extern int br_socket_fd;
unsigned long __tv_to_jiffies(struct timeval *tv);
void __jiffies_to_tv(struct timeval *tv, unsigned long jiffies);