diff options
Diffstat (limited to 'stacks/lwip_stack/src/sbr/sbr_res_mgr.c')
-rw-r--r-- | stacks/lwip_stack/src/sbr/sbr_res_mgr.c | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/stacks/lwip_stack/src/sbr/sbr_res_mgr.c b/stacks/lwip_stack/src/sbr/sbr_res_mgr.c new file mode 100644 index 0000000..3758084 --- /dev/null +++ b/stacks/lwip_stack/src/sbr/sbr_res_mgr.c @@ -0,0 +1,87 @@ +/* +* +* 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 "nstack_securec.h" +#include "sbr_res_mgr.h" + +sbr_res_group g_res_group = { }; + +/***************************************************************************** +* Prototype : sbr_init_sk +* Description : init sock pool +* Input : None +* Output : None +* Return Value : static int +* Calls : +* Called By : +* +*****************************************************************************/ +NSTACK_STATIC int sbr_init_sk() +{ + sbr_index_ring *ring = sbr_create_index_ring(SBR_MAX_FD_NUM - 1); + + if (!ring) + { + NSSBR_LOGERR("init ring failed"); + return -1; + } + + int i; + /*the queue can't accept value=0, so i begin with 1 */ + for (i = 1; i <= SBR_MAX_FD_NUM; ++i) + { + g_res_group.sk[i].fd = i; + if (sbr_index_ring_enqueue(ring, i) != 1) + { + NSSBR_LOGERR + ("sbr_index_ring_enqueue failed, this can not happen"); + free(ring); + return -1; + } + } + + g_res_group.sk_ring = ring; + return 0; +} + +/***************************************************************************** +* Prototype : sbr_init_res +* Description : init sbr res +* Input : None +* Output : None +* Return Value : int +* Calls : +* Called By : +* +*****************************************************************************/ +int sbr_init_res() +{ + if (sbr_init_sk() != 0) + { + return -1; + } + + NSSBR_LOGDBG("init socket ok"); + + if (sbr_init_protocol() != 0) + { + return -1; + } + + NSSBR_LOGDBG("init protocol ok"); + + return 0; +} |