diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2014-12-02 09:01:21 +0000 |
---|---|---|
committer | <> | 2014-12-04 16:11:25 +0000 |
commit | bdab5265fcbf3f472545073a23f8999749a9f2b9 (patch) | |
tree | c6018dd03dea906f8f1fb5f105f05b71a7dc250a /sntp/networking.h | |
download | ntp-d4b7cd9723cce9561fa15f74b90b85a3a61b5ef8.tar.gz |
Imported from /home/lorry/working-area/delta_ntp/ntp-dev-4.2.7p482.tar.gz.ntp-dev-4.2.7p482
Diffstat (limited to 'sntp/networking.h')
-rw-r--r-- | sntp/networking.h | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/sntp/networking.h b/sntp/networking.h new file mode 100644 index 0000000..3e63891 --- /dev/null +++ b/sntp/networking.h @@ -0,0 +1,110 @@ +#ifndef NETWORKING_H +#define NETWORKING_H + +#include <arpa/inet.h> +#include <netinet/in.h> + +#include <strings.h> +#include <errno.h> +#include <config.h> +#include <netdb.h> +#include <unistd.h> +#include <sys/types.h> +#include <sys/socket.h> + +#include <ntp_rfc2553.h> +#include <ntp_stdlib.h> +#include <ntp_machine.h> +#include <ntp_unixtime.h> +#include <ntp_fp.h> +#include <ntp.h> + +#include "crypto.h" +#include "log.h" +#include "sntp-opts.h" +#include "utilities.h" + +/* FIXME To be replaced by the constants in ntp.h */ +#define SERVER_UNUSEABLE -1 /* Skip server */ +#define PACKET_UNUSEABLE -2 /* Discard packet and try to get a useable packet again if not tried too often */ +#define SERVER_AUTH_FAIL -3 /* Authentication failed, act upon settings */ +#define KOD_DEMOBILIZE -4 /* KOD packet with code DENY or RSTR, stop all communication and save KOD information */ +#define KOD_RATE -5 /* KOD packet with code RATE, reduce poll intervall */ +#define BROADCAST_FAILED -6 + +/* prototypes */ +int sendpkt(SOCKET rsock, sockaddr_u *dest, struct pkt *pkt, int len); +int recvdata(SOCKET rsock, sockaddr_u *sender, void *rdata, + int rdata_len); +int recvpkt(SOCKET rsock, struct pkt *rpkt, unsigned int rsize, + struct pkt *spkt); +int process_pkt(struct pkt *rpkt, sockaddr_u *sas, int pkt_len, + int mode, struct pkt *spkt, const char *func_name); + +/* Shortened peer structure. Not absolutely necessary yet */ +struct speer { + struct speer *next; + sockaddr_u srcadr; + u_char version; + u_char hmode; + u_char hpoll; + u_char minpoll; + u_char maxpoll; + u_int flags; + u_char num_events; + u_char ttl; + u_char leap; + u_char pmode; + u_char stratum; + u_char ppoll; + u_char precision; /* should be s_char */ + u_int32 refid; + l_fp reftime; + keyid_t keyid; + +#ifdef AUTOKEY +#define clear_to_zero opcode + u_int32 opcode; /* last request opcode */ + associd_t assoc; /* peer association ID */ + u_int32 crypto; /* peer status word */ + EVP_PKEY *pkey; /* public key */ + const EVP_MD *digest; /* message digest algorithm */ + char *subject; /* certificate subject name */ + char *issuer; /* certificate issuer name */ + struct cert_info *xinfo; /* issuer certificate */ + keyid_t pkeyid; /* previous key ID */ + keyid_t hcookie; /* host cookie */ + keyid_t pcookie; /* peer cookie */ + const struct pkey_info *ident_pkey; /* identity key */ + BIGNUM *iffval; /* identity challenge (IFF, GQ, MV) */ + const BIGNUM *grpkey; /* identity challenge key (GQ) */ + struct value cookval; /* receive cookie values */ + struct value recval; /* receive autokey values */ + struct exten *cmmd; /* extension pointer */ + u_long refresh; /* next refresh epoch */ + + /* + * Variables used by authenticated server + */ + keyid_t *keylist; /* session key ID list */ + int keynumber; /* current key number */ + struct value encrypt; /* send encrypt values */ + struct value sndval; /* send autokey values */ +#else /* !AUTOKEY follows */ +#define clear_to_zero status +#endif /* !AUTOKEY */ + + l_fp rec; /* receive time stamp */ + l_fp xmt; /* transmit time stamp */ + l_fp dst; /* destination timestamp */ + l_fp aorg; /* origin timestamp */ + l_fp borg; /* alternate origin timestamp */ + double offset; /* peer clock offset */ + double delay; /* peer roundtrip delay */ +}; + + + + + +#endif |