From owner-freebsd-bugs Wed Feb 5 07:40:08 1997 Return-Path: Received: (from root@localhost) by freefall.freebsd.org (8.8.5/8.8.5) id HAA02237 for bugs-outgoing; Wed, 5 Feb 1997 07:40:08 -0800 (PST) Received: (from gnats@localhost) by freefall.freebsd.org (8.8.5/8.8.5) id HAA02144; Wed, 5 Feb 1997 07:40:03 -0800 (PST) Date: Wed, 5 Feb 1997 07:40:03 -0800 (PST) Message-Id: <199702051540.HAA02144@freefall.freebsd.org> To: freebsd-bugs Cc: From: Jean-Luc Richier Subject: Re: bin/2668: modification suggested for rarpd Reply-To: Jean-Luc Richier Sender: owner-bugs@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk The following reply was made to PR bin/2668; it has been noted by GNATS. From: Jean-Luc Richier To: FreeBSD-gnats@freefall.freebsd.org, freebsd-bugs@freefall.freebsd.org Cc: Subject: Re: bin/2668: modification suggested for rarpd Date: Wed, 5 Feb 1997 15:28:57 +0100 (MET) In your mail dated 5 Feb 5:40 you write : >Thank you very much for your problem report. >It has the internal identification `bin/2668'. >The individual assigned to look at your >bug is: freebsd-bugs. > >>Category: bin >>Responsible: freebsd-bugs >>Synopsis: modification suggested for rarpd >>Arrival-Date: Wed Feb 5 05:40:02 PST 1997 First an apology : The previous message was about NetBSD and not FreeBSD. This one is the correct. Following a remark of Theo de Raadt about a memory leak in my suggested patch, here is a updated version for FreeBSD I hope this will help you *** rarpd.c.DIST Wed Jun 5 04:57:54 1996 --- rarpd.c Wed Feb 5 15:15:55 1997 *************** *** 114,119 **** --- 114,122 ---- void lookup_eaddr(); void lookup_ipaddr(); + int aflag = 0; /* listen on "all" interfaces */ + int fflag = 0; /* don't fork */ + void main(argc, argv) int argc; *************** *** 122,130 **** int op, pid; char *ifname, *hostname, *name; - int aflag = 0; /* listen on "all" interfaces */ - int fflag = 0; /* don't fork */ - extern char *optarg; extern int optind, opterr; --- 125,130 ---- *************** *** 183,195 **** char *ifname; { struct if_info *p; p = (struct if_info *)malloc(sizeof(*p)); p->ii_next = iflist; iflist = p; ! p->ii_fd = rarp_open(ifname); lookup_eaddr(p->ii_fd, p->ii_eaddr); lookup_ipaddr(ifname, &p->ii_ipaddr, &p->ii_netmask); } --- 183,199 ---- char *ifname; { struct if_info *p; + int fd; + fd = rarp_open(ifname); + if (fd < 0) + return; p = (struct if_info *)malloc(sizeof(*p)); p->ii_next = iflist; iflist = p; ! p->ii_next = fd; lookup_eaddr(p->ii_fd, p->ii_eaddr); lookup_ipaddr(ifname, &p->ii_ipaddr, &p->ii_netmask); } *************** *** 305,310 **** --- 309,318 ---- } (void)strncpy(ifr.ifr_name, device, sizeof ifr.ifr_name); if (ioctl(fd, BIOCSETIF, (caddr_t)&ifr) < 0) { + if (aflag) { /* for -a skip not ethernet interfaces */ + close(fd); + return -1; + } syslog(LOG_ERR, "BIOCSETIF: %m"); exit(1); } *************** *** 317,322 **** --- 325,334 ---- exit(1); } if (link_type != DLT_EN10MB) { + if (aflag) { /* for -a skip not ethernet interfaces */ + close(fd); + return -1; + } syslog(LOG_ERR, "%s not on ethernet", device); exit(1); } -- Jean-Luc RICHIER (Jean-Luc.Richier@Imag.Fr richier@imag.fr) Laboratoire Logiciels, Systemes et Reseaux (LSR-IMAG) IMAG-CAMPUS, BP 53, F-38041 GRENOBLE Cedex 9 Tel : (33) 4 76 82 72 32 Fax : (33) 4 76 82 72 87