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