|
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
|