[Glibc-bsd-commits] r5668 - trunk/glibc-ports/kfreebsd
stevenc-guest at alioth.debian.org
stevenc-guest at alioth.debian.org
Sat Oct 25 17:49:40 UTC 2014
Author: stevenc-guest
Date: 2014-10-25 17:49:40 +0000 (Sat, 25 Oct 2014)
New Revision: 5668
Modified:
trunk/glibc-ports/kfreebsd/ifaddrs.c
Log:
Expand the workaround added in r5651:
* Position of sockaddr_dl is actually correct for 9.0, not 10.1
* Keep the existing workaround in place in case struct size changes
again in future.
Modified: trunk/glibc-ports/kfreebsd/ifaddrs.c
===================================================================
--- trunk/glibc-ports/kfreebsd/ifaddrs.c 2014-10-25 17:20:39 UTC (rev 5667)
+++ trunk/glibc-ports/kfreebsd/ifaddrs.c 2014-10-25 17:49:40 UTC (rev 5668)
@@ -147,13 +147,16 @@
if (ifm->ifm_addrs & RTA_IFP) {
idx = ifm->ifm_index;
++icnt;
- /* XXX: smooth over a kfreebsd 9.0->10.1 ABI break:
- sizeof(struct rt_msghdr) is correct for 10.1 kernel */
dl = (struct sockaddr_dl *)(void *)(ifm + 1);
+ /* XXX: smooth over a kfreebsd 9.0->10.1 ABI break */
if (rtm->rtm_msglen == 152) {
/* on kfreebsd-i386 9.0, struct rt_msghdr is 96 bytes */
dl = (struct sockaddr_dl *)((char *)ifm + 96);
}
+ if (rtm->rtm_msglen == 156) {
+ /* on kfreebsd-i386 10.1, struct rt_msghdr is 100 bytes */
+ dl = (struct sockaddr_dl *)((char *)ifm + 100);
+ }
dcnt += SA_RLEN((struct sockaddr *)(void*)dl) +
ALIGNBYTES;
#ifdef HAVE_IFM_DATA
@@ -240,13 +243,16 @@
ifm = (struct if_msghdr *)(void *)rtm;
if (ifm->ifm_addrs & RTA_IFP) {
idx = ifm->ifm_index;
- /* XXX: smooth over a kfreebsd 9.0->10.1 ABI break:
- sizeof(struct rt_msghdr) is correct for 10.1 kernel */
dl = (struct sockaddr_dl *)(void *)(ifm + 1);
+ /* XXX: smooth over a kfreebsd 9.0->10.1 ABI break */
if (rtm->rtm_msglen == 152) {
/* on kfreebsd-i386 9.0, struct rt_msghdr is 96 bytes */
dl = (struct sockaddr_dl *)((char *)ifm + 96);
}
+ if (rtm->rtm_msglen == 156) {
+ /* on kfreebsd-i386 10.1, struct rt_msghdr is 100 bytes */
+ dl = (struct sockaddr_dl *)((char *)ifm + 100);
+ }
cif = ift;
ift->ifa_name = names;
More information about the Glibc-bsd-commits
mailing list