/* * Copyright (c) 1983 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. * * @(#)globals.h 2.7 (Berkeley) 6/1/90 */ #include <sys/param.h> #include <stdio.h> #include <sys/time.h> #include <errno.h> #include <syslog.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <arpa/inet.h> extern int errno; extern int sock; #define SAMPLEINTVL 240 /* synch() freq for master, sec */ #define MAXADJ 20 /* max correction (sec) for adjtime */ /* * Parameters for network time measurement * of each host using ICMP timestamp requests. */ #define RANGE 20 /* best expected round-trip time, ms */ #define MSGS 5 /* # of timestamp replies to average */ #define TRIALS 10 /* max # of timestamp echos sent */ #define MINTOUT 360 #define MAXTOUT 900 #define GOOD 1 #define UNREACHABLE 2 #define NONSTDTIME 3 #define HOSTDOWN 0x7fffffff #define OFF 0 #define ON 1 /* * Global and per-network states. */ #define NOMASTER 0 /* no master on any network */ #define SLAVE 1 #define MASTER 2 #define IGNORE 4 #define ALL (SLAVE|MASTER|IGNORE) #define SUBMASTER (SLAVE|MASTER) #define NHOSTS 100 /* max number of hosts controlled by timed */ struct host { char *name; struct sockaddr_in addr; long delta; u_short seq; }; struct netinfo { struct netinfo *next; u_long net; u_long mask; struct in_addr my_addr; struct sockaddr_in dest_addr; /* broadcast addr or point-point */ long status; }; extern struct netinfo *nettab; extern int status; extern int trace; extern int sock; extern struct sockaddr_in from; extern struct netinfo *fromnet, *slavenet; extern FILE *fd; extern char hostname[]; extern char tracefile[]; extern struct host hp[]; extern int backoff; extern long delay1, delay2; extern int slvcount; extern int nslavenets; /* Number of nets were I could be a slave */ extern int nmasternets; /* Number of nets were I could be a master */ extern int nignorednets; /* Number of ignored nets */ extern int nnets; /* Number of nets I am connected to */ char *strcpy(), *malloc();