File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / ntp / sntp / networking.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue May 29 12:08:38 2012 UTC (12 years, 2 months ago) by misho
Branches: ntp, MAIN
CVS tags: v4_2_6p5p0, v4_2_6p5, HEAD
ntp 4.2.6p5

    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: /* 
   28:  * for 4.2.6 only define AUTOKEY if OPENSSL, so that backported 4.2.7
   29:  * references to AUTOKEY work -- in 4.2.7 AUTOKEY is independent of OPENSSL
   30:  */
   31: #ifdef OPENSSL
   32: #define AUTOKEY
   33: #endif
   34: 
   35: /* FIXME To be replaced by the constants in ntp.h */
   36: #define SERVER_UNUSEABLE -1 /* Skip server */
   37: #define PACKET_UNUSEABLE -2 /* Discard packet and try to get a useable packet again if not tried too often */
   38: #define SERVER_AUTH_FAIL -3 /* Authentication failed, act upon settings */
   39: #define KOD_DEMOBILIZE -4   /* KOD packet with code DENY or RSTR, stop all communication and save KOD information */
   40: #define KOD_RATE -5	    /* KOD packet with code RATE, reduce poll intervall */
   41: #define BROADCAST_FAILED -6
   42: 
   43: 
   44: /* From ntpdate.c */
   45: int is_reachable (struct addrinfo *dst);
   46: 
   47: int resolve_hosts (const char **hosts, int hostc, struct addrinfo ***res, int pref_family);
   48: 
   49: void create_socket (SOCKET *rsock, sockaddr_u *dest);
   50: 
   51: void sendpkt (SOCKET rsock, sockaddr_u *dest, struct pkt *pkt, int len);
   52: 
   53: int recvdata (SOCKET rsock, sockaddr_u *sender, char *rdata, int rdata_len);
   54: 
   55: int recvpkt (SOCKET rsock, struct pkt *rpkt, unsigned int rsize, struct pkt *spkt);
   56: 
   57: int recv_bcst_data (SOCKET rsock, char *rdata, int rdata_len, sockaddr_u *sas, sockaddr_u *ras);
   58: 
   59: int recv_bcst_pkt (SOCKET rsock, struct pkt *rpkt, unsigned int rsize, sockaddr_u *sas);
   60: 
   61: int process_pkt (struct pkt *rpkt, sockaddr_u *sas,	int pkt_len, int mode, struct pkt *spkt, char * func_name);
   62: 
   63: /* Shortened peer structure. Not absolutely necessary yet */
   64: struct speer {
   65: 	struct speer *next;
   66: 	sockaddr_u srcadr;
   67: 	u_char version;
   68: 	u_char hmode;
   69: 	u_char hpoll;
   70: 	u_char minpoll;
   71: 	u_char maxpoll;
   72: 	u_int flags;
   73: 	u_char num_events;
   74: 	u_char ttl;
   75: 	u_char leap;
   76: 	u_char pmode;
   77: 	u_char stratum;
   78: 	u_char ppoll;
   79: 	u_char precision;	/* should be s_char */
   80: 	u_int32 refid;
   81: 	l_fp reftime;
   82: 	keyid_t keyid;
   83: 
   84: #ifdef AUTOKEY
   85: #define clear_to_zero opcode
   86: 	u_int32	opcode;		/* last request opcode */
   87: 	associd_t assoc;	/* peer association ID */
   88: 	u_int32	crypto;		/* peer status word */
   89: 	EVP_PKEY *pkey;		/* public key */
   90: 	const EVP_MD *digest;	/* message digest algorithm */
   91: 	char	*subject;	/* certificate subject name */
   92: 	char	*issuer;	/* certificate issuer name */
   93: 	struct cert_info *xinfo; /* issuer certificate */
   94: 	keyid_t	pkeyid;		/* previous key ID */
   95: 	keyid_t	hcookie;	/* host cookie */
   96: 	keyid_t	pcookie;	/* peer cookie */
   97: 	const struct pkey_info *ident_pkey; /* identity key */
   98: 	BIGNUM	*iffval;	/* identity challenge (IFF, GQ, MV) */
   99: 	const BIGNUM *grpkey;	/* identity challenge key (GQ) */
  100: 	struct value cookval;	/* receive cookie values */
  101: 	struct value recval;	/* receive autokey values */
  102: 	struct exten *cmmd;	/* extension pointer */
  103: 	u_long	refresh;	/* next refresh epoch */
  104: 
  105: 	/*
  106: 	 * Variables used by authenticated server
  107: 	 */
  108: 	keyid_t	*keylist;	/* session key ID list */
  109: 	int	keynumber;	/* current key number */
  110: 	struct value encrypt;	/* send encrypt values */
  111: 	struct value sndval;	/* send autokey values */
  112: #else	/* !AUTOKEY follows */
  113: #define clear_to_zero status
  114: #endif	/* !AUTOKEY */
  115: 	
  116: 	l_fp	rec;		/* receive time stamp */
  117: 	l_fp	xmt;		/* transmit time stamp */
  118: 	l_fp	dst;		/* destination timestamp */
  119: 	l_fp	aorg;		/* origin timestamp */
  120: 	l_fp	borg;		/* alternate origin timestamp */
  121: 	double	offset;		/* peer clock offset */
  122: 	double	delay;		/* peer roundtrip delay */
  123: };
  124: 
  125: 
  126: 
  127: 
  128: 
  129: #endif

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>