/* ipntp.h - Wind River NTP library */ /* ****************************************************************************** * INTERPEAK API HEADER FILE * * Document no: @(#) $Name: VXWORKS_ITER40_2019102207 $ $RCSfile: ipntp.h,v $ $Revision: 1.3.10.6 $ * $Source: /home/interpeak/CVSRoot/ipntp/include/ipntp.h,v $ * $Author: jren $ $Date: 2015-12-17 09:21:37 $ * $State: Exp $ $Locker: $ * * INTERPEAK_COPYRIGHT_STRING * Design and implementation by Windriver ****************************************************************************** */ #ifndef IPNTP_H #define IPNTP_H /* **************************************************************************** * 1 DESCRIPTION **************************************************************************** * Public header file of NTP. */ /* DESCRIPTION This library contains the APIs provided by the WindRiver NTP. INCLUDE FILES: ipcom_type.h, ipcom_time.h */ /* **************************************************************************** * 2 CONFIGURATION **************************************************************************** */ /* **************************************************************************** * 3 INCLUDE FILES **************************************************************************** */ #include #include #ifdef __cplusplus extern "C" { #endif /* **************************************************************************** * 4 DEFINES **************************************************************************** */ #define IPNTP_MAX_NAME 256 #define IPNTP_MAX_HOSTNAME 512 #define IPNTP_MAX_PASSWORD 256 #define IPNTP_PRIVATE_CERT_TYPE 1 #define IPNTP_TRUSTED_CERT_TYPE 2 /* *=========================================================================== * release *=========================================================================== */ #define IPNTP_RELEASE 60600 /* **************************************************************************** * 5 TYPES **************************************************************************** */ typedef struct Ipntp_key_param_struct { char rndfile[IPNTP_MAX_NAME]; /* The rand filename */ char local_passwd[IPNTP_MAX_PASSWORD]; /* local private password */ char export_passwd[IPNTP_MAX_PASSWORD]; /* export IFF or GQ group keys with password */ char group_name[IPNTP_MAX_HOSTNAME]; /* The group name */ char subject_name[IPNTP_MAX_NAME]; /* The subject name */ char certificate[IPNTP_MAX_NAME]; /* The certificate scheme */ char cipher[IPNTP_MAX_NAME]; /* The privatekey cipher */ char signkey[8]; /* generate sign key with RSA or DSA */ int imbits; /* identity modulus bits, must be 256 to 2048 */ int modulus; /* modulus, must be 256 to 2048 */ int md5key; /* generate MD5 keys */ int iffpar; /* generate IFF parameters */ int gqpar; /* generate GQ parameters */ int mvkey; /* generate MV parameters and the number of MV parameters */ int update_mvkey; /* Update MV keys */ int writekey; /* Write IFF or GQ identity keys */ int hostkey; /* generate host key with RSA-MD5 */ int certtype; /* generated cert type, PC private cert or trusted cert (TC scheme) */ int lifetime; /* set certificate lifetime */ } Ipntp_key_param; /* **************************************************************************** * 6 FUNCTIONS **************************************************************************** */ /******************************************************************************* * * ipntp_changetime - change the current target time * * This function changes the target time with seconds added. * * Parameters: * \is * \i * offset. * \ie * * RETURNS:\is * \i 'IPCOM_SUCCESS', or one of the following errors: * \i 'IPCOM_ERR_FAILED' * General error. * \ie * * ERRNO: */ IP_PUBLIC Ip_err ipntp_changetime( int offset ); /******************************************************************************* * * ipntp_timediff - get the timediff between (S)NTP server and the target * * This function gets the time of the target and query the time of (S)NTP server. * Then comparte the difference between them. * * Parameters: * \is * \i * Host name or Internet address of the (S)NTP server. * \i * Timeout in seconds. Specifies how long the function will wait for a response. * '-1' means that there is no timeout; the routine can wait forever. * \i * Pointer to time difference in seconds between the target and the server. * \ie * * RETURNS:\is * \i 'IPCOM_SUCCESS', or one of the following errors: * \i 'IPCOM_TIMEOUT' * No response within the timeout period. * \i 'IPCOM_ERR_INVALID_ARG' * Invalid argument. * \i 'IPCOM_ERR_SOCKCALLFAILED' * A socket call failed. * \i 'IPCOM_ERR_NO_MEMORY' * Memory error. * \i 'IPCOM_ERR_FAILED' * General error. * \ie * * ERRNO: */ IP_PUBLIC Ip_err ipntp_timediff( char * pServerAddr, Ip_s32 timeout, double *diff ); /******************************************************************************* * * ipntp_updatetime - read time from specified NTP server and update local time * * This routine reads time from specified NTP server and update local time. * * Parameters: * \is * \i * Host name or Internet address of the (S)NTP server. * \i * Timeout in seconds. Specifies how long the function will wait for a response. * '-1' means that there is no timeout; the routine can wait forever. * \ie * * RETURNS:\is * \i 'IPCOM_SUCCESS', or one of the following errors: * \i 'IPCOM_TIMEOUT' * No response within the timeout period. * \i 'IPCOM_ERR_INVALID_ARG' * Invalid argument. * \i 'IPCOM_ERR_SOCKCALLFAILED' * A socket call failed. * \i 'IPCOM_ERR_NO_MEMORY' * Memory error. * \i 'IPCOM_ERR_FAILED' * General error. * \ie * * ERRNO: */ IP_PUBLIC Ip_err ipntp_updatetime( char * pServerAddr, Ip_s32 timeout ); /******************************************************************************* * * ipntp_querytime - read time from specified NTP server * * This routine reads time from specified NTP server. * * Parameters: * \is * \i * Host name or Internet address of the (S)NTP server. * \i * Timeout in seconds. Specifies how long the function will wait for a response. * '-1' means that there is no timeout; the routine can wait forever. * \i * Pointer to an structure for receiving the time returned. The * definition of the structure is: * \cs * struct Ip_timeval * { * long tv_sec; /@ Seconds. @/ * long tv_usec; /@ Microseconds. @/ * }; * \ce * * The value returned is relative to January 1, 1970. It can be used to update * the system\'s local clock. * \ie * * RETURNS:\is * \i 'IPCOM_SUCCESS', or one of the following errors: * \i 'IPCOM_TIMEOUT' * No response within the timeout period. * \i 'IPCOM_ERR_INVALID_ARG' * Invalid argument. * \i 'IPCOM_ERR_SOCKCALLFAILED' * A socket call failed. * \i 'IPCOM_ERR_NO_MEMORY' * Memory error. * \i 'IPCOM_ERR_FAILED' * General error. * \ie * * ERRNO: */ IP_PUBLIC Ip_err ipntp_querytime( char * pServerAddr, Ip_s32 timeout, struct Ip_timeval *tv ); #ifdef AUTOKEY /******************************************************************************* * * ipntp_keygen - generates cryptographic data files used by the NTPv4 authentication and identification schemes. * * This routine generates cryptographic data files used by the NTPv4 authentication * and identification schemes. * * Parameters: * \is * \i * The rand filename with path which will be used. * \ie * * RETURNS: * * \NOMANUAL */ IP_PUBLIC void ipntp_keygen(char *pathfilename); #endif /* *=========================================================================== * ipntp_exit_callback *=========================================================================== * Description: * Parameters: * Returns: * * \NOMANUAL */ IP_GLOBAL void ipntp_exit_callback(Ip_pid_t pid); /* *=========================================================================== * ipntp_getOptServ *=========================================================================== * Description: * Parameters: * Returns: * * \NOMANUAL */ IP_GLOBAL Ip_err ipntp_getOptServ(char * ParamString, const char * progName, int *argc, char *argvloc[], int argvlen); #ifdef __cplusplus } #endif #endif /* **************************************************************************** * END OF FILE **************************************************************************** */