From 4e1d23de9fe5eb3d1b8e6b6abb9ab0b0ec3ac9e7 Mon Sep 17 00:00:00 2001 From: Thomas Ries Date: Sat, 23 Nov 2002 18:15:52 +0000 Subject: [PATCH] last fixes for 0.2.4 --- src/utils.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/utils.c b/src/utils.c index dc99996..202543f 100644 --- a/src/utils.c +++ b/src/utils.c @@ -422,7 +422,12 @@ int get_ip_by_ifname(char *ifname, struct in_addr *retaddr) { #if defined(_BSD) len=((struct sockaddr *)&ifr->ifr_addr)->sa_len; #else - len=SA_LEN((struct sockaddr *)&ifr->ifr_addr); + /* + * Linux: fixed size. SA_LEN only works on 2.2.x kernels (RH6) + * seems to have disapeared on 2.4 (RH7) + * len=SA_LEN((struct sockaddr *)&ifr->ifr_addr); + */ + len=sizeof(struct ifreq); #endif af=((struct sockaddr *)&ifr->ifr_addr)->sa_family; i+=len+IFNAMSIZ; @@ -442,7 +447,12 @@ int get_ip_by_ifname(char *ifname, struct in_addr *retaddr) { #if defined(_BSD) len=((struct sockaddr *)&ifr->ifr_addr)->sa_len; #else - len=SA_LEN((struct sockaddr *)&ifr->ifr_addr); + /* + * Linux: fixed size. SA_LEN only works on 2.2.x kernels (RH6) + * seems to have disapeared on 2.4 (RH7) + * len=SA_LEN((struct sockaddr *)&ifr->ifr_addr); + */ + len=sizeof(struct ifreq); #endif af=((struct sockaddr *)&ifr->ifr_addr)->sa_family; i+=len+IFNAMSIZ;