Date: Wed, 5 Feb 1997 15:28:57 +0100 (MET) From: Jean-Luc Richier <Jean-Luc.Richier@imag.fr> To: FreeBSD-gnats@freefall.freebsd.org, freebsd-bugs@freefall.freebsd.org Subject: Re: bin/2668: modification suggested for rarpd Message-ID: <199702051428.PAA14155@horus.imag.fr> In-Reply-To: Jean-Luc Richier's message as of Feb 5, 15:22.
next in thread | raw e-mail | index | archive | help
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 <deraadt@theos.com> 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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199702051428.PAA14155>