summaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
authorVincent Bernat <bernat@luffy.cx>2012-05-24 09:44:43 +0200
committerVincent Bernat <bernat@luffy.cx>2012-06-25 19:03:23 +0200
commitd6be5fb9bc41ea77547204eeedd12132b26ad662 (patch)
treedfe0f2a92faf6bd7d5b5b5f7b8006014a03e5469 /configure.ac
parent3a4c96885ec878ae4631b0fb7bb7839578725976 (diff)
agentx: add AgentX support to Quagga.
--enable-snmp will enable AgentX support in Quagga. SMUX is still here and can be enabled with --enable-snmp=smux. AgentX support can be enabled with "agentx" in configuration file. As for SMUX, this command is not understood by vtysh. It can be disabled with "no agentx", though there is no real use of this since this command cannot be used with vtysh. If "agentx" and "no agentx" command were added to vtysh, it would not be possible to disable agentx support after enabling it because NetSNMP does not expose the appropriate methods for this. The internals of AgentX are hidden by NetSNMP. Therefore, we don't have a file descriptor to add to the threading system. We do not have the timers to set either. Therefore, the event loop is modified to make use of snmp_select_info() from NetSNMP. Traps are not supported yet.
Diffstat (limited to 'configure.ac')
-rwxr-xr-xconfigure.ac18
1 files changed, 16 insertions, 2 deletions
diff --git a/configure.ac b/configure.ac
index a2738a95..277bad55 100755
--- a/configure.ac
+++ b/configure.ac
@@ -222,7 +222,7 @@ AC_ARG_ENABLE(netlink,
AC_ARG_ENABLE(broken-aliases,
[ --enable-broken-aliases enable aliases as distinct interfaces for Linux 2.2.X])
AC_ARG_ENABLE(snmp,
-[ --enable-snmp enable SNMP support])
+[ --enable-snmp=ARG enable SNMP support (smux or agentx)])
AC_ARG_WITH(libpam,
[ --with-libpam use libpam for PAM support in vtysh])
AC_ARG_ENABLE(tcp-zebra,
@@ -1363,7 +1363,7 @@ AC_SUBST(LIB_REGEX)
dnl ------------------
dnl check Net-SNMP library
dnl ------------------
-if test "${enable_snmp}" = "yes"; then
+if test "${enable_snmp}" != ""; then
AC_PATH_TOOL([NETSNMP_CONFIG], [net-snmp-config], [no])
if test x"$NETSNMP_CONFIG" = x"no"; then
AC_MSG_ERROR([--enable-snmp given but unable to find net-snmp-config])
@@ -1382,6 +1382,20 @@ int main(void);
AC_MSG_RESULT(no)
AC_MSG_ERROR([--enable-snmp given but not usable])])
AC_DEFINE(HAVE_SNMP,,SNMP)
+ case "${enable_snmp}" in
+ yes)
+ SNMP_METHOD=agentx
+ ;;
+ smux|agentx)
+ SNMP_METHOD="${enable_snmp}"
+ ;;
+ *)
+ AC_MSG_ERROR([--enable-snmp given with an unknown method (${enable_snmp}). Use smux or agentx])
+ ;;
+ esac
+ AH_TEMPLATE([SNMP_SMUX], [Use SNMP SMUX to interface with snmpd])
+ AH_TEMPLATE([SNMP_AGENTX], [Use SNMP AgentX to interface with snmpd])
+ AC_DEFINE_UNQUOTED(AS_TR_CPP(SNMP_${SNMP_METHOD}),,SNMP method to interface with snmpd)
fi
dnl ---------------------------