Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ZhouShuya
OpenXG-RAN
Commits
3b824c90
Commit
3b824c90
authored
Oct 07, 2017
by
frtabu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
telnet server and shared library loader enhancement
parent
5d778a5c
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
257 additions
and
21 deletions
+257
-21
common/utils/load_module_shlib.c
common/utils/load_module_shlib.c
+75
-16
common/utils/load_module_shlib.h
common/utils/load_module_shlib.h
+55
-1
common/utils/telnetsrv/telnetsrv.c
common/utils/telnetsrv/telnetsrv.c
+1
-1
common/utils/telnetsrv/telnetsrv.h
common/utils/telnetsrv/telnetsrv.h
+31
-0
common/utils/telnetsrv/telnetsrv_phycmd.c
common/utils/telnetsrv/telnetsrv_phycmd.c
+32
-1
common/utils/telnetsrv/telnetsrv_phycmd.h
common/utils/telnetsrv/telnetsrv_phycmd.h
+30
-0
common/utils/telnetsrv/telnetsrv_proccmd.c
common/utils/telnetsrv/telnetsrv_proccmd.c
+31
-0
common/utils/telnetsrv/telnetsrv_proccmd.h
common/utils/telnetsrv/telnetsrv_proccmd.h
+1
-1
targets/RT/USER/lte-softmodem.c
targets/RT/USER/lte-softmodem.c
+1
-1
No files found.
common/utils/load_module_shlib.c
View file @
3b824c90
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.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.openairinterface.org/?page_id=698
*
* 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.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/* FT NOKBLF:
/*! \file common/utils/load_module_shlib.c
* this source is to be linked with the program using the telnet server, it looks for
* \brief shared library loader implementation
* the telnet server dynamic library, possibly loads it and calls the telnet server
* \author Francois TABURET
* init functions
* \date 2017
*/
* \version 0.1
* \company NOKIA BellLabs France
* \email: francois.taburet@nokia-bell-labs.com
* \note
* \warning
*/
#define _GNU_SOURCE
#define _GNU_SOURCE
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
...
@@ -13,37 +38,71 @@
...
@@ -13,37 +38,71 @@
#include <dlfcn.h>
#include <dlfcn.h>
#include "openair1/PHY/defs.h"
#include "openair1/PHY/defs.h"
#define LOAD_MODULE_SHLIB_MAIN
#define LOAD_MODULE_SHLIB_MAIN
#include "common/config/config_userapi.h"
#include "load_module_shlib.h"
#include "load_module_shlib.h"
int
load_module_shlib
(
char
*
modname
)
void
loader_init
(
void
)
{
paramdef_t
LoaderParams
[]
=
LOADER_PARAMS_DESC
;
int
ret
=
config_get
(
LoaderParams
,
sizeof
(
LoaderParams
)
/
sizeof
(
paramdef_t
),
LOADER_CONFIG_PREFIX
);
if
(
ret
<
0
)
{
fprintf
(
stderr
,
"[LOADER] configuration couldn't be performed"
);
if
(
loader_data
.
shlibpath
==
NULL
)
{
loader_data
.
shlibpath
=
DEFAULT_PATH
;
}
return
;
}
}
int
load_module_shlib
(
char
*
modname
,
loader_shlibfunc_t
*
farray
,
int
numf
)
{
{
void
*
lib_handle
;
void
*
lib_handle
;
initfunc_t
fpi
;
initfunc_t
fpi
;
char
*
tmpstr
;
char
*
tmpstr
;
int
ret
=
0
;
int
ret
=
0
;
tmpstr
=
malloc
(
strlen
(
modname
)
+
16
);
if
(
loader_data
.
shlibpath
==
NULL
)
{
loader_init
();
}
tmpstr
=
malloc
(
strlen
(
loader_data
.
shlibpath
)
+
strlen
(
modname
)
+
16
);
if
(
tmpstr
==
NULL
)
{
if
(
tmpstr
==
NULL
)
{
fprintf
(
stderr
,
"[LOADER] %s %d malloc error loading module %s, %s
\n
"
,
__FILE__
,
__LINE__
,
modname
,
strerror
(
errno
));
fprintf
(
stderr
,
"[LOADER] %s %d malloc error loading module %s, %s
\n
"
,
__FILE__
,
__LINE__
,
modname
,
strerror
(
errno
));
return
-
1
;
return
-
1
;
}
}
sprintf
(
tmpstr
,
"lib%s.so"
,
modname
);
if
(
loader_data
.
shlibpath
[
0
]
!=
0
)
{
ret
=
sprintf
(
tmpstr
,
"%s/"
,
loader_data
.
shlibpath
);
}
if
(
strstr
(
modname
,
".so"
)
==
NULL
)
{
sprintf
(
tmpstr
+
ret
,
"lib%s.so"
,
modname
);
}
else
{
sprintf
(
tmpstr
+
ret
,
"%s"
,
modname
);
}
ret
=
0
;
lib_handle
=
dlopen
(
tmpstr
,
RTLD_LAZY
|
RTLD_NODELETE
|
RTLD_GLOBAL
);
lib_handle
=
dlopen
(
tmpstr
,
RTLD_LAZY
|
RTLD_NODELETE
|
RTLD_GLOBAL
);
if
(
!
lib_handle
)
{
if
(
!
lib_handle
)
{
printf
(
"[LOADER] library %s is not loaded: %s
\n
"
,
tmpstr
,
dlerror
());
fprintf
(
stderr
,
"[LOADER] library %s is not loaded: %s
\n
"
,
tmpstr
,
dlerror
());
ret
=
-
1
;
ret
=
-
1
;
}
else
{
}
else
{
sprintf
(
tmpstr
,
"init_%s"
,
modname
);
printf
(
"[LOADER] library %s uccessfully loaded loaded
\n
"
,
tmpstr
);
sprintf
(
tmpstr
,
"%s_autoinit"
,
modname
);
fpi
=
dlsym
(
lib_handle
,
tmpstr
);
fpi
=
dlsym
(
lib_handle
,
tmpstr
);
if
(
fpi
!=
NULL
)
if
(
fpi
!=
NULL
)
{
{
fpi
();
fpi
();
}
}
else
{
if
(
farray
!=
NULL
)
{
fprintf
(
stderr
,
"[LOADER] %s %d %s function not found %s
\n
"
,
__FILE__
,
__LINE__
,
dlerror
(),
tmpstr
);
for
(
int
i
=
0
;
i
<
numf
;
i
++
)
{
ret
=
-
1
;
farray
[
i
].
fptr
=
dlsym
(
lib_handle
,
farray
[
i
].
fname
);
}
if
(
farray
[
i
].
fptr
==
NULL
)
{
fprintf
(
stderr
,
"[LOADER] %s %d %s function not found %s
\n
"
,
__FILE__
,
__LINE__
,
dlerror
(),
farray
[
i
].
fname
);
ret
=
-
1
;
}
}
/* for int i... */
}
/* farray ! NULL */
}
}
if
(
tmpstr
!=
NULL
)
free
(
tmpstr
);
if
(
tmpstr
!=
NULL
)
free
(
tmpstr
);
...
...
common/utils/load_module_shlib.h
View file @
3b824c90
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.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.openairinterface.org/?page_id=698
*
* 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.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file common/utils/load_module_shlib.h
* \brief include file for users of the shared lib loader
* \author Francois TABURET
* \date 2017
* \version 0.1
* \company NOKIA BellLabs France
* \email: francois.taburet@nokia-bell-labs.com
* \note
* \warning
*/
#ifndef LOAD_SHLIB_H
#ifndef LOAD_SHLIB_H
#define LOAD_SHLIB_H
#define LOAD_SHLIB_H
typedef
int
(
*
initfunc_t
)(
void
);
typedef
int
(
*
initfunc_t
)(
void
);
typedef
struct
{
char
*
shlibpath
;
}
loader_data_t
;
typedef
struct
{
char
*
fname
;
int
(
*
fptr
)(
void
);
}
loader_shlibfunc_t
;
#ifdef LOAD_MODULE_SHLIB_MAIN
#ifdef LOAD_MODULE_SHLIB_MAIN
#define LOADER_CONFIG_PREFIX "loader"
#define DEFAULT_PATH ""
loader_data_t
loader_data
;
/*--------------------------------------------------------------------------------------------------------------------------------------*/
/* LOADER parameters */
/* optname helpstr paramflags XXXptr defXXXval type numelt */
/*--------------------------------------------------------------------------------------------------------------------------------------*/
#define LOADER_PARAMS_DESC { \
{"shlibpath", NULL, 0, strptr:(char **)&(loader_data.shlibpath), defstrval:DEFAULT_PATH, TYPE_STRING, 0} \
}
/*-------------------------------------------------------------------------------------------------------------*/
#else
#else
extern
int
load_module_shlib
(
char
*
modname
);
extern
int
load_module_shlib
(
char
*
modname
,
loader_shlibfunc_t
*
farray
,
int
numf
);
#endif
#endif
#endif
#endif
common/utils/telnetsrv/telnetsrv.c
View file @
3b824c90
...
@@ -19,7 +19,7 @@
...
@@ -19,7 +19,7 @@
* contact@openairinterface.org
* contact@openairinterface.org
*/
*/
/*! \file common/utils/telnetsrv.c
/*! \file common/utils/telnetsrv
/telnetsrv
.c
* \brief: implementation of a telnet server
* \brief: implementation of a telnet server
* \author Francois TABURET
* \author Francois TABURET
* \date 2017
* \date 2017
...
...
common/utils/telnetsrv/telnetsrv.h
View file @
3b824c90
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.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.openairinterface.org/?page_id=698
*
* 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.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file common/utils/telnetsrv/telnetsrv.h
* \brief: include file for telnet server implementation
* \author Francois TABURET
* \date 2017
* \version 0.1
* \company NOKIA BellLabs France
* \email: francois.taburet@nokia-bell-labs.com
* \note
* \warning
*/
#ifndef TELNETSRV_H
#ifndef TELNETSRV_H
#define TELNETSRV_H
#define TELNETSRV_H
...
...
common/utils/telnetsrv/telnetsrv_phycmd.c
View file @
3b824c90
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.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.openairinterface.org/?page_id=698
*
* 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.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file common/utils/telnetsrv/telnetsrv_phycmd.c
* \brief: implementation of telnet commands related to softmodem linux process
* \author Francois TABURET
* \date 2017
* \version 0.1
* \company NOKIA BellLabs France
* \email: francois.taburet@nokia-bell-labs.com
* \note
* \warning
*/
#define _GNU_SOURCE
#define _GNU_SOURCE
#include <string.h>
#include <string.h>
#include <pthread.h>
#include <pthread.h>
...
@@ -89,7 +120,7 @@ int dump_phyvars(char *buf, int debug, telnet_printfunc_t prnt)
...
@@ -89,7 +120,7 @@ int dump_phyvars(char *buf, int debug, telnet_printfunc_t prnt)
if
(
strcasestr
(
buf
,
"uedump"
)
!=
NULL
)
if
(
strcasestr
(
buf
,
"uedump"
)
!=
NULL
)
{
{
dump_uestats
(
debug
,
prnt
,
1
);
dump_uestats
(
debug
,
prnt
,
1
);
}
}
return
0
;
return
0
;
}
}
...
...
common/utils/telnetsrv/telnetsrv_phycmd.h
View file @
3b824c90
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.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.openairinterface.org/?page_id=698
*
* 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.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file common/utils/telnetsrv_proccmd.h
* \brief: Include file defining telnet commands related to softmodem linux process
* \author Francois TABURET
* \date 2017
* \version 0.1
* \company NOKIA BellLabs France
* \email: francois.taburet@nokia-bell-labs.com
* \note
* \warning
*/
#ifdef TELNETSRV_PHYCMD_MAIN
#ifdef TELNETSRV_PHYCMD_MAIN
...
...
common/utils/telnetsrv/telnetsrv_proccmd.c
View file @
3b824c90
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.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.openairinterface.org/?page_id=698
*
* 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.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file common/utils/telnetsrv/telnetsrv_proccmd.c
* \brief: implementation of telnet commands related to this linux process
* \author Francois TABURET
* \date 2017
* \version 0.1
* \company NOKIA BellLabs France
* \email: francois.taburet@nokia-bell-labs.com
* \note
* \warning
*/
#define _GNU_SOURCE
#define _GNU_SOURCE
#include <sys/types.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/socket.h>
...
...
common/utils/telnetsrv/telnetsrv_proccmd.h
View file @
3b824c90
...
@@ -19,7 +19,7 @@
...
@@ -19,7 +19,7 @@
* contact@openairinterface.org
* contact@openairinterface.org
*/
*/
/*! \file common/utils/telnetsrv_proccmd.h
/*! \file common/utils/telnetsrv
/telnetsrv
_proccmd.h
* \brief: Include file defining telnet commands related to this linux process
* \brief: Include file defining telnet commands related to this linux process
* \author Francois TABURET
* \author Francois TABURET
* \date 2017
* \date 2017
...
...
targets/RT/USER/lte-softmodem.c
View file @
3b824c90
...
@@ -588,7 +588,7 @@ static void get_options(void) {
...
@@ -588,7 +588,7 @@ static void get_options(void) {
set_glog
(
-
1
,
glog_verbosity
);
set_glog
(
-
1
,
glog_verbosity
);
}
}
if
(
start_telnetsrv
)
{
if
(
start_telnetsrv
)
{
load_module_shlib
(
"telnetsrv"
);
load_module_shlib
(
"telnetsrv"
,
NULL
,
0
);
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment