Date: Wed, 5 Feb 1997 07:40:03 -0800 (PST) From: Jean-Luc Richier <Jean-Luc.Richier@imag.fr> To: freebsd-bugs Subject: Re: bin/2668: modification suggested for rarpd Message-ID: <199702051540.HAA02144@freefall.freebsd.org>
index | next in thread | raw e-mail
The following reply was made to PR bin/2668; it has been noted by GNATS.
From: Jean-Luc Richier <Jean-Luc.Richier@imag.fr>
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 <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
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199702051540.HAA02144>
