Deleted Added
full compact
4d3
<
9a9,11
> #ifdef OPENSSL
> #include "ntp_crypto.h"
> #endif /* OPENSSL */
95c97,101
< #define NTP_PORT 123 /* included for sake of non-unix machines */
---
> #define NTP_PORT 123 /* included for non-unix machines */
>
> /*
> * Poll interval parameters
> */
97,98d102
< #define NTP_MINDPOLL 6 /* log2 default min poll interval (64 s) */
< #define NTP_MAXDPOLL 10 /* log2 default max poll interval (~17 m) */
100,107c104,116
< #define NTP_MAXPOLL 17 /* log2 max poll interval (~4.5 h) */
< #define NTP_MINCLOCK 3 /* minimum survivors */
< #define NTP_MAXCLOCK 10 /* maximum candidates */
< #define NTP_SHIFT 8 /* 8 suitable for crystal time base */
< #define NTP_MAXKEY 65535 /* maximum authentication key number */
< #define NTP_MAXSESSION 100 /* maximum session key list entries */
< #define NTP_AUTOMAX 13 /* log2 default max session key lifetime */
< #define KEY_REVOKE 16 /* log2 default key revoke timeout */
---
> #define NTP_MINDPOLL 6 /* log2 default min poll (64 s) */
> #define NTP_MAXDPOLL 10 /* log2 default max poll (~17 m) */
> #define NTP_MAXPOLL 17 /* log2 max poll interval (~36 h) */
> #define NTP_BURST 8 /* packets in burst */
> #define BURST_DELAY 2 /* interburst delay (s) */
> #define RESP_DELAY 1 /* crypto response delay (s) */
>
> /*
> * Clock filter algorithm tuning parameters
> */
> #define MINDISPERSE .01 /* min dispersion */
> #define MAXDISPERSE 16. /* max dispersion */
> #define NTP_SHIFT 8 /* clock filter stages */
109,111c118,125
< #define CLOCK_SGATE 4. /* popcorn spike gate */
< #define BURST_INTERVAL1 4 /* first interburst interval (log2) */
< #define BURST_INTERVAL2 1 /* succeeding interburst intervals (log2) */
---
>
> /*
> * Selection algorithm tuning parameters
> */
> #define NTP_MINCLOCK 4 /* minimum survivors */
> #define NTP_MAXCLOCK 50 /* maximum candidates */
> #define MAXDISTANCE 1. /* max root distance */
> #define CLOCK_SGATE 3. /* popcorn spike gate */
112a127,130
> #define HYST .5 /* anti-clockhop hysteresis */
> #define HYST_TC .875 /* anti-clockhop hysteresis decay */
> #define MAX_TTL 8 /* max ttl mapping vector size */
> #define NTP_MAXEXTEN 1024 /* maximum extension field size */
114a133,145
> * Miscellaneous stuff
> */
> #define NTP_MAXKEY 65535 /* maximum authentication key number */
>
> /*
> * Limits of things
> */
> #define MAXFILENAME 128 /* max length of file name */
> #define MAXHOSTNAME 512 /* max length of host/node name */
> #define NTP_MAXSTRLEN 256 /* maximum string length */
> #define MAXINTERFACES 512 /* max number of interfaces */
>
> /*
132,134d162
< #define MAXDISPERSE 16. /* max dispersion (square) */
< #define MINDISPERSE .01 /* min dispersion */
< #define MAXDISTANCE 1. /* max root distance */
138d165
< #ifdef AUTOKEY
140,180d166
< * The following structures are used in the autokey protocol.
< *
< * The autokey structure holds the values used to authenticate key IDs.
< */
< struct autokey { /* network byte order */
< tstamp_t tstamp; /* timestamp */
< keyid_t key; /* key ID */
< int32 seq; /* key number */
< u_int32 siglen; /* signature length */
< u_int32 pkt[1]; /* start of signature field */
< u_char *sig; /* signature */
< };
<
< /*
< * The cookie structure holds the current private value used to
< * construct session keys.
< */
< struct cookie { /* network byte order */
< tstamp_t tstamp; /* timestamp */
< keyid_t key; /* key ID */
< u_int32 siglen; /* signature length */
< u_int32 pkt[1]; /* start of signature field */
< u_char *sig; /* signature */
< };
<
< /*
< * The value structure holds variable length data such as public
< * key, agreement parameters, public valule and leapsecond table.
< */
< struct value { /* network byte order */
< tstamp_t tstamp; /* timestamp */
< tstamp_t fstamp; /* filestamp */
< u_int32 vallen; /* value length */
< u_int32 pkt[1]; /* start of value field */
< u_char *ptr; /* data pointer */
< u_int32 siglen; /* signature length */
< u_char *sig; /* signature */
< };
< #endif /* AUTOKEY */
<
< /*
185,190c171,176
< int fd; /* socket this is opened on */
< int bfd; /* socket for receiving broadcasts */
< struct sockaddr_in sin; /* interface address */
< struct sockaddr_in bcast; /* broadcast address */
< struct sockaddr_in mask; /* interface mask */
< char name[8]; /* name of interface */
---
> SOCKET fd; /* socket this is opened on */
> SOCKET bfd; /* socket for receiving broadcasts */
> struct sockaddr_storage sin; /* interface address */
> struct sockaddr_storage bcast; /* broadcast address */
> struct sockaddr_storage mask; /* interface mask */
> char name[32]; /* name of interface */
192a179,180
> u_int addr_refid; /* IPv4 addr or IPv6 hash */
> int num_mcast; /* No. of IP addresses in multicast socket */
201,204c189,194
< #define INT_BROADCAST 1 /* can broadcast out this interface */
< #define INT_BCASTOPEN 2 /* broadcast socket is open */
< #define INT_LOOPBACK 4 /* the loopback interface */
< #define INT_MULTICAST 8 /* multicasting enabled */
---
> #define INT_UP 1 /* Interface is up */
> #define INT_PPP 2 /* Point-to-point interface */
> #define INT_LOOPBACK 4 /* the loopback interface */
> #define INT_BROADCAST 8 /* can broadcast out this interface */
> #define INT_MULTICAST 16 /* multicasting enabled */
> #define INT_BCASTOPEN 32 /* broadcast socket is open */
232c222
< struct sockaddr_in srcadr; /* address of remote host */
---
> struct sockaddr_storage srcadr; /* address of remote host */
247c237
< u_char ttlmax; /* max ttl/refclock mode */
---
> u_char ttl; /* ttl/refclock mode */
272c262
< #ifdef AUTOKEY
---
> #ifdef OPENSSL
276,280c266,269
< #ifdef PUBKEY
< struct value pubkey; /* public key */
< struct value certif; /* certificate */
< u_char *keystr; /* host name */
< #endif /* PUBKEY */
---
> EVP_PKEY *pkey; /* public key */
> const EVP_MD *digest; /* message digest algorithm */
> char *subject; /* certificate subject name */
> char *issuer; /* certificate issuer name */
282,285c271,280
< keyid_t hcookie; /* host cookie */
< struct cookie pcookie; /* peer cookie */
< struct autokey recauto; /* autokey */
< u_int32 cmmd; /* peer command */
---
> keyid_t pcookie; /* peer cookie */
> EVP_PKEY *ident_pkey; /* identity key */
> tstamp_t fstamp; /* identity filestamp */
> BIGNUM *iffval; /* IFF/GQ challenge */
> BIGNUM *grpkey; /* GQ group key */
> struct value cookval; /* cookie values */
> struct value recval; /* receive autokey values */
> struct value tai_leap; /* leapseconds values */
> struct exten *cmmd; /* extension pointer */
>
291,292c286,288
< struct autokey sndauto; /* autokey */
< #else /* AUTOKEY */
---
> struct value encrypt; /* send encrypt values */
> struct value sndval; /* send autokey values */
> #else /* OPENSSL */
294c290
< #endif /* AUTOKEY */
---
> #endif /* OPENSSL */
300,301d295
< u_char pollsw; /* what it says */
< u_char ttl; /* ttl for manycast mode */
303d296
< u_char unreach; /* unreachable count */
318a312
> double hyst; /* anti-clockhop hysteresis */
330a325
> u_int unreach; /* unreachable count */
333,334c328,329
< u_long nextaction; /* peer local activity timeout (refclocks mainly) */
< void (*action) P((struct peer *)); /* action timeout function */
---
> u_long nextaction; /* peer local activity timeout (refclocks mainly) */
> void (*action) P((struct peer *)); /* action timeout function */
349a345
> u_long rank; /* number of times selected or in cluster */
363c359
< #define MODE_UNSPEC 0 /* unspecified (probably old NTP version) */
---
> #define MODE_UNSPEC 0 /* unspecified (old version) */
376c372
< #define STRATUM_REFCLOCK ((u_char)0) /* stratum claimed by primary clock */
---
> #define STRATUM_REFCLOCK ((u_char)0) /* default stratum */
395,397c391
< #define FLAG_AUTOKEY 0x0800 /* autokey confirmed */
< #define FLAG_ASSOC 0x1000 /* autokey reqeust */
< #define FLAG_PROVEN 0x2000 /* proventic confirmed */
---
> #define FLAG_ASSOC 0x0800 /* autokey request */
408,410c402,404
< #define CRYPTO_TO_ZERO(p) ((char *)&((p)->clear_to_zero))
< #define END_CRYPTO_TO_ZERO(p) ((char *)&((p)->end_clear_to_zero))
< #define LEN_CRYPTO_TO_ZERO (END_CRYPTO_TO_ZERO((struct peer *)0) \
---
> #define CRYPTO_TO_ZERO(p) ((char *)&((p)->clear_to_zero))
> #define END_CRYPTO_TO_ZERO(p) ((char *)&((p)->end_clear_to_zero))
> #define LEN_CRYPTO_TO_ZERO (END_CRYPTO_TO_ZERO((struct peer *)0) \
427c421
< #define REFCLK_IRIG_AUDIO 6 /* IRIG-B/W audio decoder */
---
> #define REFCLK_IRIG_AUDIO 6 /* IRIG-B/W audio decoder */
447c441
< #define REFCLK_ARCRON_MSF 27 /* ARCRON MSF radio clock. */
---
> #define REFCLK_ARCRON_MSF 27 /* ARCRON MSF radio clock. */
452,454c446,448
< #define REFCLK_CHRONOLOG 32 /* Chrono-log K WWVB receiver */
< #define REFCLK_DUMBCLOCK 33 /* Dumb localtime clock */
< #define REFCLK_ULINK 34 /* Ultralink M320 WWVB receiver */
---
> #define REFCLK_CHRONOLOG 32 /* Chrono-log K WWVB receiver */
> #define REFCLK_DUMBCLOCK 33 /* Dumb localtime clock */
> #define REFCLK_ULINK 34 /* Ultralink M320 WWVB receiver */
458c452
< #define REFCLK_HOPF_SERIAL 38 /* hopf DCF77/GPS serial line receiver */
---
> #define REFCLK_HOPF_SERIAL 38 /* hopf DCF77/GPS serial receiver */
464,465c458,459
< #define REFCLK_NEOCLOCK4X 44 /* NeoClock4X DCF77 or TDF receiver */
< #define REFCLK_MAX 44 /* Grow as needed... */
---
> #define REFCLK_NEOCLOCK4X 44 /* NeoClock4X DCF77 or TDF receiver */
> #define REFCLK_MAX 44 /* NeoClock4X DCF77 or TDF receiver */
466a461,492
> /*
> * Macro for sockaddr_storage structures operations
> */
> #define SOCKCMP(sock1, sock2) \
> (((struct sockaddr_storage *)sock1)->ss_family \
> == ((struct sockaddr_storage *)sock2)->ss_family ? \
> ((struct sockaddr_storage *)sock1)->ss_family == AF_INET ? \
> memcmp(&((struct sockaddr_in *)sock1)->sin_addr, \
> &((struct sockaddr_in *)sock2)->sin_addr, \
> sizeof(struct in_addr)) == 0 : \
> memcmp(&((struct sockaddr_in6 *)sock1)->sin6_addr, \
> &((struct sockaddr_in6 *)sock2)->sin6_addr, \
> sizeof(struct in6_addr)) == 0 : \
> 0)
>
> #define SOCKNUL(sock1) \
> (((struct sockaddr_storage *)sock1)->ss_family == AF_INET ? \
> (((struct sockaddr_in *)sock1)->sin_addr.s_addr == 0) : \
> (IN6_IS_ADDR_UNSPECIFIED(&((struct sockaddr_in6 *)sock1)->sin6_addr)))
>
> #define SOCKLEN(sock) \
> (((struct sockaddr_storage *)sock)->ss_family == AF_INET ? \
> (sizeof(struct sockaddr_in)) : (sizeof(struct sockaddr_in6)))
>
> #define ANYSOCK(sock) \
> memset(((struct sockaddr_in *)sock), 0, \
> sizeof(struct sockaddr_storage))
>
> #define ANY_INTERFACE_CHOOSE(sock) \
> (((struct sockaddr_storage *)sock)->ss_family == AF_INET ? \
> any_interface : any6_interface)
>
495,496c521,522
< #define NSRCADR(src) ((src)->sin_addr.s_addr) /* address in net byte order */
< #define NSRCPORT(src) ((src)->sin_port) /* port in net byte order */
---
> #define NSRCADR(src) (((struct sockaddr_in *)src)->sin_addr.s_addr) /* address in net byte order */
> #define NSRCPORT(src) (((struct sockaddr_in *)src)->sin_port) /* port in net byte order */
499a526,541
> #define CAST_V4(src) ((struct sockaddr_in *)&(src))
> #define CAST_V6(src) ((struct sockaddr_in6 *)&(src))
> #define GET_INADDR(src) (CAST_V4(src)->sin_addr.s_addr)
> #define GET_INADDR6(src) (CAST_V6(src)->sin6_addr)
>
> #define SET_HOSTMASK(addr, family) \
> do { \
> memset((char *)(addr), 0, sizeof(struct sockaddr_storage)); \
> (addr)->ss_family = (family); \
> if ((family) == AF_INET) \
> GET_INADDR(*(addr)) = 0xffffffff; \
> else \
> memset(&GET_INADDR6(*(addr)), 0xff, \
> sizeof(struct in6_addr)); \
> } while(0)
>
536,542c578,580
< #ifdef AUTOKEY
< #ifdef PUBKEY
< u_int32 exten[5000 / 4]; /* max extension field */
< #else
< u_int32 exten[672 / 4]; /* max extension field */
< #endif /* PUBKEY */
< #else /* AUTOKEY */
---
> #ifdef OPENSSL
> u_int32 exten[NTP_MAXEXTEN / 4]; /* max extension field */
> #else /* OPENSSL */
544c582
< #endif /* AUTOKEY */
---
> #endif /* OPENSSL */
575c613,614
< #define PEER_EVENT 0x80 /* this is a peer event */
---
> #define PEER_EVENT 0x080 /* this is a peer event */
> #define CRPT_EVENT 0x100 /* this is a crypto event */
620c659
< #define HASH_SIZE 32
---
> #define HASH_SIZE 128
622c661
< #define HASH_ADDR(src) ((SRCADR((src))^(SRCADR((src))>>8)) & HASH_MASK)
---
> #define HASH_ADDR(src) sock_hash(src)
668a708,714
> #define PROTO_MINCLOCK 14
> #define PROTO_MINSANE 15
> #define PROTO_FLOOR 16
> #define PROTO_CEILING 17
> #define PROTO_COHORT 18
> #define PROTO_CALLDELAY 19
> #define PROTO_ADJ 20
681a728
> #define LOOP_FREQ 10 /* set initial frequency */
690c737
< #define MJD_1970 40587 /* MJD for 1 Jan 1970 */
---
> #define MJD_1900 15020 /* MJD for 1 Jan 1900 */
705,711c752,756
< struct mon_data *fifo_next; /* next structure in FIFO list */
< struct mon_data *fifo_prev; /* previous structure in FIFO list */
< u_long lastdrop; /* last time dropped due to RES_LIMIT*/
< u_long lasttime; /* last time data updated */
< u_long firsttime; /* time structure initialized */
< u_long count; /* count we have seen */
< u_int32 rmtadr; /* address of remote host */
---
> u_long drop_count; /* dropped due RESLIMIT*/
> double avg_interval; /* average interpacket interval */
> u_long lasttime; /* interval since last packet */
> u_long count; /* total packet count */
> struct sockaddr_storage rmtadr; /* address of remote host */
727a773
> #define MDF_ACLNT 0x40 /* manycast client */
740,741c786,787
< u_int32 addr; /* host address (host byte order) */
< u_int32 mask; /* mask for address (host byte order) */
---
> u_int32 addr; /* Ipv4 host address (host byte order) */
> u_int32 mask; /* Ipv4 mask for address (host byte order) */
746a793,802
> struct restrictlist6 {
> struct restrictlist6 *next; /* link to next entry */
> struct in6_addr addr6; /* Ipv6 host address */
> struct in6_addr mask6; /* Ipv6 mask address */
> u_long count; /* number of packets matched */
> u_short flags; /* accesslist flags */
> u_short mflags; /* match flags */
> };
>
>
750,760c806,811
< #define RES_IGNORE 0x001 /* ignore if matched */
< #define RES_DONTSERVE 0x002 /* don't give him any time */
< #define RES_DONTTRUST 0x004 /* don't trust if matched */
< #define RES_NOQUERY 0x008 /* don't allow queries if matched */
< #define RES_NOMODIFY 0x010 /* don't allow him to modify server */
< #define RES_NOPEER 0x020 /* don't allocate memory resources */
< #define RES_NOTRAP 0x040 /* don't allow him to set traps */
< #define RES_LPTRAP 0x080 /* traps set by him are low priority */
< #define RES_LIMITED 0x100 /* limit per net number of clients */
< #define RES_VERSION 0x200 /* serve only current version */
< #define RES_DEMOBILIZE 0x400 /* demobilize association */
---
> #define RES_IGNORE 0x001 /* ignore packet */
> #define RES_DONTSERVE 0x002 /* access denied */
> #define RES_DONTTRUST 0x004 /* authentication required */
> #define RES_VERSION 0x008 /* version mismatch */
> #define RES_NOPEER 0x010 /* new association denied */
> #define RES_LIMITED 0x020 /* packet rate exceeded */
762,765c813,815
< #define RES_ALLFLAGS \
< (RES_IGNORE | RES_DONTSERVE | RES_DONTTRUST | RES_NOQUERY | \
< RES_NOMODIFY | RES_NOPEER | RES_NOTRAP | RES_LPTRAP | \
< RES_LIMITED | RES_VERSION | RES_DEMOBILIZE)
---
> #define RES_FLAGS (RES_IGNORE | RES_DONTSERVE |\
> RES_DONTTRUST | RES_VERSION |\
> RES_NOPEER | RES_LIMITED)
766a817,829
> #define RES_NOQUERY 0x040 /* mode 6/7 packet denied */
> #define RES_NOMODIFY 0x080 /* mode 6/7 modify denied */
> #define RES_NOTRAP 0x100 /* mode 6/7 set trap denied */
> #define RES_LPTRAP 0x200 /* mode 6/7 low priority trap */
>
> #define RES_DEMOBILIZE 0x400 /* send kiss of death packet */
> #define RES_TIMEOUT 0x800 /* timeout this entry */
>
> #define RES_ALLFLAGS (RES_FLAGS | RES_NOQUERY |\
> RES_NOMODIFY | RES_NOTRAP |\
> RES_LPTRAP | RES_DEMOBILIZE |\
> RES_TIMEOUT)
>
780d842
<
782,790d843
< * Experimental alternate selection algorithm identifiers
< */
< #define SELECT_1 1
< #define SELECT_2 2
< #define SELECT_3 3
< #define SELECT_4 4
< #define SELECT_5 5
<
< /*