summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Lamparter <equinox@opensourcerouting.org>2016-09-27 16:53:25 +0200
committerDonald Sharp <sharpd@cumulusnetworks.com>2016-10-07 15:09:52 +0200
commitcc933ef9f6a6104f287415d97e22bf6e34f193d4 (patch)
tree552c08a261ad070972d989ca3de38efc1bc28a69
parentisisd: use qobj for vty->index context position (diff)
downloadfrr-cc933ef9f6a6104f287415d97e22bf6e34f193d4.tar.xz
frr-cc933ef9f6a6104f287415d97e22bf6e34f193d4.zip
lib, isisd: enable concurrent configuration editing
Finally, this disables the config editing lock for isisd. It also enables deprecation warnings for the lib/ and isisd/ to catch accidental uses of vty->index. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
-rw-r--r--isisd/Makefile.am2
-rw-r--r--isisd/isis_main.c1
-rw-r--r--lib/Makefile.am3
-rw-r--r--lib/vty.c11
-rw-r--r--lib/vty.h1
5 files changed, 16 insertions, 2 deletions
diff --git a/isisd/Makefile.am b/isisd/Makefile.am
index c14351ca3..69624dced 100644
--- a/isisd/Makefile.am
+++ b/isisd/Makefile.am
@@ -1,7 +1,7 @@
## Process this file with automake to produce Makefile.in.
AM_CPPFLAGS = -I.. -I$(top_srcdir) -I$(top_srcdir)/lib -I$(top_builddir)/lib \
- @ISIS_TOPOLOGY_INCLUDES@
+ @ISIS_TOPOLOGY_INCLUDES@ -DVTY_DEPRECATE_INDEX
DEFS = @DEFS@ -DSYSCONFDIR=\"$(sysconfdir)/\"
INSTALL_SDATA=@INSTALL@ -m 600
LIBS = @LIBS@
diff --git a/isisd/isis_main.c b/isisd/isis_main.c
index 6110c4026..44c784002 100644
--- a/isisd/isis_main.c
+++ b/isisd/isis_main.c
@@ -342,6 +342,7 @@ main (int argc, char **argv, char **envp)
*/
signal_init (master, array_size (isisd_signals), isisd_signals);
cmd_init (1);
+ vty_config_lockless ();
vty_init (master);
memory_init ();
access_list_init();
diff --git a/lib/Makefile.am b/lib/Makefile.am
index b57e9eb4d..e95e6f34b 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -1,6 +1,7 @@
## Process this file with automake to produce Makefile.in.
-AM_CPPFLAGS = -I.. -I$(top_srcdir) -I$(top_srcdir)/lib -I$(top_builddir)/lib
+AM_CPPFLAGS = -I.. -I$(top_srcdir) -I$(top_srcdir)/lib -I$(top_builddir)/lib \
+ -DVTY_DEPRECATE_INDEX
AM_CFLAGS = $(WERROR)
DEFS = @DEFS@ -DSYSCONFDIR=\"$(sysconfdir)/\"
diff --git a/lib/vty.c b/lib/vty.c
index 14ef7e6e4..cc30def30 100644
--- a/lib/vty.c
+++ b/lib/vty.c
@@ -83,6 +83,7 @@ char *vty_cwd = NULL;
/* Configure lock. */
static int vty_config;
+static int vty_config_is_lockless = 0;
/* Login password check. */
static int no_password_check = 0;
@@ -2634,6 +2635,8 @@ vty_log_fixed (char *buf, size_t len)
int
vty_config_lock (struct vty *vty)
{
+ if (vty_config_is_lockless)
+ return 1;
if (vty_config == 0)
{
vty->config = 1;
@@ -2645,6 +2648,8 @@ vty_config_lock (struct vty *vty)
int
vty_config_unlock (struct vty *vty)
{
+ if (vty_config_is_lockless)
+ return 0;
if (vty_config == 1 && vty->config == 1)
{
vty->config = 0;
@@ -2653,6 +2658,12 @@ vty_config_unlock (struct vty *vty)
return vty->config;
}
+void
+vty_config_lockless (void)
+{
+ vty_config_is_lockless = 1;
+}
+
/* Master of the threads. */
static struct thread_master *vty_master;
diff --git a/lib/vty.h b/lib/vty.h
index 468b29d95..3870e59b7 100644
--- a/lib/vty.h
+++ b/lib/vty.h
@@ -353,6 +353,7 @@ extern void vty_log (const char *level, const char *proto,
const char *fmt, struct timestamp_control *, va_list);
extern int vty_config_lock (struct vty *);
extern int vty_config_unlock (struct vty *);
+extern void vty_config_lockless (void);
extern int vty_shell (struct vty *);
extern int vty_shell_serv (struct vty *);
extern void vty_hello (struct vty *);