]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - contrib/ntp/sntp/networking.h
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / contrib / ntp / sntp / networking.h
1 #ifndef NETWORKING_H
2 #define NETWORKING_H
3
4 #include <arpa/inet.h>
5 #include <netinet/in.h>
6
7 #include <strings.h>    
8 #include <errno.h>
9 #include <config.h>
10 #include <netdb.h>
11 #include <unistd.h>
12 #include <sys/types.h>
13 #include <sys/socket.h>
14
15 #include <ntp_rfc2553.h>
16 #include <ntp_stdlib.h>
17 #include <ntp_machine.h>
18 #include <ntp_unixtime.h>
19 #include <ntp_fp.h>
20 #include <ntp.h>
21
22 #include "crypto.h"
23 #include "log.h"
24 #include "sntp-opts.h"  
25 #include "utilities.h"
26
27 /* FIXME To be replaced by the constants in ntp.h */
28 #define SERVER_UNUSEABLE -1 /* Skip server */
29 #define PACKET_UNUSEABLE -2 /* Discard packet and try to get a useable packet again if not tried too often */
30 #define SERVER_AUTH_FAIL -3 /* Authentication failed, act upon settings */
31 #define KOD_DEMOBILIZE -4   /* KOD packet with code DENY or RSTR, stop all communication and save KOD information */
32 #define KOD_RATE -5         /* KOD packet with code RATE, reduce poll intervall */
33 #define BROADCAST_FAILED -6
34
35 /* prototypes */
36 int sendpkt(SOCKET rsock, sockaddr_u *dest, struct pkt *pkt, int len);
37 int recvdata(SOCKET rsock, sockaddr_u *sender, void *rdata,
38              int rdata_len);
39 int recvpkt(SOCKET rsock, struct pkt *rpkt, unsigned int rsize,
40             struct pkt *spkt);
41 int process_pkt(struct pkt *rpkt, sockaddr_u *sas, int pkt_len,
42                 int mode, struct pkt *spkt, const char *func_name);
43
44 /* Shortened peer structure. Not absolutely necessary yet */
45 struct speer {
46         struct speer *next;
47         sockaddr_u srcadr;
48         u_char version;
49         u_char hmode;
50         u_char hpoll;
51         u_char minpoll;
52         u_char maxpoll;
53         u_int flags;
54         u_char num_events;
55         u_char ttl;
56         u_char leap;
57         u_char pmode;
58         u_char stratum;
59         u_char ppoll;
60         u_char precision;       /* should be s_char */
61         u_int32 refid;
62         l_fp reftime;
63         keyid_t keyid;
64
65 #ifdef AUTOKEY
66 #define clear_to_zero opcode
67         u_int32 opcode;         /* last request opcode */
68         associd_t assoc;        /* peer association ID */
69         u_int32 crypto;         /* peer status word */
70         EVP_PKEY *pkey;         /* public key */
71         const EVP_MD *digest;   /* message digest algorithm */
72         char    *subject;       /* certificate subject name */
73         char    *issuer;        /* certificate issuer name */
74         struct cert_info *xinfo; /* issuer certificate */
75         keyid_t pkeyid;         /* previous key ID */
76         keyid_t hcookie;        /* host cookie */
77         keyid_t pcookie;        /* peer cookie */
78         const struct pkey_info *ident_pkey; /* identity key */
79         BIGNUM  *iffval;        /* identity challenge (IFF, GQ, MV) */
80         const BIGNUM *grpkey;   /* identity challenge key (GQ) */
81         struct value cookval;   /* receive cookie values */
82         struct value recval;    /* receive autokey values */
83         struct exten *cmmd;     /* extension pointer */
84         u_long  refresh;        /* next refresh epoch */
85
86         /*
87          * Variables used by authenticated server
88          */
89         keyid_t *keylist;       /* session key ID list */
90         int     keynumber;      /* current key number */
91         struct value encrypt;   /* send encrypt values */
92         struct value sndval;    /* send autokey values */
93 #else   /* !AUTOKEY follows */
94 #define clear_to_zero status
95 #endif  /* !AUTOKEY */
96         
97         l_fp    rec;            /* receive time stamp */
98         l_fp    xmt;            /* transmit time stamp */
99         l_fp    dst;            /* destination timestamp */
100         l_fp    aorg;           /* origin timestamp */
101         l_fp    borg;           /* alternate origin timestamp */
102         double  offset;         /* peer clock offset */
103         double  delay;          /* peer roundtrip delay */
104 };
105
106
107
108
109
110 #endif