diff options
author | buytenh <buytenh> | 2002-01-06 11:43:01 +0000 |
---|---|---|
committer | buytenh <buytenh> | 2002-01-06 11:43:01 +0000 |
commit | 4fa147f871be9cfa6c96c1d47d47af6f8ec4907c (patch) | |
tree | fc323c2d2fcadbb6097bca5fc238fa436643b67a | |
parent | e5c9c8107e669554b1c2418df263e554ae8d62aa (diff) | |
download | bridge-utils-4fa147f871be9cfa6c96c1d47d47af6f8ec4907c.tar.gz |
Try to work around sparc64 braindamage.
-rw-r--r-- | libbridge/libbridge_devif.c | 6 | ||||
-rw-r--r-- | libbridge/libbridge_if.c | 2 | ||||
-rw-r--r-- | libbridge/libbridge_private.h | 11 |
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); |