From 995c7fd1bf57d48a40605c36ffaacfb048d677eb Mon Sep 17 00:00:00 2001 From: Yaroslav Tykhiy Date: Tue, 29 May 2007 12:40:45 +0000 Subject: [PATCH] Sync ether_ioctl() with ioctl(2) and ifnet.if_ioctl as to the type of the command argument: int -> u_long. These types have different widths in the 64-bit world. Add a note to UPDATING because the change breaks KBI on 64-bit platforms. Discussed on: -net, -current Reviewed by: bms, ru --- UPDATING | 6 ++++++ sys/net/ethernet.h | 2 +- sys/net/if_ethersubr.c | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/UPDATING b/UPDATING index 47cb554de34..373958ba49a 100644 --- a/UPDATING +++ b/UPDATING @@ -21,6 +21,12 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 7.x IS SLOW: developers choose to disable these features on build machines to maximize performance. +20070529: + The ether_ioctl() function has been synchronized with ioctl(2) + and ifnet.if_ioctl. Due to that, the size of one of its arguments + has changed on 64-bit architectures. All kernel modules using + ether_ioctl() need to be rebuilt on such architectures. + 20070516: Improved INCLUDE_CONFIG_FILE support has been introduced to the config(8) utility. In order to take advantage of this new diff --git a/sys/net/ethernet.h b/sys/net/ethernet.h index 56b3cd2a919..29a5316c292 100644 --- a/sys/net/ethernet.h +++ b/sys/net/ethernet.h @@ -379,7 +379,7 @@ extern uint32_t ether_crc32_be(const uint8_t *, size_t); extern void ether_demux(struct ifnet *, struct mbuf *); extern void ether_ifattach(struct ifnet *, const u_int8_t *); extern void ether_ifdetach(struct ifnet *); -extern int ether_ioctl(struct ifnet *, int, caddr_t); +extern int ether_ioctl(struct ifnet *, u_long, caddr_t); extern int ether_output(struct ifnet *, struct mbuf *, struct sockaddr *, struct rtentry *); extern int ether_output_frame(struct ifnet *, struct mbuf *); diff --git a/sys/net/if_ethersubr.c b/sys/net/if_ethersubr.c index acf0846e666..1fabaca614d 100644 --- a/sys/net/if_ethersubr.c +++ b/sys/net/if_ethersubr.c @@ -1018,7 +1018,7 @@ ether_crc32_be(const uint8_t *buf, size_t len) } int -ether_ioctl(struct ifnet *ifp, int command, caddr_t data) +ether_ioctl(struct ifnet *ifp, u_long command, caddr_t data) { struct ifaddr *ifa = (struct ifaddr *) data; struct ifreq *ifr = (struct ifreq *) data;