X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/74bb4ee159b105b333421688f1de6f42d115e803..c39d40a767a1ae36171e5bcbf6f157ff3e80fb6c:/ntp.h diff --git a/ntp.h b/ntp.h index 0614f73b..78644e28 100644 --- a/ntp.h +++ b/ntp.h @@ -1,14 +1,28 @@ -/* $Header: /tcpdump/master/tcpdump/ntp.h,v 1.8 2004-01-28 14:34:50 hannes Exp $ */ - /* - * Based on ntp.h from the U of MD implementation - * This file is based on Version 2 of the NTP spec (RFC1119). + * Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that: (1) source code distributions + * retain the above copyright notice and this paragraph in its entirety, (2) + * distributions including binary code include the above copyright notice and + * this paragraph in its entirety in the documentation or other materials + * provided with the distribution, and (3) all advertising materials mentioning + * features or use of this software display the following acknowledgement: + * ``This product includes software developed by the University of California, + * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of + * the University nor the names of its contributors may be used to endorse + * or promote products derived from this software without specific prior + * written permission. + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + * */ -/* - * Definitions for the masses - */ -#define JAN_1970 2208988800U /* 1970 - 1900 in seconds */ +#include "netdissect-stdinc.h" + +#include "netdissect.h" /* * Structure definitions for NTP fixed point values @@ -28,100 +42,13 @@ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ */ struct l_fixedpt { - u_int32_t int_part; - u_int32_t fraction; + nd_uint32_t int_part; + nd_uint32_t fraction; }; struct s_fixedpt { - u_int16_t int_part; - u_int16_t fraction; -}; - -/* rfc2030 - * 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * |LI | VN |Mode | Stratum | Poll | Precision | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Root Delay | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Root Dispersion | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Reference Identifier | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | | - * | Reference Timestamp (64) | - * | | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | | - * | Originate Timestamp (64) | - * | | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | | - * | Receive Timestamp (64) | - * | | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | | - * | Transmit Timestamp (64) | - * | | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Key Identifier (optional) (32) | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | | - * | | - * | Message Digest (optional) (128) | - * | | - * | | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - -struct ntpdata { - u_char status; /* status of local clock and leap info */ - u_char stratum; /* Stratum level */ - u_char ppoll; /* poll value */ - int precision:8; - struct s_fixedpt root_delay; - struct s_fixedpt root_dispersion; - u_int32_t refid; - struct l_fixedpt ref_timestamp; - struct l_fixedpt org_timestamp; - struct l_fixedpt rec_timestamp; - struct l_fixedpt xmt_timestamp; - u_int32_t key_id; - u_int8_t message_digest[16]; + nd_uint16_t int_part; + nd_uint16_t fraction; }; -/* - * Leap Second Codes (high order two bits) - */ -#define NO_WARNING 0x00 /* no warning */ -#define PLUS_SEC 0x40 /* add a second (61 seconds) */ -#define MINUS_SEC 0x80 /* minus a second (59 seconds) */ -#define ALARM 0xc0 /* alarm condition (clock unsynchronized) */ - -/* - * Clock Status Bits that Encode Version - */ -#define NTPVERSION_1 0x08 -#define VERSIONMASK 0x38 -#define LEAPMASK 0xc0 -#define MODEMASK 0x07 -/* - * Code values - */ -#define MODE_UNSPEC 0 /* unspecified */ -#define MODE_SYM_ACT 1 /* symmetric active */ -#define MODE_SYM_PAS 2 /* symmetric passive */ -#define MODE_CLIENT 3 /* client */ -#define MODE_SERVER 4 /* server */ -#define MODE_BROADCAST 5 /* broadcast */ -#define MODE_RES1 6 /* reserved */ -#define MODE_RES2 7 /* reserved */ - -/* - * Stratum Definitions - */ -#define UNSPECIFIED 0 -#define PRIM_REF 1 /* radio clock */ -#define INFO_QUERY 62 /* **** THIS implementation dependent **** */ -#define INFO_REPLY 63 /* **** THIS implementation dependent **** */ +void p_ntp_time(netdissect_options *, const struct l_fixedpt *);