001 package org.apache.commons.net.ntp;
002 /*
003 * Licensed to the Apache Software Foundation (ASF) under one or more
004 * contributor license agreements. See the NOTICE file distributed with
005 * this work for additional information regarding copyright ownership.
006 * The ASF licenses this file to You under the Apache License, Version 2.0
007 * (the "License"); you may not use this file except in compliance with
008 * the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018
019
020 import java.net.DatagramPacket;
021
022 /**
023 * Interface for a NtpV3Packet with get/set methods corresponding to the fields
024 * in the NTP Data Message Header described in RFC 1305.
025 *
026 * @author Naz Irizarry, MITRE Corp
027 * @author Jason Mathews, MITRE Corp
028 * @version $Revision: 489397 $ $Date: 2006-12-21 16:28:51 +0000 (Thu, 21 Dec 2006) $
029 */
030 public interface NtpV3Packet
031 {
032
033 /**
034 * Standard NTP UDP port
035 */
036 public static final int NTP_PORT = 123;
037
038 public static final int LI_NO_WARNING = 0;
039 public static final int LI_LAST_MINUTE_HAS_61_SECONDS = 1;
040 public static final int LI_LAST_MINUTE_HAS_59_SECONDS = 2;
041 public static final int LI_ALARM_CONDITION = 3;
042
043 /* mode options */
044 public static final int MODE_RESERVED = 0;
045 public static final int MODE_SYMMETRIC_ACTIVE = 1;
046 public static final int MODE_SYMMETRIC_PASSIVE = 2;
047 public static final int MODE_CLIENT = 3;
048 public static final int MODE_SERVER = 4;
049 public static final int MODE_BROADCAST = 5;
050 public static final int MODE_CONTROL_MESSAGE = 6;
051 public static final int MODE_PRIVATE = 7;
052
053 public static final int NTP_MINPOLL = 4; // 16 seconds
054 public static final int NTP_MAXPOLL = 14; // 16284 seconds
055
056 public static final int NTP_MINCLOCK = 1;
057 public static final int NTP_MAXCLOCK = 10;
058
059 public static final int VERSION_3 = 3;
060 public static final int VERSION_4 = 4;
061
062 /* possible getType values such that other time-related protocols can
063 * have its information represented as NTP packets
064 */
065 public static final String TYPE_NTP = "NTP"; // RFC-1305/2030
066 public static final String TYPE_ICMP = "ICMP"; // RFC-792
067 public static final String TYPE_TIME = "TIME"; // RFC-868
068 public static final String TYPE_DAYTIME = "DAYTIME"; // RFC-867
069
070 /**
071 * @return a datagram packet with the NTP parts already filled in
072 */
073 public DatagramPacket getDatagramPacket();
074
075 /**
076 * Set the contents of this object from the datagram packet
077 */
078 public void setDatagramPacket(DatagramPacket dp);
079
080 /**
081 * @return leap indicator as defined in RFC-1305
082 */
083 public int getLeapIndicator();
084
085 /**
086 * Set leap indicator.
087 * @param li - leap indicator code
088 */
089 public void setLeapIndicator(int li);
090
091 /**
092 * @return mode as defined in RFC-1305
093 */
094 public int getMode();
095
096 /**
097 * @return mode as human readable string; e.g. 3=Client
098 */
099 public String getModeName();
100
101 /**
102 * Set mode as defined in RFC-1305
103 */
104 public void setMode(int mode);
105
106 /**
107 * @return poll interval as defined in RFC-1305.
108 * Field range between NTP_MINPOLL and NTP_MAXPOLL.
109 */
110 public int getPoll();
111
112 /**
113 * Set poll interval as defined in RFC-1305.
114 * Field range between NTP_MINPOLL and NTP_MAXPOLL.
115 */
116 public void setPoll(int poll);
117
118 /**
119 * @return precision as defined in RFC-1305
120 */
121 public int getPrecision();
122
123 /**
124 * @return root delay as defined in RFC-1305
125 */
126 public int getRootDelay();
127
128 /**
129 * @return root delay in milliseconds
130 */
131 public double getRootDelayInMillisDouble();
132
133 /**
134 * @return root dispersion as defined in RFC-1305
135 */
136 public int getRootDispersion();
137
138 /**
139 * @return root dispersion in milliseconds
140 */
141 public long getRootDispersionInMillis();
142
143 /**
144 * @return root dispersion in milliseconds
145 */
146 public double getRootDispersionInMillisDouble();
147
148 /**
149 * @return version as defined in RFC-1305
150 */
151 public int getVersion();
152
153 /**
154 * Set version as defined in RFC-1305
155 */
156 public void setVersion(int mode);
157
158 /**
159 * @return stratum as defined in RFC-1305
160 */
161 public int getStratum();
162
163 /**
164 * Set stratum as defined in RFC-1305
165 */
166 public void setStratum(int stratum);
167
168 /**
169 * @return the reference id string
170 */
171 public String getReferenceIdString();
172
173 /**
174 * @return the reference id (32-bit code) as defined in RFC-1305
175 */
176 public int getReferenceId();
177
178 /**
179 * Set reference clock identifier field.
180 * @param refId
181 */
182 public void setReferenceId(int refId);
183
184 /**
185 * @return the transmit timestamp as defined in RFC-1305
186 */
187 public TimeStamp getTransmitTimeStamp();
188
189 /**
190 * @return the reference time as defined in RFC-1305
191 */
192 public TimeStamp getReferenceTimeStamp();
193
194 /**
195 * @return the originate time as defined in RFC-1305
196 */
197 public TimeStamp getOriginateTimeStamp();
198
199 /**
200 * @return the receive time as defined in RFC-1305
201 */
202 public TimeStamp getReceiveTimeStamp();
203
204 /**
205 * Set the transmit timestamp given NTP TimeStamp object.
206 * @param ts - timestamp
207 */
208 public void setTransmitTime(TimeStamp ts);
209
210 /**
211 * Set the reference timestamp given NTP TimeStamp object.
212 * @param ts - timestamp
213 */
214 public void setReferenceTime(TimeStamp ts);
215
216 /**
217 * Set originate timestamp given NTP TimeStamp object.
218 * @param ts - timestamp
219 */
220 public void setOriginateTimeStamp(TimeStamp ts);
221
222 /**
223 * Set receive timestamp given NTP TimeStamp object.
224 * @param ts - timestamp
225 */
226 public void setReceiveTimeStamp(TimeStamp ts);
227
228 /**
229 * Return type of time packet. The values (e.g. NTP, TIME, ICMP, ...)
230 * correspond to the protocol used to obtain the timing information.
231 *
232 * @return packet type string identifier
233 */
234 public String getType();
235
236 }