📄 changes_agent++v3.txt
字号:
change the RowStatus of a row is processed, all other variable bindings are collected, that will affect the row. As with version 3.4.1 of AGENT++ the position of the vb with the RowStatus value does not matter any more! Before a new row is added to the table, all values written by the creating SET request are checked by calling prepare_set_request of the set columns. After the preparation the cleanup_set_request method is called. Please note, that the prepare_set_request method can be called twice for a subrequest, however the cleanup_set_request method will then be called twice too. * Changed: (mib.[h|cpp]): MibTable::check_creation now takes a second parameter which returns the SNMP error status, if the creation fails.* Fixed: (mib.cpp): Persistent storage of tables with more than 65535 bytes. Note that SNMP++v3.0h or later is required to store such tables successfully.* Fixed: (v3_mib.cpp): RowStatus state changes. Table constructors. Added value checking for usmUserAuthProtocol and usmUserPrivProtocol.* Fixed: (vacm.cpp): RowStatus state changes. Table constructors. Added TestAndIncr objects.* Fixed: (snmp_textual_conventions.[h|cpp]): SnmpAdminString when used in tables did not check boundaries. The min and max members of OctetStrMinMax had to be changed to be protected instead of private for that reason.* Fixed: (snmp_target_mib.[h|cpp]): Setting TDomain and TAddress in the same PDU for a new row caused a wrong value error.* Fixed: (request.cpp): Incremented InvalidMsg counter instead ASN1ParseErrors counter for some types of invalid PDUs.* Added: (snmp_textual_conventions.cpp): Added definition of oidSnmpSetSerialNo, which can be used in conjunction with the TestAndIncr class to implement the snmpSetSerialNo managed object (see atm_mib example). Version 3.4p: CHANGES since Version 3.4o=========================================* Fixed: (mib.cpp): MibTable::is_index_valid did not reject too short indexes correctly.* Fixed: (mib.cpp): MibTable::commit_set_request did call MibTable::set_value more than once for each set column. Thus, events also were triggered more than once.Version 3.4o: CHANGES since Version 3.4n=========================================* Fixed: VacmViewTreeFamilyTable did not update index cache when loading rows from persistent storage. Thus, now the whole VACM can be stored persistently.* Fixed: SNMPv3 inform requests did not make engineID discovery.* Added: Mib::save_all() saves all persistent MIB objects to disk.Version 3.4n: CHANGES since Version 3.4m=========================================* Fixed: NotificationOriginator did not send v3 traps.Version 3.4m: CHANGES since Version 3.4l=========================================* Fixed: MibTable::get_next_avail_index returned wrong index when table was empty.* Fixed: GETBULK in some cases did not process last repetition correctly. This affects AgentX++ when processing GETBULK requests with more than one repeated variable bindings. To fix this with older versions of AGENT++ remove line 3482 in mib.cpp: "req->dec_outstanding();"* Fixed: GETBULK with zero repetitions failed with AgentX++. Insert the following line into mib.cpp at line 3427: // If no repetetions, then do not wait for them if (maxrep == 0) req->dec_outstanding();* Fixed: GETBULK: If the non-repeater value was less than the given variable bindings and max_repetitions was zero than AgentX++ was not able process the request correctly. To Fix this, move assignment outstanding = size; in request.cpp line 161 below the following if statement. Version 3.4l: CHANGES since Version 3.4k=========================================* Fixed: MibTable::is_index_valid did not check correctly for invalid non-implied length octet strings.* Fixed: MibTable::get_rows() did not return a pointer to a list and thus did not work properly.* Added: MibTable::rows() returns a pointer to the internal list of the table rows. This is a direct and fast way to access the rows of a table.Version 3.4k: CHANGES since Version 3.4j=========================================* Added: Support for dynamic tables. Although dynamic tables could be implemented with previous versions of AGENT++, it was not clear which methods needed to be be overriden. Now there is a single method which can do the job. The MibTable::update(Request*) method triggers a table to be updated before a (sub-)request is processed on it. * Added: Dynamic table example.* Changed: Mib::find_managing_object now takes a fourth argument: the pointer to the request that is searching. * Fixed: NotificationOriginator::add_v1_trap_destination did not accept a second target entry.Version 3.4j: CHANGES since Version 3.4i=========================================* Fixed: Memory leaks in USM (v3_mib.cpp)* Fixed: Row creation via RowStatus object using createAndGo allowed writing of read-only columnar objects.* Fixed: RowStatus did not allow to set its value to the current value again.* Fixed: OrderedList::index(T* t) returned 0 instead of -1 if t had not been part of the list.* Fixed: If the UNDO of a row deletion failed, then a row with the same index could not have been created afterwards.* Fixed: snmpRowStatus::check_state_change(). If a row was deleted with rowDestroy and another value of that row was set in the same PDU afterwards, check_state_change() returned no error.* Renamed class Log to AgentLog.Version 3.4i: CHANGES since Version 3.4h=========================================* Fixed: The SNMP counters InPackets, BadCommunityNames, and InASNParseErrs did not count correctly.* Changed examples and AgentGen templates to send coldStart trap even if _SNMPv3 is not defined.* Fixed: Authentication failure trap was not send if _SNMPv3 had been undefined.Version 3.4h: CHANGES since Version 3.4g=========================================* Fixed: GETBULK processing without _SNMPv3 defined caused deadlock on end of mib view. * Changed AgentGen Ready2Compile templates.* Added: Not-accessible MibLeaf objects cannot be added to MibGroup neither to Mib instances.Version 3.4g: CHANGES since Version 3.4f=========================================* Added MibGroup::remove method to remove objects from a group. Note: In order to unregister a MibEntry object, after having registered the group it belongs to, it will have to be removed from the corresponding Mib instance too.* Added Mib::add_context and Mib::remove_context methods to add and remove contexts from a Mib instance. Note: If you add a context to a Mib you also should add the appropriate entries into the VACM, in order to be able to access objects within that context. Version 3.4f: CHANGES since Version 3.4e=========================================* Fixed: Unclosed LOG_BEGIN LOG_END in MibProxyV3.* Changed logging macros to open their own scope, which helps detecting unclosed LOGS.* Fixed: Added bound checks to Log::set_filter. Version 3.4e: CHANGES since Version 3.4d=========================================* Fixed: If length of a BER encoded response will exceed the MAX_SNMP_PACKET value a response with error status of tooBig is returned.* Added agentgen directory with Makefiles and sample agent main routine, that can be used with the AgentGen Professional ready2compile code generation function to create a compilable agent without editing any code.Version 3.4d: CHANGES since Version 3.4c=========================================* Updated the examples according to the changed engine boots counter handling in SNMP++v3.0d* Fixed: Compilation error with VC++ 6.0 on NT when compiling without _SNMPv3 defined (Mib::process_get_bulk_request).Version 3.4c: CHANGES since Version 3.4b=========================================* Fixed EndOfMibView exception reporting for GETBULK requests. It Did not return the request oid in the exception variable binding, instead it returned the last found oid.* Fixed compilation errors without _THREADS defined in agent++.h.Version 3.4b: CHANGES since Version 3.4a=========================================* Added two objects to the AGENTPP-SIMULATION-MIB. Those objects make it possible to delete rows from tables of a simulation agent using SNMP. You can add those objects to your simulation agent by adding a agentpp_simulation_mib MibGroup to your Mib that is constructed by using the new constructor agentpp_simulation_mib(Mib*). * Fixed: MibTable::remove_unused_rows removed wrong rows which could have caused a segmentation fault.* Changed NotificationOriginator class in several ways: - Now also available without _SNMPv3. - Fixed v3 traps. - Uses SNMP-COMMUNITY-MIB (if present) to determine the community for SNMPv1/v2c traps from the securityName stored in snmpTargetParamsSecurityName.* Fixed: SnmpTagValue did not accept empty tag strings.* Made find_managing_object() and find_next() methods of class Mib public.Version 3.4a: CHANGES since Version 3.4========================================* Changed multi-threading support for NT from MFC threads to WIN32 threads.* Updated Makefile.nt (although the use of VC++ projects is recommended).Version 3.4: CHANGES since Version 3.3b========================================* Added multi-threading support for NT.* Fixed: The NotificationOriginator class now supports v3 traps and iforms too.* Changed locking of log messages. * Added MibComplexEntry, MibStaticTable, and MibStaticEntry classes. They can be used to implement light weight tables or tables which access their management information using proprietary communication protocols (other than AgentX). An example which shows the usage of MibStaticTable had been added too.* Added the tool "agent_copy" which can be used to take a snap shot from an existing (real) agent and initialize an AGENT++ simulation agent with this data. * Changed persistency concept. Now each MibGroup instance is responsible for making objects persistent. All objects of a group are now stored in a single file whose name is determined by the second (new) parameter of the MibGroup constructor and the file's extension is the context the group is part of. If a MibGroup is created using only one paramter all its objects are volatile.* Removed snmpUnavailableContexts and snmpUnknownContexts from snmp_target_mib. Is already implemented in vacm.* Removed snmp_mpd_mib.*. The MPD group is now part of the USM (v3_mib.*).* Added the simSysGroup which is similar to sysGroup, except that sysDescr, sysObjectID, and sysServices are writable when the agentppSimMode is set to config(2).* Fixed: snmpEnableAuthenTraps.* Changed Log::set_filter to use the log classes directly. DEBUG_LOG_IND and all other *_IND log definitions are no longer defined in log.h. Use DEBUG_LOG, etc. instead.* Centralized answering of requests in Mib::finalize(). Changed the default values for the "answer" parameter of RequestList::error(..) and RequestList::done(..) to FALSE accordingly. Requests are now answered by Mib::finalize() only.* Added default constructor to class Vacm.* Fixed: Calling Request::position caused segmentation fault. (Fortunately, never called from within AGENT++v3.3x)* Fixed: MibProxy: if two or more consecutive MibProxy registrations were empty, then the agent would have been returning END_OF_MIBVIEW, although a third MibEntry would have been available. * Fixed: ~Mib() did not acquire all locks (mib_lock() and start_synch() of deleted mib entries).* Fixed: Mib::process_set_request did not call Mib::process_cleanup_set_request if prepare faild.* Fixed: Mib::add as well as MibContext::add detect duplicate registrations. * Fixed: A failed commit for a MibLeaf scalar object did not
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -