summaryrefslogtreecommitdiffstats
path: root/stacks/lwip_stack/lwip_src/api/spl_sbr.c
diff options
context:
space:
mode:
Diffstat (limited to 'stacks/lwip_stack/lwip_src/api/spl_sbr.c')
-rw-r--r--stacks/lwip_stack/lwip_src/api/spl_sbr.c495
1 files changed, 0 insertions, 495 deletions
diff --git a/stacks/lwip_stack/lwip_src/api/spl_sbr.c b/stacks/lwip_stack/lwip_src/api/spl_sbr.c
deleted file mode 100644
index 4c1be2f..0000000
--- a/stacks/lwip_stack/lwip_src/api/spl_sbr.c
+++ /dev/null
@@ -1,495 +0,0 @@
-/*
-*
-* Copyright (c) 2018 Huawei Technologies Co.,Ltd.
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at:
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-#include "stackx_spl_share.h"
-#include "spl_api.h"
-#include "ip.h"
-#include "spl_api_msg.h"
-#include "stackx_spl_msg.h"
-#include "internal_msg.h"
-#include "spl_sbr.h"
-#include "spl_pbuf.h"
-
-/**
- * common operation for sbr message.
- *
- * @param msg the api_msg_msg describing the connection type
- */
-int
-do_sbrmsg (data_com_msg * m)
-{
- return 0;
-}
-
-/**
- * Create a new pcb of a specific type inside a netconn.
- * Called from netconn_new_with_proto_and_callback.
- *
- * @param msg the api_msg_msg describing the connection type
- */
-static int
-_do_newconn (data_com_msg * m)
-{
- m->param.err = ERR_OK;
-
- msg_new_netconn *_m = (msg_new_netconn *) m->buffer;
- m->param.err = spl_pcb_new (_m);
-
- if (ERR_OK != m->param.err)
- {
- NSPOL_LOGERR ("pcb_new err]conn=%p,pid=%u,err=%d", _m->conn,
- m->param.recycle_pid, m->param.err);
- goto ERROR;
- }
-
- NSFW_LOGINF ("alloc pcb]conn=%p,pcb=%p,pid=%u", _m->conn,
- _m->conn->private_data, m->param.recycle_pid);
-
- /* sbr use it to set receiver after new connction */
- m->param.receiver = (i64) & _m->conn->private_data;
- m->param.comm_receiver = (i64) & _m->conn->comm_pcb_data;
- _m->conn->recv_obj = m->param.receiver;
-
- SYNC_MSG_ACK (m);
- return 0;
-
-ERROR:
- SYNC_MSG_ACK (m);
- return 0;
-}
-
-int
-_do_connect (data_com_msg * m)
-{
- m->param.err = ERR_OK;
-
- struct common_pcb *cpcb = COMM_PRIVATE_PTR (m);
- if (cpcb == NULL)
- {
- m->param.err = ERR_CLSD;
- SYNC_MSG_ACK (m);
- return 0;
- }
-
- msg_connect *_m = (msg_connect *) m->buffer;
- do_connect (cpcb, _m);
-
- /**
- * err == ERR_OK only applies for blocking connction, so others mean
- * in progress for nonblocking connection or failed to connect
- * cpcb may be NULL, so don't change the order of the 2 ifs.
- */
- if (m->param.err != ERR_OK || cpcb->type != SPL_NETCONN_TCP)
- SYNC_MSG_ACK (m);
-
- return 0;
-}
-
-/**
- * Close a TCP pcb contained in a netconn
- * Called from netconn_close
- *
- * @param msg the api_msg_msg pointing to the connection
- */
-int
-_do_close (data_com_msg * m)
-{
- m->param.err = ERR_OK;
-
- struct common_pcb *cpcb = COMM_PRIVATE_PTR (m);
- if (cpcb != NULL)
- {
- msg_close *_m = (msg_close *) m->buffer;
- do_close (cpcb, _m);
- }
-
- /* if cpcb == NULL, assuming the close is okay, err = ERR_OK */
- SYNC_MSG_ACK (m);
-
- return 0;
-}
-
-/**
- * Delete the pcb inside a netconn.
- * Called from netconn_delete.
- *
- * @param msg the data_com_msg to handle
- */
-static int
-_do_delconn (data_com_msg * m)
-{
- m->param.err = ERR_OK;
- msg_delete_netconn *_m = (msg_delete_netconn *) m->buffer;
-
- if (0 == (--_m->msg_box_ref))
- {
- /* the aync msg is released inside */
- ss_recycle_conn ((void *) _m, do_try_delconn);
- }
-
- return 0;
-}
-
-/**
- * handle message to send UDP packets.
- *
- * @param msg the data_com_msg to handle
- */
-static int
-_do_send (data_com_msg * m)
-{
- m->param.err = ERR_OK;
-
- struct common_pcb *cpcb = COMM_PRIVATE_PTR (m);
- msg_send_buf *_m = (msg_send_buf *) m->buffer;
- if (cpcb == NULL)
- {
- NS_LOG_CTRL (LOG_CTRL_SEND, STACKX, "NSLWIP", NSLOG_ERR,
- "failed to find target pcb, drop the message]"
- "module=%u, major=%u, minor=%u",
- m->param.module_type,
- m->param.major_type, m->param.minor_type);
-
- spl_pbuf_free (_m->p);
- _m->p = NULL;
- ASYNC_MSG_FREE (m);
- return -1;
- }
-
- do_send (cpcb, _m);
-
- ASYNC_MSG_FREE (m);
-
- return 0;
-}
-
-/**
- * handle message to send TCP packets.
- *
- * @param msg the data_com_msg to handle
- */
-static int
-_do_write (data_com_msg * m)
-{
- m->param.err = ERR_OK;
-
- void *tpcb = TCP_PRIVATE_PTR (m);
- struct common_pcb *cpcb = COMM_PRIVATE_PTR (m);
-
- msg_write_buf *_m = (msg_write_buf *) m->buffer;
- if ((tpcb == NULL) || (cpcb == NULL))
- {
- NS_LOG_CTRL (LOG_CTRL_WRITE, STACKX, "NSLWIP", NSLOG_ERR,
- "failed to find target pcb, drop the message]"
- "module=%u, major=%u, minor=%u",
- m->param.module_type,
- m->param.major_type, m->param.minor_type);
-
- spl_pbuf_free (_m->p);
- _m->p = NULL;
- ASYNC_MSG_FREE (m);
- return -1;
- }
-
- do_write (cpcb, _m);
-
- return 0;
-}
-
-/**
- * handle message to receive.
- *
- * @param msg the data_com_msg to handle
- */
-static int
-_do_recv (data_com_msg * m)
-{
- m->param.err = ERR_OK;
-
- msg_recv_buf *_m = (msg_recv_buf *) m->buffer;
- void *tpcb = TCP_PRIVATE_PTR (m);
- struct common_pcb *cpcb = COMM_PRIVATE_PTR (m);
-
- if ((tpcb == NULL) || (cpcb == NULL))
- {
- NS_LOG_CTRL (LOG_CTRL_RECV, STACKX, "NSLWIP", NSLOG_ERR,
- "failed to find target pcb, drop the message]"
- "module=%u, major=%u, minor=%u",
- m->param.module_type,
- m->param.major_type, m->param.minor_type);
-
- spl_pbuf_free (_m->p);
- _m->p = NULL;
- ASYNC_MSG_FREE (m);
- return -1;
- }
-
- do_recv (cpcb, _m);
- ASYNC_MSG_FREE (m);
- return 0;
-}
-
-/**
- * handle message to bind local address.
- *
- * @param msg the data_com_msg to handle
- */
-static int
-_do_bind (data_com_msg * m)
-{
- m->param.err = ERR_OK;
-
- struct common_pcb *cpcb = COMM_PRIVATE_PTR (m);
- if (cpcb == NULL)
- {
- NSPOL_LOGERR ("failed to find target pcb, drop the message]"
- "module=%u, major=%u, minor=%u",
- m->param.module_type,
- m->param.major_type, m->param.minor_type);
-
- m->param.err = ERR_VAL;
- SYNC_MSG_ACK (m);
- return -1;
- }
-
- msg_bind *_m = (msg_bind *) m->buffer;
- do_bind (cpcb, _m);
-
- SYNC_MSG_ACK (m);
-
- return 0;
-}
-
-/**
- * handle message to listen for new connection.
- *
- * @param msg the data_com_msg to handle
- */
-static int
-_do_listen (data_com_msg * m)
-{
- m->param.err = ERR_OK;
-
- struct common_pcb *cpcb = COMM_PRIVATE_PTR (m);
- if (cpcb == NULL)
- {
- NSPOL_LOGERR ("failed to find target pcb, drop the message]"
- "module=%u, major=%u, minor=%u",
- m->param.module_type,
- m->param.major_type, m->param.minor_type);
-
- m->param.err = ERR_CONN;
- SYNC_MSG_ACK (m);
- return -1;
- }
-
- msg_listen *_m = (msg_listen *) m->buffer;
- do_listen (cpcb, _m);
-
- /* Update since pcb may have been changed */
- //m->param.receiver = (i64)&_m->conn->private_data;
- SYNC_MSG_ACK (m);
- return 0;
-}
-
-/**
- * handle message to set socket option.
- *
- * @param msg the data_com_msg to handle
- */
-static int
-_do_setsockopt (data_com_msg * m)
-{
- m->param.err = ERR_OK;
-
- struct common_pcb *cpcb = COMM_PRIVATE_PTR (m);
- if (cpcb == NULL)
- {
-
- NSPOL_LOGERR ("failed to find target pcb, drop the message]"
- "module=%u, major=%u, minor=%u",
- m->param.module_type,
- m->param.major_type, m->param.minor_type);
-
- m->param.err = ERR_VAL;
- SYNC_MSG_ACK (m);
- return -1;
- }
-
- msg_setgetsockopt *_m = (msg_setgetsockopt *) m->buffer;
- do_setsockopt_internal (cpcb, _m);
-
- SYNC_MSG_ACK (m);
-
- return 0;
-}
-
-/**
- * handle message to get socket option.
- *
- * @param msg the data_com_msg to handle
- */
-static int
-_do_getsockopt (data_com_msg * m)
-{
- m->param.err = ERR_OK;
-
- struct common_pcb *cpcb = COMM_PRIVATE_PTR (m);
- if (cpcb == NULL)
- {
- NSPOL_LOGERR ("failed to find target pcb, drop the message]"
- "module=%u, major=%u, minor=%u",
- m->param.module_type,
- m->param.major_type, m->param.minor_type);
-
- m->param.err = ERR_VAL;
- SYNC_MSG_ACK (m);
- return -1;
- }
-
- msg_setgetsockopt *_m = (msg_setgetsockopt *) m->buffer;
- do_getsockopt_internal (cpcb, _m);
-
- SYNC_MSG_ACK (m);
-
- return 0;
-}
-
-/**
- * handle message to free pbuf which never used afterwards by application.
- *
- * @param msg the data_com_msg to handle
- */
-
-static int
-_do_pbuf_free (data_com_msg * m)
-{
- m->param.err = ERR_OK;
-
- msg_free_buf *_m = (msg_free_buf *) m->buffer;
- do_pbuf_free (_m->buf);
-
- ASYNC_MSG_FREE (m);
-
- return 0;
-}
-
-static int
-_do_getsock_name (data_com_msg * m)
-{
- m->param.err = ERR_OK;
-
- struct common_pcb *cpcb = COMM_PRIVATE_PTR (m);
- if (cpcb == NULL)
- {
- NSPOL_LOGERR ("failed to find target pcb, drop the message]"
- "module=%u, major=%u, minor=%u",
- m->param.module_type,
- m->param.major_type, m->param.minor_type);
-
- m->param.err = ERR_VAL;
- SYNC_MSG_ACK (m);
- return -1;
- }
-
- msg_getaddrname *_m = (msg_getaddrname *) m->buffer;
- do_getsockname (cpcb, _m);
-
- SYNC_MSG_ACK (m);
-
- return 0;
-}
-
-/* app send its version info to nStackMain */
-static int
-_do_app_touch (data_com_msg * m)
-{
- m->param.err = ERR_OK;
-
- msg_app_touch *_m = (msg_app_touch *) m->buffer;
- do_app_touch (_m);
-
- ASYNC_MSG_FREE (m);
- return 0;
-}
-
-/**
- * process message from sbr module, all the processing function
- * is registered when nstack is up.
- *
- * @param msg the api_msg_msg pointing to the connection
- */
-int
-spl_sbr_process (data_com_msg * m)
-{
- if (m == NULL)
- {
- NSPOL_LOGERR ("message is NULL");
- return -1;
- }
-
- return call_msg_fun (m);
-}
-
-int
-spl_unsupport_process (data_com_msg * m)
-{
- NSPOL_LOGINF (TCPIP_DEBUG, "module_type=%u,major_type=%u,minor_type=%u",
- m->param.module_type, m->param.major_type,
- m->param.minor_type);
- if (MSG_SYN_POST == m->param.op_type)
- {
- m->param.err = ERR_EPROTONOSUPPORT;
- SYNC_MSG_ACK (m);
- }
- else
- {
- ASYNC_MSG_FREE (m);
- }
-
- return -1;
-}
-
-REGIST_MSG_UNSUPPORT_FUN (spl_unsupport_process);
-REGIST_MSG_MODULE_MAJOR_FUN (MSG_MODULE_SBR, SPL_TCPIP_NEW_MSG_API,
- do_sbrmsg);
-REGIST_MSG_MODULE_MAJOR_MINOR_FUN (MSG_MODULE_SBR, SPL_TCPIP_NEW_MSG_API,
- SPL_API_DO_NEWCONN, _do_newconn);
-REGIST_MSG_MODULE_MAJOR_MINOR_FUN (MSG_MODULE_SBR, SPL_TCPIP_NEW_MSG_API,
- SPL_API_DO_CONNECT, _do_connect);
-REGIST_MSG_MODULE_MAJOR_MINOR_FUN (MSG_MODULE_SBR, SPL_TCPIP_NEW_MSG_API,
- SPL_API_DO_CLOSE, _do_close);
-REGIST_MSG_MODULE_MAJOR_MINOR_FUN (MSG_MODULE_SBR, SPL_TCPIP_NEW_MSG_API,
- SPL_API_DO_DELCON, _do_delconn);
-REGIST_MSG_MODULE_MAJOR_MINOR_FUN (MSG_MODULE_SBR, SPL_TCPIP_NEW_MSG_API,
- SPL_API_DO_SEND, _do_send);
-REGIST_MSG_MODULE_MAJOR_MINOR_FUN (MSG_MODULE_SBR, SPL_TCPIP_NEW_MSG_API,
- SPL_API_DO_WRITE, _do_write);
-REGIST_MSG_MODULE_MAJOR_MINOR_FUN (MSG_MODULE_SBR, SPL_TCPIP_NEW_MSG_API,
- SPL_API_DO_RECV, _do_recv);
-REGIST_MSG_MODULE_MAJOR_MINOR_FUN (MSG_MODULE_SBR, SPL_TCPIP_NEW_MSG_API,
- SPL_API_DO_BIND, _do_bind);
-REGIST_MSG_MODULE_MAJOR_MINOR_FUN (MSG_MODULE_SBR, SPL_TCPIP_NEW_MSG_API,
- SPL_API_DO_LISTEN, _do_listen);
-REGIST_MSG_MODULE_MAJOR_MINOR_FUN (MSG_MODULE_SBR, SPL_TCPIP_NEW_MSG_API,
- SPL_API_DO_GET_SOCK_OPT, _do_getsockopt);
-REGIST_MSG_MODULE_MAJOR_MINOR_FUN (MSG_MODULE_SBR, SPL_TCPIP_NEW_MSG_API,
- SPL_API_DO_SET_SOCK_OPT, _do_setsockopt);
-REGIST_MSG_MODULE_MAJOR_MINOR_FUN (MSG_MODULE_SBR, SPL_TCPIP_NEW_MSG_API,
- SPL_API_DO_PBUF_FREE, _do_pbuf_free);
-REGIST_MSG_MODULE_MAJOR_MINOR_FUN (MSG_MODULE_SBR, SPL_TCPIP_NEW_MSG_API,
- SPL_API_DO_GETSOCK_NAME, _do_getsock_name);
-REGIST_MSG_MODULE_MAJOR_MINOR_FUN (MSG_MODULE_SBR, SPL_TCPIP_NEW_MSG_API, SPL_API_DO_APP_TOUCH, _do_app_touch); /* app send its version info to nStackMain */