From e4e8fcc6a66309c1d18926f7672d9ded5b7103b0 Mon Sep 17 00:00:00 2001 From: Junyeon LEE Date: Mon, 29 May 2017 18:48:58 +0900 Subject: [PATCH] external/wakaama: add context free. This commit is to add tls context free routine in examples. Change-Id: I8f4aad9b130cd0a0ff1171e6d1c76a032ba78829 Signed-off-by: Junyeon LEE Signed-off-by: EunBong Song --- apps/system/init/Kconfig | 22 ++++++++++ build/configs/artik053/extra/defconfig | 4 +- build/configs/artik053/minimal/defconfig | 4 +- build/configs/artik053/nettest/defconfig | 5 ++- build/configs/artik053/tash/defconfig | 5 ++- build/configs/artik053/typical/defconfig | 4 +- build/configs/artik053/wifi_test/defconfig | 3 +- build/configs/sidk_s5jt200/hello/defconfig | 1 - .../configs/sidk_s5jt200/hello_with_tash/defconfig | 6 ++- build/configs/sidk_s5jt200/kernel_sample/defconfig | 6 ++- .../configs/sidk_s5jt200/sidk_tash_wlan/defconfig | 6 ++- build/configs/sidk_s5jt200/tc/defconfig | 6 ++- external/wakaama/examples/client/lwm2mclient.c | 16 +++---- external/wakaama/examples/server/lwm2mserver.c | 49 ++++++++++++++-------- external/wakaama/examples/shared/Make.defs | 4 ++ external/wakaama/examples/shared/connection.c | 12 ++++++ os/kernel/Kconfig | 7 ---- os/kernel/init/os_bringup.c | 6 ++- 18 files changed, 115 insertions(+), 51 deletions(-) create mode 100644 apps/system/init/Kconfig diff --git a/apps/system/init/Kconfig b/apps/system/init/Kconfig new file mode 100644 index 0000000..7aea5ba --- /dev/null +++ b/apps/system/init/Kconfig @@ -0,0 +1,22 @@ +# +# For a description of the syntax of this configuration file, +# see kconfig-language at https://www.kernel.org/doc/Documentation/kbuild/kconfig-language.txt +# + + +config SYSTEM_PREAPP_INIT + bool "Preapp Init" + default y + ---help--- + Enable Preapp Init. + +if SYSTEM_PREAPP_INIT + +config SYSTEM_PREAPP_STACKSIZE + int "pre-app thread stack size" + default 2048 + ---help--- + The size of the stack to allocate for the pre-application thread + that is started as soon as the OS completes its initialization. + +endif diff --git a/build/configs/artik053/extra/defconfig b/build/configs/artik053/extra/defconfig index cf886d4..893d778 100644 --- a/build/configs/artik053/extra/defconfig +++ b/build/configs/artik053/extra/defconfig @@ -422,7 +422,6 @@ CONFIG_SCHED_LPWORKSTACKSIZE=2048 # CONFIG_IDLETHREAD_STACKSIZE=1024 CONFIG_USERMAIN_STACKSIZE=2048 -CONFIG_PREAPP_STACKSIZE=2048 # CONFIG_MPU_STACKGAURD is not set CONFIG_PTHREAD_STACK_MIN=256 CONFIG_PTHREAD_STACK_DEFAULT=2048 @@ -1139,6 +1138,9 @@ CONFIG_TASH_CMDTASK_PRIORITY=100 # CONFIG_SYSTEM_FOTA_HAL is not set # CONFIG_SYSTEM_I2CTOOL is not set # CONFIG_SYSTEM_INIFILE is not set +CONFIG_SYSTEM_PREAPP_INIT=y +CONFIG_SYSTEM_PREAPP_STACKSIZE=2048 + # CONFIG_SYSTEM_INSTALL is not set # CONFIG_SYSTEM_NETDB is not set # CONFIG_SYSTEM_POWEROFF is not set diff --git a/build/configs/artik053/minimal/defconfig b/build/configs/artik053/minimal/defconfig index 187fa2c..a8bc087 100644 --- a/build/configs/artik053/minimal/defconfig +++ b/build/configs/artik053/minimal/defconfig @@ -376,7 +376,6 @@ CONFIG_SCHED_LPWORKSTACKSIZE=2048 # CONFIG_IDLETHREAD_STACKSIZE=1024 CONFIG_USERMAIN_STACKSIZE=2048 -CONFIG_PREAPP_STACKSIZE=2048 # CONFIG_MPU_STACKGAURD is not set CONFIG_PTHREAD_STACK_MIN=256 CONFIG_PTHREAD_STACK_DEFAULT=2048 @@ -768,6 +767,9 @@ CONFIG_EXAMPLES_HELLO=y # CONFIG_SYSTEM_FOTA_HAL is not set # CONFIG_SYSTEM_I2CTOOL is not set # CONFIG_SYSTEM_INIFILE is not set +CONFIG_SYSTEM_PREAPP_INIT=y +CONFIG_SYSTEM_PREAPP_STACKSIZE=2048 + # CONFIG_SYSTEM_INSTALL is not set # CONFIG_SYSTEM_NETDB is not set # CONFIG_SYSTEM_POWEROFF is not set diff --git a/build/configs/artik053/nettest/defconfig b/build/configs/artik053/nettest/defconfig index 06c99cd..939cbcb 100644 --- a/build/configs/artik053/nettest/defconfig +++ b/build/configs/artik053/nettest/defconfig @@ -442,8 +442,6 @@ CONFIG_SCHED_LPWORKSTACKSIZE=2048 # CONFIG_IDLETHREAD_STACKSIZE=1024 CONFIG_USERMAIN_STACKSIZE=2048 -CONFIG_PREAPP_STACKSIZE=2048 -# CONFIG_MPU_STACKGAURD is not set CONFIG_PTHREAD_STACK_MIN=256 CONFIG_PTHREAD_STACK_DEFAULT=2048 @@ -1139,6 +1137,9 @@ CONFIG_TASH_CMDTASK_PRIORITY=100 # CONFIG_SYSTEM_FOTA_HAL is not set # CONFIG_SYSTEM_I2CTOOL is not set # CONFIG_SYSTEM_INIFILE is not set +CONFIG_SYSTEM_PREAPP_INIT=y +CONFIG_SYSTEM_PREAPP_STACKSIZE=2048 + # CONFIG_SYSTEM_INSTALL is not set # CONFIG_SYSTEM_NETDB is not set # CONFIG_SYSTEM_POWEROFF is not set diff --git a/build/configs/artik053/tash/defconfig b/build/configs/artik053/tash/defconfig index aaf3fed..ebbbdc3 100644 --- a/build/configs/artik053/tash/defconfig +++ b/build/configs/artik053/tash/defconfig @@ -402,8 +402,6 @@ CONFIG_SCHED_HPWORKSTACKSIZE=2048 # CONFIG_IDLETHREAD_STACKSIZE=1024 CONFIG_USERMAIN_STACKSIZE=2048 -CONFIG_PREAPP_STACKSIZE=2048 -# CONFIG_MPU_STACKGAURD is not set CONFIG_PTHREAD_STACK_MIN=256 CONFIG_PTHREAD_STACK_DEFAULT=2048 @@ -839,6 +837,9 @@ CONFIG_SYSTEM_CLE_DEBUGLEVEL=0 # CONFIG_SYSTEM_FOTA_HAL is not set # CONFIG_SYSTEM_I2CTOOL is not set # CONFIG_SYSTEM_INIFILE is not set +CONFIG_SYSTEM_PREAPP_INIT=y +CONFIG_SYSTEM_PREAPP_STACKSIZE=2048 + # CONFIG_SYSTEM_INSTALL is not set # CONFIG_SYSTEM_POWEROFF is not set CONFIG_SYSTEM_RAMTEST=y diff --git a/build/configs/artik053/typical/defconfig b/build/configs/artik053/typical/defconfig index caa3b8d..45946ee 100644 --- a/build/configs/artik053/typical/defconfig +++ b/build/configs/artik053/typical/defconfig @@ -422,7 +422,6 @@ CONFIG_SCHED_LPWORKSTACKSIZE=2048 # CONFIG_IDLETHREAD_STACKSIZE=1024 CONFIG_USERMAIN_STACKSIZE=2048 -CONFIG_PREAPP_STACKSIZE=2048 # CONFIG_MPU_STACKGAURD is not set CONFIG_PTHREAD_STACK_MIN=256 CONFIG_PTHREAD_STACK_DEFAULT=2048 @@ -1113,6 +1112,9 @@ CONFIG_TASH_CMDTASK_PRIORITY=100 # CONFIG_SYSTEM_FOTA_HAL is not set # CONFIG_SYSTEM_I2CTOOL is not set # CONFIG_SYSTEM_INIFILE is not set +CONFIG_SYSTEM_PREAPP_INIT=y +CONFIG_SYSTEM_PREAPP_STACKSIZE=2048 + # CONFIG_SYSTEM_INSTALL is not set # CONFIG_SYSTEM_NETDB is not set # CONFIG_SYSTEM_POWEROFF is not set diff --git a/build/configs/artik053/wifi_test/defconfig b/build/configs/artik053/wifi_test/defconfig index fd4e5ec..beb263f 100644 --- a/build/configs/artik053/wifi_test/defconfig +++ b/build/configs/artik053/wifi_test/defconfig @@ -442,7 +442,6 @@ CONFIG_SCHED_LPWORKSTACKSIZE=2048 # CONFIG_IDLETHREAD_STACKSIZE=1024 CONFIG_USERMAIN_STACKSIZE=2048 -CONFIG_PREAPP_STACKSIZE=2048 # CONFIG_MPU_STACKGAURD is not set CONFIG_PTHREAD_STACK_MIN=256 CONFIG_PTHREAD_STACK_DEFAULT=2048 @@ -1144,6 +1143,8 @@ CONFIG_TASH_CMDTASK_PRIORITY=100 # CONFIG_SYSTEM_FOTA_HAL is not set # CONFIG_SYSTEM_I2CTOOL is not set # CONFIG_SYSTEM_INIFILE is not set +CONFIG_SYSTEM_PREAPP_INIT=y +CONFIG_SYSTEM_PREAPP_STACKSIZE=2048 # CONFIG_SYSTEM_INSTALL is not set # CONFIG_SYSTEM_NETDB is not set # CONFIG_SYSTEM_POWEROFF is not set diff --git a/build/configs/sidk_s5jt200/hello/defconfig b/build/configs/sidk_s5jt200/hello/defconfig index dc03c94..9071052 100644 --- a/build/configs/sidk_s5jt200/hello/defconfig +++ b/build/configs/sidk_s5jt200/hello/defconfig @@ -331,7 +331,6 @@ CONFIG_BOARD_INITIALIZE=y # CONFIG_IDLETHREAD_STACKSIZE=512 CONFIG_USERMAIN_STACKSIZE=2048 -CONFIG_PREAPP_STACKSIZE=1024 # CONFIG_MPU_STACKGAURD is not set CONFIG_PTHREAD_STACK_MIN=256 CONFIG_PTHREAD_STACK_DEFAULT=1024 diff --git a/build/configs/sidk_s5jt200/hello_with_tash/defconfig b/build/configs/sidk_s5jt200/hello_with_tash/defconfig index f63677c..fe3f062 100644 --- a/build/configs/sidk_s5jt200/hello_with_tash/defconfig +++ b/build/configs/sidk_s5jt200/hello_with_tash/defconfig @@ -407,8 +407,6 @@ CONFIG_SCHED_HPWORKSTACKSIZE=2048 # CONFIG_IDLETHREAD_STACKSIZE=1024 CONFIG_USERMAIN_STACKSIZE=2048 -CONFIG_PREAPP_STACKSIZE=2048 -# CONFIG_MPU_STACKGAURD is not set CONFIG_PTHREAD_STACK_MIN=256 CONFIG_PTHREAD_STACK_DEFAULT=2048 @@ -843,6 +841,10 @@ CONFIG_TASH_CMDTASK_PRIORITY=100 # CONFIG_SYSTEM_FOTA_HAL is not set # CONFIG_SYSTEM_I2CTOOL is not set # CONFIG_SYSTEM_INIFILE is not set + +CONFIG_SYSTEM_PREAPP_INIT=y +CONFIG_SYSTEM_PREAPP_STACKSIZE=2048 + # CONFIG_SYSTEM_INSTALL is not set # CONFIG_SYSTEM_POWEROFF is not set # CONFIG_SYSTEM_RAMTEST is not set diff --git a/build/configs/sidk_s5jt200/kernel_sample/defconfig b/build/configs/sidk_s5jt200/kernel_sample/defconfig index 1b91bca..22ad05f 100644 --- a/build/configs/sidk_s5jt200/kernel_sample/defconfig +++ b/build/configs/sidk_s5jt200/kernel_sample/defconfig @@ -408,8 +408,6 @@ CONFIG_SCHED_HPWORKSTACKSIZE=2048 # CONFIG_IDLETHREAD_STACKSIZE=1024 CONFIG_USERMAIN_STACKSIZE=2048 -CONFIG_PREAPP_STACKSIZE=2048 -# CONFIG_MPU_STACKGAURD is not set CONFIG_PTHREAD_STACK_MIN=256 CONFIG_PTHREAD_STACK_DEFAULT=2048 @@ -872,6 +870,10 @@ CONFIG_TASH_CMDTASK_PRIORITY=100 # CONFIG_SYSTEM_FOTA_HAL is not set # CONFIG_SYSTEM_I2CTOOL is not set # CONFIG_SYSTEM_INIFILE is not set + +CONFIG_SYSTEM_PREAPP_INIT=y +CONFIG_SYSTEM_PREAPP_STACKSIZE=2048 + # CONFIG_SYSTEM_INSTALL is not set # CONFIG_SYSTEM_POWEROFF is not set # CONFIG_SYSTEM_RAMTEST is not set diff --git a/build/configs/sidk_s5jt200/sidk_tash_wlan/defconfig b/build/configs/sidk_s5jt200/sidk_tash_wlan/defconfig index 739b6d2..4f20792 100644 --- a/build/configs/sidk_s5jt200/sidk_tash_wlan/defconfig +++ b/build/configs/sidk_s5jt200/sidk_tash_wlan/defconfig @@ -421,7 +421,6 @@ CONFIG_SCHED_LPWORKSTACKSIZE=2048 # CONFIG_IDLETHREAD_STACKSIZE=1024 CONFIG_USERMAIN_STACKSIZE=2048 -CONFIG_PREAPP_STACKSIZE=2048 # CONFIG_MPU_STACKGAURD is not set CONFIG_PTHREAD_STACK_MIN=256 CONFIG_PTHREAD_STACK_DEFAULT=2048 @@ -1118,6 +1117,11 @@ CONFIG_TASH_CMDTASK_PRIORITY=100 # CONFIG_SYSTEM_FOTA_HAL is not set # CONFIG_SYSTEM_I2CTOOL is not set # CONFIG_SYSTEM_INIFILE is not set + +CONFIG_SYSTEM_PREAPP_INIT=y +CONFIG_SYSTEM_PREAPP_STACKSIZE=2048 + + # CONFIG_SYSTEM_INSTALL is not set # CONFIG_SYSTEM_NETDB is not set # CONFIG_SYSTEM_POWEROFF is not set diff --git a/build/configs/sidk_s5jt200/tc/defconfig b/build/configs/sidk_s5jt200/tc/defconfig index b72b2e3..6cbe842 100644 --- a/build/configs/sidk_s5jt200/tc/defconfig +++ b/build/configs/sidk_s5jt200/tc/defconfig @@ -412,8 +412,6 @@ CONFIG_SCHED_HPWORKSTACKSIZE=2048 # CONFIG_IDLETHREAD_STACKSIZE=1024 CONFIG_USERMAIN_STACKSIZE=2048 -CONFIG_PREAPP_STACKSIZE=2048 -# CONFIG_MPU_STACKGAURD is not set CONFIG_PTHREAD_STACK_MIN=256 CONFIG_PTHREAD_STACK_DEFAULT=2048 @@ -923,6 +921,10 @@ CONFIG_TASH_CMDTASK_PRIORITY=100 # CONFIG_SYSTEM_FOTA_HAL is not set # CONFIG_SYSTEM_I2CTOOL is not set # CONFIG_SYSTEM_INIFILE is not set + +CONFIG_SYSTEM_PREAPP_INIT=y +CONFIG_SYSTEM_PREAPP_STACKSIZE=2048 + # CONFIG_SYSTEM_INSTALL is not set # CONFIG_SYSTEM_POWEROFF is not set # CONFIG_SYSTEM_RAMTEST is not set diff --git a/external/wakaama/examples/client/lwm2mclient.c b/external/wakaama/examples/client/lwm2mclient.c index 21816aa..8fc52bc 100644 --- a/external/wakaama/examples/client/lwm2mclient.c +++ b/external/wakaama/examples/client/lwm2mclient.c @@ -337,18 +337,18 @@ void * lwm2m_connect_server(uint16_t secObjInstID, memcpy(&dataP->server_addr, &newConnP->addr, newConnP->addrLen); dataP->server_addrLen = newConnP->addrLen; dataP->connList = newConnP; - } #ifdef WITH_MBEDTLS - if (proto == COAP_TCP_TLS || proto == COAP_UDP_DTLS) { - newConnP->session = TLSSession(dataP->sock, dataP->tls_context, dataP->tls_opt); - if (newConnP->session == NULL) { - fprintf(stderr, "Failed to create secure session. \r\n"); - goto exit; + if (proto == COAP_TCP_TLS || proto == COAP_UDP_DTLS) { + newConnP->session = TLSSession(dataP->sock, dataP->tls_context, dataP->tls_opt); + if (newConnP->session == NULL) { + fprintf(stderr, "Failed to create secure session. \r\n"); + goto exit; + } + fprintf(stderr, "successfully create secure session. \r\n"); } - fprintf(stderr, "successfully create secure session. \r\n"); - } #endif + } exit: lwm2m_free(uri); diff --git a/external/wakaama/examples/server/lwm2mserver.c b/external/wakaama/examples/server/lwm2mserver.c index f1f1bb4..007f2bf 100644 --- a/external/wakaama/examples/server/lwm2mserver.c +++ b/external/wakaama/examples/server/lwm2mserver.c @@ -1115,7 +1115,7 @@ int lwm2m_server_main(int argc, char *argv[]) if (sock < 0) { fprintf(stderr, "Error opening socket: %d\r\n", errno); - return -1; + goto exit; } switch(proto) { @@ -1124,8 +1124,7 @@ int lwm2m_server_main(int argc, char *argv[]) newsock = create_tcp_session(sock, &addr, &addrLen); if (newsock < 0) { fprintf(stderr, "Error create tcp session\r\n"); - close(sock); - return -1; + goto exit; } else { fprintf(stderr, "TCP session has been created\r\n"); connList = connection_new_incoming(connList, newsock, (struct sockaddr *)&addr, addrLen); @@ -1144,8 +1143,7 @@ int lwm2m_server_main(int argc, char *argv[]) if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char *)&reuse, sizeof(reuse)) < 0) { fprintf(stderr, "Error : setsockopt failed %d\r\n", errno); - close(sock); - return -1; + goto exit; } /* Use new API to set protocol type */ @@ -1153,8 +1151,7 @@ int lwm2m_server_main(int argc, char *argv[]) if (NULL == lwm2mH) { fprintf(stderr, "lwm2m_init2() failed\r\n"); - close(sock); - return -1; + goto exit; } //signal(SIGINT, handle_sigint); @@ -1180,7 +1177,7 @@ int lwm2m_server_main(int argc, char *argv[]) if (result != 0) { fprintf(stderr, "lwm2m_step() failed: 0x%X\r\n", result); - return -1; + goto exit; } result = select(FD_SETSIZE, &readfds, 0, 0, &tv); @@ -1203,11 +1200,11 @@ int lwm2m_server_main(int argc, char *argv[]) if (numBytes == -1) { - fprintf(stderr, "Error in recvfrom(): %d %s\r\n", errno, strerror(errno)); - if (errno == ENOTCONN) { - fprintf(stderr, "Endpoint connection has been closed\r\n"); - goto lwm2mserver_err_exit; - } + fprintf(stderr, "Error in recvfrom(): %d %s\r\n", errno, strerror(errno)); + if (errno == ENOTCONN) { + fprintf(stderr, "Endpoint connection has been closed\r\n"); + goto exit; + } } else { @@ -1274,11 +1271,27 @@ int lwm2m_server_main(int argc, char *argv[]) } } -lwm2mserver_err_exit: - if (lwm2mH != NULL) - lwm2m_close(lwm2mH); - close(sock); - connection_free(connList); +exit: +#ifdef WITH_MBEDTLS + if (connList && connList->session) { + TLSSession_free(connList->session); + } + if (tls_context) { + TLSCtx_free(tls_context); + } +#endif + + if (lwm2mH) { + lwm2m_close(lwm2mH); + } + + if (sock >= 0) { + close(sock); + } + + if (connList) { + connection_free(connList); + } #ifdef MEMORY_TRACE if (g_quit == 1) diff --git a/external/wakaama/examples/shared/Make.defs b/external/wakaama/examples/shared/Make.defs index bf7424d..030a66d 100644 --- a/external/wakaama/examples/shared/Make.defs +++ b/external/wakaama/examples/shared/Make.defs @@ -38,5 +38,9 @@ CSRCS += commandline.c connection.c platform.c memtrace.c CFLAGS+=-I$(TOPDIR)/../external/wakaama/core +ifeq ($(CONFIG_LWM2M_SECURITY),y) +CFLAGS+=-DWITH_MBEDTLS +endif + DEPPATH += --dep-path wakaama/examples/shared VPATH += :wakaama/examples/shared diff --git a/external/wakaama/examples/shared/connection.c b/external/wakaama/examples/shared/connection.c index f03bbaa..59a054f 100644 --- a/external/wakaama/examples/shared/connection.c +++ b/external/wakaama/examples/shared/connection.c @@ -126,6 +126,9 @@ connection_t * connection_new_incoming(connection_t * connList, memcpy(&(connP->addr), addr, addrLen); connP->addrLen = addrLen; connP->next = connList; +#ifdef WITH_MBEDTLS + connP->session = NULL; +#endif } return connP; @@ -224,6 +227,15 @@ void connection_free(connection_t * connList) connection_t * nextP; nextP = connList->next; +#ifdef WITH_MBEDTLS + if (connList->session) { + if (TLSSession_free(connList->session)) { + fprintf(stderr, "Error: fail to free tls session\r\n"); + } + connList->session = NULL; + } +#endif + free(connList); connList = nextP; diff --git a/os/kernel/Kconfig b/os/kernel/Kconfig index a088276..3a386b5 100644 --- a/os/kernel/Kconfig +++ b/os/kernel/Kconfig @@ -1077,13 +1077,6 @@ config USERMAIN_STACKSIZE The size of the stack to allocate for the user initialization thread that is started as soon as the OS completes its initialization. -config PREAPP_STACKSIZE - int "pre-app thread stack size" - default 2048 - ---help--- - The size of the stack to allocate for the pre-application thread - that is started as soon as the OS completes its initialization. - config MPU_STACKGAURD bool "protect thread stack" default n diff --git a/os/kernel/init/os_bringup.c b/os/kernel/init/os_bringup.c index 3826ccb..d82d5c2 100644 --- a/os/kernel/init/os_bringup.c +++ b/os/kernel/init/os_bringup.c @@ -273,11 +273,13 @@ static inline void os_do_appstart(void) svdbg("Starting application init thread\n"); +#ifdef CONFIG_SYSTEM_PREAPP_INIT #ifdef CONFIG_BUILD_PROTECTED DEBUGASSERT(USERSPACE->preapp_start != NULL); - pid = task_create("appinit", SCHED_PRIORITY_DEFAULT, CONFIG_PREAPP_STACKSIZE, USERSPACE->preapp_start, (FAR char *const *)NULL); + pid = task_create("appinit", SCHED_PRIORITY_DEFAULT, CONFIG_SYSTEM_PREAPP_STACKSIZE, USERSPACE->preapp_start, (FAR char *const *)NULL); #else - pid = task_create("appinit", SCHED_PRIORITY_DEFAULT, CONFIG_PREAPP_STACKSIZE, preapp_start, (FAR char *const *)NULL); + pid = task_create("appinit", SCHED_PRIORITY_DEFAULT, CONFIG_SYSTEM_PREAPP_STACKSIZE, preapp_start, (FAR char *const *)NULL); +#endif #endif svdbg("Starting application main thread\n"); -- 2.7.4