diff options
Diffstat (limited to 'net-misc/wakeonlan')
-rw-r--r-- | net-misc/wakeonlan/Manifest | 1 | ||||
-rw-r--r-- | net-misc/wakeonlan/files/wakeonlan-0.41-ethers-lookup.patch | 90 | ||||
-rw-r--r-- | net-misc/wakeonlan/metadata.xml | 9 | ||||
-rw-r--r-- | net-misc/wakeonlan/wakeonlan-0.41-r2.ebuild | 27 |
4 files changed, 127 insertions, 0 deletions
diff --git a/net-misc/wakeonlan/Manifest b/net-misc/wakeonlan/Manifest new file mode 100644 index 000000000000..5d66fc47e588 --- /dev/null +++ b/net-misc/wakeonlan/Manifest @@ -0,0 +1 @@ +DIST wakeonlan-0.41.tar.gz 6028 SHA256 581b1b27a7e810ab72668cce4bd9aa9b3e0cea34b2db24dd1a44c09d63ddda98 SHA512 192ed2ad157e3f5af01632b8f2b727e232448e5a9bff6aec25298fa9913ec38f1036b665b141b5299994c88b1941d9896b6eaa92cfdb44d65db3628f50e3824f WHIRLPOOL ac27332a74a2327dc33914c7e4adaffefcc064a5667baa95ac8e43fffc59b4d2917916c073e93bfcfeb23e5141047b032d3f87b8800e9fba81d956e6f40eef46 diff --git a/net-misc/wakeonlan/files/wakeonlan-0.41-ethers-lookup.patch b/net-misc/wakeonlan/files/wakeonlan-0.41-ethers-lookup.patch new file mode 100644 index 000000000000..6cbc355e2854 --- /dev/null +++ b/net-misc/wakeonlan/files/wakeonlan-0.41-ethers-lookup.patch @@ -0,0 +1,90 @@ +--- wakeonlan-0.41.orig/wakeonlan ++++ wakeonlan-0.41/wakeonlan +@@ -5,6 +5,7 @@ + ######################################################################### + + use strict; ++use Net::hostent; + use Socket; + use Getopt::Std; + use vars qw($VERSION $opt_v $opt_h $opt_i $opt_p $opt_f); +@@ -44,19 +45,64 @@ + + sub wake + { +- my $hwaddr = shift; ++ my $host = shift; + my $ipaddr = shift || $DEFAULT_IP; + my $port = shift || $DEFAULT_PORT; + + my ($raddr, $them, $proto); +- my ($hwaddr_re, $pkt); ++ my ($hwaddr, $hwaddr_re, $pkt); + +- # Validate hardware address (ethernet address) ++ # get the hardware address (ethernet address) + + $hwaddr_re = join(':', ('[0-9A-Fa-f]{1,2}') x 6); +- if ($hwaddr !~ m/^$hwaddr_re$/) { +- warn "Invalid hardware address: $hwaddr\n"; +- return undef; ++ if ($host =~ m/^$hwaddr_re$/) { ++ $hwaddr = $host; ++ } else { ++ # $host is not a hardware address, try to resolve it ++ my $ip_re = join('\.', ('([0-9]|[1-9][0-9]|1[0-9]{2}|2([0-4][0-9]|5[0-5]))') x 4); ++ my $ip_addr; ++ if ($host =~ m/^$ip_re$/) { ++ $ip_addr = $host; ++ } else { ++ my $h; ++ unless ($h = gethost($host)) { ++ warn "$host is not a hardware address and I could not resolve it as to an IP address.\n"; ++ return undef; ++ } ++ $ip_addr = inet_ntoa($h->addr); ++ } ++ # look up ip in /etc/ethers ++ unless (open (ETHERS, '<', '/etc/ethers')) { ++ warn "$host is not a hardware address and I could not open /etc/ethers.\n"; ++ return undef; ++ } ++ while (<ETHERS>) { ++ if (($_ !~ m/^$/) && ($_ !~ m/^#/)) { # ignore comments ++ my ($mac, $ip); ++ ($mac, $ip) = split(' ', $_, 3); ++ if ($ip =~ m/^$ip$/) { ++ if ($ip eq $ip_addr) { ++ $hwaddr = $mac; ++ last; ++ } ++ next; ++ } else { ++ my $h2; ++ unless ($h2 = gethost($ip)) { ++ next; ++ } ++ if (inet_ntoa($h2->addr) eq $ip_addr) { ++ $hwaddr = $mac; ++ last; ++ } ++ } ++ } ++ } ++ close (ETHERS); ++ unless (defined($hwaddr)) { ++ warn "Could not find $host in /etc/ethers\n"; ++ return undef; ++ } + } + + # Generate magic sequence +@@ -68,7 +114,7 @@ + + # Allocate socket and send packet + +- $raddr = gethostbyname($ipaddr); ++ $raddr = gethostbyname($ipaddr)->addr; + $them = pack_sockaddr_in($port, $raddr); + $proto = getprotobyname('udp'); + diff --git a/net-misc/wakeonlan/metadata.xml b/net-misc/wakeonlan/metadata.xml new file mode 100644 index 000000000000..0f0ffc8cb814 --- /dev/null +++ b/net-misc/wakeonlan/metadata.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer> + <email>axs@gentoo.org</email> + <name>Ian Stakenvicius</name> + <description>Primary maintainer</description> + </maintainer> +</pkgmetadata> diff --git a/net-misc/wakeonlan/wakeonlan-0.41-r2.ebuild b/net-misc/wakeonlan/wakeonlan-0.41-r2.ebuild new file mode 100644 index 000000000000..16ee02d1dc71 --- /dev/null +++ b/net-misc/wakeonlan/wakeonlan-0.41-r2.ebuild @@ -0,0 +1,27 @@ +# Copyright 1999-2014 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 + +inherit eutils perl-app + +DESCRIPTION="Client for Wake-On-LAN" +HOMEPAGE="http://gsd.di.uminho.pt/jpo/software/wakeonlan/" +SRC_URI="http://gsd.di.uminho.pt/jpo/software/wakeonlan/downloads/${P}.tar.gz" + +LICENSE="Artistic GPL-2" +SLOT="0" +KEYWORDS="amd64 arm ppc sparc x86 ~x86-fbsd ~x86-freebsd ~amd64-linux ~arm-linux ~x86-linux" +IUSE="" + +DEPEND="virtual/perl-ExtUtils-MakeMaker" + +src_prepare() { + epatch "${FILESDIR}"/"${P}"-ethers-lookup.patch +} + +src_install() { + perl-module_src_install + dodoc examples/lab001.wol +} |