])
SQUID_DEFINE_BOOL(SQUID_SNMP,${enable_snmp:=yes},
[Define to enable SNMP monitoring of Squid])
-AM_CONDITIONAL(USE_SNMP, [test "x$enable_snmp" = "xyes"])
+AM_CONDITIONAL(ENABLE_SNMP, [test "x$enable_snmp" = "xyes"])
if test "x$enable_snmp" = "xyes"; then
SNMPLIB='../snmplib/libsnmp.a'
makesnmplib=snmplib
snmp_core.h \
snmp_core.cc \
snmp_agent.cc
-if USE_SNMP
+if ENABLE_SNMP
SNMP_SOURCE = $(SNMP_ALL_SOURCE)
else
SNMP_SOURCE =
SSL_LOCAL_LIBS =
endif
-if USE_SNMP
+if ENABLE_SNMP
SUBDIRS += snmpx
-SNMPXLIB = snmpx/libsnmpx.la
+SNMPX_LIBS = snmpx/libsnmpx.la
endif
if USE_ADAPTATION
$(CRYPTLIB) \
$(REGEXLIB) \
$(SNMPLIB) \
- $(SNMPXLIB) \
+ $(SNMPX_LIBS) \
${ADAPTATION_LIBS} \
$(ESI_LIBS) \
$(SSL_LIBS) \
#include "mgr/Inquirer.h"
#include "mgr/Request.h"
#include "mgr/Response.h"
+#if SQUID_SNMP
#include "snmpx/Inquirer.h"
#include "snmpx/Request.h"
#include "snmpx/Response.h"
-
+#endif
CBDATA_NAMESPACED_CLASS_INIT(Ipc, Coordinator);
Ipc::Coordinator* Ipc::Coordinator::TheInstance = NULL;
handleCacheMgrResponse(Mgr::Response(message));
break;
+#if SQUID_SNMP
case mtSnmpRequest:
debugs(54, 6, HERE << "SNMP request");
handleSnmpRequest(Snmp::Request(message));
debugs(54, 6, HERE << "SNMP response");
handleSnmpResponse(Snmp::Response(message));
break;
+#endif
default:
debugs(54, 1, HERE << "Unhandled message type: " << message.type());
Mgr::Inquirer::HandleRemoteAck(response);
}
+#if SQUID_SNMP
void
Ipc::Coordinator::handleSnmpRequest(const Snmp::Request& request)
{
debugs(54, 4, HERE);
Snmp::Inquirer::HandleRemoteAck(response);
}
+#endif
int
Ipc::Coordinator::openListenSocket(const SharedListenRequest& request,
#include "ipc/SharedListen.h"
#include "ipc/StrandCoords.h"
#include "mgr/forward.h"
+#if SQUID_SNMP
#include "snmpx/forward.h"
-
+#endif
#include <map>
namespace Ipc
void handleSharedListenRequest(const SharedListenRequest& request);
void handleCacheMgrRequest(const Mgr::Request& request);
void handleCacheMgrResponse(const Mgr::Response& response);
+#if SQUID_SNMP
void handleSnmpRequest(const Snmp::Request& request);
void handleSnmpResponse(const Snmp::Response& response);
-
+#endif
/// calls comm_open_listener()
int openListenSocket(const SharedListenRequest& request, int &errNo);
"None", // fdnNone
"HTTP Socket", // fdnHttpSocket
"HTTPS Socket", // fdnHttpsSocket
+#if SQUID_SNMP
"Incoming SNMP Socket", // fdnInSnmpSocket
"Outgoing SNMP Socket", // fdnOutSnmpSocket
+#endif
"Incoming ICP Socket", // fdnInIcpSocket
"Incoming HTCP Socket" // fdnInHtcpSocket
};
/// fd_note() label ID
typedef enum { fdnNone, fdnHttpSocket, fdnHttpsSocket,
+#if SQUID_SNMP
fdnInSnmpSocket, fdnOutSnmpSocket,
+#endif
fdnInIcpSocket, fdnInHtcpSocket, fdnEnd
} FdNoteId;
Inquirer.cc \
Inquirer.h \
Request.h \
- Response.cc \
Response.h
DEFS += -DDEFAULT_PREFIX=\"$(prefix)\"
#ifndef SQUID_IPC_MESSAGES_H
#define SQUID_IPC_MESSAGES_H
-#include "ipc/forward.h"
-#include <sys/types.h>
-
-/** Declarations used by varios IPC messages */
+/** Declarations used by various IPC messages */
namespace Ipc
{
typedef enum { mtNone = 0, mtRegistration,
mtSharedListenRequest, mtSharedListenResponse,
mtCacheMgrRequest, mtCacheMgrResponse,
+#if SQUID_SNMP
mtSnmpRequest, mtSnmpResponse
+#endif
} MessageType;
} // namespace Ipc;
+++ /dev/null
-/*
- * $Id$
- *
- * DEBUG: section 54 Interprocess Communication
- *
- */
-
-#include "config.h"
-#include "ipc/Request.h"
-#include "ipc/TypedMsgHdr.h"
+++ /dev/null
-/*
- * $Id$
- *
- * DEBUG: section 54 Interprocess Communication
- *
- */
-
-#include "config.h"
-#include "ipc/Response.h"
-#include "ipc/TypedMsgHdr.h"
-
-
-std::ostream& Ipc::operator << (std::ostream &os, const Response& response)
-{
- os << "[response.requestId %u]" << response.requestId << '}';
- return os;
-}
unsigned int requestId; ///< ID of request we are responding to
};
-extern std::ostream& operator <<(std::ostream &os, const Response &response);
+inline
+std::ostream& operator << (std::ostream &os, const Response& response)
+{
+ os << "[response.requestId %u]" << response.requestId << '}';
+ return os;
+}
+
} // namespace Ipc
#include "mgr/Response.h"
#include "mgr/Forwarder.h"
#include "CacheManager.h"
+#if SQUID_SNMP
#include "snmpx/Forwarder.h"
#include "snmpx/Request.h"
#include "snmpx/Response.h"
-
+#endif
CBDATA_NAMESPACED_CLASS_INIT(Ipc, Strand);
handleCacheMgrResponse(Mgr::Response(message));
break;
+#if SQUID_SNMP
case mtSnmpRequest:
handleSnmpRequest(Snmp::Request(message));
break;
case mtSnmpResponse:
handleSnmpResponse(Snmp::Response(message));
break;
+#endif
default:
debugs(54, 1, HERE << "Unhandled message type: " << message.type());
Mgr::Forwarder::HandleRemoteAck(response.requestId);
}
+#if SQUID_SNMP
void Ipc::Strand::handleSnmpRequest(const Snmp::Request& request)
{
debugs(54, 6, HERE);
debugs(54, 6, HERE);
Snmp::Forwarder::HandleRemoteAck(response.requestId);
}
+#endif
void Ipc::Strand::timedout()
{
#include "ipc/Port.h"
#include "mgr/forward.h"
+#if SQUID_SNMP
#include "snmpx/forward.h"
-
+#endif
namespace Ipc
{
void handleRegistrationResponse(const StrandCoord &strand);
void handleCacheMgrRequest(const Mgr::Request& request);
void handleCacheMgrResponse(const Mgr::Response& response);
+#if SQUID_SNMP
void handleSnmpRequest(const Snmp::Request& request);
void handleSnmpResponse(const Snmp::Response& response);
+#endif
private:
bool isRegistered; ///< whether Coordinator ACKed registration (unused)
snmpAddNodeStr("1.3.6.1.4.1.3495.1.2", CONF_STORAGE, NULL, NULL);
snmpAddNodeStr("1.3.6.1.4.1.3495.1.2.5", CONF_ST_MMAXSZ, snmp_confFn, static_Inst, atSum);
snmpAddNodeStr("1.3.6.1.4.1.3495.1.2.5", CONF_ST_SWMAXSZ, snmp_confFn, static_Inst, atSum);
- snmpAddNodeStr("1.3.6.1.4.1.3495.1.2.5", CONF_ST_SWHIWM, snmp_confFn, static_Inst, atSum);
- snmpAddNodeStr("1.3.6.1.4.1.3495.1.2.5", CONF_ST_SWLOWM, snmp_confFn, static_Inst, atSum);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.2.5", CONF_ST_SWHIWM, snmp_confFn, static_Inst, atMin);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.2.5", CONF_ST_SWLOWM, snmp_confFn, static_Inst, atMax);
snmpAddNodeStr("1.3.6.1.4.1.3495.1.2", CONF_UNIQNAME, snmp_confFn, static_Inst);
{
case atSum:
case atAverage:
+ // The mean-average division is done later
+ // when the Snmp::Pdu::fixAggregate() called
aggr += var;
break;
case atMax:
void
Snmp::Pdu::fixAggregate()
{
- if (!aggrCount)
+ if (aggrCount < 2)
return;
for (variable_list* p_aggr = variables; p_aggr != NULL; p_aggr = p_aggr->next_variable) {
Var& aggr = static_cast<Var&>(*p_aggr);
private:
void init(); ///< initialize members
void assign(const Pdu& pdu); ///< perform full assignment
- int aggrCount; ///< The number of other Pdus merged into
+ unsigned int aggrCount; ///< The number of other Pdus merged into
};
} // namespace Snmp
return Range<const u_char*>(val.string, val.string + val_len);
}
-ipaddr
-Snmp::Var::asIpAddress() const
-{
- Must(type == SMI_IPADDRESS);
- Must(val.string != NULL && val_len == sizeof(ipaddr));
- return *reinterpret_cast<ipaddr*>(val.string);
-}
-
void
Snmp::Var::setInt(int value)
{
setValue(&ticks, sizeof(ticks), SMI_TIMETICKS);
}
-void
-Snmp::Var::setIpAddress(ipaddr addr)
-{
- setValue(&addr, sizeof(addr), SMI_IPADDRESS);
-}
-
void
Snmp::Var::copyValue(const Var& var)
{
unsigned int asTimeTicks() const; ///< returns variable value as time ticks
Range<const oid*> asObject() const; ///< returns variable value as object oid
Range<const u_char*> asString() const; ///< returns variable value as chars string
- ipaddr asIpAddress() const; ///< returns variable value as ip address
void setInt(int value); ///< assign int value to variable
void setCounter(int value); ///< assign Counter32 value to variable
void setString(const Range<const u_char*>& string); ///< assign string to variable
void setObject(const Range<const oid*>& object); ///< assign object oid to variable
void setTimeTicks(unsigned int ticks); ///<assign unsigned int (time) value to variable
- void setIpAddress(ipaddr addr); ///< assign sockaddr_in to variable
void setCounter64(long long int counter); ///< assign Counter64 value to variable
void copyValue(const Var& var); ///< copy variable from another one