added driver for IgniteNet devices
authorVictor Kirhenshtein <victor@netxms.org>
Wed, 19 Apr 2017 12:29:26 +0000 (15:29 +0300)
committerVictor Kirhenshtein <victor@netxms.org>
Wed, 19 Apr 2017 12:40:34 +0000 (15:40 +0300)
configure.ac
src/server/drivers/Makefile.am
src/server/drivers/Makefile.w32
src/server/drivers/ignitenet/.cproject [new file with mode: 0644]
src/server/drivers/ignitenet/.project [new file with mode: 0644]
src/server/drivers/ignitenet/.settings/language.settings.xml [new file with mode: 0644]
src/server/drivers/ignitenet/Makefile.am [new file with mode: 0644]
src/server/drivers/ignitenet/Makefile.w32 [new file with mode: 0644]
src/server/drivers/ignitenet/ignitenet.cpp [new file with mode: 0644]
src/server/drivers/ignitenet/ignitenet.h [new file with mode: 0644]
src/server/libnxsrv/ndd.cpp

index 2ba6350..2fd0d4f 100644 (file)
@@ -3476,6 +3476,7 @@ AC_CONFIG_FILES([
        src/server/drivers/extreme/Makefile
        src/server/drivers/h3c/Makefile
        src/server/drivers/hpsw/Makefile
+       src/server/drivers/ignitenet/Makefile
        src/server/drivers/juniper/Makefile
        src/server/drivers/lib/Makefile
        src/server/drivers/lib/avaya-ers/Makefile
index fb7f47c..063fb8b 100644 (file)
@@ -9,7 +9,7 @@
 # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
 SUBDIRS = lib airespace at baystack cat2900xl catalyst cisco-esw cisco-sb \
-         dell-pwc dlink ers8000 extreme h3c hpsw juniper mikrotik netscreen \
-         ntws ping3 procurve qtech-olt symbol-ws tb ubnt
+         dell-pwc dlink ers8000 extreme h3c hpsw ignitenet juniper mikrotik \
+         netscreen ntws ping3 procurve qtech-olt symbol-ws tb ubnt
 
 EXTRA_DIST = Makefile.w32
index 8cd99cc..a8012ff 100644 (file)
@@ -1,4 +1,4 @@
 SUBDIRS = lib airespace at baystack cat2900xl catalyst cisco-esw cisco-sb \
-       dell-pwc dlink ers8000 extreme h3c juniper
+       dell-pwc dlink ers8000 extreme h3c ignitenet juniper
 
 include ..\..\..\Makefile.inc.w32
diff --git a/src/server/drivers/ignitenet/.cproject b/src/server/drivers/ignitenet/.cproject
new file mode 100644 (file)
index 0000000..bf9198a
--- /dev/null
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+       <storageModule moduleId="org.eclipse.cdt.core.settings">
+               <cconfiguration id="cdt.managedbuild.toolchain.gnu.base.1624734377">
+                       <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.toolchain.gnu.base.1624734377" moduleId="org.eclipse.cdt.core.settings" name="Default">
+                               <externalSettings/>
+                               <extensions>
+                                       <extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                                       <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                               </extensions>
+                       </storageModule>
+                       <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+                               <configuration artifactName="${ProjName}" buildProperties="" description="" id="cdt.managedbuild.toolchain.gnu.base.1624734377" name="Default" parent="org.eclipse.cdt.build.core.emptycfg">
+                                       <folderInfo id="cdt.managedbuild.toolchain.gnu.base.1624734377.447133296" name="/" resourcePath="">
+                                               <toolChain id="cdt.managedbuild.toolchain.gnu.base.1068246843" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.base">
+                                                       <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.GNU_ELF" id="cdt.managedbuild.target.gnu.platform.base.2090915196" name="Debug Platform" osList="linux,hpux,aix,qnx" superClass="cdt.managedbuild.target.gnu.platform.base"/>
+                                                       <builder id="cdt.managedbuild.target.gnu.builder.base.1469372442" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="cdt.managedbuild.target.gnu.builder.base"/>
+                                                       <tool id="cdt.managedbuild.tool.gnu.archiver.base.445195196" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
+                                                       <tool id="cdt.managedbuild.tool.gnu.cpp.compiler.base.745986247" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.base">
+                                                               <option id="gnu.cpp.compiler.option.include.paths.120264041" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${NETXMS_BASE}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${NETXMS_BASE}/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${NETXMS_BASE}/src/server/include&quot;"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.compiler.option.preprocessor.def.1312004460" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
+                                                                       <listOptionValue builtIn="false" value="_THREAD_SAFE"/>
+                                                                       <listOptionValue builtIn="false" value="TRE_WCHAR=1"/>
+                                                                       <listOptionValue builtIn="false" value="UNICODE"/>
+                                                                       <listOptionValue builtIn="false" value="_GNU_SOURCE"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1068439969" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+                                                       </tool>
+                                                       <tool id="cdt.managedbuild.tool.gnu.c.compiler.base.1284670000" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.base">
+                                                               <option id="gnu.c.compiler.option.include.paths.977101825" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${NETXMS_BASE}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${NETXMS_BASE}/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${NETXMS_BASE}/src/server/include&quot;"/>
+                                                               </option>
+                                                               <option id="gnu.c.compiler.option.preprocessor.def.symbols.1650063984" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols">
+                                                                       <listOptionValue builtIn="false" value="_THREAD_SAFE"/>
+                                                                       <listOptionValue builtIn="false" value="TRE_WCHAR=1"/>
+                                                                       <listOptionValue builtIn="false" value="UNICODE"/>
+                                                                       <listOptionValue builtIn="false" value="_GNU_SOURCE"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.311681870" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+                                                       </tool>
+                                                       <tool id="cdt.managedbuild.tool.gnu.c.linker.base.1744112741" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.base"/>
+                                                       <tool id="cdt.managedbuild.tool.gnu.cpp.linker.base.1489098621" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.base">
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.2040117986" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+                                                                       <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+                                                                       <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+                                                               </inputType>
+                                                       </tool>
+                                                       <tool id="cdt.managedbuild.tool.gnu.assembler.base.1923123696" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.base">
+                                                               <option id="gnu.both.asm.option.include.paths.2074108335" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${NETXMS_BASE}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${NETXMS_BASE}/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${NETXMS_BASE}/src/server/include&quot;"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.assembler.input.393621359" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+                                                       </tool>
+                                               </toolChain>
+                                       </folderInfo>
+                               </configuration>
+                       </storageModule>
+                       <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+               </cconfiguration>
+       </storageModule>
+       <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+               <project id="ignitenet.null.633876543" name="ignitenet"/>
+       </storageModule>
+       <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
+       <storageModule moduleId="refreshScope"/>
+       <storageModule moduleId="scannerConfiguration">
+               <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+               <scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.base.1624734377;cdt.managedbuild.toolchain.gnu.base.1624734377.447133296;cdt.managedbuild.tool.gnu.c.compiler.base.1284670000;cdt.managedbuild.tool.gnu.c.compiler.input.311681870">
+                       <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+               </scannerConfigBuildInfo>
+               <scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.base.1624734377;cdt.managedbuild.toolchain.gnu.base.1624734377.447133296;cdt.managedbuild.tool.gnu.cpp.compiler.base.745986247;cdt.managedbuild.tool.gnu.cpp.compiler.input.1068439969">
+                       <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+               </scannerConfigBuildInfo>
+       </storageModule>
+</cproject>
diff --git a/src/server/drivers/ignitenet/.project b/src/server/drivers/ignitenet/.project
new file mode 100644 (file)
index 0000000..31f7cfe
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+       <name>ignitenet</name>
+       <comment></comment>
+       <projects>
+               <project>libnetxms</project>
+               <project>libnxsnmp</project>
+               <project>libnxsrv</project>
+       </projects>
+       <buildSpec>
+               <buildCommand>
+                       <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+                       <triggers>clean,full,incremental,</triggers>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+                       <triggers>full,incremental,</triggers>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+       </buildSpec>
+       <natures>
+               <nature>org.eclipse.cdt.core.cnature</nature>
+               <nature>org.eclipse.cdt.core.ccnature</nature>
+               <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+               <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+       </natures>
+</projectDescription>
diff --git a/src/server/drivers/ignitenet/.settings/language.settings.xml b/src/server/drivers/ignitenet/.settings/language.settings.xml
new file mode 100644 (file)
index 0000000..fb95aec
--- /dev/null
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<project>
+       <configuration id="cdt.managedbuild.toolchain.gnu.base.1624734377" name="Default">
+               <extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
+                       <provider class="org.eclipse.cdt.core.language.settings.providers.LanguageSettingsGenericProvider" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider" name="CDT User Setting Entries" prefer-non-shared="true"/>
+                       <provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
+                       <provider copy-of="extension" id="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser"/>
+                       <provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="1092834717854559371" id="org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
+                               <language-scope id="org.eclipse.cdt.core.gcc"/>
+                               <language-scope id="org.eclipse.cdt.core.g++"/>
+                       </provider>
+                       <provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
+               </extension>
+       </configuration>
+</project>
diff --git a/src/server/drivers/ignitenet/Makefile.am b/src/server/drivers/ignitenet/Makefile.am
new file mode 100644 (file)
index 0000000..cba3078
--- /dev/null
@@ -0,0 +1,20 @@
+DRIVER = ignitenet
+
+pkglib_LTLIBRARIES = ignitenet.la
+ignitenet_la_SOURCES = ignitenet.cpp
+ignitenet_la_CPPFLAGS=-I@top_srcdir@/include -I@top_srcdir@/src/server/include
+ignitenet_la_LDFLAGS = -module -avoid-version
+ignitenet_la_LIBADD = ../../../libnetxms/libnetxms.la \
+                     ../../../snmp/libnxsnmp/libnxsnmp.la \
+                     ../../libnxsrv/libnxsrv.la
+
+EXTRA_DIST = \ 
+       ignitenet.vcproj \
+       ignitenet.h \
+       Makefile.w32
+
+install-exec-hook:
+       if test "x`uname -s`" = "xAIX" ; then OBJECT_MODE=@OBJECT_MODE@ $(AR) x $(DESTDIR)$(pkglibdir)/$(DRIVER).a $(DESTDIR)$(pkglibdir)/$(DRIVER)@SHLIB_SUFFIX@ ; rm -f $(DESTDIR)$(pkglibdir)/$(DRIVER).a ; fi
+       mkdir -p $(DESTDIR)$(pkglibdir)/ndd
+       mv -f $(DESTDIR)$(pkglibdir)/$(DRIVER)@SHLIB_SUFFIX@ $(DESTDIR)$(pkglibdir)/ndd/$(DRIVER).ndd
+       rm -f $(DESTDIR)$(pkglibdir)/$(DRIVER).la
diff --git a/src/server/drivers/ignitenet/Makefile.w32 b/src/server/drivers/ignitenet/Makefile.w32
new file mode 100644 (file)
index 0000000..9d12c04
--- /dev/null
@@ -0,0 +1,8 @@
+TARGET = ignitenet.ndd
+TYPE = ndd
+COMPONENT = server
+SOURCES = ignitenet.cpp
+
+LIBS = libnxsrv.lib libnxsnmp.lib libnetxms.lib ws2_32.lib
+         
+include ..\..\..\..\Makefile.inc.w32
diff --git a/src/server/drivers/ignitenet/ignitenet.cpp b/src/server/drivers/ignitenet/ignitenet.cpp
new file mode 100644 (file)
index 0000000..5a5caf4
--- /dev/null
@@ -0,0 +1,155 @@
+/* 
+** NetXMS - Network Management System
+** Driver for IgniteNet devices
+** Copyright (C) 2003-2017 Raden Solutions
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU Lesser General Public License as published by
+** the Free Software Foundation; either version 3 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU Lesser General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+**
+** File: ignitenet.cpp
+**/
+
+#include "ignitenet.h"
+
+/**
+ * Driver name
+ */
+static TCHAR s_driverName[] = _T("IGNITENET");
+
+/**
+ * Driver version
+ */
+static TCHAR s_driverVersion[] = NETXMS_VERSION_STRING;
+
+/**
+ * Get driver name
+ */
+const TCHAR *IgniteNetDriver::getName()
+{
+       return s_driverName;
+}
+
+/**
+ * Get driver version
+ */
+const TCHAR *IgniteNetDriver::getVersion()
+{
+       return s_driverVersion;
+}
+
+/**
+ * Check if given device can be potentially supported by driver
+ *
+ * @param oid Device OID
+ */
+int IgniteNetDriver::isPotentialDevice(const TCHAR *oid)
+{
+       return !_tcscmp(oid, _T(".1.3.6.1.4.1.47307")) ? 254 : 0;
+}
+
+/**
+ * Check if given device is supported by driver
+ *
+ * @param snmp SNMP transport
+ * @param oid Device OID
+ */
+bool IgniteNetDriver::isDeviceSupported(SNMP_Transport *snmp, const TCHAR *oid)
+{
+       return true;
+}
+
+/**
+ * Get interface state. Both states must be set to UNKNOWN if cannot be read from device.
+ *
+ * @param snmp SNMP transport
+ * @param attributes node's custom attributes
+ * @param driverData driver's data
+ * @param ifIndex interface index
+ * @param adminState OUT: interface administrative state
+ * @param operState OUT: interface operational state
+ */
+void IgniteNetDriver::getInterfaceState(SNMP_Transport *snmp, StringMap *attributes, DriverData *driverData, UINT32 ifIndex,
+                                        int ifTableSuffixLen, UINT32 *ifTableSuffix, InterfaceAdminState *adminState, InterfaceOperState *operState)
+{
+   UINT32 state = 0;
+   TCHAR oid[256], suffix[128];
+   if (ifTableSuffixLen > 0)
+      _sntprintf(oid, 256, _T(".1.3.6.1.2.1.2.2.1.7%s"), SNMPConvertOIDToText(ifTableSuffixLen, ifTableSuffix, suffix, 128)); // Interface administrative state
+   else
+      _sntprintf(oid, 256, _T(".1.3.6.1.2.1.2.2.1.7.%d"), (int)ifIndex); // Interface administrative state
+   SnmpGet(snmp->getSnmpVersion(), snmp, oid, NULL, 0, &state, sizeof(UINT32), 0);
+
+   // IgniteNet devices may not support interface administrative state reading through SNMP
+   // Assume interface administratively UP
+   if (state == 0)
+      state = 1;
+
+   switch(state)
+   {
+      case 2:
+         *adminState = IF_ADMIN_STATE_DOWN;
+         *operState = IF_OPER_STATE_DOWN;
+         break;
+      case 1:
+      case 3:
+         *adminState = (InterfaceAdminState)state;
+         // Get interface operational state
+         state = 0;
+         if (ifTableSuffixLen > 0)
+            _sntprintf(oid, 256, _T(".1.3.6.1.2.1.2.2.1.8%s"), SNMPConvertOIDToText(ifTableSuffixLen, ifTableSuffix, suffix, 128));
+         else
+            _sntprintf(oid, 256, _T(".1.3.6.1.2.1.2.2.1.8.%d"), (int)ifIndex);
+         SnmpGet(snmp->getSnmpVersion(), snmp, oid, NULL, 0, &state, sizeof(UINT32), 0);
+         switch(state)
+         {
+            case 3:
+               *operState = IF_OPER_STATE_TESTING;
+               break;
+            case 2:  // down: interface is down
+            case 7:  // lowerLayerDown: down due to state of lower-layer interface(s)
+               *operState = IF_OPER_STATE_DOWN;
+               break;
+            case 1:
+               *operState = IF_OPER_STATE_UP;
+               break;
+            default:
+               *operState = IF_OPER_STATE_UNKNOWN;
+               break;
+         }
+         break;
+      default:
+         *adminState = IF_ADMIN_STATE_UNKNOWN;
+         *operState = IF_OPER_STATE_UNKNOWN;
+         break;
+   }
+}
+
+/**
+ * Driver entry point
+ */
+DECLARE_NDD_ENTRY_POINT(s_driverName, IgniteNetDriver);
+
+/**
+ * DLL entry point
+ */
+#ifdef _WIN32
+
+BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
+{
+       if (dwReason == DLL_PROCESS_ATTACH)
+               DisableThreadLibraryCalls(hInstance);
+       return TRUE;
+}
+
+#endif
diff --git a/src/server/drivers/ignitenet/ignitenet.h b/src/server/drivers/ignitenet/ignitenet.h
new file mode 100644 (file)
index 0000000..c7787c3
--- /dev/null
@@ -0,0 +1,45 @@
+/* 
+** NetXMS - Network Management System
+** Driver for IgniteNet devices
+** Copyright (C) 2003-2017 Raden Solutions
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+**
+** File: ignitenet.h
+**
+**/
+
+#ifndef _ignitenet_h_
+#define _ignitenet_h_
+
+#include <nddrv.h>
+
+
+/**
+ * Driver's class
+ */
+class IgniteNetDriver : public NetworkDeviceDriver
+{
+public:
+       virtual const TCHAR *getName();
+       virtual const TCHAR *getVersion();
+
+       virtual int isPotentialDevice(const TCHAR *oid);
+       virtual bool isDeviceSupported(SNMP_Transport *snmp, const TCHAR *oid);
+   virtual void getInterfaceState(SNMP_Transport *snmp, StringMap *attributes, DriverData *driverData, UINT32 ifIndex,
+                                  int ifTableSuffixLen, UINT32 *ifTableSuffix, InterfaceAdminState *adminState, InterfaceOperState *operState);
+};
+
+#endif
index a221918..93dc427 100644 (file)
@@ -537,7 +537,7 @@ InterfaceList *NetworkDeviceDriver::getInterfaces(SNMP_Transport *snmp, StringMa
 }
 
 /**
- * Get interface status. Both states must be set to UNKNOWN if cannot be read from device.
+ * Get interface state. Both states must be set to UNKNOWN if cannot be read from device.
  * 
  * @param snmp SNMP transport
  * @param attributes node's custom attributes