diff options
author | Daniel Black <dragonheart@gentoo.org> | 2004-08-07 01:31:34 +0000 |
---|---|---|
committer | Daniel Black <dragonheart@gentoo.org> | 2004-08-07 01:31:34 +0000 |
commit | 232b937a1d0ea19412e8e541a3d6bb8c3d182802 (patch) | |
tree | 2f756dbe770fca8a66efb06ee0f68737cda3b68a | |
parent | fix typo. (Manifest recommit) (diff) | |
download | gentoo-2-232b937a1d0ea19412e8e541a3d6bb8c3d182802.tar.gz gentoo-2-232b937a1d0ea19412e8e541a3d6bb8c3d182802.tar.bz2 gentoo-2-232b937a1d0ea19412e8e541a3d6bb8c3d182802.zip |
0.17-r6 broken as per bug #59610. Removed timed.c and replaced with patch.Version 0.17-r7 fixed the problem.
-rw-r--r-- | net-misc/netkit-timed/ChangeLog | 11 | ||||
-rw-r--r-- | net-misc/netkit-timed/Manifest | 6 | ||||
-rw-r--r-- | net-misc/netkit-timed/files/0.17-CFLAG-DEF-fix.patch | 55 | ||||
-rw-r--r-- | net-misc/netkit-timed/files/0.17-timed.patch | 25 | ||||
-rw-r--r-- | net-misc/netkit-timed/files/digest-netkit-timed-0.17-r7 | 1 | ||||
-rw-r--r-- | net-misc/netkit-timed/files/timed.c | 984 | ||||
-rw-r--r-- | net-misc/netkit-timed/metadata.xml | 9 | ||||
-rw-r--r-- | net-misc/netkit-timed/netkit-timed-0.17-r6.ebuild | 8 | ||||
-rw-r--r-- | net-misc/netkit-timed/netkit-timed-0.17-r7.ebuild | 37 |
9 files changed, 146 insertions, 990 deletions
diff --git a/net-misc/netkit-timed/ChangeLog b/net-misc/netkit-timed/ChangeLog index 5e1a6f7627ea..bd6b0f5105c6 100644 --- a/net-misc/netkit-timed/ChangeLog +++ b/net-misc/netkit-timed/ChangeLog @@ -1,6 +1,15 @@ # ChangeLog for net-misc/netkit-timed # Copyright 2002-2004 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/net-misc/netkit-timed/ChangeLog,v 1.9 2004/07/01 21:34:03 squinky86 Exp $ +# $Header: /var/cvsroot/gentoo-x86/net-misc/netkit-timed/ChangeLog,v 1.10 2004/08/07 01:31:34 dragonheart Exp $ + +*netkit-timed-0.17-r7 (07 Aug 2004) + + 07 Aug 2004; Daniel Black <dragonheart@gentoo.org> + +files/0.17-CFLAG-DEF-fix.patch, +files/0.17-timed.patch, -files/timed.c, + netkit-timed-0.17-r6.ebuild, +netkit-timed-0.17-r7.ebuild +metadata.xml: + 0.17-r6 broken as per bug #59610. Removed timed.c and replaced with patch. + Version 0.17-r7 fixed the problem. Thanks to Antonio <netbix@tiscali.it> for + the bug report and Jens Lindemann <jens.lindemann@gmail.com> for the fix. 01 Jul 2004; Jon Hood <squinky86@gentoo.org> netkit-timed-0.17-r6.ebuild: change virtual/glibc to virtual/libc, add IUSE diff --git a/net-misc/netkit-timed/Manifest b/net-misc/netkit-timed/Manifest index 5aacef0c008d..dacca08f0fe7 100644 --- a/net-misc/netkit-timed/Manifest +++ b/net-misc/netkit-timed/Manifest @@ -1,6 +1,8 @@ MD5 83dece448d3bd61da43244766806e95e ChangeLog 1234 +MD5 797e162b31c137c49fd7c963b6687725 netkit-timed-0.17-r7.ebuild 960 MD5 c6d13d9445b80e8f468c4fc53933c0a7 netkit-timed-0.17-r6.ebuild 841 +MD5 a968cd4ed6e20ba5caca252089d73a88 files/digest-netkit-timed-0.17-r6 68 MD5 2674064ee1f22cdf5bf08d9aaeb0c23c files/timed.rc5 704 MD5 af6cc7c3161dec7c5987639b5f4ced10 files/timed.rc6 471 -MD5 541271edee1c0be42ea3f81278cfebd3 files/timed.c 22502 -MD5 a968cd4ed6e20ba5caca252089d73a88 files/digest-netkit-timed-0.17-r6 68 +MD5 a968cd4ed6e20ba5caca252089d73a88 files/digest-netkit-timed-0.17-r7 68 +MD5 14536c906a1b3fa5a8d11640fef91f78 files/0.17-CFLAG-DEF-fix.patch 1551 diff --git a/net-misc/netkit-timed/files/0.17-CFLAG-DEF-fix.patch b/net-misc/netkit-timed/files/0.17-CFLAG-DEF-fix.patch new file mode 100644 index 000000000000..6d3fbf704ba5 --- /dev/null +++ b/net-misc/netkit-timed/files/0.17-CFLAG-DEF-fix.patch @@ -0,0 +1,55 @@ +diff -ru netkit-timed-0.17/configure netkit-timed-0.17.fixed/configure +--- netkit-timed-0.17/configure 2000-07-23 15:12:26.000000000 +0930 ++++ netkit-timed-0.17.fixed/configure 2004-08-07 09:22:47.860505136 +0930 +@@ -115,39 +115,6 @@ + echo 'no' + fi + +-if [ x$DEBUG = x ]; then +- echo -n "Checking if $CC accepts -O2... " +- if ( +- $CC -O2 __conftest.c -o __conftest +- ) >/dev/null 2>&1; then +- echo 'yes' +- CFLAGS="$CFLAGS -O2" +- else +- echo 'no' +- echo -n "Checking if $CC accepts -O... " +- if ( +- $CC -O __conftest.c -o __conftest +- ) >/dev/null 2>&1; then +- echo 'yes' +- CFLAGS="$CFLAGS -O" +- else +- echo 'no' +- fi +- fi +- +-else +- echo -n "Checking if $CC accepts -g... " +- if ( +- $CC -g __conftest.c -o __conftest +- ) >/dev/null 2>&1; then +- echo 'yes' +- CFLAGS="$CFLAGS -g" +- else +- echo 'no' +- fi +- +-fi +- + LDFLAGS= + LIBS= + +diff -ru netkit-timed-0.17/timed/timed/timed.c netkit-timed-0.17.fixed/timed/timed/timed.c +--- netkit-timed-0.17/timed/timed/timed.c 1999-12-13 03:35:07.000000000 +0930 ++++ netkit-timed-0.17.fixed/timed/timed/timed.c 2004-08-07 09:26:32.299385240 +0930 +@@ -898,7 +898,7 @@ + void + get_goodgroup(int force) + { +-# define NG_DELAY (30*60*CLK_TCK) /* 30 minutes */ ++# define NG_DELAY (30*60*CLOCKS_PER_SEC) /* 30 minutes */ + static unsigned long last_update = -NG_DELAY; + unsigned long new_update; + /* struct hosttbl *htp; */ diff --git a/net-misc/netkit-timed/files/0.17-timed.patch b/net-misc/netkit-timed/files/0.17-timed.patch new file mode 100644 index 000000000000..59e7952c28bc --- /dev/null +++ b/net-misc/netkit-timed/files/0.17-timed.patch @@ -0,0 +1,25 @@ +diff -ru netkit-timed-0.17.orig/timed/timed/timed.c netkit-timed-0.17/timed/timed/timed.c +--- netkit-timed-0.17.orig/timed/timed/timed.c 1999-12-13 03:35:07.000000000 +0930 ++++ netkit-timed-0.17/timed/timed/timed.c 2004-08-07 09:37:11.924147496 +0930 +@@ -39,10 +39,10 @@ + * From: @(#)timed.c 5.1 (Berkeley) 5/11/93 + */ + char timed_rcsid[] = +- "$Id: 0.17-timed.patch,v 1.1 2004/08/07 01:31:34 dragonheart Exp $"; ++ "$Id: 0.17-timed.patch,v 1.1 2004/08/07 01:31:34 dragonheart Exp $"; + + #ifdef sgi +-#ident "$Revision: 1.1 $" ++#ident "$Revision: 1.1 $" + #endif /* sgi */ + + #define TSPTYPES +@@ -899,7 +899,7 @@ + get_goodgroup(int force) + { + # define NG_DELAY (30*60*CLK_TCK) /* 30 minutes */ +- static unsigned long last_update = -NG_DELAY; ++ const unsigned long last_update = -NG_DELAY; + unsigned long new_update; + /* struct hosttbl *htp; */ + struct goodhost *ghp, **ghpp; diff --git a/net-misc/netkit-timed/files/digest-netkit-timed-0.17-r7 b/net-misc/netkit-timed/files/digest-netkit-timed-0.17-r7 new file mode 100644 index 000000000000..f4d493a33fdb --- /dev/null +++ b/net-misc/netkit-timed/files/digest-netkit-timed-0.17-r7 @@ -0,0 +1 @@ +MD5 1bffb4db753d9e5be227e444cf119bfe netkit-timed-0.17.tar.gz 48655 diff --git a/net-misc/netkit-timed/files/timed.c b/net-misc/netkit-timed/files/timed.c deleted file mode 100644 index b09e879838cc..000000000000 --- a/net-misc/netkit-timed/files/timed.c +++ /dev/null @@ -1,984 +0,0 @@ -/*- - * Copyright (c) 1985, 1993 The Regents of the University of California. - * 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. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. - */ - -char copyright[] = - "@(#) Copyright (c) 1985, 1993 The Regents of the University of California.\n" - "All rights reserved.\n"; - -/* - * From: @(#)timed.c 5.1 (Berkeley) 5/11/93 - */ -char timed_rcsid[] = - "$Id: timed.c,v 1.1 2000/11/15 16:33:16 achim Exp $"; - -#ifdef sgi -#ident "$Revision: 1.1 $" -#endif /* sgi */ - -#define TSPTYPES -#include "globals.h" -#include <net/if.h> - -#if 0 - #include <sys/file.h> - #include <sys/types.h> -#endif - -#include <sys/ioctl.h> -#include <setjmp.h> -#include <math.h> -#include <sys/times.h> -#ifdef sgi -#include <unistd.h> -#include <sys/syssgi.h> -#include <sys/schedctl.h> -#endif /* sgi */ - -#include "../../version.h" - -#ifdef __linux__ -/* from libbsd.a */ -int daemon(int, int); -#endif - - -int trace = 0; -int sock, sock_raw = -1; -int status = 0; -u_short sequence; /* sequence number */ -long delay1; -long delay2; - -int nslavenets; /* nets were I could be a slave */ -int nmasternets; /* nets were I could be a master */ -int nignorednets; /* ignored nets */ -int nnets; /* nets I am connected to */ - -FILE *fd; /* trace file FD */ - -sigjmp_buf jmpenv; - -struct netinfo *nettab = 0; -struct netinfo *slavenet; -int Mflag; -int justquit = 0; -int debug; - -static struct nets { - char *name; - unsigned long net; - struct nets *next; -} *nets = 0; - -struct hosttbl hosttbl[NHOSTS+1]; /* known hosts */ - -static struct goodhost { /* hosts that we trust */ - char name[MAXHOSTNAMELEN+1]; - struct goodhost *next; - char perm; -} *goodhosts; - -static char *goodgroup; /* net group of trusted hosts */ -static void checkignorednets(void); -static void pickslavenet(struct netinfo *); -static void add_good_host(char*,char); - -#ifdef sgi -char *timetrim_fn; -char *timetrim_wpat = "long timetrim = %ld;\ndouble tot_adj = %.0f;\ndouble tot_ticks = %.0f;\n/* timed version 2 */\n"; -char *timetrim_rpat = "long timetrim = %ld;\ndouble tot_adj = %lf;\ndouble tot_ticks = %lf;"; -long timetrim; -double tot_adj, hr_adj; /* totals in nsec */ -double tot_ticks, hr_ticks; - -int bufspace = 60*1024; -#endif - - -/* - * The timedaemons synchronize the clocks of hosts in a local area network. - * One daemon runs as master, all the others as slaves. The master - * performs the task of computing clock differences and sends correction - * values to the slaves. - * Slaves start an election to choose a new master when the latter disappears - * because of a machine crash, network partition, or when killed. - * A resolution protocol is used to kill all but one of the masters - * that happen to exist in segments of a partitioned network when the - * network partition is fixed. - * - * Authors: Riccardo Gusella & Stefano Zatti - * - * overhauled at Silicon Graphics - */ -int -main(int argc, char **argv) -{ - int on; - int ret; - int nflag, iflag; - struct timeval ntime; - struct servent *srvp; - char buf[BUFSIZ], *cp, *cplim; - struct ifconf ifc; - struct ifreq ifreq, ifreqf, *ifr; - register struct netinfo *ntp; - struct netinfo *ntip; - struct netinfo *savefromnet; - struct netent *nentp; - struct nets *nt; - struct sockaddr_in server; - u_short port; - char c; -#ifdef sgi - FILE *timetrim_st; -#endif - -#define IN_MSG "timed: -i and -n make no sense together\n" -#ifdef sgi - struct tms tms; -#define USAGE "timed: [-dtM] [-i net|-n net] [-F host1 host2 ...] [-G netgp] [-P trimfile]\n" -#else -#ifdef HAVENIS -#define USAGE "timed: [-dtM] [-i net|-n net] [-F host1 host2 ...] [-G netgp]\n" -#else -#define USAGE "timed: [-dtM] [-i net|-n net] [-F host1 host2 ...]\n" -#endif /* HAVENIS */ -#endif /* sgi */ - - ntip = NULL; - - on = 1; - nflag = OFF; - iflag = OFF; - -#ifdef sgi - if (0 > syssgi(SGI_GETTIMETRIM, &timetrim)) { - perror("timed: syssgi(GETTIMETRIM)"); - timetrim = 0; - } - tot_ticks = hr_ticks = times(&tms); -#endif /* sgi */ - - opterr = 0; - while ((c = getopt(argc, argv, "Mtdn:i:F:G:P:")) != EOF) { - switch (c) { - case 'M': - Mflag = 1; - break; - - case 't': - trace = 1; - break; - - case 'n': - if (iflag) { - fprintf(stderr, IN_MSG); - exit(1); - } else { - nflag = ON; - addnetname(optarg); - } - break; - - case 'i': - if (nflag) { - fprintf(stderr, IN_MSG); - exit(1); - } else { - iflag = ON; - addnetname(optarg); - } - break; - - case 'F': - add_good_host(optarg,1); - while (optind < argc && argv[optind][0] != '-') - add_good_host(argv[optind++], 1); - break; - - case 'd': - debug = 1; - break; - case 'G': - if (goodgroup != 0) { - fprintf(stderr,"timed: only one net group\n"); - exit(1); - } - goodgroup = optarg; - break; -#ifdef sgi - case 'P': - timetrim_fn = optarg; - break; -#endif /* sgi */ - - default: - fprintf(stderr, USAGE); - exit(1); - break; - } - } - if (optind < argc) { - fprintf(stderr, USAGE); - exit(1); - } - -#ifdef sgi - if (timetrim_fn == 0) { - ; - } else if (0 == (timetrim_st = fopen(timetrim_fn, "r+"))) { - if (errno != ENOENT) { - (void)fprintf(stderr,"timed: "); - perror(timetrim_fn); - timetrim_fn = 0; - } - } else { - int i; - long trim; - double adj, ticks; - - i = fscanf(timetrim_st, timetrim_rpat, - &trim, &adj, &ticks); - if (i < 1 - || trim > MAX_TRIM - || trim < -MAX_TRIM - || i == 2 - || (i == 3 - && trim != rint(adj*CLK_TCK/ticks))) { - if (trace && i != EOF) - (void)fprintf(stderr, - "timed: unrecognized contents in %s\n", - timetrim_fn); - } else { - if (0 > syssgi(SGI_SETTIMETRIM, - trim)) { - perror("timed: syssgi(SETTIMETRIM)"); - } else { - timetrim = trim; - } - if (i == 3) - tot_ticks -= ticks; - } - (void)fclose(timetrim_st); - } -#endif /* sgi */ - - /* If we care about which machine is the master, then we must - * be willing to be a master - */ - if (0 != goodgroup || 0 != goodhosts) - Mflag = 1; - - if (gethostname(hostname, sizeof(hostname) - 1) < 0) { - perror("gethostname"); - exit(1); - } - self.l_bak = &self; - self.l_fwd = &self; - self.h_bak = &self; - self.h_fwd = &self; - self.head = 1; - self.good = 1; - - if (goodhosts != 0) /* trust ourself */ - add_good_host(hostname,1); - - srvp = getservbyname("timed", "udp"); - if (srvp == 0) { - fprintf(stderr, "unknown service 'timed/udp'\n"); - exit(1); - } - port = srvp->s_port; - memset(&server, 0, sizeof(server)); - server.sin_port = srvp->s_port; - server.sin_family = AF_INET; - server.sin_addr.s_addr = INADDR_ANY; - sock = socket(AF_INET, SOCK_DGRAM, 0); - if (sock < 0) { - perror("socket"); - exit(1); - } - if (setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char *)&on, - sizeof(on)) < 0) { - perror("setsockopt"); - exit(1); - } - if (bind(sock, (struct sockaddr*)&server, sizeof(server))) { - if (errno == EADDRINUSE) - fprintf(stderr,"timed: time daemon already running\n"); - else - perror("bind"); - exit(1); - } -#ifdef sgi - /* - * handle many slaves with our buffer - */ - if (0 > setsockopt(sock, SOL_SOCKET, SO_RCVBUF, (char*)&bufspace, - sizeof(bufspace))) { - perror("setsockopt"); - exit(1); - } -#endif /* sgi */ - - /* choose a unique seed for random number generation */ - (void)gettimeofday(&ntime, 0); - srandom(ntime.tv_sec + ntime.tv_usec); - - sequence = random(); /* initial seq number */ - -#ifndef sgi - /* rounds kernel variable time to multiple of 5 ms. */ - ntime.tv_sec = 0; - ntime.tv_usec = -((ntime.tv_usec/1000) % 5) * 1000; - (void)adjtime(&ntime, (struct timeval *)0); -#endif /* sgi */ - - for (nt = nets; nt; nt = nt->next) { - nentp = getnetbyname(nt->name); - if (nentp == 0) { - nt->net = inet_network(nt->name); - if (nt->net != INADDR_NONE) - nentp = getnetbyaddr(nt->net, AF_INET); - } - if (nentp != 0) { - nt->net = nentp->n_net; - } else if (nt->net == INADDR_NONE) { - fprintf(stderr, "timed: unknown net %s\n", nt->name); - exit(1); - } else if (nt->net == INADDR_ANY) { - fprintf(stderr, "timed: bad net %s\n", nt->name); - exit(1); - } else { - fprintf(stderr, - "timed: warning: %s unknown in /etc/networks\n", - nt->name); - } - - /* WTF? */ - /* - if (0 == (nt->net & 0xff000000)) - nt->net <<= 8; - if (0 == (nt->net & 0xff000000)) - nt->net <<= 8; - if (0 == (nt->net & 0xff000000)) - nt->net <<= 8; - */ - nt->net = htonl(nt->net); - - } - ifc.ifc_len = sizeof(buf); - ifc.ifc_buf = buf; - if (ioctl(sock, SIOCGIFCONF, (char *)&ifc) < 0) { - perror("timed: get interface configuration"); - exit(1); - } - ntp = NULL; -#ifdef sgi -#define size(p) (sizeof(*ifr) - sizeof(ifr->ifr_name)) /* XXX hack. kludge */ -#else -#define size(p) max((p).sa_len, sizeof(p)) -#endif - cplim = buf + ifc.ifc_len; /*skip over if's with big ifr_addr's */ - -/* for (cp = buf; cp < cplim; - cp += sizeof (ifr->ifr_name) + sizeof(ifr->ifr_addr)) { */ - - for (cp = buf; cp < cplim; cp += sizeof(struct ifreq)) { - ifr = (struct ifreq *)cp; - if (ifr->ifr_addr.sa_family != AF_INET) - continue; - if (!ntp) - ntp = (struct netinfo*)malloc(sizeof(struct netinfo)); - bzero(ntp,sizeof(*ntp)); - ntp->my_addr=((struct sockaddr_in *)&ifr->ifr_addr)->sin_addr; - ntp->status = NOMASTER; - ifreq = *ifr; - ifreqf = *ifr; - - if (ioctl(sock, SIOCGIFFLAGS, (char *)&ifreqf) < 0) { - perror("get interface flags"); - continue; - } - if ((ifreqf.ifr_flags & IFF_UP) == 0) - continue; - if ((ifreqf.ifr_flags & IFF_BROADCAST) == 0 && - (ifreqf.ifr_flags & IFF_POINTOPOINT) == 0) { - continue; - } - - - if (ioctl(sock, SIOCGIFNETMASK, (char *)&ifreq) < 0) { - perror("get netmask"); - continue; - } - ntp->mask = ((struct sockaddr_in *) - &ifreq.ifr_addr)->sin_addr.s_addr; - - if (ifreqf.ifr_flags & IFF_BROADCAST) { - if (ioctl(sock, SIOCGIFBRDADDR, (char *)&ifreq) < 0) { - perror("get broadaddr"); - continue; - } - ntp->dest_addr = *(struct sockaddr_in *)&ifreq.ifr_broadaddr; - /* What if the broadcast address is all ones? - * So we cannot just mask ntp->dest_addr. */ - ntp->net = ntp->my_addr; - ntp->net.s_addr &= ntp->mask; - } else { - if (ioctl(sock, SIOCGIFDSTADDR, - (char *)&ifreq) < 0) { - perror("get destaddr"); - continue; - } - ntp->dest_addr = *(struct sockaddr_in *)&ifreq.ifr_dstaddr; - ntp->net = ntp->dest_addr.sin_addr; - } - - ntp->dest_addr.sin_port = port; - - for (nt = nets; nt; nt = nt->next) { - if (ntp->net.s_addr == nt->net) - break; - } - if ((nflag && !nt) || (iflag && nt)) - continue; - - ntp->next = NULL; - if (nettab == NULL) { - nettab = ntp; - } else { - ntip->next = ntp; - } - ntip = ntp; - ntp = NULL; - } - if (ntp) - (void) free((char *)ntp); - if (nettab == NULL) { - fprintf(stderr, "timed: no network usable\n"); - exit(1); - } - - -#ifdef sgi - (void)schedctl(RENICE,0,10); /* run fast to get good time */ - - /* ticks to delay before responding to a broadcast */ - delay1 = casual(0, CLK_TCK/10); -#else - - /* microseconds to delay before responding to a broadcast */ - delay1 = casual(1, 100*1000); -#endif /* sgi */ - - /* election timer delay in secs. */ - delay2 = casual(MINTOUT, MAXTOUT); - - -#ifdef sgi - (void)_daemonize(debug ? _DF_NOFORK|_DF_NOCHDIR : 0, sock, -1, -1); -#else - if (!debug) - daemon(debug, 0); -#endif /* sgi */ - - if (trace) - traceon(); - openlog("timed", LOG_CONS|LOG_PID, LOG_DAEMON); - - /* - * keep returning here - */ - ret = sigsetjmp(jmpenv, 1); - savefromnet = fromnet; - setstatus(); - - if (Mflag) { - switch (ret) { - - case 0: - checkignorednets(); - pickslavenet(0); - break; - case 1: - /* Just lost our master */ - if (slavenet != 0) - slavenet->status = election(slavenet); - if (!slavenet || slavenet->status == MASTER) { - checkignorednets(); - pickslavenet(0); - } else { - makeslave(slavenet); /* prune extras */ - } - break; - - case 2: - /* Just been told to quit */ - justquit = 1; - pickslavenet(savefromnet); - break; - } - - setstatus(); - if (!(status & MASTER) && sock_raw != -1) { - /* sock_raw is not being used now */ - (void)close(sock_raw); - sock_raw = -1; - } - - if (status == MASTER) - master(); - else - slave(); - - } else { - if (sock_raw != -1) { - (void)close(sock_raw); - sock_raw = -1; - } - - if (ret) { - /* we just lost our master or were told to quit */ - justquit = 1; - } - for (ntp = nettab; ntp != NULL; ntp = ntp->next) { - if (ntp->status == MASTER) - rmnetmachs(ntp); - ntp->status = NOMASTER; - } - checkignorednets(); - pickslavenet(0); - setstatus(); - - slave(); - } - /* NOTREACHED */ - return 0; -} - - -/* suppress an upstart, untrustworthy, self-appointed master - */ -void -suppress(struct sockaddr_in *addr, - char *name, - struct netinfo *net) -{ - struct sockaddr_in tgt; - char tname[MAXHOSTNAMELEN]; - struct tsp msg; - static struct timeval wait; - - if (trace) - fprintf(fd, "suppress: %s\n", name); - tgt = *addr; - (void)strcpy(tname, name); - - while (0 != readmsg(TSP_ANY, ANYADDR, &wait, net)) { - if (trace) - fprintf(fd, "suppress:\tdiscarded packet from %s\n", - name); - } - - syslog(LOG_NOTICE, "suppressing false master %s", tname); - msg.tsp_type = TSP_QUIT; - (void)strcpy(msg.tsp_name, hostname); - (void)acksend(&msg, &tgt, tname, TSP_ACK, 0, 1); -} - -void -lookformaster(struct netinfo *ntp) -{ - struct tsp resp, conflict, *answer; - struct timeval ntime; - char mastername[MAXHOSTNAMELEN]; - struct sockaddr_in masteraddr; - - get_goodgroup(0); - ntp->status = SLAVE; - - /* look for master */ - resp.tsp_type = TSP_MASTERREQ; - (void)strcpy(resp.tsp_name, hostname); - answer = acksend(&resp, &ntp->dest_addr, ANYADDR, - TSP_MASTERACK, ntp, 0); - if (answer != 0 && !good_host_name(answer->tsp_name)) { - suppress(&from, answer->tsp_name, ntp); - ntp->status = NOMASTER; - answer = 0; - } - if (answer == 0) { - /* - * Various conditions can cause conflict: races between - * two just started timedaemons when no master is - * present, or timedaemons started during an election. - * A conservative approach is taken. Give up and became a - * slave, postponing election of a master until first - * timer expires. - */ - ntime.tv_sec = ntime.tv_usec = 0; - answer = readmsg(TSP_MASTERREQ, ANYADDR, &ntime, ntp); - if (answer != 0) { - if (!good_host_name(answer->tsp_name)) { - suppress(&from, answer->tsp_name, ntp); - ntp->status = NOMASTER; - } - return; - } - - ntime.tv_sec = ntime.tv_usec = 0; - answer = readmsg(TSP_MASTERUP, ANYADDR, &ntime, ntp); - if (answer != 0) { - if (!good_host_name(answer->tsp_name)) { - suppress(&from, answer->tsp_name, ntp); - ntp->status = NOMASTER; - } - return; - } - - ntime.tv_sec = ntime.tv_usec = 0; - answer = readmsg(TSP_ELECTION, ANYADDR, &ntime, ntp); - if (answer != 0) { - if (!good_host_name(answer->tsp_name)) { - suppress(&from, answer->tsp_name, ntp); - ntp->status = NOMASTER; - } - return; - } - - if (Mflag) - ntp->status = MASTER; - else - ntp->status = NOMASTER; - return; - } - - ntp->status = SLAVE; - (void)strcpy(mastername, answer->tsp_name); - masteraddr = from; - - /* - * If network has been partitioned, there might be other - * masters; tell the one we have just acknowledged that - * it has to gain control over the others. - */ - ntime.tv_sec = 0; - ntime.tv_usec = 300000; - answer = readmsg(TSP_MASTERACK, ANYADDR, &ntime, ntp); - /* - * checking also not to send CONFLICT to ack'ed master - * due to duplicated MASTERACKs - */ - if (answer != NULL && - strcmp(answer->tsp_name, mastername) != 0) { - conflict.tsp_type = TSP_CONFLICT; - (void)strcpy(conflict.tsp_name, hostname); - if (!acksend(&conflict, &masteraddr, mastername, - TSP_ACK, 0, 0)) { - syslog(LOG_ERR, - "error on sending TSP_CONFLICT"); - } - } -} - -/* - * based on the current network configuration, set the status, and count - * networks; - */ -void setstatus(void) -{ - struct netinfo *ntp; - - status = 0; - nmasternets = nslavenets = nnets = nignorednets = 0; - if (trace) - fprintf(fd, "Net status:\n"); - for (ntp = nettab; ntp != NULL; ntp = ntp->next) { - switch ((int)ntp->status) { - case MASTER: - nmasternets++; - break; - case SLAVE: - nslavenets++; - break; - case NOMASTER: - case IGNORE: - nignorednets++; - break; - } - if (trace) { - fprintf(fd, "\t%-16s", inet_ntoa(ntp->net)); - switch ((int)ntp->status) { - case NOMASTER: - fprintf(fd, "NOMASTER\n"); - break; - case MASTER: - fprintf(fd, "MASTER\n"); - break; - case SLAVE: - fprintf(fd, "SLAVE\n"); - break; - case IGNORE: - fprintf(fd, "IGNORE\n"); - break; - default: - fprintf(fd, "invalid state %d\n", - (int)ntp->status); - break; - } - } - nnets++; - status |= ntp->status; - } - status &= ~IGNORE; - if (trace) - fprintf(fd, - "\tnets=%d masters=%d slaves=%d ignored=%d delay2=%ld\n", - nnets, nmasternets, nslavenets, nignorednets, delay2); -} - -void -makeslave(struct netinfo *net) -{ - register struct netinfo *ntp; - - for (ntp = nettab; ntp != NULL; ntp = ntp->next) { - if (ntp->status == SLAVE && ntp != net) - ntp->status = IGNORE; - } - slavenet = net; -} - -/* - * Try to become master over ignored nets.. - */ -static void -checkignorednets(void) -{ - register struct netinfo *ntp; - - for (ntp = nettab; ntp != NULL; ntp = ntp->next) { - if (!Mflag && ntp->status == SLAVE) - break; - - if (ntp->status == IGNORE || ntp->status == NOMASTER) { - lookformaster(ntp); - if (!Mflag && ntp->status == SLAVE) - break; - } - } -} - -/* - * choose a good network on which to be a slave - * The ignored networks must have already been checked. - * Take a hint about for a good network. - */ -static void -pickslavenet(struct netinfo *ntp) -{ - if (slavenet != 0 && slavenet->status == SLAVE) { - makeslave(slavenet); /* prune extras */ - return; - } - - if (ntp == 0 || ntp->status != SLAVE) { - for (ntp = nettab; ntp != 0; ntp = ntp->next) { - if (ntp->status == SLAVE) - break; - } - } - makeslave(ntp); -} - -/* - * returns a random number in the range [inf, sup] - */ -long -casual(long inf, long sup) -{ - double value; - - value = ((double)(random() & 0x7fffffff)) / (0x7fffffff*1.0); - return(inf + (sup - inf)*value); -} - -char *date(void) -{ -#ifdef sgi - struct timeval tv; - static char tm[32]; - - (void)gettimeofday(&tv, (struct timezone *)0); - (void)cftime(tm, "%D %T", &tv.tv_sec); - return (tm); -#else -/* struct timeval tv; */ - time_t tm; - time(&tm); - return (ctime(&tm)); -#endif /* sgi */ -} - -void -addnetname(char *name) -{ - register struct nets **netlist = &nets; - - while (*netlist) - netlist = &((*netlist)->next); - *netlist = (struct nets *)malloc(sizeof **netlist); - if (*netlist == 0) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bzero((char *)*netlist, sizeof(**netlist)); - (*netlist)->name = name; -} - -/* note a host as trustworthy */ -static void -add_good_host(char* name, - char perm) /* 1=not part of the netgroup */ -{ - register struct goodhost *ghp; - register struct hostent *hentp; - - ghp = (struct goodhost*)malloc(sizeof(*ghp)); - if (!ghp) { - syslog(LOG_ERR, "malloc failed"); - exit(1); - } - - bzero((char*)ghp, sizeof(*ghp)); - (void)strncpy(&ghp->name[0], name, sizeof(ghp->name)); - ghp->next = goodhosts; - ghp->perm = perm; - goodhosts = ghp; - - hentp = gethostbyname(name); - if (0 == hentp && perm) - (void)fprintf(stderr, "unknown host %s\n", name); -} - - -/* update our image of the net-group of trustworthy hosts - */ -void -get_goodgroup(int force) -{ -# define NG_DELAY (30*60*CLK_TCK) /* 30 minutes */ - const unsigned long last_update = -NG_DELAY; - unsigned long new_update; -/* struct hosttbl *htp; */ - struct goodhost *ghp, **ghpp; -/* char *mach, *usr, *dom; */ - struct tms tm; - - - /* if no netgroup, then we are finished */ - if (goodgroup == 0 || !Mflag) - return; - - /* Do not chatter with the netgroup master too often. - */ - new_update = times(&tm); - if (new_update < last_update + NG_DELAY - && !force) - return; - last_update = new_update; - - /* forget the old temporary entries */ - ghpp = &goodhosts; - while (0 != (ghp = *ghpp)) { - if (!ghp->perm) { - *ghpp = ghp->next; - free((char*)ghp); - } else { - ghpp = &ghp->next; - } - } - -#ifdef HAVENIS - /* quit now if we are not one of the trusted masters - */ - if (!innetgr(goodgroup, &hostname[0], 0,0)) { - if (trace) - (void)fprintf(fd, "get_goodgroup: %s not in %s\n", - &hostname[0], goodgroup); - return; - } - if (trace) - (void)fprintf(fd, "get_goodgroup: %s in %s\n", - &hostname[0], goodgroup); - - /* mark the entire netgroup as trusted */ - (void)setnetgrent(goodgroup); - while (getnetgrent(&mach,&usr,&dom)) { - if (0 != mach) - add_good_host(mach,0); - } - (void)endnetgrent(); - - /* update list of slaves */ - for (htp = self.l_fwd; htp != &self; htp = htp->l_fwd) { - htp->good = good_host_name(&htp->name[0]); - } -#endif /* HAVENIS */ -} - -/* see if a machine is trustworthy - * 1=trust hp to change our date - */ - -int good_host_name(char *name) -{ - register struct goodhost *ghp = goodhosts; - register char c; - - if (!ghp || !Mflag) /* trust everyone if no one named */ - return 1; - - c = *name; - do { - if (c == ghp->name[0] - && !strcasecmp(name, ghp->name)) - return 1; /* found him, so say so */ - } while (0 != (ghp = ghp->next)); - - if (!strcasecmp(name,hostname)) /* trust ourself */ - return 1; - - return 0; /* did not find him */ -} diff --git a/net-misc/netkit-timed/metadata.xml b/net-misc/netkit-timed/metadata.xml new file mode 100644 index 000000000000..d8b96be3c5cd --- /dev/null +++ b/net-misc/netkit-timed/metadata.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <herd>no-herd</herd> + <maintainer> + <email>bug-wranglers@gentoo.org</email> + <description>This package lacks a primary herd or maintainer.</description> + </maintainer> +</pkgmetadata> diff --git a/net-misc/netkit-timed/netkit-timed-0.17-r6.ebuild b/net-misc/netkit-timed/netkit-timed-0.17-r6.ebuild index ca72beb03f7d..7b79c50d5931 100644 --- a/net-misc/netkit-timed/netkit-timed-0.17-r6.ebuild +++ b/net-misc/netkit-timed/netkit-timed-0.17-r6.ebuild @@ -1,12 +1,14 @@ # Copyright 1999-2004 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/net-misc/netkit-timed/netkit-timed-0.17-r6.ebuild,v 1.17 2004/07/15 03:08:53 agriffis Exp $ +# $Header: /var/cvsroot/gentoo-x86/net-misc/netkit-timed/netkit-timed-0.17-r6.ebuild,v 1.18 2004/08/07 01:31:34 dragonheart Exp $ + +inherit eutils IUSE="" DESCRIPTION="Netkit - timed" SRC_URI="ftp://ftp.uk.linux.org/pub/linux/Networking/netkit/${P}.tar.gz" HOMEPAGE="ftp://ftp.uk.linux.org/pub/linux/Networking/netkit/" -KEYWORDS="x86 sparc ppc mips ppc64" +KEYWORDS="~x86 sparc ppc mips ppc64" LICENSE="BSD" SLOT="0" @@ -14,7 +16,7 @@ DEPEND="virtual/libc" src_unpack() { unpack ${A} - cp ${FILESDIR}/timed.c ${S}/timed/timed/timed.c + epatch ${FILESDIR}/0.17-timed.patch } src_compile() { diff --git a/net-misc/netkit-timed/netkit-timed-0.17-r7.ebuild b/net-misc/netkit-timed/netkit-timed-0.17-r7.ebuild new file mode 100644 index 000000000000..e1ca4df14dc7 --- /dev/null +++ b/net-misc/netkit-timed/netkit-timed-0.17-r7.ebuild @@ -0,0 +1,37 @@ +# Copyright 1999-2004 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/net-misc/netkit-timed/netkit-timed-0.17-r7.ebuild,v 1.1 2004/08/07 01:31:34 dragonheart Exp $ + +inherit eutils + +IUSE="" +DESCRIPTION="Netkit - timed" +SRC_URI="ftp://ftp.uk.linux.org/pub/linux/Networking/netkit/${P}.tar.gz" +HOMEPAGE="ftp://ftp.uk.linux.org/pub/linux/Networking/netkit/" +KEYWORDS="~x86 ~sparc ~ppc ~mips ~ppc64" +LICENSE="BSD" +SLOT="0" + +DEPEND="virtual/libc" + +src_unpack() { + unpack ${A} + epatch ${FILESDIR}/0.17-CFLAG-DEF-fix.patch +} + +src_compile() { + # Note this is no a autoconf configure script. econf fails + ./configure --prefix=/usr || die "bad configure" + emake || die "bad make" +} + +src_install() { + dosbin timed/timed/timed + doman timed/timed/timed.8 + dosbin timed/timedc/timedc + doman timed/timedc/timedc.8 + dodoc README ChangeLog BUGS + + exeinto /etc/init.d + newexe ${FILESDIR}/timed.rc6 timed +} |