Subversion Repositories SvarDOS

Rev

Rev 616 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 616 Rev 634
1
/*!\file protocol/timed.h
1
/*!\file protocol/timed.h
2
 * Time Synchronisation Daemon.
2
 * Time Synchronisation Daemon.
3
 */
3
 */
4
 
4
 
5
/*      $NetBSD: timed.h,v 1.5 1996/04/09 20:40:32 cgd Exp $    */
5
/*      $NetBSD: timed.h,v 1.5 1996/04/09 20:40:32 cgd Exp $    */
6
 
6
 
7
/*
7
/*
8
 * Copyright (c) 1983 Regents of the University of California.
8
 * Copyright (c) 1983 Regents of the University of California.
9
 * All rights reserved.
9
 * All rights reserved.
10
 *
10
 *
11
 * Redistribution and use in source and binary forms, with or without
11
 * Redistribution and use in source and binary forms, with or without
12
 * modification, are permitted provided that the following conditions
12
 * modification, are permitted provided that the following conditions
13
 * are met:
13
 * are met:
14
 * 1. Redistributions of source code must retain the above copyright
14
 * 1. Redistributions of source code must retain the above copyright
15
 *    notice, this list of conditions and the following disclaimer.
15
 *    notice, this list of conditions and the following disclaimer.
16
 * 2. Redistributions in binary form must reproduce the above copyright
16
 * 2. Redistributions in binary form must reproduce the above copyright
17
 *    notice, this list of conditions and the following disclaimer in the
17
 *    notice, this list of conditions and the following disclaimer in the
18
 *    documentation and/or other materials provided with the distribution.
18
 *    documentation and/or other materials provided with the distribution.
19
 * 3. All advertising materials mentioning features or use of this software
19
 * 3. All advertising materials mentioning features or use of this software
20
 *    must display the following acknowledgement:
20
 *    must display the following acknowledgement:
21
 *	This product includes software developed by the University of
21
 *	This product includes software developed by the University of
22
 *	California, Berkeley and its contributors.
22
 *	California, Berkeley and its contributors.
23
 * 4. Neither the name of the University nor the names of its contributors
23
 * 4. Neither the name of the University nor the names of its contributors
24
 *    may be used to endorse or promote products derived from this software
24
 *    may be used to endorse or promote products derived from this software
25
 *    without specific prior written permission.
25
 *    without specific prior written permission.
26
 *
26
 *
27
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
27
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
28
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
29
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
29
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
30
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
30
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
31
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
31
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
32
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
32
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
33
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
34
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
35
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
35
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
36
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
37
 * SUCH DAMAGE.
37
 * SUCH DAMAGE.
38
 *
38
 *
39
 *	@(#)timed.h	1.10 (Berkeley) 4/3/91
39
 *	@(#)timed.h	1.10 (Berkeley) 4/3/91
40
 */
40
 */
41
 
41
 
42
#ifndef __PROTOCOL_TIMED_H
42
#ifndef __PROTOCOL_TIMED_H
43
#define __PROTOCOL_TIMED_H
43
#define __PROTOCOL_TIMED_H
44
 
44
 
45
/*
45
/*
46
 * Time Synchronization Protocol
46
 * Time Synchronization Protocol
47
 */
47
 */
48
 
48
 
49
#define	TSPVERSION	1
49
#define	TSPVERSION	1
50
#define ANYADDR 	NULL
50
#define ANYADDR 	NULL
51
 
51
 
52
#include <sys/packon.h>
52
#include <sys/packon.h>
53
 
53
 
54
struct tsp {
54
struct tsp {
55
	u_int8_t tsp_type;
55
	u_int8_t tsp_type;
56
	u_int8_t tsp_vers;
56
	u_int8_t tsp_vers;
57
	u_int16_t tsp_seq;
57
	u_int16_t tsp_seq;
58
	union {
58
	union {
59
		struct {
59
		struct {
60
			int32_t tv_sec;
60
			int32_t tv_sec;
61
			int32_t tv_usec;
61
			int32_t tv_usec;
62
		} tspu_time;
62
		} tspu_time;
63
		char tspu_hopcnt;
63
		char tspu_hopcnt;
64
	} tsp_u;
64
	} tsp_u;
65
	char tsp_name[MAXHOSTNAMELEN];
65
	char tsp_name[MAXHOSTNAMELEN];
66
};
66
};
67
 
67
 
68
#include <sys/packoff.h>
68
#include <sys/packoff.h>
69
 
69
 
70
#define	tsp_time	tsp_u.tspu_time
70
#define	tsp_time	tsp_u.tspu_time
71
#define	tsp_hopcnt	tsp_u.tspu_hopcnt
71
#define	tsp_hopcnt	tsp_u.tspu_hopcnt
72
 
72
 
73
/*
73
/*
74
 * Command types.
74
 * Command types.
75
 */
75
 */
