From owner-freebsd-bugs Wed Feb 5 05:40:09 1997 Return-Path: Received: (from root@localhost) by freefall.freebsd.org (8.8.5/8.8.5) id FAA15139 for bugs-outgoing; Wed, 5 Feb 1997 05:40:09 -0800 (PST) Received: (from gnats@localhost) by freefall.freebsd.org (8.8.5/8.8.5) id FAA15124; Wed, 5 Feb 1997 05:40:04 -0800 (PST) Resent-Date: Wed, 5 Feb 1997 05:40:04 -0800 (PST) Resent-Message-Id: <199702051340.FAA15124@freefall.freebsd.org> Resent-From: gnats (GNATS Management) Resent-To: freebsd-bugs Resent-Reply-To: FreeBSD-gnats@freefall.FreeBSD.org, Jean-Luc.Richier@imag.fr Received: from tuna.imag.fr (tuna.imag.fr [192.44.68.19]) by freefall.freebsd.org (8.8.5/8.8.5) with ESMTP id FAA14699 for ; Wed, 5 Feb 1997 05:30:16 -0800 (PST) Received: (from richier@localhost) by tuna.imag.fr (8.8.3/8.8.3) id OAA00505; Wed, 5 Feb 1997 14:29:44 +0100 (MET) Message-Id: <199702051329.OAA00505@tuna.imag.fr> Date: Wed, 5 Feb 1997 14:29:44 +0100 (MET) From: Jean-Luc.Richier@imag.fr Reply-To: Jean-Luc.Richier@imag.fr To: FreeBSD-gnats-submit@freebsd.org X-Send-Pr-Version: 3.2 Subject: bin/2668: modification suggested for rarpd Sender: owner-bugs@freebsd.org X-Loop: FreeBSD.org Precedence: bulk >Number: 2668 >Category: bin >Synopsis: modification suggested for rarpd >Confidential: yes >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Class: change-request >Submitter-Id: current-users >Arrival-Date: Wed Feb 5 05:40:02 PST 1997 >Last-Modified: >Originator: Jean-Luc Richier >Organization: Institut IMAg, Grenoble, France >Release: FreeBSD 2.1.6-RELEASE i386 >Environment: >Description: While working on the IPv6 extensions for NetBSD and FreeBSD, I discovered some problems. They are not bugs in the base code, only simplified behaviours, but if one tries to make extensions, these behaviours raise problems. Therefore I suggest corrections to the base distribution code. >How-To-Repeat: rarpd -a dies if the system includes interfaces UP and not point to point which are not ethernet. This pauses problems if the machine is a boot server and includes special interfaces. >Fix: if one run rarpd with -a, silently ignores any interfaces which are not ethernet instead of doing an error exit. *** usr.sbin/rarpd/rarpd.c.DIST Wed Jun 5 04:57:54 1996 --- usr.sbin/rarpd/rarpd.c Wed Feb 5 11:46:24 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 ---- *************** *** 186,195 **** 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); } --- 186,198 ---- p = (struct if_info *)malloc(sizeof(*p)); + p->ii_fd = rarp_open(ifname); + if (p->ii_fd < 0) + return; + p->ii_next = iflist; iflist = p; lookup_eaddr(p->ii_fd, p->ii_eaddr); lookup_ipaddr(ifname, &p->ii_ipaddr, &p->ii_netmask); } *************** *** 305,310 **** --- 308,317 ---- } (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 **** --- 324,333 ---- 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); } >Audit-Trail: >Unformatted: