From owner-svn-src-stable-7@FreeBSD.ORG Fri Jan 15 15:23:39 2010 Return-Path: Delivered-To: svn-src-stable-7@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F2374106568B; Fri, 15 Jan 2010 15:23:38 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DE2038FC1F; Fri, 15 Jan 2010 15:23:38 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0FFNcp2010889; Fri, 15 Jan 2010 15:23:38 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0FFNcZJ010886; Fri, 15 Jan 2010 15:23:38 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201001151523.o0FFNcZJ010886@svn.freebsd.org> From: Marius Strobl Date: Fri, 15 Jan 2010 15:23:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r202368 - stable/7/sys/boot/common X-BeenThere: svn-src-stable-7@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 7-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 15 Jan 2010 15:23:39 -0000 Author: marius Date: Fri Jan 15 15:23:38 2010 New Revision: 202368 URL: http://svn.freebsd.org/changeset/base/202368 Log: MFC: r182731 Show info about net devices in loader's 'lsdev' command. While there fix style. Modified: stable/7/sys/boot/common/dev_net.c stable/7/sys/boot/common/devopen.c Directory Properties: stable/7/sys/ (props changed) stable/7/sys/cddl/contrib/opensolaris/ (props changed) stable/7/sys/contrib/dev/acpica/ (props changed) stable/7/sys/contrib/pf/ (props changed) Modified: stable/7/sys/boot/common/dev_net.c ============================================================================== --- stable/7/sys/boot/common/dev_net.c Fri Jan 15 15:16:49 2010 (r202367) +++ stable/7/sys/boot/common/dev_net.c Fri Jan 15 15:23:38 2010 (r202368) @@ -1,4 +1,4 @@ -/* +/* * $NetBSD: dev_net.c,v 1.12 1997/12/10 20:38:37 gwr Exp $ */ @@ -90,20 +90,21 @@ static void net_print(int); static int net_getparams(int sock); struct devsw netdev = { - "net", - DEVT_NET, - net_init, - net_strategy, - net_open, - net_close, - noioctl, - net_print + "net", + DEVT_NET, + net_init, + net_strategy, + net_open, + net_close, + noioctl, + net_print }; int net_init(void) { - return 0; + + return (0); } /* @@ -114,76 +115,75 @@ net_init(void) int net_open(struct open_file *f, ...) { - va_list args; - char *devname; /* Device part of file name (or NULL). */ - int error = 0; - - va_start(args, f); - devname = va_arg(args, char*); - va_end(args); - - /* On first open, do netif open, mount, etc. */ - if (netdev_opens == 0) { - /* Find network interface. */ - if (netdev_sock < 0) { - netdev_sock = netif_open(devname); - if (netdev_sock < 0) { - printf("net_open: netif_open() failed\n"); - return (ENXIO); - } - if (debug) - printf("net_open: netif_open() succeeded\n"); - } - if (rootip.s_addr == 0) { - /* Get root IP address, and path, etc. */ - error = net_getparams(netdev_sock); - if (error) { + va_list args; + char *devname; /* Device part of file name (or NULL). */ + int error = 0; + + va_start(args, f); + devname = va_arg(args, char*); + va_end(args); + + /* On first open, do netif open, mount, etc. */ + if (netdev_opens == 0) { + /* Find network interface. */ + if (netdev_sock < 0) { + netdev_sock = netif_open(devname); + if (netdev_sock < 0) { + printf("net_open: netif_open() failed\n"); + return (ENXIO); + } + if (debug) + printf("net_open: netif_open() succeeded\n"); + } + if (rootip.s_addr == 0) { + /* Get root IP address, and path, etc. */ + error = net_getparams(netdev_sock); + if (error) { /* getparams makes its own noise */ - netif_close(netdev_sock); - netdev_sock = -1; - return (error); - } + netif_close(netdev_sock); + netdev_sock = -1; + return (error); + } + } + netdev_opens++; } netdev_opens++; - } - netdev_opens++; - f->f_devdata = &netdev_sock; - return (error); + f->f_devdata = &netdev_sock; + return (error); } int -net_close(f) - struct open_file *f; +net_close(struct open_file *f) { - #ifdef NETIF_DEBUG - if (debug) - printf("net_close: opens=%d\n", netdev_opens); + if (debug) + printf("net_close: opens=%d\n", netdev_opens); #endif - /* On last close, do netif close, etc. */ - f->f_devdata = NULL; - /* Extra close call? */ - if (netdev_opens <= 0) + /* On last close, do netif close, etc. */ + f->f_devdata = NULL; + /* Extra close call? */ + if (netdev_opens <= 0) + return (0); + netdev_opens--; + /* Not last close? */ + if (netdev_opens > 0) + return(0); + rootip.s_addr = 0; + if (netdev_sock >= 0) { + if (debug) + printf("net_close: calling netif_close()\n"); + netif_close(netdev_sock); + netdev_sock = -1; + } return (0); - netdev_opens--; - /* Not last close? */ - if (netdev_opens > 0) - return(0); - rootip.s_addr = 0; - if (netdev_sock >= 0) { - if (debug) - printf("net_close: calling netif_close()\n"); - netif_close(netdev_sock); - netdev_sock = -1; - } - return (0); } int net_strategy() { - return EIO; + + return (EIO); } #define SUPPORT_BOOTP @@ -206,106 +206,118 @@ int try_bootp = 1; extern n_long ip_convertaddr(char *p); static int -net_getparams(sock) - int sock; +net_getparams(int sock) { - char buf[MAXHOSTNAMELEN]; - char temp[FNAME_SIZE]; - struct iodesc *d; - int i; - n_long smask; + char buf[MAXHOSTNAMELEN]; + char temp[FNAME_SIZE]; + struct iodesc *d; + int i; + n_long smask; #ifdef SUPPORT_BOOTP - /* - * Try to get boot info using BOOTP. If we succeed, then - * the server IP address, gateway, and root path will all - * be initialized. If any remain uninitialized, we will - * use RARP and RPC/bootparam (the Sun way) to get them. - */ - if (try_bootp) - bootp(sock, BOOTP_NONE); - if (myip.s_addr != 0) - goto exit; - if (debug) - printf("net_open: BOOTP failed, trying RARP/RPC...\n"); + /* + * Try to get boot info using BOOTP. If we succeed, then + * the server IP address, gateway, and root path will all + * be initialized. If any remain uninitialized, we will + * use RARP and RPC/bootparam (the Sun way) to get them. + */ + if (try_bootp) + bootp(sock, BOOTP_NONE); + if (myip.s_addr != 0) + goto exit; + if (debug) + printf("net_open: BOOTP failed, trying RARP/RPC...\n"); #endif - /* - * Use RARP to get our IP address. This also sets our - * netmask to the "natural" default for our address. - */ - if (rarp_getipaddress(sock)) { - printf("net_open: RARP failed\n"); - return (EIO); - } - printf("net_open: client addr: %s\n", inet_ntoa(myip)); + /* + * Use RARP to get our IP address. This also sets our + * netmask to the "natural" default for our address. + */ + if (rarp_getipaddress(sock)) { + printf("net_open: RARP failed\n"); + return (EIO); + } + printf("net_open: client addr: %s\n", inet_ntoa(myip)); - /* Get our hostname, server IP address, gateway. */ - if (bp_whoami(sock)) { - printf("net_open: bootparam/whoami RPC failed\n"); - return (EIO); - } - if (debug) - printf("net_open: client name: %s\n", hostname); - - /* - * Ignore the gateway from whoami (unreliable). - * Use the "gateway" parameter instead. - */ - smask = 0; - gateip.s_addr = 0; - if (bp_getfile(sock, "gateway", &gateip, buf) == 0) { - /* Got it! Parse the netmask. */ - smask = ip_convertaddr(buf); - } - if (smask) { - netmask = smask; - if (debug) - printf("net_open: subnet mask: %s\n", intoa(netmask)); - } - if (gateip.s_addr && debug) - printf("net_open: net gateway: %s\n", inet_ntoa(gateip)); - - /* Get the root server and pathname. */ - if (bp_getfile(sock, "root", &rootip, rootpath)) { - printf("net_open: bootparam/getfile RPC failed\n"); - return (EIO); - } - exit: - /* - * If present, strip the server's address off of the rootpath - * before passing it along. This allows us to be compatible with - * the kernel's diskless (BOOTP_NFSROOT) booting conventions - */ - for (i = 0; rootpath[i] != '\0' && i < FNAME_SIZE; i++) - if (rootpath[i] == ':') - break; - if (i && i != FNAME_SIZE && rootpath[i] == ':') { - rootpath[i++] = '\0'; - if (inet_addr(&rootpath[0]) != INADDR_NONE) - rootip.s_addr = inet_addr(&rootpath[0]); - bcopy(&rootpath[i], &temp[0], strlen(&rootpath[i])+1); - bcopy(&temp[0], &rootpath[0], strlen(&rootpath[i])+1); - } - if (debug) { - printf("net_open: server addr: %s\n", inet_ntoa(rootip)); - printf("net_open: server path: %s\n", rootpath); - } - - d = socktodesc(sock); - sprintf(temp, "%6D", d->myea, ":"); - setenv("boot.netif.ip", inet_ntoa(myip), 1); - setenv("boot.netif.netmask", intoa(netmask), 1); - setenv("boot.netif.gateway", inet_ntoa(gateip), 1); - setenv("boot.netif.hwaddr", temp, 1); - setenv("boot.nfsroot.server", inet_ntoa(rootip), 1); - setenv("boot.nfsroot.path", rootpath, 1); + /* Get our hostname, server IP address, gateway. */ + if (bp_whoami(sock)) { + printf("net_open: bootparam/whoami RPC failed\n"); + return (EIO); + } + if (debug) + printf("net_open: client name: %s\n", hostname); + + /* + * Ignore the gateway from whoami (unreliable). + * Use the "gateway" parameter instead. + */ + smask = 0; + gateip.s_addr = 0; + if (bp_getfile(sock, "gateway", &gateip, buf) == 0) { + /* Got it! Parse the netmask. */ + smask = ip_convertaddr(buf); + } + if (smask) { + netmask = smask; + if (debug) + printf("net_open: subnet mask: %s\n", intoa(netmask)); + } + if (gateip.s_addr && debug) + printf("net_open: net gateway: %s\n", inet_ntoa(gateip)); - return (0); + /* Get the root server and pathname. */ + if (bp_getfile(sock, "root", &rootip, rootpath)) { + printf("net_open: bootparam/getfile RPC failed\n"); + return (EIO); + } +exit: + /* + * If present, strip the server's address off of the rootpath + * before passing it along. This allows us to be compatible with + * the kernel's diskless (BOOTP_NFSROOT) booting conventions + */ + for (i = 0; rootpath[i] != '\0' && i < FNAME_SIZE; i++) + if (rootpath[i] == ':') + break; + if (i && i != FNAME_SIZE && rootpath[i] == ':') { + rootpath[i++] = '\0'; + if (inet_addr(&rootpath[0]) != INADDR_NONE) + rootip.s_addr = inet_addr(&rootpath[0]); + bcopy(&rootpath[i], &temp[0], strlen(&rootpath[i])+1); + bcopy(&temp[0], &rootpath[0], strlen(&rootpath[i])+1); + } + if (debug) { + printf("net_open: server addr: %s\n", inet_ntoa(rootip)); + printf("net_open: server path: %s\n", rootpath); + } + + d = socktodesc(sock); + sprintf(temp, "%6D", d->myea, ":"); + setenv("boot.netif.ip", inet_ntoa(myip), 1); + setenv("boot.netif.netmask", intoa(netmask), 1); + setenv("boot.netif.gateway", inet_ntoa(gateip), 1); + setenv("boot.netif.hwaddr", temp, 1); + setenv("boot.nfsroot.server", inet_ntoa(rootip), 1); + setenv("boot.nfsroot.path", rootpath, 1); + + return (0); } static void net_print(int verbose) { - return; + struct netif_driver *drv; + int i, d, cnt; + + cnt = 0; + for (d = 0; netif_drivers[d]; d++) { + drv = netif_drivers[d]; + for (i = 0; i < drv->netif_nifs; i++) { + printf("\t%s%d:", "net", cnt++); + if (verbose) + printf(" (%s%d)", drv->netif_bname, + drv->netif_ifs[i].dif_unit); + } + } + printf("\n"); } Modified: stable/7/sys/boot/common/devopen.c ============================================================================== --- stable/7/sys/boot/common/devopen.c Fri Jan 15 15:16:49 2010 (r202367) +++ stable/7/sys/boot/common/devopen.c Fri Jan 15 15:23:38 2010 (r202368) @@ -35,32 +35,33 @@ __FBSDID("$FreeBSD$"); int devopen(struct open_file *f, const char *fname, const char **file) { - struct devdesc *dev; - int result; + struct devdesc *dev; + int result; - result = archsw.arch_getdev((void **)&dev, fname, file); - if (result) - return (result); + result = archsw.arch_getdev((void **)&dev, fname, file); + if (result) + return (result); - /* point to device-specific data so that device open can use it */ - f->f_devdata = dev; - result = dev->d_dev->dv_open(f, dev); - if (result != 0) { - f->f_devdata = NULL; - free(dev); - return (result); - } + /* point to device-specific data so that device open can use it */ + f->f_devdata = dev; + result = dev->d_dev->dv_open(f, dev); + if (result != 0) { + f->f_devdata = NULL; + free(dev); + return (result); + } - /* reference the devsw entry from the open_file structure */ - f->f_dev = dev->d_dev; - return (0); + /* reference the devsw entry from the open_file structure */ + f->f_dev = dev->d_dev; + return (0); } int devclose(struct open_file *f) { - if (f->f_devdata != NULL) { - free(f->f_devdata); - } - return(0); + + if (f->f_devdata != NULL) { + free(f->f_devdata); + } + return (0); }