fix for MQX

pull/292/head
Takashi Kojo 2020-10-11 06:53:46 +09:00
parent b2d2edc6d9
commit 28b8e745b1
3 changed files with 37 additions and 24 deletions

View File

@ -18,9 +18,10 @@
* along with wolfSSH. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef FREESCALE_MQX
#define WOLFSSH_TEST_SERVER
#define WOLFSSH_TEST_ECHOSERVER
#endif
#ifdef HAVE_CONFIG_H
#include <config.h>
@ -40,6 +41,12 @@
#include <wolfssh/agent.h>
#include <wolfssh/test.h>
#include <wolfssl/wolfcrypt/ecc.h>
#ifdef FREESCALE_MQX
#define WOLFSSH_TEST_SERVER
#define WOLFSSH_TEST_ECHOSERVER
#endif
#include "examples/echoserver/echoserver.h"
#if defined(WOLFSSL_PTHREADS) && defined(WOLFSSL_TEST_GLOBAL_REQ)
@ -108,7 +115,7 @@ typedef struct WS_AgentCbActionCtx {
typedef struct {
WOLFSSH* ssh;
SOCKET_T fd;
WS_SOCKET_T fd;
word32 id;
int echo;
char nonBlock;
@ -264,10 +271,10 @@ static int ssh_worker(thread_ctx_t* threadCtx) {
if (!stop) {
if (threadCtx->nonBlock) {
SOCKET_T sockfd;
WS_SOCKET_T sockfd;
int select_ret = 0;
sockfd = (SOCKET_T)wolfSSH_get_fd(threadCtx->ssh);
sockfd = (WS_SOCKET_T)wolfSSH_get_fd(threadCtx->ssh);
select_ret = tcp_select(sockfd, 1);
if (select_ret != WS_SELECT_RECV_READY &&
@ -899,10 +906,10 @@ static int sftp_worker(thread_ctx_t* threadCtx) {
byte tmp[1];
int ret = WS_SUCCESS;
int error = WS_SUCCESS;
SOCKET_T sockfd;
WS_SOCKET_T sockfd;
int select_ret = 0;
sockfd = (SOCKET_T)wolfSSH_get_fd(threadCtx->ssh);
sockfd = (WS_SOCKET_T)wolfSSH_get_fd(threadCtx->ssh);
do {
if (threadCtx->nonBlock) {
if (error == WS_WANT_READ)
@ -952,12 +959,12 @@ static int NonBlockSSH_accept(WOLFSSH* ssh)
{
int ret;
int error;
SOCKET_T sockfd;
WS_SOCKET_T sockfd;
int select_ret = 0;
ret = wolfSSH_accept(ssh);
error = wolfSSH_get_error(ssh);
sockfd = (SOCKET_T)wolfSSH_get_fd(ssh);
sockfd = (WS_SOCKET_T)wolfSSH_get_fd(ssh);
while ((ret != WS_SUCCESS
&& ret != WS_SCP_COMPLETE && ret != WS_SFTP_COMPLETE)
@ -1084,7 +1091,7 @@ static int load_file(const char* fileName, byte* buf, word32 bufSz)
if (WFOPEN(&file, fileName, "rb") != 0)
return 0;
fseek(file, 0, SEEK_END);
fseek(file, 0, XSEEK_END);
fileSz = (word32)ftell(file);
rewind(file);
@ -1532,7 +1539,7 @@ THREAD_RETURN WOLFSSH_THREAD echoserver_test(void* args)
func_args* serverArgs = (func_args*)args;
WOLFSSH_CTX* ctx = NULL;
PwMapList pwMapList;
SOCKET_T listenFd = 0;
WS_SOCKET_T listenFd = 0;
word32 defaultHighwater = EXAMPLE_HIGHWATER_MARK;
word32 threadCount = 0;
int multipleConnections = 1;
@ -1717,7 +1724,7 @@ THREAD_RETURN WOLFSSH_THREAD echoserver_test(void* args)
}
do {
SOCKET_T clientFd = 0;
WS_SOCKET_T clientFd = 0;
#ifdef WOLFSSL_NUCLEUS
struct addr_struct clientAddr;
#else

View File

@ -164,6 +164,7 @@ extern "C" {
#define WFTELL(s) ftell((s))
#define WREWIND(s) fseek((s), 0, IO_SEEK_SET)
#define WSEEK_END IO_SEEK_END
#define WBADFILE NULL
static inline int wChmod(void* fs, const char* f, int mode)
{

View File

@ -22,11 +22,12 @@
#ifndef _WOLFSSH_TEST_H_
#define _WOLFSSH_TEST_H_
#ifndef NO_STDIO_FILESYSTEM
#include <stdio.h>
/*#include <stdlib.h>*/
#include <ctype.h>
/*#include <wolfssh/error.h>*/
#endif
#ifdef USE_WINDOWS_API
#ifndef _WIN32_WCE
@ -95,7 +96,12 @@
#define sin_family family
#define sin_port port
#elif defined(FREESCALE_MQX)
#ifndef SO_NOSIGPIPE
#include <signal.h> /* ignore SIGPIPE */
#endif
#define NUM_SOCKETS 5
#else /* USE_WINDOWS_API */
#include <unistd.h>
#include <netdb.h>
@ -134,7 +140,7 @@
#endif /* WOLFSSL_SOCKET_IS_INVALID */
#if defined(__MACH__) || defined(USE_WINDOWS_API)
#if defined(__MACH__) || defined(USE_WINDOWS_API) || defined(FREESCALE_MQX)
#ifndef _SOCKLEN_T
typedef int socklen_t;
#endif
@ -171,7 +177,7 @@
#define WOLFSSH_THREAD
#define INFINITE -1
#define WAIT_OBJECT_0 0L
#elif defined(WOLFSSL_NUCLEUS)
#elif defined(WOLFSSL_NUCLEUS) || defined(FREESCALE_MQX)
typedef unsigned int THREAD_RETURN;
typedef intptr_t THREAD_TYPE;
#define WOLFSSH_THREAD
@ -461,7 +467,7 @@ static INLINE void build_addr(SOCKADDR_IN_T* addr, const char* peer,
#endif
static INLINE void tcp_socket(SOCKET_T* sockFd)
static INLINE void tcp_socket(WS_SOCKET_T* sockFd)
{
#ifdef MICROCHIP_MPLAB_HARMONY
/* creates socket in listen or connect */
@ -530,7 +536,7 @@ static INLINE void tcp_socket(SOCKET_T* sockFd)
#ifdef WOLFSSH_TEST_SERVER
static INLINE void tcp_listen(SOCKET_T* sockfd, word16* port, int useAnyAddr)
static INLINE void tcp_listen(WS_SOCKET_T* sockfd, word16* port, int useAnyAddr)
{
#ifdef MICROCHIP_MPLAB_HARMONY
/* does bind and listen and returns the socket */
@ -594,10 +600,16 @@ static INLINE void tcp_listen(SOCKET_T* sockfd, word16* port, int useAnyAddr)
#endif /* WOLFSSH_TEST_SERVER */
enum {
WS_SELECT_FAIL,
WS_SELECT_TIMEOUT,
WS_SELECT_RECV_READY,
WS_SELECT_ERROR_READY
};
#if (defined(WOLFSSH_TEST_SERVER) || defined(WOLFSSH_TEST_CLIENT))
static INLINE void tcp_set_nonblocking(SOCKET_T* sockfd)
static INLINE void tcp_set_nonblocking(WS_SOCKET_T* sockfd)
{
#ifdef USE_WINDOWS_API
unsigned long blocking = 1;
@ -619,13 +631,6 @@ static INLINE void tcp_set_nonblocking(SOCKET_T* sockfd)
}
enum {
WS_SELECT_FAIL,
WS_SELECT_TIMEOUT,
WS_SELECT_RECV_READY,
WS_SELECT_ERROR_READY
};
#ifdef WOLFSSL_NUCLEUS
#define WFD_SET_TYPE FD_SET
#define WFD_SET NU_FD_Set