aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2021-05-18 14:46:29 +0200
committerPau Espin Pedrol <pespin@sysmocom.de>2021-05-18 14:56:52 +0200
commit645aec823750a27ad7c672f02dfd52bc6bc4eecf (patch)
tree51fe0873598b148565bea44df1388491fe20a581
parentebb6c1fc4df89fac6bbd4c36c1a286b6b96fd49e (diff)
vty: Introduce API vty_read_config_filep
This new API doesn't use host_config_set(), and allows passing a FILE* from any source, not only a filesystem path. Related: SYS#5369 Change-Id: I720ac04386261628c0798a1bfcaa91e2490a86c3
-rw-r--r--TODO-RELEASE1
-rw-r--r--include/osmocom/vty/vty.h3
-rw-r--r--src/vty/vty.c12
3 files changed, 11 insertions, 5 deletions
diff --git a/TODO-RELEASE b/TODO-RELEASE
index c5d4ee80..e57ffaba 100644
--- a/TODO-RELEASE
+++ b/TODO-RELEASE
@@ -11,3 +11,4 @@ libosmovty _LAST_OSMOVTY_NODE Raise _LAST_OSMOVTY_NODE by introducing some RESE
libosmogsm gsm0808_old_bss_to_new_bss_info ABI break (struct changes size), gsm0808_old_bss_to_new_bss_info_att_tlvdef symbol added
libosmosim osim_card_hdl ABI + API breakage due to new struct members
libosmocore osmo_tdef_fsm_inst_state_chg change default_timeout arg from unsigned long to long type (API breakage, not ABI)
+libosmovty vty_read_config_filep New API
diff --git a/include/osmocom/vty/vty.h b/include/osmocom/vty/vty.h
index d34433fa..3e6178f1 100644
--- a/include/osmocom/vty/vty.h
+++ b/include/osmocom/vty/vty.h
@@ -141,7 +141,7 @@ struct vty {
#define TELNET_NAWS_SB_LEN 5
/*! sub-negotiation buffer */
unsigned char sb_buf[TELNET_NAWS_SB_LEN];
- /*! How many subnegotiation characters have we received?
+ /*! How many subnegotiation characters have we received?
*
* We just drop those that do not fit in the buffer. */
size_t sb_len;
@@ -210,6 +210,7 @@ struct vty_app_info {
/* Prototypes. */
void vty_init(struct vty_app_info *app_info);
int vty_read_config_file(const char *file_name, void *priv);
+int vty_read_config_filep(FILE *confp, void *priv);
void vty_init_vtysh (void);
void vty_reset (void);
struct vty *vty_new (void);
diff --git a/src/vty/vty.c b/src/vty/vty.c
index f4e8e80f..76c6ef55 100644
--- a/src/vty/vty.c
+++ b/src/vty/vty.c
@@ -1462,9 +1462,13 @@ int vty_read(struct vty *vty)
return 0;
}
-/* Read up configuration file */
-static int
-vty_read_file(FILE *confp, void *priv)
+/* Read up configuration from a file stream */
+/*! Read up VTY configuration from a file stream
+ * \param[in] confp file pointer of the stream for the configuration file
+ * \param[in] priv private data to be passed to \ref vty_read_file
+ * \returns Zero on success, non-zero on error
+ */
+int vty_read_config_filep(FILE *confp, void *priv)
{
int ret;
struct vty *vty;
@@ -1870,7 +1874,7 @@ int vty_read_config_file(const char *file_name, void *priv)
if (!cfile)
return -ENOENT;
- rc = vty_read_file(cfile, priv);
+ rc = vty_read_config_filep(cfile, priv);
fclose(cfile);
host_config_set(file_name);