MIB Smithy 4.1.4 Release
MIB Smithy 4.1.4 is now available for download. This release fixes the following bugs in the workspaces for AGENT-CAPABILITIES SUPPORTS and MODULE-COMPLIANCE MODULE clauses:
1668: Error editing AGENT-CAPABILITIES modules
A ‘can’t read “window(groups)”: no such element in array’ error would occur when opening the workspace for AGENT-CAPABILITIES modules.
1670: Some combobox lists not updated with record name change
Some comboboxes for selecting available records in a module to be added as a group or variation in AGENT-CAPABILITIES and MODULE-COMPLIANCE statements were not being automatically repopulated when the name of the module (referenced by the SUPPORTS or MODULE clause) was changed, instead requiring the workspace to be reopened or reverted to get an updated list.
1669: Combobox for VARIATION, GROUP clauses populated from wrong module
Some comboboxes for selecting available records in a module to be added as a group or variation in AGENT-CAPABILITIES and MODULE-COMPLIANCE statements were being populated from the module in which the conformance statement was defined, rather from than the module referenced by the statement’s SUPPORTS or MODULE clause.
Muonics on Facebook
Muonics now has a presence on Facebook! If you’re a Facebook user, please consider becoming a fan of the page(s) that interest you. You can show your support for Muonics and our products and subscribe to news and articles as an alternative to subscribing directly to the Muonics blog.
You can find separate fan pages for MIB Smithy, MIB Smithy SDK, and MIB Views if you’d like to receive updates and join the community just for those products, or the Muonics, Inc. page with a consolidated view of them all and other more general features.
They’ve just been set up today so there might not be a lot there yet, but we do hope you’ll join us.
[Editor’s Note: In theory, this blog post should also serve as a test to verify the RSS-to-Wall automation is working. :)]
MIB Smithy 4.1.3, SDK 3.4.7, MIB Views 1.4.3 Releases
I guess I jumped the gun a little bit in stating that the previous releases would likely be the last based on the MIB Smithy SDK 3.4 branch, prior to releasing SDK 4.0. The main reason for the previous releases was to fix case 1406 (circular type references cause crash), which was discovered while creating regression tests for SDK 4.0. I’d not yet finished all the regression tests for SYNTAX validation, so it slipped by that the fix for case 1406 also caused some SYNTAX validation steps to be bypassed (shame on me).
The problem was discovered while finishing those regression tests, and this release restores the bypassed validation steps. While I was at it, I thought I’d back-port fixes for a few other validation bugs also uncovered while preparing the regression tests.
Changes in these releases:
1478: Fix for case 1406 caused some syntax checks to be bypassed
The fix for case 1406, which resolved an issue with circular type references, inadvertently blocked base type resolution in some cases, causing some syntax-related checks to be bypassed.
1479: Special cases for ExtUTCTime, ObjectName, and NotificationName
Errors regarding the disallowed importing of ExtUTCTime, ObjectName, and NotificationName (internal to SNMPv2-SMI) are now suppressed when validating the COPS-PR-SPPI or SNMPv2-CONF base modules.
1480: MODULE-IDENTITY required in PIB modules
As with SMIv2, an error message will now be produced for COPS-PR-SPPI (PIB) modules lacking a MODULE-IDENTITY statement.
1481: MAX-ACCESS read-write not allowed for Counter types
SMIv2 requires Counter32 and Counter64 OBJECT-TYPEs to have MAX-ACCESS read-only or accessible-for-notify. The error message indicated this properly, but the actual check was instead allowing read-only or read-write.
1483: Inverted check for SMIv2 INDEX object accessibility
A warning intended to be produced for INDEX OBJECT-TYPEs with MAX-ACCESS other than not-accessible was instead produced for every version except SMIv2. This has been corrected, and it will also now be suppressed for indexes from other tables.
1484: Duplicate warning message for empty PRODUCT-RELEASE field
Two separate warnings were being produced for an empty PRODUCT-RELEASE field in AGENT-CAPABILITIES validation. The duplicate warning has been removed.
An Ironic Argument for Using MIB Smithy
I must admit I’ve been sadly lax in getting this blog rolling for articles and things other than announcements. I had a plan in mind of some topics I wanted to start out with, but you know what they say about the best laid plans. I’d been collecting topics for a while but intended to stick with the plan for starting out. Well, priorities shift often, and nearly two years later (!) I still hadn’t started. Sometimes topics would come up that I wanted to write about when they were timely, but by the time I’d get to it they wouldn’t be anymore. So I made it one of my New Year’s Resolutions this year to forget The Plan, which by now was getting in the way, and Just Do It. It’s with this in mind that I just had to share this little tale of current projects, and why you need MIB Smithy if you’re a MIB author.
MIB Smithy, as you may be aware, is our editor/compiler environment for SNMP MIBs. My goal in creating the product was to make it as easy as possible for novices to write MIBs, but thorough enough in checking and enforcing standards compliance and compatibility with other compilers that even staunch experts and purists, who wrote MIBs using text editors and command-line tools, to use. Such a tool would save developers a great deal of time and money through a little form-filling and point-and-click action to quickly generate fully standards-compliant MIBs rather than through manual editing and worrying about silly things like missing a comma or curly brace.
In this regard, I believe I succeeded in my goal, though I’m always looking for ways to improve upon it. There are over 650 validation checks based on calls to generate compiler messages alone, which doesn’t account for checks handled by a single function applied in multiple places (like all the checks done on all OIDs). I’m a fan of eating out own dog food, so when consulting clients ask me to design and implement MIBs for them, I use MIB Smithy myself to do so and save weeks of development time in the process, translating to less billable time for the client. I like to believe using MIB Smithy saves our users similar time and costs whenever they use it, allowing the software to quickly pay for itself many times over.
Flash back to 2001 for a moment when I started writing the software, with the core in C++ and GUI in Tcl/Tk. The standards compliance of C++ compilers, particularly Visual C++ 6.0, were abysmal. Much of the architecture of the C++ portion needed to be based on partially reinvented wheels because one couldn’t rely on a simple thing like a standard string class being portable between platforms and compilers, and I design for cross-platform support as a rule. As time went on, the “partially” aspect became more and more of an obstacle to implementing various plans for the product, much as the compilers once were.
C++ standards compliance in g++ and Visual C++ have both come a long way since then, as have open source cross-platform libraries for previously tedious things to implement. For the 4.0 SDK development branch, I decided it was time to uplift, refactor, and simplify the code to get rid of the maintenance cost of those tired old wheels. That was a rather large undertaking itself due to how deep and interconnected the dependencies ran. Unfortunately, back in 2001, I hadn’t yet picked up the habit of test driven development, which is the idea that you write unit tests before (or in parallel with) with the code you’re testing. I did later, which means there are a lot of automated regression tests for things like SDK APIs that came later, but there weren’t for core functionality like the MIB parser and validator, originally tested manually, that haven’t changed much–exactly the places with the most code changes now.
Recognizing the need to thoroughly check for regression issues before releasing the 4.0 SDK branch, I hired someone to tackle regression test automation for the parser (about 450 tests there), and I’m currently working on tests for those 650++ checks our compiler does. That means, essentially (and tediously), writing about 650 small MIB modules, by hand, intentionally broken in various ways that the MIB Smithy editor won’t let you (or will only let you because sometimes you need break something temporarily to remove a dependency or change a design). Therein lies the irony.
As a side benefit, I have in a few instances discovered some previously unknown bugs in the current stable branch and been able to fix them. But boy do I wish I could be eating our dog food right now. Don’t you? Why don’t you give MIB Smithy a try?
MIB Smithy 4.1.2, SDK 3.4.6, MIB Views 1.4.2 Releases
MIB Smithy 4.1.2, MIB Smithy SDK 3.4.6, and MIB Views 1.4.2 are now available for download, with essentially the same bug fixes in each. These will most likely be the last releases based on the SDK 3.4 development branch, as we’re finally getting close to having the SDK 4.0 development branch in a releasable state. Since it’s taken an unusually long time to release 4.0 branch and there are some potential compatibility issues you’ll need to be aware of, as well as new features affecting all three of these products, I’ll talk a bit more about it in a post to follow shortly.
Changes affecting MIB Smithy, MIB Smithy SDK, and MIB Views:
305: Host ID not matched when interface is disconnected
Windows interfaces that were disconnected were not recognized by the license manager, requiring laptop users to have to swap license keys depending on whether they were on wired or wireless. This is is no longer necessary, as the interfaces are seen whether connected or not.
727: Clarify “trailing hyphens will be stripped” error
The parser message produced for identifiers with illegal trailing hyphens was stripping the hyphen in the error message (indicating the corrected identifier was invalid) yet not automatically correcting the error as it should.
1368: Windows: IPv6-only interface Host IDs not available
Windows interfaces configured to support only IPv6 could not previously be used for licenses keys, but can now.
1406: Circular type references cause crash
A type definition derived from another type definition, which is derived from the first type definition, would lead to a crash due to infinite recursion. (Note: TEXTUAL- CONVENTIONs cannot legally derive from other TEXTUAL-CONVENTIONs.)
Additional changes affecting MIB Smithy SDK:
312: Changing IPs with SNMPv3 loses auth/priv state
Changing the target IP address of an existing SNMPv3 auth/priv session without also setting the auth/priv password did not sufficiently prepare the session to localize keys with the next request, causing the session to switch to no-auth/no-priv.
1354: Timeout of Tnm-style async requests causes error with future request
Upon timeout of a Tnm-style async request, the callback was being invoked using non- Tnm style arguments, which would typically cause an error, when it should not be invoked at all.