Update to 1.2.10
This commit is contained in:
parent
f95515c4bf
commit
f84412e43c
1
.gitignore
vendored
1
.gitignore
vendored
@ -1 +1,2 @@
|
|||||||
/keepalived-1.2.9.tar.gz
|
/keepalived-1.2.9.tar.gz
|
||||||
|
/keepalived-1.2.10.tar.gz
|
||||||
|
34
0001-ipvs-make-nlerr2syserr-libnl-dependent.patch
Normal file
34
0001-ipvs-make-nlerr2syserr-libnl-dependent.patch
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
From 71e762fb29a8ba218c90a48e0e160b2bb8b74326 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alexandre Cassen <acassen@gmail.com>
|
||||||
|
Date: Mon, 6 Jan 2014 15:04:28 +0100
|
||||||
|
Subject: [PATCH 1/7] ipvs: make nlerr2syserr libnl dependent
|
||||||
|
|
||||||
|
nlerr2syserr() is only used when libnl is present... simply reflect
|
||||||
|
this in libipvs.
|
||||||
|
---
|
||||||
|
keepalived/libipvs-2.6/libipvs.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/keepalived/libipvs-2.6/libipvs.c b/keepalived/libipvs-2.6/libipvs.c
|
||||||
|
index 223e76b..8ccf94d 100644
|
||||||
|
--- a/keepalived/libipvs-2.6/libipvs.c
|
||||||
|
+++ b/keepalived/libipvs-2.6/libipvs.c
|
||||||
|
@@ -54,6 +54,7 @@ static int family, try_nl = 1;
|
||||||
|
CHECK_IPV4(s, ret); \
|
||||||
|
CHECK_PE(s, ret);
|
||||||
|
|
||||||
|
+#ifdef LIBIPVS_USE_NL
|
||||||
|
#ifndef FALLBACK_LIBNL1
|
||||||
|
static int nlerr2syserr(int err)
|
||||||
|
{
|
||||||
|
@@ -79,7 +80,6 @@ static int nlerr2syserr(int err)
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
-#ifdef LIBIPVS_USE_NL
|
||||||
|
struct nl_msg *ipvs_nl_message(int cmd, int flags)
|
||||||
|
{
|
||||||
|
struct nl_msg *msg;
|
||||||
|
--
|
||||||
|
1.8.1.4
|
||||||
|
|
213
0002-fix-libnl-libnl-3-logic-in-configure-script.patch
Normal file
213
0002-fix-libnl-libnl-3-logic-in-configure-script.patch
Normal file
@ -0,0 +1,213 @@
|
|||||||
|
From b14b99adf4132eab1ecf8d1d4e83fadf5ada1076 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ryan O'Hara <rohara@redhat.com>
|
||||||
|
Date: Mon, 6 Jan 2014 11:21:03 -0600
|
||||||
|
Subject: [PATCH 2/7] Fix libnl/libnl-3 logic in configure script
|
||||||
|
|
||||||
|
This patch causes the configure script to prefer libnl-3 over
|
||||||
|
libnl(1). The configure script will first check for libnl-3 and
|
||||||
|
libnl-genl-3. If both are found, use them. If not, check for
|
||||||
|
libnl(1). This is useful when building on systems that have both
|
||||||
|
libnl-3 and libnl(1) installed. It also fixes some redundant libraries
|
||||||
|
in LIBS.
|
||||||
|
---
|
||||||
|
configure | 103 ++++++++++++++++++++++++++++++-----------------------------
|
||||||
|
configure.in | 43 +++++++++++++------------
|
||||||
|
2 files changed, 74 insertions(+), 72 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/configure b/configure
|
||||||
|
index b35331f..be6574e 100755
|
||||||
|
--- a/configure
|
||||||
|
+++ b/configure
|
||||||
|
@@ -3896,50 +3896,8 @@ else
|
||||||
|
as_fn_error $? "OpenSSL libraries are required" "$LINENO" 5
|
||||||
|
fi
|
||||||
|
|
||||||
|
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_socket_modify_cb in -lnl" >&5
|
||||||
|
-$as_echo_n "checking for nl_socket_modify_cb in -lnl... " >&6; }
|
||||||
|
-if ${ac_cv_lib_nl_nl_socket_modify_cb+:} false; then :
|
||||||
|
- $as_echo_n "(cached) " >&6
|
||||||
|
-else
|
||||||
|
- ac_check_lib_save_LIBS=$LIBS
|
||||||
|
-LIBS="-lnl $LIBS"
|
||||||
|
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||||
|
-/* end confdefs.h. */
|
||||||
|
|
||||||
|
-/* Override any GCC internal prototype to avoid an error.
|
||||||
|
- Use char because int might match the return type of a GCC
|
||||||
|
- builtin and then its argument prototype would still apply. */
|
||||||
|
-#ifdef __cplusplus
|
||||||
|
-extern "C"
|
||||||
|
-#endif
|
||||||
|
-char nl_socket_modify_cb ();
|
||||||
|
-int
|
||||||
|
-main ()
|
||||||
|
-{
|
||||||
|
-return nl_socket_modify_cb ();
|
||||||
|
- ;
|
||||||
|
- return 0;
|
||||||
|
-}
|
||||||
|
-_ACEOF
|
||||||
|
-if ac_fn_c_try_link "$LINENO"; then :
|
||||||
|
- ac_cv_lib_nl_nl_socket_modify_cb=yes
|
||||||
|
-else
|
||||||
|
- ac_cv_lib_nl_nl_socket_modify_cb=no
|
||||||
|
-fi
|
||||||
|
-rm -f core conftest.err conftest.$ac_objext \
|
||||||
|
- conftest$ac_exeext conftest.$ac_ext
|
||||||
|
-LIBS=$ac_check_lib_save_LIBS
|
||||||
|
-fi
|
||||||
|
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nl_nl_socket_modify_cb" >&5
|
||||||
|
-$as_echo "$ac_cv_lib_nl_nl_socket_modify_cb" >&6; }
|
||||||
|
-if test "x$ac_cv_lib_nl_nl_socket_modify_cb" = xyes; then :
|
||||||
|
-
|
||||||
|
- USE_NL="LIBIPVS_USE_NL"
|
||||||
|
- CFLAGS="$CFLAGS -DFALLBACK_LIBNL1"
|
||||||
|
- LIBS="$LIBS -lnl"
|
||||||
|
-
|
||||||
|
-else
|
||||||
|
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_socket_alloc in -lnl-3" >&5
|
||||||
|
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_socket_alloc in -lnl-3" >&5
|
||||||
|
$as_echo_n "checking for nl_socket_alloc in -lnl-3... " >&6; }
|
||||||
|
if ${ac_cv_lib_nl_3_nl_socket_alloc+:} false; then :
|
||||||
|
$as_echo_n "(cached) " >&6
|
||||||
|
@@ -3977,10 +3935,7 @@ fi
|
||||||
|
$as_echo "$ac_cv_lib_nl_3_nl_socket_alloc" >&6; }
|
||||||
|
if test "x$ac_cv_lib_nl_3_nl_socket_alloc" = xyes; then :
|
||||||
|
|
||||||
|
- USE_NL="LIBIPVS_USE_NL"
|
||||||
|
- CFLAGS="$CFLAGS $(pkg-config --libs --cflags libnl-3.0)"
|
||||||
|
- LIBS="$LIBS -lnl-3"
|
||||||
|
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for genl_connect in -lnl-genl-3" >&5
|
||||||
|
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for genl_connect in -lnl-genl-3" >&5
|
||||||
|
$as_echo_n "checking for genl_connect in -lnl-genl-3... " >&6; }
|
||||||
|
if ${ac_cv_lib_nl_genl_3_genl_connect+:} false; then :
|
||||||
|
$as_echo_n "(cached) " >&6
|
||||||
|
@@ -4018,19 +3973,65 @@ fi
|
||||||
|
$as_echo "$ac_cv_lib_nl_genl_3_genl_connect" >&6; }
|
||||||
|
if test "x$ac_cv_lib_nl_genl_3_genl_connect" = xyes; then :
|
||||||
|
|
||||||
|
- LIBS="$LIBS -lnl-3 -lnl-genl-3"
|
||||||
|
+ USE_NL="LIBIPVS_USE_NL"
|
||||||
|
+ CFLAGS="$CFLAGS $(pkg-config libnl-genl-3.0)"
|
||||||
|
+ LIBS="$LIBS $(pkg-config --libs libnl-genl-3.0)"
|
||||||
|
+
|
||||||
|
+else
|
||||||
|
+
|
||||||
|
+ as_fn_error $? "libnl-3 is installed but not libnl-gen-3. Please, install libnl-gen-3." "$LINENO" 5
|
||||||
|
+
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
- as_fn_error $? "libnl-3 is installed but not libnl-gen-3. Please, install libnl-gen-3." "$LINENO" 5
|
||||||
|
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_socket_modify_cb in -lnl" >&5
|
||||||
|
+$as_echo_n "checking for nl_socket_modify_cb in -lnl... " >&6; }
|
||||||
|
+if ${ac_cv_lib_nl_nl_socket_modify_cb+:} false; then :
|
||||||
|
+ $as_echo_n "(cached) " >&6
|
||||||
|
+else
|
||||||
|
+ ac_check_lib_save_LIBS=$LIBS
|
||||||
|
+LIBS="-lnl $LIBS"
|
||||||
|
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||||
|
+/* end confdefs.h. */
|
||||||
|
|
||||||
|
+/* Override any GCC internal prototype to avoid an error.
|
||||||
|
+ Use char because int might match the return type of a GCC
|
||||||
|
+ builtin and then its argument prototype would still apply. */
|
||||||
|
+#ifdef __cplusplus
|
||||||
|
+extern "C"
|
||||||
|
+#endif
|
||||||
|
+char nl_socket_modify_cb ();
|
||||||
|
+int
|
||||||
|
+main ()
|
||||||
|
+{
|
||||||
|
+return nl_socket_modify_cb ();
|
||||||
|
+ ;
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+_ACEOF
|
||||||
|
+if ac_fn_c_try_link "$LINENO"; then :
|
||||||
|
+ ac_cv_lib_nl_nl_socket_modify_cb=yes
|
||||||
|
+else
|
||||||
|
+ ac_cv_lib_nl_nl_socket_modify_cb=no
|
||||||
|
fi
|
||||||
|
+rm -f core conftest.err conftest.$ac_objext \
|
||||||
|
+ conftest$ac_exeext conftest.$ac_ext
|
||||||
|
+LIBS=$ac_check_lib_save_LIBS
|
||||||
|
+fi
|
||||||
|
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nl_nl_socket_modify_cb" >&5
|
||||||
|
+$as_echo "$ac_cv_lib_nl_nl_socket_modify_cb" >&6; }
|
||||||
|
+if test "x$ac_cv_lib_nl_nl_socket_modify_cb" = xyes; then :
|
||||||
|
|
||||||
|
+ USE_NL="LIBIPVS_USE_NL"
|
||||||
|
+ CFLAGS="$CFLAGS -DFALLBACK_LIBNL1"
|
||||||
|
+ LIBS="$LIBS $(pkg-config --libs libnl-1)"
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
- USE_NL="LIBIPVS_DONTUSE_NL"
|
||||||
|
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: keepalived will be built without libnl support." >&5
|
||||||
|
+ USE_NL="LIBIPVS_DONTUSE_NL"
|
||||||
|
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: keepalived will be built without libnl support." >&5
|
||||||
|
$as_echo "$as_me: WARNING: keepalived will be built without libnl support." >&2;}
|
||||||
|
|
||||||
|
fi
|
||||||
|
diff --git a/configure.in b/configure.in
|
||||||
|
index 3daf3ee..3d4a191 100644
|
||||||
|
--- a/configure.in
|
||||||
|
+++ b/configure.in
|
||||||
|
@@ -55,29 +55,30 @@ dnl ----[ Checks for libraries ]----
|
||||||
|
AC_CHECK_LIB(crypt, crypt,,AC_MSG_ERROR([crypt() function is required]))
|
||||||
|
AC_CHECK_LIB(crypto, MD5_Init,,AC_MSG_ERROR([OpenSSL libraries are required]))
|
||||||
|
AC_CHECK_LIB(ssl, SSL_CTX_new,,AC_MSG_ERROR([OpenSSL libraries are required]))
|
||||||
|
-AC_CHECK_LIB(nl, nl_socket_modify_cb,
|
||||||
|
+
|
||||||
|
+AC_CHECK_LIB(nl-3, nl_socket_alloc,
|
||||||
|
[
|
||||||
|
- USE_NL="LIBIPVS_USE_NL"
|
||||||
|
- CFLAGS="$CFLAGS -DFALLBACK_LIBNL1"
|
||||||
|
- LIBS="$LIBS -lnl"
|
||||||
|
+ AC_CHECK_LIB(nl-genl-3, genl_connect,
|
||||||
|
+ [
|
||||||
|
+ USE_NL="LIBIPVS_USE_NL"
|
||||||
|
+ CFLAGS="$CFLAGS $(pkg-config libnl-genl-3.0)"
|
||||||
|
+ LIBS="$LIBS $(pkg-config --libs libnl-genl-3.0)"
|
||||||
|
+ ],
|
||||||
|
+ [
|
||||||
|
+ AC_MSG_ERROR([libnl-3 is installed but not libnl-gen-3. Please, install libnl-gen-3.])
|
||||||
|
+ ])
|
||||||
|
],
|
||||||
|
- [AC_CHECK_LIB(nl-3, nl_socket_alloc,
|
||||||
|
- [
|
||||||
|
- USE_NL="LIBIPVS_USE_NL"
|
||||||
|
- CFLAGS="$CFLAGS $(pkg-config --libs --cflags libnl-3.0)"
|
||||||
|
- LIBS="$LIBS -lnl-3"
|
||||||
|
- AC_CHECK_LIB(nl-genl-3, genl_connect,
|
||||||
|
- [
|
||||||
|
- LIBS="$LIBS -lnl-3 -lnl-genl-3"
|
||||||
|
- ],
|
||||||
|
- [
|
||||||
|
- AC_MSG_ERROR([libnl-3 is installed but not libnl-gen-3. Please, install libnl-gen-3.])
|
||||||
|
- ])
|
||||||
|
- ],
|
||||||
|
- [
|
||||||
|
- USE_NL="LIBIPVS_DONTUSE_NL"
|
||||||
|
- AC_MSG_WARN([keepalived will be built without libnl support.])
|
||||||
|
- ])
|
||||||
|
+ [
|
||||||
|
+ AC_CHECK_LIB(nl, nl_socket_modify_cb,
|
||||||
|
+ [
|
||||||
|
+ USE_NL="LIBIPVS_USE_NL"
|
||||||
|
+ CFLAGS="$CFLAGS -DFALLBACK_LIBNL1"
|
||||||
|
+ LIBS="$LIBS $(pkg-config --libs libnl-1)"
|
||||||
|
+ ],
|
||||||
|
+ [
|
||||||
|
+ USE_NL="LIBIPVS_DONTUSE_NL"
|
||||||
|
+ AC_MSG_WARN([keepalived will be built without libnl support.])
|
||||||
|
+ ])
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl ----[ Kernel version check ]----
|
||||||
|
--
|
||||||
|
1.8.1.4
|
||||||
|
|
93
0003-libipvs-libnl-3-include-fix.patch
Normal file
93
0003-libipvs-libnl-3-include-fix.patch
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
From e2562e4bc40e6092d07e0e2ad8d43fdf9d79e463 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alexandre Cassen <acassen@gmail.com>
|
||||||
|
Date: Tue, 7 Jan 2014 08:37:22 +0100
|
||||||
|
Subject: [PATCH 3/7] libipvs: libnl-3 include fix
|
||||||
|
|
||||||
|
when libnl-3 is present use proper include path. On most system libnl-3
|
||||||
|
include path is /usr/include/libnl3.
|
||||||
|
---
|
||||||
|
configure | 4 ++++
|
||||||
|
configure.in | 3 +++
|
||||||
|
keepalived/libipvs-2.6/Makefile.in | 2 +-
|
||||||
|
3 files changed, 8 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/configure b/configure
|
||||||
|
index be6574e..90cca7d 100755
|
||||||
|
--- a/configure
|
||||||
|
+++ b/configure
|
||||||
|
@@ -622,6 +622,7 @@ ac_includes_default="\
|
||||||
|
ac_subst_vars='LTLIBOBJS
|
||||||
|
LIBOBJS
|
||||||
|
VRRP_SUPPORT
|
||||||
|
+INCLUDE_NL
|
||||||
|
USE_NL
|
||||||
|
IPVS_SUPPORT
|
||||||
|
VERSION_DATE
|
||||||
|
@@ -3976,6 +3977,7 @@ if test "x$ac_cv_lib_nl_genl_3_genl_connect" = xyes; then :
|
||||||
|
USE_NL="LIBIPVS_USE_NL"
|
||||||
|
CFLAGS="$CFLAGS $(pkg-config libnl-genl-3.0)"
|
||||||
|
LIBS="$LIBS $(pkg-config --libs libnl-genl-3.0)"
|
||||||
|
+ INCLUDE_NL="-I/usr/include/libnl3"
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
@@ -4027,6 +4029,7 @@ if test "x$ac_cv_lib_nl_nl_socket_modify_cb" = xyes; then :
|
||||||
|
USE_NL="LIBIPVS_USE_NL"
|
||||||
|
CFLAGS="$CFLAGS -DFALLBACK_LIBNL1"
|
||||||
|
LIBS="$LIBS $(pkg-config --libs libnl-1)"
|
||||||
|
+ INCLUDE_NL=""
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
@@ -4462,6 +4465,7 @@ fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
+
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
|
||||||
|
$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
|
||||||
|
if ${ac_cv_c_const+:} false; then :
|
||||||
|
diff --git a/configure.in b/configure.in
|
||||||
|
index 3d4a191..364890d 100644
|
||||||
|
--- a/configure.in
|
||||||
|
+++ b/configure.in
|
||||||
|
@@ -63,6 +63,7 @@ AC_CHECK_LIB(nl-3, nl_socket_alloc,
|
||||||
|
USE_NL="LIBIPVS_USE_NL"
|
||||||
|
CFLAGS="$CFLAGS $(pkg-config libnl-genl-3.0)"
|
||||||
|
LIBS="$LIBS $(pkg-config --libs libnl-genl-3.0)"
|
||||||
|
+ INCLUDE_NL="-I/usr/include/libnl3"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
AC_MSG_ERROR([libnl-3 is installed but not libnl-gen-3. Please, install libnl-gen-3.])
|
||||||
|
@@ -74,6 +75,7 @@ AC_CHECK_LIB(nl-3, nl_socket_alloc,
|
||||||
|
USE_NL="LIBIPVS_USE_NL"
|
||||||
|
CFLAGS="$CFLAGS -DFALLBACK_LIBNL1"
|
||||||
|
LIBS="$LIBS $(pkg-config --libs libnl-1)"
|
||||||
|
+ INCLUDE_NL=""
|
||||||
|
],
|
||||||
|
[
|
||||||
|
USE_NL="LIBIPVS_DONTUSE_NL"
|
||||||
|
@@ -277,6 +279,7 @@ AC_SUBST(VERSION)
|
||||||
|
AC_SUBST(VERSION_DATE)
|
||||||
|
AC_SUBST(IPVS_SUPPORT)
|
||||||
|
AC_SUBST(USE_NL)
|
||||||
|
+AC_SUBST(INCLUDE_NL)
|
||||||
|
AC_SUBST(VRRP_SUPPORT)
|
||||||
|
|
||||||
|
dnl ----[ Checks for typedefs, structures, and compiler characteristics ]----
|
||||||
|
diff --git a/keepalived/libipvs-2.6/Makefile.in b/keepalived/libipvs-2.6/Makefile.in
|
||||||
|
index 14cfa95..dfefc7d 100644
|
||||||
|
--- a/keepalived/libipvs-2.6/Makefile.in
|
||||||
|
+++ b/keepalived/libipvs-2.6/Makefile.in
|
||||||
|
@@ -1,7 +1,7 @@
|
||||||
|
# Makefile for libipvs
|
||||||
|
|
||||||
|
CC = @CC@
|
||||||
|
-CFLAGS = @CFLAGS@ @CPPFLAGS@ -D@USE_NL@ -Wall -Wunused
|
||||||
|
+CFLAGS = @CFLAGS@ @CPPFLAGS@ @INCLUDE_NL@ -D@USE_NL@ -Wall -Wunused
|
||||||
|
|
||||||
|
export OBJS += libipvs.a
|
||||||
|
|
||||||
|
--
|
||||||
|
1.8.1.4
|
||||||
|
|
91
0004-lib-extend-command-lib-string-parser.patch
Normal file
91
0004-lib-extend-command-lib-string-parser.patch
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
From dcdc2aeafb04d09b9d7ba412d8b417c9fd072c2a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alexandre Cassen <acassen@gmail.com>
|
||||||
|
Date: Tue, 7 Jan 2014 15:38:57 +0100
|
||||||
|
Subject: [PATCH 4/7] lib: extend command lib string parser
|
||||||
|
|
||||||
|
Extend cmd_make_strvec to support quoted string as a single slot and
|
||||||
|
commented string at the end of parsed string.
|
||||||
|
---
|
||||||
|
lib/Makefile.in | 2 +-
|
||||||
|
lib/command.c | 34 +++++++++++++++++++++++-----------
|
||||||
|
2 files changed, 24 insertions(+), 12 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lib/Makefile.in b/lib/Makefile.in
|
||||||
|
index 9eb929e..ee4691f 100644
|
||||||
|
--- a/lib/Makefile.in
|
||||||
|
+++ b/lib/Makefile.in
|
||||||
|
@@ -42,6 +42,6 @@ logger.o: logger.c logger.h
|
||||||
|
list_head.o: list_head.c list_head.h
|
||||||
|
buffer.o: buffer.c buffer.h memory.h
|
||||||
|
command.o: command.c command.h vector.h memory.h vty.h timer.h \
|
||||||
|
- config.h
|
||||||
|
+ config.h logger.h
|
||||||
|
vty.o: vty.c vty.h scheduler.h timer.h utils.h command.h logger.h \
|
||||||
|
memory.h
|
||||||
|
diff --git a/lib/command.c b/lib/command.c
|
||||||
|
index eff59de..4814594 100644
|
||||||
|
--- a/lib/command.c
|
||||||
|
+++ b/lib/command.c
|
||||||
|
@@ -35,7 +35,7 @@
|
||||||
|
#include "timer.h"
|
||||||
|
|
||||||
|
/* Command vector which includes some level of command lists. Normally
|
||||||
|
- * each daemon maintains each own cmdvec. */
|
||||||
|
+ * each daemon maintains its own cmdvec. */
|
||||||
|
vector_t *cmdvec = NULL;
|
||||||
|
|
||||||
|
desc_t desc_cr;
|
||||||
|
@@ -156,7 +156,9 @@ sort_node(void)
|
||||||
|
|
||||||
|
/* Breaking up string into each command piece. I assume given
|
||||||
|
* character is separated by a space character. Return value is a
|
||||||
|
- * vector which includes char ** data element. */
|
||||||
|
+ * vector which includes char ** data element. It supports
|
||||||
|
+ * quoted string as a single slot and commented string at
|
||||||
|
+ * the end of parsed string */
|
||||||
|
vector_t *
|
||||||
|
cmd_make_strvec(const char *string)
|
||||||
|
{
|
||||||
|
@@ -187,20 +189,30 @@ cmd_make_strvec(const char *string)
|
||||||
|
/* Copy each command piece and set into vector. */
|
||||||
|
while (1) {
|
||||||
|
start = cp;
|
||||||
|
- while (!(isspace((int) *cp) || *cp == '\r' || *cp == '\n') &&
|
||||||
|
- *cp != '\0')
|
||||||
|
+ if (*cp == '"') {
|
||||||
|
cp++;
|
||||||
|
- strlen = cp - start;
|
||||||
|
- token = (char *) MALLOC(strlen + 1);
|
||||||
|
- memcpy(token, start, strlen);
|
||||||
|
- *(token + strlen) = '\0';
|
||||||
|
- vector_set(strvec, token);
|
||||||
|
+ token = MALLOC(2);
|
||||||
|
+ *(token) = '"';
|
||||||
|
+ *(token + 1) = '\0';
|
||||||
|
+ } else {
|
||||||
|
+ while (!(isspace((int) *cp) || *cp == '\r' || *cp == '\n') &&
|
||||||
|
+ *cp != '\0' && *cp != '"')
|
||||||
|
+ cp++;
|
||||||
|
+ strlen = cp - start;
|
||||||
|
+ token = (char *) MALLOC(strlen + 1);
|
||||||
|
+ memcpy(token, start, strlen);
|
||||||
|
+ *(token + strlen) = '\0';
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /* Alloc & set the slot */
|
||||||
|
+ vector_alloc_slot(strvec);
|
||||||
|
+ vector_set_slot(strvec, token);
|
||||||
|
|
||||||
|
- while ((isspace ((int) *cp) || *cp == '\n' || *cp == '\r') &&
|
||||||
|
+ while ((isspace((int) *cp) || *cp == '\n' || *cp == '\r') &&
|
||||||
|
*cp != '\0')
|
||||||
|
cp++;
|
||||||
|
|
||||||
|
- if (*cp == '\0')
|
||||||
|
+ if (*cp == '\0' || *cp == '!' || *cp == '#')
|
||||||
|
return strvec;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
--
|
||||||
|
1.8.1.4
|
||||||
|
|
309
0005-lib-cosmetics-at-command.c.patch
Normal file
309
0005-lib-cosmetics-at-command.c.patch
Normal file
@ -0,0 +1,309 @@
|
|||||||
|
From 8db312d415bab144c9e5b6fd41ced3c020fcaa82 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alexandre Cassen <acassen@gmail.com>
|
||||||
|
Date: Tue, 7 Jan 2014 15:58:12 +0100
|
||||||
|
Subject: [PATCH 5/7] lib: cosmetics at command.c
|
||||||
|
|
||||||
|
Extend command framework to support logger and remove some dead code.
|
||||||
|
some cosmetics too.
|
||||||
|
---
|
||||||
|
lib/command.c | 86 +++++++++++++++++++++--------------------------------------
|
||||||
|
lib/command.h | 24 +++++------------
|
||||||
|
2 files changed, 37 insertions(+), 73 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lib/command.c b/lib/command.c
|
||||||
|
index 4814594..04079b5 100644
|
||||||
|
--- a/lib/command.c
|
||||||
|
+++ b/lib/command.c
|
||||||
|
@@ -33,6 +33,7 @@
|
||||||
|
#include "vty.h"
|
||||||
|
#include "command.h"
|
||||||
|
#include "timer.h"
|
||||||
|
+#include "logger.h"
|
||||||
|
|
||||||
|
/* Command vector which includes some level of command lists. Normally
|
||||||
|
* each daemon maintains its own cmdvec. */
|
||||||
|
@@ -310,8 +311,8 @@ cmd_make_descvec(const char *string, const char *descstr)
|
||||||
|
|
||||||
|
if (*cp == '|') {
|
||||||
|
if (!multiple) {
|
||||||
|
- fprintf (stderr, "Command parse error!: %s\n", string);
|
||||||
|
- exit (1);
|
||||||
|
+ log_message(LOG_ERR, "Command parse error!: %s\n", string);
|
||||||
|
+ exit(1);
|
||||||
|
}
|
||||||
|
cp++;
|
||||||
|
}
|
||||||
|
@@ -407,9 +408,9 @@ install_element(node_type_t ntype, cmd_element_t *cmd)
|
||||||
|
cnode = vector_slot(cmdvec, ntype);
|
||||||
|
|
||||||
|
if (cnode == NULL) {
|
||||||
|
- fprintf (stderr, "Command node %d doesn't exist, please check it\n",
|
||||||
|
- ntype);
|
||||||
|
- exit (1);
|
||||||
|
+ log_message(LOG_ERR, "Command node %d doesn't exist, please check it\n"
|
||||||
|
+ , ntype);
|
||||||
|
+ exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
vector_set(cnode->cmd_vector, cmd);
|
||||||
|
@@ -417,7 +418,7 @@ install_element(node_type_t ntype, cmd_element_t *cmd)
|
||||||
|
if (cmd->strvec == NULL)
|
||||||
|
cmd->strvec = cmd_make_descvec(cmd->string, cmd->doc);
|
||||||
|
|
||||||
|
- cmd->cmdsize = cmd_cmdsize (cmd->strvec);
|
||||||
|
+ cmd->cmdsize = cmd_cmdsize(cmd->strvec);
|
||||||
|
}
|
||||||
|
|
||||||
|
static const unsigned char itoa64[] =
|
||||||
|
@@ -489,9 +490,9 @@ config_write_host(vty_t *vty)
|
||||||
|
static vector_t *
|
||||||
|
cmd_node_vector(vector_t *v, node_type_t ntype)
|
||||||
|
{
|
||||||
|
- cmd_node_t *cnode = vector_slot(v, ntype);
|
||||||
|
+ cmd_node_t *cnode = vector_slot(v, ntype);
|
||||||
|
|
||||||
|
- return cnode->cmd_vector;
|
||||||
|
+ return cnode->cmd_vector;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Completion match types. */
|
||||||
|
@@ -825,8 +826,8 @@ cmd_filter_by_completion(char *command, vector_t *v, unsigned int index)
|
||||||
|
|
||||||
|
/* If command and cmd_element string does not match set NULL to vector */
|
||||||
|
for (i = 0; i < vector_active (v); i++) {
|
||||||
|
- if ((cmd_element = vector_slot (v, i)) != NULL) {
|
||||||
|
- if (index >= vector_active (cmd_element->strvec)) {
|
||||||
|
+ if ((cmd_element = vector_slot(v, i)) != NULL) {
|
||||||
|
+ if (index >= vector_active(cmd_element->strvec)) {
|
||||||
|
vector_slot(v, i) = NULL;
|
||||||
|
} else {
|
||||||
|
unsigned int j;
|
||||||
|
@@ -911,12 +912,12 @@ cmd_filter_by_string(char *command, vector_t *v, unsigned int index)
|
||||||
|
match_type = no_match;
|
||||||
|
|
||||||
|
/* If command and cmd_element string does not match set NULL to vector */
|
||||||
|
- for (i = 0; i < vector_active (v); i++) {
|
||||||
|
+ for (i = 0; i < vector_active(v); i++) {
|
||||||
|
if ((cmd_element = vector_slot (v, i)) != NULL) {
|
||||||
|
/* If given index is bigger than max string vector of command,
|
||||||
|
* set NULL */
|
||||||
|
- if (index >= vector_active (cmd_element->strvec)) {
|
||||||
|
- vector_slot (v, i) = NULL;
|
||||||
|
+ if (index >= vector_active(cmd_element->strvec)) {
|
||||||
|
+ vector_slot(v, i) = NULL;
|
||||||
|
} else {
|
||||||
|
unsigned int j;
|
||||||
|
int matched = 0;
|
||||||
|
@@ -1161,9 +1162,9 @@ cmd_unique_string(vector_t *v, const char *str)
|
||||||
|
unsigned int i;
|
||||||
|
char *match;
|
||||||
|
|
||||||
|
- for (i = 0; i < vector_active (v); i++) {
|
||||||
|
- if ((match = vector_slot (v, i)) != NULL) {
|
||||||
|
- if (strcmp (match, str) == 0) {
|
||||||
|
+ for (i = 0; i < vector_active(v); i++) {
|
||||||
|
+ if ((match = vector_slot(v, i)) != NULL) {
|
||||||
|
+ if (strcmp(match, str) == 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -1180,9 +1181,9 @@ desc_unique_string(vector_t *v, const char *str)
|
||||||
|
unsigned int i;
|
||||||
|
desc_t *desc;
|
||||||
|
|
||||||
|
- for (i = 0; i < vector_active (v); i++) {
|
||||||
|
- if ((desc = vector_slot (v, i)) != NULL) {
|
||||||
|
- if (strcmp (desc->cmd, str) == 0) {
|
||||||
|
+ for (i = 0; i < vector_active(v); i++) {
|
||||||
|
+ if ((desc = vector_slot(v, i)) != NULL) {
|
||||||
|
+ if (strcmp(desc->cmd, str) == 0) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -1418,7 +1419,7 @@ cmd_complete_command_real(vector_t *vline, vty_t *vty, int *status)
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
/* First try completion match, if there is exactly match return 1 */
|
||||||
|
- match = cmd_filter_by_completion (command, cmd_vector, i);
|
||||||
|
+ match = cmd_filter_by_completion(command, cmd_vector, i);
|
||||||
|
|
||||||
|
/* If there is exact match then filter ambiguous match else check
|
||||||
|
* ambiguousness. */
|
||||||
|
@@ -1434,8 +1435,8 @@ cmd_complete_command_real(vector_t *vline, vty_t *vty, int *status)
|
||||||
|
matchvec = vector_init(INIT_MATCHVEC_SIZE);
|
||||||
|
|
||||||
|
/* Now we got into completion */
|
||||||
|
- for (i = 0; i < vector_active (cmd_vector); i++) {
|
||||||
|
- if ((cmd_element = vector_slot (cmd_vector, i))) {
|
||||||
|
+ for (i = 0; i < vector_active(cmd_vector); i++) {
|
||||||
|
+ if ((cmd_element = vector_slot(cmd_vector, i))) {
|
||||||
|
const char *string;
|
||||||
|
vector_t *strvec = cmd_element->strvec;
|
||||||
|
|
||||||
|
@@ -1560,28 +1561,6 @@ cmd_complete_command(vector_t *vline, vty_t *vty, int *status)
|
||||||
|
node_type_t
|
||||||
|
node_parent(node_type_t node)
|
||||||
|
{
|
||||||
|
-#if 0
|
||||||
|
- node_type_t ret;
|
||||||
|
-
|
||||||
|
- assert(node > CONFIG_NODE);
|
||||||
|
-
|
||||||
|
- switch (node) {
|
||||||
|
- case BGP_VPNV4_NODE:
|
||||||
|
- case BGP_IPV4_NODE:
|
||||||
|
- case BGP_IPV4M_NODE:
|
||||||
|
- case BGP_IPV6_NODE:
|
||||||
|
- case BGP_IPV6M_NODE:
|
||||||
|
- ret = BGP_NODE;
|
||||||
|
- break;
|
||||||
|
- case KEYCHAIN_KEY_NODE:
|
||||||
|
- ret = KEYCHAIN_NODE;
|
||||||
|
- break;
|
||||||
|
- default:
|
||||||
|
- ret = CONFIG_NODE;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- return ret;
|
||||||
|
-#endif
|
||||||
|
return CONFIG_NODE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1628,8 +1607,8 @@ cmd_execute_command_real(vector_t *vline, vty_t *vty, cmd_element_t **cmd)
|
||||||
|
matched_count = 0;
|
||||||
|
incomplete_count = 0;
|
||||||
|
|
||||||
|
- for (i = 0; i < vector_active (cmd_vector); i++) {
|
||||||
|
- if ((cmd_element = vector_slot (cmd_vector, i))) {
|
||||||
|
+ for (i = 0; i < vector_active(cmd_vector); i++) {
|
||||||
|
+ if ((cmd_element = vector_slot(cmd_vector, i))) {
|
||||||
|
if (match == vararg_match || index >= cmd_element->cmdsize) {
|
||||||
|
matched_element = cmd_element;
|
||||||
|
matched_count++;
|
||||||
|
@@ -1718,7 +1697,7 @@ cmd_execute_command(vector_t *vline, vty_t *vty, cmd_element_t **cmd, int vtysh)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
- saved_ret = ret = cmd_execute_command_real (vline, vty, cmd);
|
||||||
|
+ saved_ret = ret = cmd_execute_command_real(vline, vty, cmd);
|
||||||
|
|
||||||
|
if (vtysh)
|
||||||
|
return saved_ret;
|
||||||
|
@@ -1957,10 +1936,10 @@ DEFUN(config_exit,
|
||||||
|
}
|
||||||
|
|
||||||
|
/* quit is alias of exit. */
|
||||||
|
-ALIAS (config_exit,
|
||||||
|
- config_quit_cmd,
|
||||||
|
- "quit",
|
||||||
|
- "Exit current mode and down to previous mode\n")
|
||||||
|
+ALIAS(config_exit,
|
||||||
|
+ config_quit_cmd,
|
||||||
|
+ "quit",
|
||||||
|
+ "Exit current mode and down to previous mode\n")
|
||||||
|
|
||||||
|
/* End of configuration. */
|
||||||
|
DEFUN(config_end,
|
||||||
|
@@ -2038,7 +2017,7 @@ DEFUN(config_list,
|
||||||
|
|
||||||
|
for (i = 0; i < vector_active (cnode->cmd_vector); i++)
|
||||||
|
if ((cmd = vector_slot (cnode->cmd_vector, i)) != NULL &&
|
||||||
|
- !(cmd->attr == CMD_ATTR_DEPRECATED || cmd->attr == CMD_ATTR_HIDDEN))
|
||||||
|
+ cmd->attr != CMD_ATTR_HIDDEN)
|
||||||
|
vty_out(vty, " %s%s", cmd->string, VTY_NEWLINE);
|
||||||
|
|
||||||
|
return CMD_SUCCESS;
|
||||||
|
@@ -2612,7 +2591,6 @@ cmd_init(void)
|
||||||
|
install_element(VIEW_NODE, &config_terminal_no_length_cmd);
|
||||||
|
install_element(VIEW_NODE, &echo_cmd);
|
||||||
|
|
||||||
|
-// install_element(ENABLE_NODE, &config_exit_cmd);
|
||||||
|
install_default(ENABLE_NODE);
|
||||||
|
install_element(ENABLE_NODE, &config_disable_cmd);
|
||||||
|
install_element(ENABLE_NODE, &config_terminal_cmd);
|
||||||
|
@@ -2626,8 +2604,6 @@ cmd_init(void)
|
||||||
|
install_element(ENABLE_NODE, &echo_cmd);
|
||||||
|
|
||||||
|
install_default(CONFIG_NODE);
|
||||||
|
-// install_element(CONFIG_NODE, &config_exit_cmd);
|
||||||
|
-
|
||||||
|
|
||||||
|
install_element(CONFIG_NODE, &hostname_cmd);
|
||||||
|
install_element(CONFIG_NODE, &no_hostname_cmd);
|
||||||
|
diff --git a/lib/command.h b/lib/command.h
|
||||||
|
index 34091a9..71191a1 100644
|
||||||
|
--- a/lib/command.h
|
||||||
|
+++ b/lib/command.h
|
||||||
|
@@ -64,6 +64,7 @@ typedef enum _node_type {
|
||||||
|
|
||||||
|
VTY_NODE, /* Vty node. */
|
||||||
|
|
||||||
|
+ GLOBAL_NODE, /* Global daemon commands. */
|
||||||
|
CHECK_NODE, /* Checker framework commands. */
|
||||||
|
VRRP_NODE, /* VRRP framework commands. */
|
||||||
|
} node_type_t;
|
||||||
|
@@ -118,8 +119,7 @@ typedef struct _desc {
|
||||||
|
*/
|
||||||
|
|
||||||
|
enum {
|
||||||
|
- CMD_ATTR_DEPRECATED = 1,
|
||||||
|
- CMD_ATTR_HIDDEN,
|
||||||
|
+ CMD_ATTR_HIDDEN = 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
#define CMD_SUCCESS 0
|
||||||
|
@@ -187,9 +187,6 @@ enum {
|
||||||
|
#define DEFUN_HIDDEN(funcname, cmdname, cmdstr, helpstr) \
|
||||||
|
DEFUN_ATTR (funcname, cmdname, cmdstr, helpstr, CMD_ATTR_HIDDEN)
|
||||||
|
|
||||||
|
-#define DEFUN_DEPRECATED(funcname, cmdname, cmdstr, helpstr) \
|
||||||
|
- DEFUN_ATTR (funcname, cmdname, cmdstr, helpstr, CMD_ATTR_DEPRECATED)
|
||||||
|
-
|
||||||
|
/* DEFUN_NOSH for commands that vtysh should ignore */
|
||||||
|
#define DEFUN_NOSH(funcname, cmdname, cmdstr, helpstr) \
|
||||||
|
DEFUN(funcname, cmdname, cmdstr, helpstr)
|
||||||
|
@@ -213,9 +210,6 @@ enum {
|
||||||
|
#define DEFUNSH_HIDDEN(daemon, funcname, cmdname, cmdstr, helpstr) \
|
||||||
|
DEFUNSH_ATTR (daemon, funcname, cmdname, cmdstr, helpstr, CMD_ATTR_HIDDEN)
|
||||||
|
|
||||||
|
-#define DEFUNSH_DEPRECATED(daemon, funcname, cmdname, cmdstr, helpstr) \
|
||||||
|
- DEFUNSH_ATTR (daemon, funcname, cmdname, cmdstr, helpstr, CMD_ATTR_DEPRECATED)
|
||||||
|
-
|
||||||
|
/* ALIAS macro which define existing command's alias. */
|
||||||
|
#define ALIAS(funcname, cmdname, cmdstr, helpstr) \
|
||||||
|
DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, 0, 0)
|
||||||
|
@@ -226,27 +220,21 @@ enum {
|
||||||
|
#define ALIAS_HIDDEN(funcname, cmdname, cmdstr, helpstr) \
|
||||||
|
DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, CMD_ATTR_HIDDEN, 0)
|
||||||
|
|
||||||
|
-#define ALIAS_DEPRECATED(funcname, cmdname, cmdstr, helpstr) \
|
||||||
|
- DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, CMD_ATTR_DEPRECATED, 0)
|
||||||
|
-
|
||||||
|
#define ALIAS_SH(daemon, funcname, cmdname, cmdstr, helpstr) \
|
||||||
|
DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, 0, daemon)
|
||||||
|
|
||||||
|
#define ALIAS_SH_HIDDEN(daemon, funcname, cmdname, cmdstr, helpstr) \
|
||||||
|
DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, CMD_ATTR_HIDDEN, daemon)
|
||||||
|
|
||||||
|
-#define ALIAS_SH_DEPRECATED(daemon, funcname, cmdname, cmdstr, helpstr) \
|
||||||
|
- DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, CMD_ATTR_DEPRECATED, daemon)
|
||||||
|
-
|
||||||
|
#define CMD_OPTION(S) ((S[0]) == '[')
|
||||||
|
#define CMD_VARIABLE(S) (((S[0]) >= 'A' && (S[0]) <= 'Z') || ((S[0]) == '<'))
|
||||||
|
#define CMD_VARARG(S) ((S[0]) == '.')
|
||||||
|
#define CMD_RANGE(S) ((S[0] == '<'))
|
||||||
|
|
||||||
|
-#define CMD_IPV4(S) ((strcmp ((S), "A.B.C.D") == 0))
|
||||||
|
-#define CMD_IPV4_PREFIX(S) ((strcmp ((S), "A.B.C.D/M") == 0))
|
||||||
|
-#define CMD_IPV6(S) ((strcmp ((S), "X:X::X:X") == 0))
|
||||||
|
-#define CMD_IPV6_PREFIX(S) ((strcmp ((S), "X:X::X:X/M") == 0))
|
||||||
|
+#define CMD_IPV4(S) ((strcmp((S), "A.B.C.D") == 0))
|
||||||
|
+#define CMD_IPV4_PREFIX(S) ((strcmp((S), "A.B.C.D/M") == 0))
|
||||||
|
+#define CMD_IPV6(S) ((strcmp((S), "X:X::X:X") == 0))
|
||||||
|
+#define CMD_IPV6_PREFIX(S) ((strcmp((S), "X:X::X:X/M") == 0))
|
||||||
|
|
||||||
|
/* Common descriptions. */
|
||||||
|
#define SHOW_STR "Show running system information\n"
|
||||||
|
--
|
||||||
|
1.8.1.4
|
||||||
|
|
157
0006-lib-extend-vty-to-support-logger.patch
Normal file
157
0006-lib-extend-vty-to-support-logger.patch
Normal file
@ -0,0 +1,157 @@
|
|||||||
|
From 8b6e812dcee8a54b4b6ad4116cb0782730079952 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alexandre Cassen <acassen@gmail.com>
|
||||||
|
Date: Tue, 7 Jan 2014 16:10:46 +0100
|
||||||
|
Subject: [PATCH 6/7] lib: extend vty to support logger
|
||||||
|
|
||||||
|
add support to logger and some cosmetics.
|
||||||
|
---
|
||||||
|
lib/vty.c | 52 +++++++++++++++++++++++++---------------------------
|
||||||
|
lib/vty.h | 2 +-
|
||||||
|
2 files changed, 26 insertions(+), 28 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lib/vty.c b/lib/vty.c
|
||||||
|
index e8c6dc6..b84b232 100644
|
||||||
|
--- a/lib/vty.c
|
||||||
|
+++ b/lib/vty.c
|
||||||
|
@@ -1600,7 +1600,7 @@ vty_timeout(thread_t *thread)
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Read up configuration file from file_name. */
|
||||||
|
-static void
|
||||||
|
+static int
|
||||||
|
vty_read_file(FILE *confp)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
@@ -1617,19 +1617,20 @@ vty_read_file(FILE *confp)
|
||||||
|
if (!((ret == CMD_SUCCESS) || (ret == CMD_ERR_NOTHING_TODO))) {
|
||||||
|
switch (ret) {
|
||||||
|
case CMD_ERR_AMBIGUOUS:
|
||||||
|
- fprintf(stderr, "Ambiguous command.\n");
|
||||||
|
+ log_message(LOG_ERR, "Ambiguous command.\n");
|
||||||
|
break;
|
||||||
|
case CMD_ERR_NO_MATCH:
|
||||||
|
- fprintf(stderr, "There is no such command.\n");
|
||||||
|
+ log_message(LOG_ERR, "There is no such command.\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
- fprintf(stderr, "Error occured during reading below line.\n%s\n"
|
||||||
|
- , vty->buf);
|
||||||
|
+ log_message(LOG_ERR, "Error occured during reading below line.\n%s\n"
|
||||||
|
+ , vty->buf);
|
||||||
|
vty_close(vty);
|
||||||
|
- exit(1);
|
||||||
|
+ return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
vty_close(vty);
|
||||||
|
+ return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static FILE *
|
||||||
|
@@ -1703,7 +1704,7 @@ vty_use_backup_config(char *fullpath)
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Read up configuration file from file_name. */
|
||||||
|
-void
|
||||||
|
+int
|
||||||
|
vty_read_config(char *config_file, char *config_default_dir)
|
||||||
|
{
|
||||||
|
char cwd[MAXPATHLEN];
|
||||||
|
@@ -1717,9 +1718,9 @@ vty_read_config(char *config_file, char *config_default_dir)
|
||||||
|
if (!IS_DIRECTORY_SEP(config_file[0])) {
|
||||||
|
retpath = getcwd(cwd, MAXPATHLEN);
|
||||||
|
if (!retpath) {
|
||||||
|
- fprintf(stderr, "%s: failed to get current working directory: %s\n"
|
||||||
|
- , __func__, strerror(errno));
|
||||||
|
- exit(1);
|
||||||
|
+ log_message(LOG_ERR, "%s: failed to get current working directory: %s\n"
|
||||||
|
+ , __func__, strerror(errno));
|
||||||
|
+ return -1;
|
||||||
|
}
|
||||||
|
tmp = MALLOC(strlen(cwd) + strlen(config_file) + 2);
|
||||||
|
sprintf(tmp, "%s/%s", cwd, config_file);
|
||||||
|
@@ -1731,32 +1732,32 @@ vty_read_config(char *config_file, char *config_default_dir)
|
||||||
|
confp = fopen(fullpath, "r");
|
||||||
|
|
||||||
|
if (confp == NULL) {
|
||||||
|
- fprintf(stderr, "%s: failed to open configuration file %s: %s\n"
|
||||||
|
- , __func__, fullpath, strerror (errno));
|
||||||
|
+ log_message(LOG_ERR, "%s: failed to open configuration file %s: %s\n"
|
||||||
|
+ , __func__, fullpath, strerror (errno));
|
||||||
|
|
||||||
|
confp = vty_use_backup_config(fullpath);
|
||||||
|
if (confp) {
|
||||||
|
- fprintf(stderr, "WARNING: using backup configuration file!\n");
|
||||||
|
+ log_message(LOG_ERR, "WARNING: using backup configuration file!\n");
|
||||||
|
} else {
|
||||||
|
- fprintf(stderr, "can't open configuration file [%s]\n"
|
||||||
|
- , config_file);
|
||||||
|
- exit(1);
|
||||||
|
+ log_message(LOG_ERR, "can't open configuration file [%s]\n"
|
||||||
|
+ , config_file);
|
||||||
|
+ return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
confp = fopen(config_default_dir, "r");
|
||||||
|
if (confp == NULL) {
|
||||||
|
- fprintf(stderr, "%s: failed to open configuration file %s: %s\n"
|
||||||
|
- , __func__, config_default_dir, strerror(errno));
|
||||||
|
+ log_message(LOG_ERR, "%s: failed to open configuration file %s: %s\n"
|
||||||
|
+ , __func__, config_default_dir, strerror(errno));
|
||||||
|
|
||||||
|
confp = vty_use_backup_config(config_default_dir);
|
||||||
|
if (confp) {
|
||||||
|
- fprintf(stderr, "WARNING: using backup configuration file!\n");
|
||||||
|
+ log_message(LOG_ERR, "WARNING: using backup configuration file!\n");
|
||||||
|
fullpath = config_default_dir;
|
||||||
|
} else {
|
||||||
|
- fprintf(stderr, "can't open configuration file [%s]\n"
|
||||||
|
- , config_default_dir);
|
||||||
|
- exit (1);
|
||||||
|
+ log_message(LOG_ERR, "can't open configuration file [%s]\n"
|
||||||
|
+ , config_default_dir);
|
||||||
|
+ return -1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
fullpath = config_default_dir;
|
||||||
|
@@ -1764,12 +1765,10 @@ vty_read_config(char *config_file, char *config_default_dir)
|
||||||
|
}
|
||||||
|
|
||||||
|
vty_read_file(confp);
|
||||||
|
-
|
||||||
|
fclose(confp);
|
||||||
|
-
|
||||||
|
host_config_set(fullpath);
|
||||||
|
-
|
||||||
|
FREE_PTR(tmp);
|
||||||
|
+ return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
@@ -2038,8 +2037,7 @@ vty_config_write(vty_t *vty)
|
||||||
|
return CMD_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
-cmd_node_t vty_node =
|
||||||
|
-{
|
||||||
|
+cmd_node_t vty_node = {
|
||||||
|
VTY_NODE,
|
||||||
|
"%s(config-line)# ",
|
||||||
|
1,
|
||||||
|
diff --git a/lib/vty.h b/lib/vty.h
|
||||||
|
index 6134ad3..2c4b44f 100644
|
||||||
|
--- a/lib/vty.h
|
||||||
|
+++ b/lib/vty.h
|
||||||
|
@@ -181,7 +181,7 @@ extern int vty_listen(struct sockaddr_storage *);
|
||||||
|
extern void vty_reset(void);
|
||||||
|
extern vty_t *vty_new(void);
|
||||||
|
extern int vty_out(vty_t *, const char *, ...) PRINTF_ATTRIBUTE(2, 3);
|
||||||
|
-extern void vty_read_config(char *, char *);
|
||||||
|
+extern int vty_read_config(char *, char *);
|
||||||
|
extern void vty_time_print(vty_t *, int);
|
||||||
|
extern void vty_serv_sock(const char *, unsigned short, const char *);
|
||||||
|
extern void vty_close(vty_t *);
|
||||||
|
--
|
||||||
|
1.8.1.4
|
||||||
|
|
99
0007-autoconf-better-libnl3-detection.patch
Normal file
99
0007-autoconf-better-libnl3-detection.patch
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
From cba49f220eff2025771da9aab766188ceb66c5bf Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alexandre Cassen <acassen@gmail.com>
|
||||||
|
Date: Tue, 7 Jan 2014 16:21:58 +0100
|
||||||
|
Subject: [PATCH 7/7] autoconf: better libnl3 detection
|
||||||
|
|
||||||
|
use pkg-config facilities to append CFLAGS related instead of hardcoding
|
||||||
|
libnl3 path in configure script.
|
||||||
|
---
|
||||||
|
configure | 6 +-----
|
||||||
|
configure.in | 5 +----
|
||||||
|
keepalived/libipvs-2.6/Makefile.in | 2 +-
|
||||||
|
3 files changed, 3 insertions(+), 10 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/configure b/configure
|
||||||
|
index 90cca7d..66ce48c 100755
|
||||||
|
--- a/configure
|
||||||
|
+++ b/configure
|
||||||
|
@@ -622,7 +622,6 @@ ac_includes_default="\
|
||||||
|
ac_subst_vars='LTLIBOBJS
|
||||||
|
LIBOBJS
|
||||||
|
VRRP_SUPPORT
|
||||||
|
-INCLUDE_NL
|
||||||
|
USE_NL
|
||||||
|
IPVS_SUPPORT
|
||||||
|
VERSION_DATE
|
||||||
|
@@ -3975,9 +3974,8 @@ $as_echo "$ac_cv_lib_nl_genl_3_genl_connect" >&6; }
|
||||||
|
if test "x$ac_cv_lib_nl_genl_3_genl_connect" = xyes; then :
|
||||||
|
|
||||||
|
USE_NL="LIBIPVS_USE_NL"
|
||||||
|
- CFLAGS="$CFLAGS $(pkg-config libnl-genl-3.0)"
|
||||||
|
+ CFLAGS="$CFLAGS $(pkg-config --cflags libnl-genl-3.0)"
|
||||||
|
LIBS="$LIBS $(pkg-config --libs libnl-genl-3.0)"
|
||||||
|
- INCLUDE_NL="-I/usr/include/libnl3"
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
@@ -4029,7 +4027,6 @@ if test "x$ac_cv_lib_nl_nl_socket_modify_cb" = xyes; then :
|
||||||
|
USE_NL="LIBIPVS_USE_NL"
|
||||||
|
CFLAGS="$CFLAGS -DFALLBACK_LIBNL1"
|
||||||
|
LIBS="$LIBS $(pkg-config --libs libnl-1)"
|
||||||
|
- INCLUDE_NL=""
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
@@ -4465,7 +4462,6 @@ fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
|
||||||
|
$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
|
||||||
|
if ${ac_cv_c_const+:} false; then :
|
||||||
|
diff --git a/configure.in b/configure.in
|
||||||
|
index 364890d..7d97616 100644
|
||||||
|
--- a/configure.in
|
||||||
|
+++ b/configure.in
|
||||||
|
@@ -61,9 +61,8 @@ AC_CHECK_LIB(nl-3, nl_socket_alloc,
|
||||||
|
AC_CHECK_LIB(nl-genl-3, genl_connect,
|
||||||
|
[
|
||||||
|
USE_NL="LIBIPVS_USE_NL"
|
||||||
|
- CFLAGS="$CFLAGS $(pkg-config libnl-genl-3.0)"
|
||||||
|
+ CFLAGS="$CFLAGS $(pkg-config --cflags libnl-genl-3.0)"
|
||||||
|
LIBS="$LIBS $(pkg-config --libs libnl-genl-3.0)"
|
||||||
|
- INCLUDE_NL="-I/usr/include/libnl3"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
AC_MSG_ERROR([libnl-3 is installed but not libnl-gen-3. Please, install libnl-gen-3.])
|
||||||
|
@@ -75,7 +74,6 @@ AC_CHECK_LIB(nl-3, nl_socket_alloc,
|
||||||
|
USE_NL="LIBIPVS_USE_NL"
|
||||||
|
CFLAGS="$CFLAGS -DFALLBACK_LIBNL1"
|
||||||
|
LIBS="$LIBS $(pkg-config --libs libnl-1)"
|
||||||
|
- INCLUDE_NL=""
|
||||||
|
],
|
||||||
|
[
|
||||||
|
USE_NL="LIBIPVS_DONTUSE_NL"
|
||||||
|
@@ -279,7 +277,6 @@ AC_SUBST(VERSION)
|
||||||
|
AC_SUBST(VERSION_DATE)
|
||||||
|
AC_SUBST(IPVS_SUPPORT)
|
||||||
|
AC_SUBST(USE_NL)
|
||||||
|
-AC_SUBST(INCLUDE_NL)
|
||||||
|
AC_SUBST(VRRP_SUPPORT)
|
||||||
|
|
||||||
|
dnl ----[ Checks for typedefs, structures, and compiler characteristics ]----
|
||||||
|
diff --git a/keepalived/libipvs-2.6/Makefile.in b/keepalived/libipvs-2.6/Makefile.in
|
||||||
|
index dfefc7d..14cfa95 100644
|
||||||
|
--- a/keepalived/libipvs-2.6/Makefile.in
|
||||||
|
+++ b/keepalived/libipvs-2.6/Makefile.in
|
||||||
|
@@ -1,7 +1,7 @@
|
||||||
|
# Makefile for libipvs
|
||||||
|
|
||||||
|
CC = @CC@
|
||||||
|
-CFLAGS = @CFLAGS@ @CPPFLAGS@ @INCLUDE_NL@ -D@USE_NL@ -Wall -Wunused
|
||||||
|
+CFLAGS = @CFLAGS@ @CPPFLAGS@ -D@USE_NL@ -Wall -Wunused
|
||||||
|
|
||||||
|
export OBJS += libipvs.a
|
||||||
|
|
||||||
|
--
|
||||||
|
1.8.1.4
|
||||||
|
|
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
Name: keepalived
|
Name: keepalived
|
||||||
Summary: High Availability monitor built upon LVS, VRRP and service pollers
|
Summary: High Availability monitor built upon LVS, VRRP and service pollers
|
||||||
Version: 1.2.9
|
Version: 1.2.10
|
||||||
Release: 1%{?dist}
|
Release: 1%{?dist}
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
URL: http://www.keepalived.org/
|
URL: http://www.keepalived.org/
|
||||||
@ -17,6 +17,14 @@ Group: System Environment/Daemons
|
|||||||
Source0: http://www.keepalived.org/software/keepalived-%{version}.tar.gz
|
Source0: http://www.keepalived.org/software/keepalived-%{version}.tar.gz
|
||||||
Source1: keepalived.service
|
Source1: keepalived.service
|
||||||
|
|
||||||
|
Patch1: 0001-ipvs-make-nlerr2syserr-libnl-dependent.patch
|
||||||
|
Patch2: 0002-fix-libnl-libnl-3-logic-in-configure-script.patch
|
||||||
|
Patch3: 0003-libipvs-libnl-3-include-fix.patch
|
||||||
|
Patch4: 0004-lib-extend-command-lib-string-parser.patch
|
||||||
|
Patch5: 0005-lib-cosmetics-at-command.c.patch
|
||||||
|
Patch6: 0006-lib-extend-vty-to-support-logger.patch
|
||||||
|
Patch7: 0007-autoconf-better-libnl3-detection.patch
|
||||||
|
|
||||||
Requires(post): systemd
|
Requires(post): systemd
|
||||||
Requires(preun): systemd
|
Requires(preun): systemd
|
||||||
Requires(postun): systemd
|
Requires(postun): systemd
|
||||||
@ -27,7 +35,7 @@ BuildRequires: net-snmp-devel
|
|||||||
%endif
|
%endif
|
||||||
BuildRequires: systemd-units
|
BuildRequires: systemd-units
|
||||||
BuildRequires: openssl-devel
|
BuildRequires: openssl-devel
|
||||||
BuildRequires: libnl-devel
|
BuildRequires: libnl3-devel
|
||||||
BuildRequires: kernel-devel
|
BuildRequires: kernel-devel
|
||||||
BuildRequires: popt-devel
|
BuildRequires: popt-devel
|
||||||
|
|
||||||
@ -47,6 +55,13 @@ infrastructures.
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
|
%patch1 -p1
|
||||||
|
%patch2 -p1
|
||||||
|
%patch3 -p1
|
||||||
|
%patch4 -p1
|
||||||
|
%patch5 -p1
|
||||||
|
%patch6 -p1
|
||||||
|
%patch7 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%configure \
|
%configure \
|
||||||
@ -102,6 +117,9 @@ rm -rf %{buildroot}
|
|||||||
%{_mandir}/man8/keepalived.8*
|
%{_mandir}/man8/keepalived.8*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Jan 13 2014 Ryan O'Hara <rohara@redhat.com> - 1.2.10-1
|
||||||
|
- Update to 1.2.10.
|
||||||
|
|
||||||
* Mon Nov 11 2013 Ryan O'Hara <rohara@redhat.com> - 1.2.9-1
|
* Mon Nov 11 2013 Ryan O'Hara <rohara@redhat.com> - 1.2.9-1
|
||||||
- Update to 1.2.9.
|
- Update to 1.2.9.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user