diff options
author | Stefan Briesenick <sbriesen@gentoo.org> | 2010-07-20 20:31:31 +0000 |
---|---|---|
committer | Stefan Briesenick <sbriesen@gentoo.org> | 2010-07-20 20:31:31 +0000 |
commit | 8fa78bd430dbab846cb2a009cb623e9a6252e045 (patch) | |
tree | 3e590b5dcf76f425e7780a3583c5066302121969 /net-dns/ez-ipupdate | |
parent | Added calls to python_mod_optimize (diff) | |
download | historical-8fa78bd430dbab846cb2a009cb623e9a6252e045.tar.gz historical-8fa78bd430dbab846cb2a009cb623e9a6252e045.tar.bz2 historical-8fa78bd430dbab846cb2a009cb623e9a6252e045.zip |
added special linux netlink patch from Martin Väth. solving bug# 318905.
Package-Manager: portage-2.2_rc67/cvs/Linux x86_64
Diffstat (limited to 'net-dns/ez-ipupdate')
-rw-r--r-- | net-dns/ez-ipupdate/ChangeLog | 11 | ||||
-rw-r--r-- | net-dns/ez-ipupdate/Manifest | 4 | ||||
-rw-r--r-- | net-dns/ez-ipupdate/ez-ipupdate-3.0.11_beta8-r6.ebuild | 105 | ||||
-rw-r--r-- | net-dns/ez-ipupdate/files/ez-ipupdate-3.0.11_beta8-linux.diff | 212 |
4 files changed, 329 insertions, 3 deletions
diff --git a/net-dns/ez-ipupdate/ChangeLog b/net-dns/ez-ipupdate/ChangeLog index 990d8f9d9e46..f8151de91292 100644 --- a/net-dns/ez-ipupdate/ChangeLog +++ b/net-dns/ez-ipupdate/ChangeLog @@ -1,6 +1,13 @@ # ChangeLog for net-dns/ez-ipupdate -# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/net-dns/ez-ipupdate/ChangeLog,v 1.29 2009/09/23 18:28:39 patrick Exp $ +# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2 +# $Header: /var/cvsroot/gentoo-x86/net-dns/ez-ipupdate/ChangeLog,v 1.30 2010/07/20 20:31:31 sbriesen Exp $ + +*ez-ipupdate-3.0.11_beta8-r6 (20 Jul 2010) + + 20 Jul 2010; Stefan Briesenick <sbriesen@gentoo.org> + +ez-ipupdate-3.0.11_beta8-r6.ebuild, + +files/ez-ipupdate-3.0.11_beta8-linux.diff: + added special linux netlink patch from Martin Väth. solving bug# 318905. 23 Sep 2009; Patrick Lauer <patrick@gentoo.org> ez-ipupdate-3.0.11_beta8-r4.ebuild, ez-ipupdate-3.0.11_beta8-r5.ebuild: diff --git a/net-dns/ez-ipupdate/Manifest b/net-dns/ez-ipupdate/Manifest index e4144df47527..d60c1ce6c9ee 100644 --- a/net-dns/ez-ipupdate/Manifest +++ b/net-dns/ez-ipupdate/Manifest @@ -1,10 +1,12 @@ AUX ez-ipupdate-3.0.11_beta8-3322.diff 1881 RMD160 5e8177d418cbc2f654c9a97d4f671796d2484494 SHA1 9355723833ef85cf7cdeb8fdb96adc37e52764db SHA256 ee7b5a1bc9807a0b6e1b5885c5a757d73b8aa083f8f1f610d7346b83b9ab6554 AUX ez-ipupdate-3.0.11_beta8-dnsexit.diff 6721 RMD160 e8b018e0fca9506c905a021cb1c101c9a5372156 SHA1 32c6999ae07129a6db8bf4d3758deebf1cae00bd SHA256 beb76bd1362bee077d90b67ec8c7251d13b5c08e2d565d8ffb3f000f48a41198 +AUX ez-ipupdate-3.0.11_beta8-linux.diff 5638 RMD160 b38a4f7d122b6872ed21af6e714465421f4b94b3 SHA1 99b426d8d95deb54ee2733a2223243df18f47637 SHA256 fc25cb5bd0255456e85ff90055a04a5d29eb7a9803940f0aab2f0f4defde36d3 AUX ez-ipupdate-3.0.11_beta8-zoneedit.diff 395 RMD160 57dc5c9723dd47b69bc1c05a0f37735a52401b16 SHA1 ad52cf47fffa02dbcd9acae83c3aecca35bfef03 SHA256 0ecddea907a8ac62a693f043d114920cb6d1900d899ff3a2cdc44438b2031c7f AUX ez-ipupdate.initd 2660 RMD160 9df544e6d6e93f2938438906d475f606bbfa0246 SHA1 d0cb27d3a5f4c7f08ee954526cda81975cf05d88 SHA256 0cedee45e46cfd2e6ee3ebb5a30fe2f1a39d550d580c91d29f5b1a3f2a61577c DIST ez-ipupdate_3.0.11b8-10.diff.gz 58420 RMD160 916da2553c2901bae62de43a09ee4ad9da492c95 SHA1 c16ad9a6c8b32d56841a9760c9e41daf95a2fa86 SHA256 a380abc3173ef49be5cf8600278e1bc941b4503129dd9e682707bb79e1538175 DIST ez-ipupdate_3.0.11b8.orig.tar.gz 81975 RMD160 f193969c5d3c9faa1b6fec41d530557614d62c55 SHA1 bcb0b919067bb235bd195936e85ceca90b4323c0 SHA256 bf5b8d11ffe055c5891d0ab64bbfa86e99cbda645d40f346146b939fec8d962d EBUILD ez-ipupdate-3.0.11_beta8-r4.ebuild 2915 RMD160 c79ee8485310c98f72d7475a6afdae26ab68b0b6 SHA1 a894fa3be430c2284d46c6ab6967a38f113239ca SHA256 02ed7966973c2d616aaf6c653655a440bd4e985affd83b68eaf9c170b2c5d310 EBUILD ez-ipupdate-3.0.11_beta8-r5.ebuild 2960 RMD160 98c2e6d2c447823a6ad1aea1903b46668588e4c1 SHA1 00d3c208b6ebeccd7c8a9eda7711e28b2cfe9485 SHA256 79a017ef288602dd9d4b5a6be4b7b1b6337f981d38d5cd0aaec492c82b99a50c -MISC ChangeLog 5442 RMD160 70b2a1676cb9f3dcc82f9a74d50e493b92e9efd4 SHA1 07706eceded91aaed267f866da72f19a5bc55607 SHA256 4b69482eee4efccc0a5fd0ebfa40d96a7d3cdd872c4955f4dc8881c3c2dbe30d +EBUILD ez-ipupdate-3.0.11_beta8-r6.ebuild 2986 RMD160 7dd6186d6d814e9152461dcb1945c7e06ef5a3f7 SHA1 487caaa804d56fb1018aeb659ce02418902bfff4 SHA256 1c601f84268edc3896b37bd61b3b4ecd0e197834f757c9cb819d5988b4dc1fb7 +MISC ChangeLog 5704 RMD160 969a7a77bbd158d23b167d47ccb3deaac0146be0 SHA1 90a532572018f521f3be098d49b32430c59878dc SHA256 b6750ad0bbaf61cafec40a0704a68f2d44548abf6400a148507f1d6fcafb59b1 MISC metadata.xml 497 RMD160 92b0aae309f59fbe7ae0c6359355aa2abf0308a9 SHA1 203ae4e8d9abea53e4c54ee8dfa8594737991dfa SHA256 9d9ae7d8782c5eedfef88238baa233c1c2ed7c6832ba7ed6a6328bddf41699ba diff --git a/net-dns/ez-ipupdate/ez-ipupdate-3.0.11_beta8-r6.ebuild b/net-dns/ez-ipupdate/ez-ipupdate-3.0.11_beta8-r6.ebuild new file mode 100644 index 000000000000..c4a3ea20c169 --- /dev/null +++ b/net-dns/ez-ipupdate/ez-ipupdate-3.0.11_beta8-r6.ebuild @@ -0,0 +1,105 @@ +# Copyright 1999-2010 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/net-dns/ez-ipupdate/ez-ipupdate-3.0.11_beta8-r6.ebuild,v 1.1 2010/07/20 20:31:31 sbriesen Exp $ + +EAPI="2" + +inherit eutils + +PATCH_VERSION="10" +MY_PV="${PV/_beta/b}" +S="${WORKDIR}/${PN}-${MY_PV}" + +DESCRIPTION="Dynamic DNS client for lots of dynamic dns services" +HOMEPAGE="http://ez-ipupdate.com/" +SRC_URI="mirror://debian/pool/main/e/ez-ipupdate/${PN}_${MY_PV}.orig.tar.gz + mirror://debian/pool/main/e/ez-ipupdate/${PN}_${MY_PV}-${PATCH_VERSION}.diff.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~ppc ~sparc ~x86" +IUSE="" + +DEPEND="" + +src_prepare() { + epatch "${WORKDIR}/${PN}_${MY_PV}-${PATCH_VERSION}.diff" + epatch "${FILESDIR}/${P}-zoneedit.diff" + epatch "${FILESDIR}/${P}-dnsexit.diff" + epatch "${FILESDIR}/${P}-3322.diff" + epatch "${FILESDIR}/${P}-linux.diff" + + # comment out obsolete options + sed -i -e "s:^\(run-as-user.*\):#\1:g" \ + -e "s:^\(cache-file.*\):#\1:g" ex*conf + + # make 'missing' executable (bug #103480) + chmod +x missing +} + +src_compile() { + econf --bindir=/usr/sbin || die "econf failed" + emake || die "emake failed" +} + +src_install() { + emake DESTDIR="${D}" install || die "emake install failed" + newinitd "${FILESDIR}/ez-ipupdate.initd" ez-ipupdate + keepdir /etc/ez-ipupdate /var/cache/ez-ipupdate + + # install docs + dodoc README + newdoc debian/README.Debian README.debian + newdoc debian/changelog ChangeLog.debian + newdoc CHANGELOG ChangeLog + + # install example configs + docinto examples + dodoc ex*conf +} + +pkg_preinst() { + enewgroup ez-ipupd + enewuser ez-ipupd -1 -1 /var/cache/ez-ipupdate ez-ipupd +} + +pkg_postinst() { + chmod 750 /etc/ez-ipupdate /var/cache/ez-ipupdate + chown ez-ipupd:ez-ipupd /etc/ez-ipupdate /var/cache/ez-ipupdate + + elog + elog "Please create one or more config files in" + elog "/etc/ez-ipupdate/. A bunch of samples can" + elog "be found in the doc directory." + elog + elog "All config files must have a '.conf' extension." + elog + elog "Please do not use the 'run-as-user', 'run-as-euser'," + elog "'cache-file' and 'pidfile' options, since these are" + elog "handled internally by the init-script!" + elog + elog "If you want to use ez-ipupdate in daemon mode," + elog "please add 'daemon' to the config file(s) and" + elog "add the ez-ipupdate init-script to the default" + elog "runlevel." + elog + elog "Without the 'daemon' option, you can run the" + elog "init-script with the 'update' parameter inside" + elog "your PPP ip-up script." + elog + + if [ -f /etc/ez-ipupdate.conf ]; then + elog "!!! IMPORTANT UPDATE NOTICE !!!" + elog + elog "The ez-ipupdate init-script can now handle more" + elog "than one config file. New config file location is" + elog "/etc/ez-ipupdate/*.conf" + elog + if [ ! -f /etc/ez-ipupdate/default.conf ]; then + mv -f /etc/ez-ipupdate.conf /etc/ez-ipupdate/default.conf + elog "Your old configuration has been moved to" + elog "/etc/ez-ipupdate/default.conf" + elog + fi + fi +} diff --git a/net-dns/ez-ipupdate/files/ez-ipupdate-3.0.11_beta8-linux.diff b/net-dns/ez-ipupdate/files/ez-ipupdate-3.0.11_beta8-linux.diff new file mode 100644 index 000000000000..22d45190682a --- /dev/null +++ b/net-dns/ez-ipupdate/files/ez-ipupdate-3.0.11_beta8-linux.diff @@ -0,0 +1,212 @@ +--- ez-ipupdate.c.orig ++++ ez-ipupdate.c +@@ -172,6 +172,17 @@ + # ifdef HAVE_SYS_SOCKIO_H + # include <sys/sockio.h> + # endif ++# ifdef __linux__ ++# include <linux/if.h> ++# include <linux/netlink.h> ++# include <linux/rtnetlink.h> ++/* Under Linux, we reopen socket in get_if_addr() every time */ ++# define socketopen(sock) ++# define socketclose(sock) ++# else ++# define socketopen(sock) sock = socket(AF_INET, SOCK_STREAM, 0) ++# define socketclose(sock) close(sock) ++# endif + #endif + + #include <dprintf.h> +@@ -1605,6 +1616,114 @@ + int get_if_addr(int sock, char *name, struct sockaddr_in *sin) + { + #ifdef IF_LOOKUP ++#ifdef __linux__ ++ struct { ++ struct nlmsghdr nlmsg_info; ++ struct ifaddrmsg ifaddrmsg_info; ++ char buffer[2048]; ++ } req; ++ struct nlmsghdr *curr; ++ int len; ++ char buf[8192]; ++ ++ /* open a socket and bind it. ++ Under non-linux, the socket can be kept open, but it seems under ++ linux we cannot use the same socket for several requests reliable ++ [although sometimes it works...] */ ++ static struct sockaddr_nl local; ++ sock = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE); ++ if(sock < 0) { ++ perror("socket"); ++ return -1; ++ } ++ local.nl_family = AF_NETLINK; ++ local.nl_pad = 0; ++ local.nl_pid = getpid(); ++ local.nl_groups = 0; ++ if(bind(sock, (struct sockaddr*) &local, sizeof(local)) < 0) { ++ perror("bind"); ++ close(sock); ++ return -1; ++ } ++ ++ memset(&req, 0, sizeof(req)); ++ req.nlmsg_info.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifaddrmsg)); ++ req.nlmsg_info.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP; ++ req.nlmsg_info.nlmsg_type = RTM_GETADDR; ++ req.nlmsg_info.nlmsg_pid = getpid(); ++ req.ifaddrmsg_info.ifa_family = AF_INET; ++ if(send(sock, &req, req.nlmsg_info.nlmsg_len, 0) < 0) { ++ perror("sendmsg(sock)"); ++ close(sock); ++ return -1; ++ } ++ ++ len = recv(sock, buf, sizeof(buf), 0); ++ close(sock); ++ if(len < 0) { ++ perror("recv"); ++ return -1; ++ } else if(len == 0) { ++ dprintf((stderr, "No interfaces found")); ++ return -1; ++ } ++ ++ /* Initialize sin except for address */ ++ bzero(sin, sizeof(struct sockaddr_in)); ++ sin->sin_family = AF_INET; ++ ++ /* We take the last non-private IP with matching name */ ++ int found = 0; ++ curr = (struct nlmsghdr *) buf; ++ for(; NLMSG_OK(curr, len); curr = NLMSG_NEXT(curr, len)) { ++ struct ifaddrmsg *curraddr = (struct ifaddrmsg *) NLMSG_DATA(curr); ++ struct rtattr *datalist = (struct rtattr *) IFA_RTA(curraddr); ++ int datalen = IFA_PAYLOAD(curr); ++ int mystat = 0; ++ struct in_addr sin_addr; ++ in_addr_t addr; ++ for(; RTA_OK(datalist, datalen); datalist = RTA_NEXT(datalist, datalen)) { ++ switch(datalist->rta_type) { ++ case IFA_LABEL: ++ if(strcmp((char *)RTA_DATA(datalist), name) != 0) ++ mystat = -1; ++ break; ++ case IFA_LOCAL: ++ addr = ((struct in_addr *)RTA_DATA(datalist))->s_addr; ++ /* addr: 192.168.0.0/16 || 172.16.0.0/12 || 10.0.0.0/8 */ ++ if(((addr & 0xFFFF) == 0xA8C0) ++ || ((addr & 0xF0FF) == 0x10AC) ++ || ((addr & 0xFF) == 0x0A)) { ++ mystat = -1; ++ } ++ else { ++ /* We must not store yet sin->sin_addr, since name might not match */ ++ sin_addr = *((struct in_addr *)RTA_DATA(datalist)); ++ mystat = 1; ++ } ++ break; ++ default: ++ break; ++ } ++ if(mystat < 0) ++ break; ++ } ++ if(mystat > 0) { ++ sin->sin_addr = sin_addr; ++ found = 1; ++ /* If you want to take the first non-private IP with matching name ++ uncomment the next break command: ++ break; */ ++ } ++ } ++ if(found) { ++ dprintf((stderr, "%s: %s\n", name, inet_ntoa(sin->sin_addr))); ++ return 0; ++ } ++ dprintf((stderr, "%s: %s\n", name, "has no non-private address")); ++ return -1; ++#else ++/* ifndef __linux__ */ + struct ifreq ifr; + + memset(&ifr, 0, sizeof(ifr)); +@@ -1638,7 +1757,10 @@ + return -1; + } + return -1; ++#endif ++/* endif __linux__ */ + #else ++/* ifndef IF_LOOKUP */ + return -1; + #endif + } +@@ -4490,7 +4612,7 @@ + #ifdef IF_LOOKUP + if(options & OPT_DAEMON) + { +- sock = socket(AF_INET, SOCK_STREAM, 0); ++ socketopen(sock); + } + #endif + +@@ -4745,12 +4867,12 @@ + struct sockaddr_in sin; + int sock; + +- sock = socket(AF_INET, SOCK_STREAM, 0); ++ socketopen(sock); + if(get_if_addr(sock, interface, &sin) != 0) + { + exit(1); + } +- close(sock); ++ socketclose(sock); + snprintf(ipbuf, sizeof(ipbuf), "%s", inet_ntoa(sin.sin_addr)); + #else + fprintf(stderr, "interface lookup not enabled at compile time\n"); +@@ -4791,7 +4913,7 @@ + struct sockaddr_in sin; + int sock; + +- sock = socket(AF_INET, SOCK_STREAM, 0); ++ socketopen(sock); + if(get_if_addr(sock, interface, &sin) == 0) + { + if(address) { free(address); } +@@ -4802,7 +4924,7 @@ + show_message("could not resolve ip address for %s.\n", interface); + exit(1); + } +- close(sock); ++ socketclose(sock); + } + + for(i=0; i<ntrys; i++) +@@ -4846,12 +4968,12 @@ + struct sockaddr_in sin; + int sock; + +- sock = socket(AF_INET, SOCK_STREAM, 0); ++ socketopen(sock); + if(get_if_addr(sock, interface, &sin) != 0) + { + exit(1); + } +- close(sock); ++ socketclose(sock); + snprintf(ipbuf, sizeof(ipbuf), "%s", inet_ntoa(sin.sin_addr)); + #else + fprintf(stderr, "interface lookup not enabled at compile time\n"); +@@ -4878,7 +5000,7 @@ + } + + #ifdef IF_LOOKUP +- if(sock > 0) { close(sock); } ++ if(sock > 0) { socketclose(sock); } + #endif + + if(address) { free(address); } |