diff options
author | Klotz, Tobias <tobias.klotz@draeger.com> | 2018-12-20 12:59:31 +0100 |
---|---|---|
committer | Dr. Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com> | 2019-01-24 17:58:27 +0100 |
commit | b6d41ff73392df5af9c931c902ae4cd75c5b61ea (patch) | |
tree | d3bf7688e6604ea6d6c40ad5e9076e53becda50a | |
parent | 8e3df4012a8177b89707ebec249be417508c8c7f (diff) |
Cleanup vxworks support to be able to compile for VxWorks 7
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
(Merged from https://github.com/openssl/openssl/pull/7569)
(cherry picked from commit 5c8b7b4caa0faedb69277063a7c6b3a8e56c6308)
-rw-r--r-- | apps/apps.c | 2 | ||||
-rw-r--r-- | apps/ocsp.c | 14 | ||||
-rw-r--r-- | apps/rehash.c | 20 | ||||
-rw-r--r-- | apps/speed.c | 6 | ||||
-rw-r--r-- | crypto/bio/b_addr.c | 5 | ||||
-rw-r--r-- | crypto/rand/rand_unix.c | 21 | ||||
-rw-r--r-- | crypto/ui/ui_openssl.c | 6 | ||||
-rw-r--r-- | include/internal/sockets.h | 6 | ||||
-rw-r--r-- | test/ssltestlib.c | 16 |
9 files changed, 84 insertions, 12 deletions
diff --git a/apps/apps.c b/apps/apps.c index 79171d1885..0501d2babd 100644 --- a/apps/apps.c +++ b/apps/apps.c @@ -2196,7 +2196,7 @@ double app_tminterval(int stop, int usertime) return ret; } -#elif defined(OPENSSL_SYSTEM_VXWORKS) +#elif defined(OPENSSL_SYS_VXWORKS) # include <time.h> double app_tminterval(int stop, int usertime) diff --git a/apps/ocsp.c b/apps/ocsp.c index de95b71ccf..d38b4a1880 100644 --- a/apps/ocsp.c +++ b/apps/ocsp.c @@ -53,6 +53,20 @@ NON_EMPTY_TRANSLATION_UNIT # define LOG_ERR 2 # endif +# if defined(OPENSSL_SYS_VXWORKS) +/* not supported */ +int setpgid(pid_t pid, pid_t pgid) +{ + errno = ENOSYS; + return 0; +} +/* not supported */ +pid_t fork(void) +{ + errno = ENOSYS; + return (pid_t) -1; +} +# endif /* Maximum leeway in validity period: default 5 minutes */ # define MAX_VALIDITY_PERIOD (5 * 60) diff --git a/apps/rehash.c b/apps/rehash.c index bb41d3129f..8c23be78fa 100644 --- a/apps/rehash.c +++ b/apps/rehash.c @@ -51,6 +51,26 @@ # endif # define MAX_COLLISIONS 256 +# if defined(OPENSSL_SYS_VXWORKS) +/* + * VxWorks has no symbolic links + */ + +# define lstat(path, buf) stat(path, buf) + +int symlink(const char *target, const char *linkpath) +{ + errno = ENOSYS; + return -1; +} + +ssize_t readlink(const char *pathname, char *buf, size_t bufsiz) +{ + errno = ENOSYS; + return -1; +} +# endif + typedef struct hentry_st { struct hentry_st *next; char *filename; diff --git a/apps/speed.c b/apps/speed.c index 40e990408a..dbf50df7d1 100644 --- a/apps/speed.c +++ b/apps/speed.c @@ -100,7 +100,7 @@ #include <openssl/modes.h> #ifndef HAVE_FORK -# if defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_WINDOWS) +# if defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_VXWORKS) # define HAVE_FORK 0 # else # define HAVE_FORK 1 @@ -1499,11 +1499,11 @@ int speed_main(int argc, char **argv) {"nistp192", NID_X9_62_prime192v1, 192}, {"nistp224", NID_secp224r1, 224}, {"nistp256", NID_X9_62_prime256v1, 256}, - {"nistp384", NID_secp384r1, 384}, + {"nistp384", NID_secp384r1, 384}, {"nistp521", NID_secp521r1, 521}, /* Binary Curves */ {"nistk163", NID_sect163k1, 163}, - {"nistk233", NID_sect233k1, 233}, + {"nistk233", NID_sect233k1, 233}, {"nistk283", NID_sect283k1, 283}, {"nistk409", NID_sect409k1, 409}, {"nistk571", NID_sect571k1, 571}, diff --git a/crypto/bio/b_addr.c b/crypto/bio/b_addr.c index abec7bb8db..a2fd4c9903 100644 --- a/crypto/bio/b_addr.c +++ b/crypto/bio/b_addr.c @@ -782,7 +782,12 @@ int BIO_lookup_ex(const char *host, const char *service, int lookup_type, * anyway [above getaddrinfo/gai_strerror is]. We just let * system administrator figure this out... */ +# if defined(OPENSSL_SYS_VXWORKS) + /* h_errno doesn't exist on VxWorks */ + SYSerr(SYS_F_GETHOSTBYNAME, 1000 ); +# else SYSerr(SYS_F_GETHOSTBYNAME, 1000 + h_errno); +# endif #else SYSerr(SYS_F_GETHOSTBYNAME, WSAGetLastError()); #endif diff --git a/crypto/rand/rand_unix.c b/crypto/rand/rand_unix.c index 9d8ffdd537..d439c718d2 100644 --- a/crypto/rand/rand_unix.c +++ b/crypto/rand/rand_unix.c @@ -93,6 +93,27 @@ static uint64_t get_timer_bits(void); # error "UEFI and VXWorks only support seeding NONE" #endif +#if defined(OPENSSL_SYS_VXWORKS) +/* empty implementation */ +int rand_pool_init(void) +{ + return 1; +} + +void rand_pool_cleanup(void) +{ +} + +void rand_pool_keep_random_devices_open(int keep) +{ +} + +size_t rand_pool_acquire_entropy(RAND_POOL *pool) +{ + return rand_pool_entropy_available(pool); +} +#endif + #if !(defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_WIN32) \ || defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_VXWORKS) \ || defined(OPENSSL_SYS_UEFI)) diff --git a/crypto/ui/ui_openssl.c b/crypto/ui/ui_openssl.c index 6b996134df..88c88efaa1 100644 --- a/crypto/ui/ui_openssl.c +++ b/crypto/ui/ui_openssl.c @@ -101,6 +101,12 @@ # endif +# if defined(OPENSSL_SYS_VXWORKS) +# undef TERMIOS +# undef TERMIO +# undef SGTTY +# endif + # ifdef TERMIOS # include <termios.h> # define TTY_STRUCT struct termios diff --git a/include/internal/sockets.h b/include/internal/sockets.h index a6026dad08..18e4d3d89a 100644 --- a/include/internal/sockets.h +++ b/include/internal/sockets.h @@ -72,11 +72,7 @@ struct servent *PASCAL getservbyname(const char *, const char *); # else # include <sys/socket.h> # ifndef NO_SYS_UN_H -# ifdef OPENSSL_SYS_VXWORKS -# include <streams/un.h> -# else -# include <sys/un.h> -# endif +# include <sys/un.h> # ifndef UNIX_PATH_MAX # define UNIX_PATH_MAX sizeof(((struct sockaddr_un *)NULL)->sun_path) # endif diff --git a/test/ssltestlib.c b/test/ssltestlib.c index 320a82d82b..05139be750 100644 --- a/test/ssltestlib.c +++ b/test/ssltestlib.c @@ -17,18 +17,28 @@ #ifdef OPENSSL_SYS_UNIX # include <unistd.h> -static ossl_inline void ossl_sleep(unsigned int millis) { +static ossl_inline void ossl_sleep(unsigned int millis) +{ +# ifdef OPENSSL_SYS_VXWORKS + struct timespec ts; + ts.tv_sec = (long int) (millis / 1000); + ts.tv_nsec = (long int) (millis % 1000) * 1000000ul; + nanosleep(&ts, NULL); +# else usleep(millis * 1000); +# endif } #elif defined(_WIN32) # include <windows.h> -static ossl_inline void ossl_sleep(unsigned int millis) { +static ossl_inline void ossl_sleep(unsigned int millis) +{ Sleep(millis); } #else /* Fallback to a busy wait */ -static ossl_inline void ossl_sleep(unsigned int millis) { +static ossl_inline void ossl_sleep(unsigned int millis) +{ struct timeval start, now; unsigned int elapsedms; |