+* Clockhop and autokey cleanup from Dave Mills.
* Documentation updates from Dave Mills.
(4.2.5p225) 2009/09/30 Released by Harlan Stenn <stenn@ntp.org>
* authopt documentation changes from Dave Mills/Dave Hart.
#define PEVNT_RATE (7 | PEER_EVENT) /* rate exceeded */
#define PEVNT_DENY (8 | PEER_EVENT) /* access denied */
#define PEVNT_ARMED (9 | PEER_EVENT) /* leap armed */
-#define PEVNT_NEWPEER (10 | PEER_EVENT) /* sys peer*/
+#define PEVNT_NEWPEER (10 | PEER_EVENT) /* sys peer */
#define PEVNT_CLOCK (11 | PEER_EVENT) /* clock event */
#define PEVNT_AUTH (12 | PEER_EVENT) /* bad auth */
#define PEVNT_POPCORN (13 | PEER_EVENT) /* popcorn */
{ PEVNT_DENY & ~PEER_EVENT, "access_denied" },
{ PEVNT_ARMED & ~PEER_EVENT, "leap_armed" },
{ PEVNT_NEWPEER & ~PEER_EVENT, "sys_peer" },
- { PEVNT_CLOCK & ~PEER_EVENT, "clock" },
+ { PEVNT_CLOCK & ~PEER_EVENT, "clock_event" },
{ PEVNT_AUTH & ~PEER_EVENT, "bad_auth" },
{ PEVNT_POPCORN & ~PEER_EVENT, "popcorn" },
- { PEVNT_XLEAVE & ~PEER_EVENT, "xmode" },
- { PEVNT_XERR & ~PEER_EVENT, "xerr" },
+ { PEVNT_XLEAVE & ~PEER_EVENT, "interleave_mode" },
+ { PEVNT_XERR & ~PEER_EVENT, "interleave_error" },
{ PEVNT_TAI & ~PEER_EVENT, "TAI" },
{ -1, "" }
};
* autokey values.
*/
if ((rval = crypto_verify(ep, &peer->recval,
- peer)) != XEVNT_OK)
+ peer)) != XEVNT_OK)
break;
/*
opcode = ntohl(ep->opcode) & 0xffff0000;
/*
- * Check for valid value header opcode, association ID and
- * extension field length. The request and response opcodes must
- * match and the response ID must match the association ID. The
- * autokey values response is the exception, as it can be sent
- * unsolicited.
+ * Check for valid value header, association ID and extension
+ * field length. Remember, it is not an error to receive an
+ * unsolicited response; however, the response ID must match
+ * the association ID.
*/
if (opcode & CRYPTO_ERROR)
return (XEVNT_ERR);
if (len < VALUE_LEN)
return (XEVNT_LEN);
- if (opcode == (CRYPTO_AUTO | CRYPTO_RESP)) {
+ if (opcode == (CRYPTO_AUTO | CRYPTO_RESP) &&
+ peer->cast_flags & MDF_BCLNT) {
if (ntohl(ep->associd) != peer->assoc)
return (XEVNT_ERR);
} else {
- if (((htonl(peer->opcode) & 0x3fff0000) !=
- (opcode & 0x3fff0000)) || ntohl(ep->associd) !=
- peer->associd)
+ if (ntohl(ep->associd) != peer->associd)
return (XEVNT_ERR);
}
} else {
if (rval == XEVNT_ERR) {
report_event(PEVNT_RESTART, peer,
- "crypto");
+ "crypto error");
peer_clear(peer, "CRYP");
peer->flash |= TEST9; /* bad crypt */
if (peer->flags & FLAG_PREEMPT)
&rbufp->recv_srcadr, dstadr_sin,
tkeyid, pkeyid, 0);
}
+ if (peer->flash & TEST8)
+ report_event(PEVNT_AUTH, peer, "keylist");
}
if (!(peer->crypto & CRYPTO_FLAG_PROV)) /* test 9 */
peer->flash |= TEST8; /* bad autokey */
* refreshed certificates and leapseconds values.
*/
if (current_time > peer->refresh) {
- report_event(PEVNT_RESTART, peer, "timeout");
+ report_event(PEVNT_RESTART, peer,
+ "crypto refresh");
peer_clear(peer, "TIME");
return;
}
*/
if (nlist > 0 && nlist >= sys_minsane) {
double x;
- char tbuf[80];
typesystem = peer_list[0];
if (osys_peer == NULL || osys_peer == typesystem) {
printf("select: clockhop %d %.6f %.6f\n",
j, x, sys_clockhop);
#endif
- if (fabs(x) < sys_clockhop) {
+ if (fabs(x) < sys_clockhop)
typesystem = osys_peer;
- } else {
- sprintf(tbuf, "%.6f", x);
- report_event(EVNT_CLKHOP, NULL, tbuf);
+ else
sys_clockhop = 0;
- }
} else {
sys_clockhop = 0;
}
SQUARE(sys_jitter) + SQUARE(seljitter));
} else {
typesystem = sys_prefer;
+ sys_clockhop = 0;
typesystem->status = CTL_PST_SEL_SYSPEER;
sys_offset = typesystem->offset;
sys_jitter = typesystem->jitter;
(typepps->refclktype == REFCLK_ATOM_PPS && (sys_prefer !=
NULL || (typesystem == NULL && sys_minsane == 0))))) {
typesystem = typepps;
+ sys_clockhop = 0;
typesystem->status = CTL_PST_SEL_PPS;
sys_offset = typesystem->offset;
sys_jitter = typesystem->jitter;
peer->associd, NULL);
else if (!(peer->crypto & CRYPTO_FLAG_AUTO))
exten = crypto_args(peer, CRYPTO_AUTO,
- peer->assoc, NULL);
+ peer->associd, NULL);
else if (peer->flags & FLAG_ASSOC &&
peer->crypto & CRYPTO_FLAG_SIGN)
exten = crypto_args(peer, CRYPTO_AUTO |