added virtual method SNMP_Transport::isProxyTransport()
authorVictor Kirhenshtein <victor@netxms.org>
Thu, 24 Aug 2017 08:03:28 +0000 (11:03 +0300)
committerVictor Kirhenshtein <victor@netxms.org>
Thu, 24 Aug 2017 08:03:28 +0000 (11:03 +0300)
include/nxsnmp.h
src/server/include/nxsrvapi.h
src/server/libnxsrv/snmpproxy.cpp
src/snmp/libnxsnmp/transport.cpp

index 4b6b0da..572373f 100644 (file)
@@ -640,20 +640,11 @@ public:
 
    virtual int readMessage(SNMP_PDU **data, UINT32 timeout = INFINITE,
                            struct sockaddr *sender = NULL, socklen_t *addrSize = NULL,
-                               SNMP_SecurityContext* (*contextFinder)(struct sockaddr *, socklen_t) = NULL)
-       {
-               return -1;
-       }
-   virtual int sendMessage(SNMP_PDU *pdu)
-       {
-               return -1;
-       }
-   virtual InetAddress getPeerIpAddress()
-   {
-      return InetAddress();
-   }
-
-   virtual WORD getPort()=0;
+                               SNMP_SecurityContext* (*contextFinder)(struct sockaddr *, socklen_t) = NULL) = 0;
+   virtual int sendMessage(SNMP_PDU *pdu) = 0;
+   virtual InetAddress getPeerIpAddress() = 0;
+   virtual UINT16 getPort() = 0;
+   virtual bool isProxyTransport() = 0;
 
    UINT32 doRequest(SNMP_PDU *request, SNMP_PDU **response, UINT32 timeout = INFINITE, int numRetries = 1);
 
@@ -701,11 +692,12 @@ public:
                                SNMP_SecurityContext* (*contextFinder)(struct sockaddr *, socklen_t) = NULL);
    virtual int sendMessage(SNMP_PDU *pPDU);
    virtual InetAddress getPeerIpAddress();
+   virtual UINT16 getPort();
+   virtual bool isProxyTransport();
 
    UINT32 createUDPTransport(const TCHAR *hostName, UINT16 port = SNMP_DEFAULT_PORT);
    UINT32 createUDPTransport(const InetAddress& hostAddr, UINT16 port = SNMP_DEFAULT_PORT);
        bool isConnected() { return m_connected; }
-   UINT16 getPort() { return m_port; }
 };
 
 struct SNMP_SnapshotIndexEntry;
index e9fd137..97bc599 100644 (file)
@@ -619,11 +619,11 @@ protected:
        AgentConnection *m_agentConnection;
        NXCPMessage *m_response;
        InetAddress m_ipAddr;
-       WORD m_port;
+       UINT16 m_port;
        bool m_waitForResponse;
 
 public:
-       SNMP_ProxyTransport(AgentConnection *conn, const InetAddress& ipAddr, WORD port);
+       SNMP_ProxyTransport(AgentConnection *conn, const InetAddress& ipAddr, UINT16 port);
        virtual ~SNMP_ProxyTransport();
 
    virtual int readMessage(SNMP_PDU **ppData, UINT32 dwTimeout = INFINITE,
@@ -631,7 +631,8 @@ public:
                                SNMP_SecurityContext* (*contextFinder)(struct sockaddr *, socklen_t) = NULL);
    virtual int sendMessage(SNMP_PDU *pdu);
    virtual InetAddress getPeerIpAddress();
-   WORD getPort() { return m_port; }
+   virtual UINT16 getPort();
+   virtual bool isProxyTransport();
 
    void setWaitForResponse(bool wait) { m_waitForResponse = wait; }
 };
index 2d4acc5..43c5e3b 100644 (file)
@@ -26,7 +26,7 @@
 /**
  * Constructor
  */
-SNMP_ProxyTransport::SNMP_ProxyTransport(AgentConnection *conn, const InetAddress& ipAddr, WORD port)
+SNMP_ProxyTransport::SNMP_ProxyTransport(AgentConnection *conn, const InetAddress& ipAddr, UINT16 port)
 {
    m_reliable = true;   // no need for retries on server side, agent will do retry if needed
        m_agentConnection = conn;
@@ -129,3 +129,19 @@ InetAddress SNMP_ProxyTransport::getPeerIpAddress()
 {
    return m_ipAddr;
 }
+
+/**
+ * Get port number
+ */
+UINT16 SNMP_ProxyTransport::getPort()
+{
+   return m_port;
+}
+
+/**
+ * Check if this transport is a proxy transport
+ */
+bool SNMP_ProxyTransport::isProxyTransport()
+{
+   return true;
+}
index c62f63a..ef82ea3 100644 (file)
@@ -526,3 +526,19 @@ InetAddress SNMP_UDPTransport::getPeerIpAddress()
 {
    return InetAddress::createFromSockaddr((struct sockaddr *)&m_peerAddr);
 }
+
+/**
+ * Get port number
+ */
+UINT16 SNMP_UDPTransport::getPort()
+{
+   return m_port;
+}
+
+/**
+ * Check if transport is a proxy transport
+ */
+bool SNMP_UDPTransport::isProxyTransport()
+{
+   return false;
+}