コード例 #1
0
ファイル: ntp.c プロジェクト: aries4/MIRACLE-ZBX-2.0.3-NoSQL
static void	make_packet(ntp_data *data)
{
	data->status	= NTP_LI_FUDGE << 6;
	data->stratum	= NTP_STRATUM;
	data->reference = data->dispersion = 0.0;

	data->version	= NTP_VERSION;
	data->mode	= 1;
	data->polling	= NTP_POLLING;
	data->precision	= NTP_PRECISION;
	data->receive	= data->originate = 0.0;
	data->current	= data->transmit = zbx_current_time();
}
コード例 #2
0
ファイル: ntp.c プロジェクト: aries4/MIRACLE-ZBX-2.0.3-NoSQL
static void	unpack_ntp(ntp_data *data, unsigned char *packet, int length)
{
	/* Unpack the essential data from an NTP packet, bypassing struct layout and
	endian problems.  Note that it ignores fields irrelevant to SNTP. */

	int	i;
	double	d;

	memset(data, 0, sizeof(ntp_data));

	if (0 == length)
		return;

	assert(length >= (NTP_TRANSMIT + 8));

	data->current	= zbx_current_time();    /* best to come first */
	data->status	= (packet[0] >> 6);
	data->version	= (packet[0] >> 3) & 0x07;
	data->mode	= packet[0] & 0x07;
	data->stratum	= packet[1];
	data->polling	= packet[2];
	data->precision	= packet[3];

	d = 0.0;
	for (i = 0; i < 4; i++)
		d = 256.0 * d + packet[NTP_DISP_FIELD + i];
	data->dispersion = d / 65536.0;

	d = 0.0;
	for (i = 0; i < 8; i++)
		d = 256.0 * d + packet[NTP_REFERENCE + i];
	data->reference = d / NTP_SCALE;

	d = 0.0;
	for (i = 0; i < 8; i++)
		d = 256.0 * d + packet[NTP_ORIGINATE + i];
	data->originate = d / NTP_SCALE;

	d = 0.0;
	for (i = 0; i < 8; i++)
		d = 256.0 * d + packet[NTP_RECEIVE + i];
	data->receive = d / NTP_SCALE;

	d = 0.0;
	for (i = 0; i < 8; i++)
		d = 256.0 * d + packet[NTP_TRANSMIT + i];
	data->transmit = d / NTP_SCALE;
}
コード例 #3
0
ファイル: ntp.c プロジェクト: dreamsxin/zabbix
static void	make_packet(ntp_data *data)
{
	data->version = NTP_VERSION;
	data->mode = NTP_MODE_CLIENT;
	data->transmit = zbx_current_time();
}