From 229c12d708947a37d2a61dbd09c61ed61e4b2d28 Mon Sep 17 00:00:00 2001 From: "Maciej W. Rozycki" Date: Sun, 17 Nov 2002 12:00:00 -0500 Subject: [PATCH] Application of mopd-2.5.3-eaddr.patch: * Sun Nov 17 2002 Maciej W. Rozycki 2.5.3-14 - create the dummy socket for getting the MAC address inside pfEthAddr() on Linux (eaddr) Downloaded from: ftp://ftp.linux-mips.org/pub/linux/mips/people/macro/mopd/mopd-2.5.3-eaddr.patch.gz .patch SHA256 = 855ba33eabe1133b76e71aef77d35a959c05fd9d5ae53de8fd98cdaab4006c72 Patch history copied from: ftp://ftp.linux-mips.org/pub/linux/mips/people/macro/mopd/mopd-2.5.3-15.spec --- common/device.c | 7 +------ common/pf-linux.c | 9 +++++++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/common/device.c b/common/device.c index 95a1595..9347212 100644 --- a/common/device.c +++ b/common/device.c @@ -152,12 +152,7 @@ deviceOpen(ifname, proto, trans) #ifdef DEV_NEW_CONF deviceEthAddr(p->if_name,&p->eaddr[0]); #elif defined(__linux__) - { - int s; - s = socket(AF_INET,SOCK_DGRAM,0); - pfEthAddr(s,p->if_name,&p->eaddr[0]); - (void) close(s); - } + pfEthAddr(0, p->if_name,&p->eaddr[0]); #else p->eaddr[0]= tmp.eaddr[0]; p->eaddr[1]= tmp.eaddr[1]; diff --git a/common/pf-linux.c b/common/pf-linux.c index dcff109..4b2babe 100644 --- a/common/pf-linux.c +++ b/common/pf-linux.c @@ -204,12 +204,17 @@ int s; char *interface; u_char *addr; { + int err; + strncpy(ifr.ifr_name, interface, sizeof (ifr.ifr_name) - 1); ifr.ifr_name[sizeof(ifr.ifr_name)] = 0; ifr.ifr_addr.sa_family = AF_INET; - if (ioctl(s, SIOCGIFHWADDR, &ifr) < 0) { + s = socket(AF_INET,SOCK_DGRAM,0); + err = ioctl(s, SIOCGIFHWADDR, &ifr); + (void) close(s); + if (err < 0) { syslog(LOG_ERR, "pfEthAddr: %s: SIOCGIFHWADDR: %m", interface); - return(-1); + exit(-1); } memcpy((char *)addr, ifr.ifr_hwaddr.sa_data, 6); return(0);