Blame test/simulation/clknetsim/protocol.h

Packit 96c956
/*
Packit 96c956
 * Copyright (C) 2010  Miroslav Lichvar <mlichvar@redhat.com>
Packit 96c956
 * 
Packit 96c956
 * This program is free software; you can redistribute it and/or modify
Packit 96c956
 * it under the terms of the GNU General Public License as published by
Packit 96c956
 * the Free Software Foundation; either version 2 of the License, or
Packit 96c956
 * (at your option) any later version.
Packit 96c956
 * 
Packit 96c956
 * This program is distributed in the hope that it will be useful,
Packit 96c956
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 96c956
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit 96c956
 * GNU General Public License for more details.
Packit 96c956
 * 
Packit 96c956
 * You should have received a copy of the GNU General Public License
Packit 96c956
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
Packit 96c956
 */
Packit 96c956
Packit 96c956
#ifndef PROTOCOL_H
Packit 96c956
#define PROTOCOL_H
Packit 96c956
Packit 96c956
#include "sysheaders.h"
Packit 96c956
Packit 96c956
#define REQ_REGISTER 1
Packit 96c956
#define REQ_GETTIME 2
Packit 96c956
#define REQ_SETTIME 3
Packit 96c956
#define REQ_ADJTIMEX 4
Packit 96c956
#define REQ_ADJTIME 5
Packit 96c956
#define REQ_SELECT 6
Packit 96c956
#define REQ_SEND 7
Packit 96c956
#define REQ_RECV 8
Packit 96c956
#define REQ_GETREFSAMPLE 9
Packit 96c956
#define REQ_GETREFOFFSETS 10
Packit 96c956
#define REQ_DEREGISTER 11
Packit 96c956
Packit 96c956
struct Request_header {
Packit 96c956
	int request;
Packit 96c956
	int _pad;
Packit 96c956
};
Packit 96c956
Packit 96c956
struct Request_register {
Packit 96c956
	unsigned int node;
Packit 96c956
};
Packit 96c956
Packit 96c956
struct Reply_register {
Packit 96c956
	unsigned int subnets;
Packit 96c956
};
Packit 96c956
Packit 96c956
struct Reply_gettime {
Packit 96c956
	double real_time;
Packit 96c956
	double monotonic_time;
Packit 96c956
	double network_time;
Packit 96c956
};
Packit 96c956
Packit 96c956
struct Request_settime {
Packit 96c956
	double time;
Packit 96c956
};
Packit 96c956
Packit 96c956
struct Request_adjtimex {
Packit 96c956
	struct timex timex;
Packit 96c956
};
Packit 96c956
Packit 96c956
struct Reply_adjtimex {
Packit 96c956
	int ret;
Packit 96c956
	int _pad;
Packit 96c956
	struct timex timex;
Packit 96c956
};
Packit 96c956
Packit 96c956
struct Request_adjtime {
Packit 96c956
	struct timeval tv;
Packit 96c956
};
Packit 96c956
Packit 96c956
struct Reply_adjtime {
Packit 96c956
	struct timeval tv;
Packit 96c956
};
Packit 96c956
Packit 96c956
struct Request_select {
Packit 96c956
	double timeout;
Packit 96c956
	int read;
Packit 96c956
	int _pad;
Packit 96c956
};
Packit 96c956
Packit 96c956
#define REPLY_SELECT_TIMEOUT 0
Packit 96c956
#define REPLY_SELECT_NORMAL 1
Packit 96c956
#define REPLY_SELECT_BROADCAST 2
Packit 96c956
#define REPLY_SELECT_TERMINATE 3
Packit 96c956
Packit 96c956
struct Reply_select {
Packit 96c956
	int ret;
Packit 96c956
	unsigned int subnet; /* for NORMAL or BROADCAST */
Packit 96c956
	unsigned int dst_port; /* for NORMAL or BROADCAST */
Packit 96c956
	struct Reply_gettime time;
Packit 96c956
};
Packit 96c956
Packit 96c956
#define MAX_PACKET_SIZE 4000
Packit 96c956
Packit 96c956
struct Request_send {
Packit 96c956
	unsigned int subnet;
Packit 96c956
	unsigned int to;
Packit 96c956
	unsigned int src_port;
Packit 96c956
	unsigned int dst_port;
Packit 96c956
	unsigned int len;
Packit 96c956
	char data[MAX_PACKET_SIZE];
Packit 96c956
};
Packit 96c956
Packit 96c956
struct Reply_recv {
Packit 96c956
	unsigned int subnet;
Packit 96c956
	unsigned int from;
Packit 96c956
	unsigned int src_port;
Packit 96c956
	unsigned int dst_port;
Packit 96c956
	unsigned int len;
Packit 96c956
	char data[MAX_PACKET_SIZE];
Packit 96c956
};
Packit 96c956
Packit 96c956
struct Reply_getrefsample {
Packit 96c956
	double time;
Packit 96c956
	double offset;
Packit 96c956
	int valid;
Packit 96c956
	int _pad;
Packit 96c956
};
Packit 96c956
Packit 96c956
#define REPLY_GETREFOFFSETS_SIZE 1024
Packit 96c956
Packit 96c956
struct Reply_getrefoffsets {
Packit 96c956
	double offsets[REPLY_GETREFOFFSETS_SIZE];
Packit 96c956
};
Packit 96c956
Packit 96c956
union Request_data {
Packit 96c956
	struct Request_register _register;
Packit 96c956
	struct Request_settime settime;
Packit 96c956
	struct Request_adjtimex adjtimex;
Packit 96c956
	struct Request_adjtime adjtime;
Packit 96c956
	struct Request_select select;
Packit 96c956
	struct Request_send send;
Packit 96c956
};
Packit 96c956
Packit 96c956
union Reply_data {
Packit 96c956
	struct Reply_register _register;
Packit 96c956
	struct Reply_gettime gettime;
Packit 96c956
	struct Reply_adjtimex adjtimex;
Packit 96c956
	struct Reply_adjtime adjtime;
Packit 96c956
	struct Reply_select select;
Packit 96c956
	struct Reply_recv recv;
Packit 96c956
	struct Reply_getrefsample getrefsample;
Packit 96c956
	struct Reply_getrefoffsets getrefoffsets;
Packit 96c956
};
Packit 96c956
Packit 96c956
struct Request_packet {
Packit 96c956
	struct Request_header header;
Packit 96c956
	union Request_data data;
Packit 96c956
};
Packit 96c956
Packit 96c956
struct Reply_packet {
Packit 96c956
	union Reply_data data;
Packit 96c956
};
Packit 96c956
Packit 96c956
#endif