From owner-svn-src-head@FreeBSD.ORG Tue Jun 30 20:21:48 2009 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7DA7D106566C; Tue, 30 Jun 2009 20:21:48 +0000 (UTC) (envelope-from marc@msys.ch) Received: from sleipnir.msys.ch (unknown [IPv6:2001:4060:c0de:f000::3]) by mx1.freebsd.org (Postfix) with ESMTP id DED518FC13; Tue, 30 Jun 2009 20:21:47 +0000 (UTC) (envelope-from marc@msys.ch) Received: from mail.msys.ch (smtp.msys.ch [157.161.101.10]) by sleipnir.msys.ch (8.14.3/8.14.1) with ESMTP id n5UKLdRq029770 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Tue, 30 Jun 2009 22:21:40 +0200 (CEST) Received: from [192.168.17.111] (gw.vnode.ch [62.12.170.129]) (authenticated bits=0) by mail.msys.ch (8.14.3/8.14.1) with ESMTP id n5UKLcRO025084 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NOT); Tue, 30 Jun 2009 22:21:39 +0200 (CEST) Message-Id: <7B9C309F-63E3-4CB8-9871-DE2DEE010096@msys.ch> From: Marc Balmer To: "M. Warner Losh" In-Reply-To: <20090630.141340.289711551.imp@bsdimp.com> Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v935.3) Date: Tue, 30 Jun 2009 22:21:38 +0200 References: <200906301851.n5UIpNJQ089171@svn.freebsd.org> <20090630.133608.-1703974521.imp@bsdimp.com> <0E6D4FB2-A485-40ED-A856-ACC311A90EFE@msys.ch> <20090630.141340.289711551.imp@bsdimp.com> X-Mailer: Apple Mail (2.935.3) X-SMTP-Vilter-Version: 1.3.6 X-Spamd-Symbols: AWL Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, mbr@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r195200 - in head/usr.sbin: . wake X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Jun 2009 20:21:49 -0000 Am 30.06.2009 um 22:13 schrieb M. Warner Losh: > In message: <0E6D4FB2-A485-40ED-A856-ACC311A90EFE@msys.ch> > Marc Balmer writes: > : > : Am 30.06.2009 um 21:36 schrieb M. Warner Losh: > : > : > wake really is too generic a name for this. Why didn't the wol > port > : > get committed anyway, it seems to be better than this... > : > : wake is a short, mnemonic and imperative name that describes what > the > : command does. It is exactly the same command as in NetBSD. > > And the discussions in the NetBSD src discussion mailing lists have > resolved the issue with finality? well, yes. the name stays, as martin put it so correctly "the one who does the work chooses the name". And we use this name since 2006 on various OSs. And I think it is not a weak name, I can not think of any other sensible use of this command name, really. > > Warner > > > : > Warner > : > > : > > : > In message: <200906301851.n5UIpNJQ089171@svn.freebsd.org> > : > Martin Blapp writes: > : > : Author: mbr > : > : Date: Tue Jun 30 18:51:22 2009 > : > : New Revision: 195200 > : > : URL: http://svn.freebsd.org/changeset/base/195200 > : > : > : > : Log: > : > : Add wake, a tool to send Wake on LAN frames to hosts on a > local > : > Ethernet network > : > : > : > : Submitted by: Marc Balmer > : > : Reviewed by: rwatson > : > : Approved by: re > : > : > : > : M usr.sbin/Makefile > : > : A usr.sbin/wake > : > : AM usr.sbin/wake/wake.c > : > : AM usr.sbin/wake/Makefile > : > : AM usr.sbin/wake/wake.8 > : > : > : > : Added: > : > : head/usr.sbin/wake/ > : > : head/usr.sbin/wake/Makefile (contents, props changed) > : > : head/usr.sbin/wake/wake.8 (contents, props changed) > : > : head/usr.sbin/wake/wake.c (contents, props changed) > : > : Modified: > : > : head/usr.sbin/Makefile > : > : > : > : Modified: head/usr.sbin/Makefile > : > : > : > = > : > = > : > = > : > = > : > = > : > = > : > = > : > = > : > > ====================================================================== > : > : --- head/usr.sbin/Makefile Tue Jun 30 17:27:53 2009 (r195199) > : > : +++ head/usr.sbin/Makefile Tue Jun 30 18:51:22 2009 (r195200) > : > : @@ -190,6 +190,7 @@ SUBDIR= ${_ac} \ > : > : ${_usbconfig} \ > : > : ${_vidcontrol} \ > : > : vipw \ > : > : + wake \ > : > : watch \ > : > : watchdogd \ > : > : ${_wlandebug} \ > : > : > : > : Added: head/usr.sbin/wake/Makefile > : > : > : > = > : > = > : > = > : > = > : > = > : > = > : > = > : > = > : > > ====================================================================== > : > : --- /dev/null 00:00:00 1970 (empty, because file is newly added) > : > : +++ head/usr.sbin/wake/Makefile Tue Jun 30 18:51:22 2009 > (r195200) > : > : @@ -0,0 +1,8 @@ > : > : +# $FreeBSD$ > : > : + > : > : +PROG= wake > : > : +MAN= wake.8 > : > : + > : > : +WARNS?= 2 > : > : + > : > : +.include > : > : > : > : Added: head/usr.sbin/wake/wake.8 > : > : > : > = > : > = > : > = > : > = > : > = > : > = > : > = > : > = > : > > ====================================================================== > : > : --- /dev/null 00:00:00 1970 (empty, because file is newly added) > : > : +++ head/usr.sbin/wake/wake.8 Tue Jun 30 18:51:22 2009 (r195200) > : > : @@ -0,0 +1,61 @@ > : > : +.\" > : > : +.\" $FreeBSD$ > : > : +.\" > : > : +.\" Copyright (c) 2009 Marc Balmer > : > : +.\" > : > : +.\" Permission to use, copy, modify, and distribute this > software > : > for any > : > : +.\" purpose with or without fee is hereby granted, provided > that > : > the above > : > : +.\" copyright notice and this permission notice appear in all > : > copies. > : > : +.\" > : > : +.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS > ALL > : > WARRANTIES > : > : +.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED > WARRANTIES > : > OF > : > : +.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR > BE > : > LIABLE FOR > : > : +.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR > : > ANY DAMAGES > : > : +.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, > : > WHETHER IN AN > : > : +.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, > : > ARISING OUT OF > : > : +.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS > SOFTWARE. > : > : +.\" > : > : +.Dd June 27 2009 > : > : +.Dt WAKE 8 > : > : +.Os > : > : +.Sh NAME > : > : +.Nm wake > : > : +.Nd send Wake on LAN frames to hosts on a local Ethernet > network > : > : +.Sh SYNOPSIS > : > : +.Nm > : > : +.Ar interface > : > : +.Op Ar lladdr ... > : > : +.Sh DESCRIPTION > : > : +The > : > : +.Nm > : > : +program is used to send Wake on LAN (WoL) frames over a local > : > : +Ethernet network to one or more hosts using their link layer > : > (hardware) > : > : +addresses. > : > : +WoL functionality is generally enabled in a machine's BIOS > : > : +and can be used to power on machines from a remote system > without > : > : +having physical access to them. > : > : +.Pp > : > : +.Ar interface > : > : +is the network interface of the local machine. > : > : +.Ar lladdr > : > : +are the link layer addresses of the remote machines > : > : +and can be specified as the actual hardware address > : > : +(six hexadecimal numbers separated by colons) > : > : +or a hostname entry in > : > : +.Pa /etc/ethers . > : > : +Link layer addresses can be determined and set on > : > : +.Fx > : > : +machines using > : > : +.Xr ifconfig 8 . > : > : +.Sh FILES > : > : +.Bl -tag -width "/etc/ethers" -compact > : > : +.It /etc/ethers > : > : +Ethernet host name database. > : > : +.El > : > : +.Sh SEE ALSO > : > : +.Xr ethers 5 , > : > : +.Xr ifconfig 8 > : > : +.Sh AUTHORS > : > : +.Nm > : > : +was written by > : > : +.Ar Marc Balmer Aq marc@msys.ch . > : > : > : > : Added: head/usr.sbin/wake/wake.c > : > : > : > = > : > = > : > = > : > = > : > = > : > = > : > = > : > = > : > > ====================================================================== > : > : --- /dev/null 00:00:00 1970 (empty, because file is newly added) > : > : +++ head/usr.sbin/wake/wake.c Tue Jun 30 18:51:22 2009 (r195200) > : > : @@ -0,0 +1,174 @@ > : > : +/* > : > : + * Copyright (C) 2006, 2007, 2008, 2009 Marc Balmer > > : > : + * Copyright (C) 2000 Eugene M. Kim. All rights reserved. > : > : + * > : > : + * Redistribution and use in source and binary forms, with or > : > without > : > : + * modification, are permitted provided that the following > : > conditions > : > : + * are met: > : > : + * > : > : + * 1. Redistributions of source code must retain the above > : > copyright > : > : + * notice, this list of conditions and the following > disclaimer. > : > : + * 2. Author's name may not be used endorse or promote products > : > derived > : > : + * from this software without specific prior written > permission. > : > : + * > : > : + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY > : > EXPRESS OR > : > : + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE > IMPLIED > : > : + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR > : > PURPOSE ARE > : > : + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY > : > DIRECT, > : > : + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL > : > DAMAGES > : > : + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE > : > GOODS OR > : > : + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS > : > INTERRUPTION) > : > : + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN > : > CONTRACT, > : > : + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR > OTHERWISE) > : > ARISING > : > : + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF > ADVISED OF > : > THE > : > : + * POSSIBILITY OF SUCH DAMAGE. > : > : + */ > : > : + > : > : +#include > : > : +__FBSDID("$FreeBSD$"); > : > : + > : > : +#include > : > : +#include > : > : +#include > : > : +#include > : > : +#include > : > : +#include > : > : +#include > : > : +#include > : > : + > : > : +#include > : > : +#include > : > : + > : > : +#include > : > : +#include > : > : +#include > : > : +#include > : > : +#include > : > : +#include > : > : +#include > : > : +#include > : > : +#include > : > : +#include > : > : + > : > : +#define _PATH_BPF "/dev/bpf" > : > : + > : > : +#ifndef SYNC_LEN > : > : +#define SYNC_LEN 6 > : > : +#endif > : > : + > : > : +#ifndef DESTADDR_COUNT > : > : +#define DESTADDR_COUNT 16 > : > : +#endif > : > : + > : > : +void usage(void); > : > : + > : > : +int wake(const char *iface, const char *host); > : > : +int bind_if_to_bpf(char const *ifname, int bpf); > : > : +int get_ether(char const *text, struct ether_addr *addr); > : > : +int send_wakeup(int bpf, struct ether_addr const *addr); > : > : + > : > : +void > : > : +usage(void) > : > : +{ > : > : + (void)fprintf(stderr, "usage: wake interface lladdr\n"); > : > : + exit(0); > : > : +} > : > : + > : > : +int > : > : +wake(const char *iface, const char *host) > : > : +{ > : > : + int res, bpf; > : > : + struct ether_addr macaddr; > : > : + > : > : + bpf = open(_PATH_BPF, O_RDWR); > : > : + if (bpf == -1) { > : > : + printf("no bpf\n"); > : > : + return -1; > : > : + } > : > : + if (bind_if_to_bpf(iface, bpf) == -1 || > : > : + get_ether(host, &macaddr) == -1) { > : > : + (void)close(bpf); > : > : + return -1; > : > : + } > : > : + res = send_wakeup(bpf, &macaddr); > : > : + (void)close(bpf); > : > : + return res; > : > : +} > : > : + > : > : +int > : > : +bind_if_to_bpf(char const *ifname, int bpf) > : > : +{ > : > : + struct ifreq ifr; > : > : + u_int dlt; > : > : + > : > : + if (strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name)) >= > : > : + sizeof(ifr.ifr_name)) > : > : + return -1; > : > : + if (ioctl(bpf, BIOCSETIF, &ifr) == -1) > : > : + return -1; > : > : + if (ioctl(bpf, BIOCGDLT, &dlt) == -1) > : > : + return -1; > : > : + if (dlt != DLT_EN10MB) > : > : + return -1; > : > : + return 0; > : > : +} > : > : + > : > : +int > : > : +get_ether(char const *text, struct ether_addr *addr) > : > : +{ > : > : + struct ether_addr *paddr; > : > : + > : > : + paddr = ether_aton(text); > : > : + if (paddr != NULL) { > : > : + *addr = *paddr; > : > : + return 0; > : > : + } > : > : + if (ether_hostton(text, addr)) > : > : + return -1; > : > : + return 0; > : > : +} > : > : + > : > : +int > : > : +send_wakeup(int bpf, struct ether_addr const *addr) > : > : +{ > : > : + struct { > : > : + struct ether_header hdr; > : > : + u_char data[SYNC_LEN + ETHER_ADDR_LEN * DESTADDR_COUNT]; > : > : + } pkt; > : > : + u_char *p; > : > : + int i; > : > : + ssize_t bw; > : > : + ssize_t len; > : > : + > : > : + (void)memset(pkt.hdr.ether_dhost, 0xff, > : > sizeof(pkt.hdr.ether_dhost)); > : > : + pkt.hdr.ether_type = htons(0); > : > : + (void)memset(pkt.data, 0xff, SYNC_LEN); > : > : + for (p = pkt.data + SYNC_LEN, i = 0; i < DESTADDR_COUNT; > : > : + p += ETHER_ADDR_LEN, i++) > : > : + bcopy(addr->octet, p, ETHER_ADDR_LEN); > : > : + p = (u_char *)&pkt; > : > : + len = sizeof(pkt); > : > : + bw = 0; > : > : + while (len) { > : > : + if ((bw = write(bpf, &pkt, sizeof(pkt))) == -1) > : > : + return -1; > : > : + len -= bw; > : > : + p += bw; > : > : + } > : > : + return 0; > : > : +} > : > : + > : > : +int > : > : +main(int argc, char *argv[]) > : > : +{ > : > : + int n; > : > : + > : > : + if (argc < 3) > : > : + usage(); > : > : + > : > : + for (n = 2; n < argc; n++) > : > : + if (wake(argv[1], argv[n])) > : > : + warnx("error sending Wake on LAN frame over %s to %s", > : > : + argv[1], argv[n]); > : > : + return 0; > : > : +} > : > : > : > _______________________________________________ > : > svn-src-all@freebsd.org mailing list > : > http://lists.freebsd.org/mailman/listinfo/svn-src-all > : > To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org > " > : > :