76
#define	TSP_ANY			0	/* match any types */
76
#define	TSP_ANY			0	/* match any types */
77
#define	TSP_ADJTIME		1	/* send adjtime */
77
#define	TSP_ADJTIME		1	/* send adjtime */
78
#define	TSP_ACK			2	/* generic acknowledgement */
78
#define	TSP_ACK			2	/* generic acknowledgement */
79
#define	TSP_MASTERREQ		3	/* ask for master's name */ 
79
#define	TSP_MASTERREQ		3	/* ask for master's name */ 
80
#define	TSP_MASTERACK		4	/* acknowledge master request */
80
#define	TSP_MASTERACK		4	/* acknowledge master request */
81
#define	TSP_SETTIME		5	/* send network time */
81
#define	TSP_SETTIME		5	/* send network time */
82
#define	TSP_MASTERUP		6	/* inform slaves that master is up */
82
#define	TSP_MASTERUP		6	/* inform slaves that master is up */
83
#define	TSP_SLAVEUP		7	/* slave is up but not polled */
83
#define	TSP_SLAVEUP		7	/* slave is up but not polled */
84
#define	TSP_ELECTION		8	/* advance candidature for master */
84
#define	TSP_ELECTION		8	/* advance candidature for master */
85
#define	TSP_ACCEPT		9	/* support candidature of master */
85
#define	TSP_ACCEPT		9	/* support candidature of master */
86
#define	TSP_REFUSE		10	/* reject candidature of master */
86
#define	TSP_REFUSE		10	/* reject candidature of master */
87
#define	TSP_CONFLICT		11	/* two or more masters present */
87
#define	TSP_CONFLICT		11	/* two or more masters present */
88
#define	TSP_RESOLVE		12	/* masters' conflict resolution */
88
#define	TSP_RESOLVE		12	/* masters' conflict resolution */
89
#define	TSP_QUIT		13	/* reject candidature if master is up */
89
#define	TSP_QUIT		13	/* reject candidature if master is up */
90
#define	TSP_DATE		14	/* reset the time (date command) */
90
#define	TSP_DATE		14	/* reset the time (date command) */
91
#define	TSP_DATEREQ		15	/* remote request to reset the time */
91
#define	TSP_DATEREQ		15	/* remote request to reset the time */
92
#define	TSP_DATEACK		16	/* acknowledge time setting  */
92
#define	TSP_DATEACK		16	/* acknowledge time setting  */
93
#define	TSP_TRACEON		17	/* turn tracing on */
93
#define	TSP_TRACEON		17	/* turn tracing on */
94
#define	TSP_TRACEOFF		18	/* turn tracing off */
94
#define	TSP_TRACEOFF		18	/* turn tracing off */
95
#define	TSP_MSITE		19	/* find out master's site */
95
#define	TSP_MSITE		19	/* find out master's site */
96
#define	TSP_MSITEREQ		20	/* remote master's site request */
96
#define	TSP_MSITEREQ		20	/* remote master's site request */
97
#define	TSP_TEST		21	/* for testing election algo */
97
#define	TSP_TEST		21	/* for testing election algo */
98
#define	TSP_SETDATE		22	/* New from date command */
98
#define	TSP_SETDATE		22	/* New from date command */
99
#define	TSP_SETDATEREQ		23	/* New remote for above */
99
#define	TSP_SETDATEREQ		23	/* New remote for above */
100
#define	TSP_LOOP		24	/* loop detection packet */
100
#define	TSP_LOOP		24	/* loop detection packet */
101
 
101
 
102
#define	TSPTYPENUMBER		25
102
#define	TSPTYPENUMBER		25
103
 
103
 
104
#ifdef TSPTYPES
104
#ifdef TSPTYPES
105
char *tsptype[TSPTYPENUMBER] = {
105
char *tsptype[TSPTYPENUMBER] = {
106
     "ANY", "ADJTIME", "ACK", "MASTERREQ", "MASTERACK", "SETTIME", "MASTERUP",
106
     "ANY", "ADJTIME", "ACK", "MASTERREQ", "MASTERACK", "SETTIME", "MASTERUP",
107
     "SLAVEUP", "ELECTION", "ACCEPT", "REFUSE", "CONFLICT", "RESOLVE", "QUIT",
107
     "SLAVEUP", "ELECTION", "ACCEPT", "REFUSE", "CONFLICT", "RESOLVE", "QUIT",
108
     "DATE", "DATEREQ", "DATEACK", "TRACEON", "TRACEOFF", "MSITE", "MSITEREQ",
108
     "DATE", "DATEREQ", "DATEACK", "TRACEON", "TRACEOFF", "MSITE", "MSITEREQ",
109
     "TEST", "SETDATE", "SETDATEREQ", "LOOP"
109
     "TEST", "SETDATE", "SETDATEREQ", "LOOP"
110
   };
110
   };
111
#endif
111
#endif
112
 
112
 
113
#endif
113
#endif
114
 
114