<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Muonics, Inc. &#187; MIB Smithy SDK</title>
	<atom:link href="http://www.muonics.com/blog/category/mib-smithy-sdk/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.muonics.com/blog</link>
	<description>News, articles, and information about Muonics products and network management.</description>
	<lastBuildDate>Tue, 02 Feb 2010 09:40:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>MIB Smithy SDK 4.0 Released</title>
		<link>http://www.muonics.com/blog/177/mib-smithy-sdk-4-0-released/</link>
		<comments>http://www.muonics.com/blog/177/mib-smithy-sdk-4-0-released/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 11:38:40 +0000</pubDate>
		<dc:creator>Michael Kirkham</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[MIB Smithy SDK]]></category>
		<category><![CDATA[ipv6]]></category>
		<category><![CDATA[snmp]]></category>
		<category><![CDATA[mibsmithysdk]]></category>
		<category><![CDATA[tcl]]></category>

		<guid isPermaLink="false">http://www.muonics.com/blog/?p=177</guid>
		<description><![CDATA[MIB Smithy SDK 4.0 is released at long last! This is a major release composed of significant architecture changes, new features, and assorted bug fixes. High level changes include IPv6 support, a new license key format that supports licensing based on user name (as an alternative to host-based licensing), many new validation rules and error [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.muonics.com/Products/MIBSmithySDK/">MIB Smithy SDK</a> 4.0 is released at long last! This is a major release composed of significant architecture changes, new features, and assorted bug fixes. High level changes include IPv6 support, a new license key format that supports licensing based on user name (as an alternative to host-based licensing), many new validation rules and error level adjustments, and better integration with Tcl&#8217;s own support for binary data, and platform changes.</p>
<p>As of 4.0, some older platform versions are no longer officially supported, but newer versions are:</p>
<table>
<tr>
<th>Platform</th>
<th>MIB Smithy SDK 3.4</th>
<th>MIB Smithy SDK 4.0+</th>
</tr>
<tr>
<td>Solaris SPARC</td>
<td>2.7+</td>
<td>10+</td>
</tr>
<tr>
<td>Linux x86</td>
<td>Red Hat 7.3/compatible</td>
<td>Fedora Core 7/compatible</td>
</tr>
<tr>
<td>Linux x86_64</td>
<td>none</td>
<td>Fedora Core 7/compatible</td>
</tr>
<tr>
<td>FreeBSD x86</td>
<td>4.3/compatible</td>
<td>6.2/compatible</td>
</tr>
<tr>
<td>Windows</td>
<td>no change</td>
<td>no change</td>
</tr>
<tr>
<td>Mac OS X</td>
<td>no change</td>
<td>no change</td>
</tr>
</table>
<p>This is not to say definitively that the SDK will not work with the older platforms, however, as it&#8217;s likely just a matter of having the appropriate dependencies installed (e.g. libstdc++). Rather, these are the platforms the releases are built on, and the older platforms have been (or will soon be) retired, so we won&#8217;t be able to guarantee support that far back anymore.</p>
<p>Some changes still need to be made to the web site to support Linux x86_64 and user-based licensing, and I&#8217;ll get to work on those right away. In the mean time, if you are interested in either of these, please contact support and we&#8217;ll get you squared away.</p>
<p>If you haven&#8217;t already, and you&#8217;re currently using an older version of the SDK, be sure to read my other post about <a href="http://www.muonics.com/blog/167/a-sneek-peek-at-mib-smithy-sdk-4-0/">potential compatibility issues posed by the binary data changes</a>.</p>
<h3>Changes in MIB Smithy SDK 4.0:</h3>
<p>As always, your feedback is important in determining changes and fixes that will be made in coming releases. If you have questions or comments, please don&#8217;t hesitate to contact us. The following changes have been made in this release:</p>
<p><strong>1359: New options for formatting OCTET STRINGs</strong></p>
<p>A new -strformat option was added to [smilib format] to enhance support for formatting OCTET STRINGs (now treated as byte arrays via APIs). The default, configurable for the database, is &#8220;1x:&#8221; for colon-delimited hex format.</p>
<p>[smilib format] also now allows specifying a type in lieu of record name or OID, e.g.:</p>
<p>% smilib format &#8220;OCTET STRING&#8221; foo<br />
66:6f:6f</p>
<p><strong>1658: Return indexparts for strings as byte arrays</strong></p>
<p>[smilib get -indexparts] will no longer return a custom hex format for OCTET STRING and BITS index data, but will instead return raw binary (via Tcl_NewByteArrayObj) to make it easier to work with data at the script level. Use [smilib format] to format data for display, which will use return a hex format in lieu of DISPLAY-HINT.</p>
<p><strong>362: Add Linux x86_64 platform support</strong></p>
<p>The Linux platform with x86_64 architecture is now supported.</p>
<p><strong>1836: Validation for COPS-PR-SPPI&#8217;s OBJECT-TYPE STATUS</strong></p>
<p>Validation rules were added for COPS-PR-SPPI&#8217;s OBJECT-TYPE STATUS field. Previously, values that are not allowed by COPS-PR-SPPI were not reported as errors the way values disallowed by other versions were.</p>
<p><strong>2160: Support multiple Host IDs in license key</strong></p>
<p>Certain users in the past have needed to swap license key files depending on which host they&#8217;re using. With the new license key format, we can provide these users with a single unified key if switching to user-based licensing is not appropriate for their needs.</p>
<p><strong>1707: Check for circular indexing dependencies</strong></p>
<p>Validation rules were added to recursively check through INDEX, AUGMENTS, EXTENDS, PIB-INDEX, and UNIQUENESS relationships to detect loops and improper table normalization (such as A EXTENDS B, B EXTENDS A; or A AUGMENTS B, but B&#8217;s INDEX lists columns from A).</p>
<p><strong>2161: Add support for username-based licensing</strong></p>
<p>A new license key format has been implemented that allows for licensing based on username, rather than on Host ID. Where host-based licenses allow any user on a specific host, username-based licenses allow a specific named user on any host. Existing users who purchased prior to this feature being available can request their license to be permanently converted to a username-based license at no charge provided their support contract is current.</p>
<p><strong>776: Relaxed rule for column syntax vs. row definition</strong></p>
<p>It is now a warning, rather than an error, for a column&#8217;s type in the SEQUENCE definition and the column&#8217;s OBJECT-TYPE to be different, provided the SEQUENCE uses the proper base type.</p>
<p><strong>699: Normalized filename properties</strong></p>
<p>The -filename property for SMI databases and file records is now normalized automatically when set to make its value invariant if the current directory is changed in the Tcl shell (or script) after assignment.</p>
<p><strong>1849: Message clarifications</strong></p>
<p>Many warning and error messages from the parser and validator were reworded (some slightly, some more) for clarification.</p>
<p><strong>1850: Auto-correct swapped subrange endpoints and doublets</strong></p>
<p>When validating size/range specs, swapped and duplicate endpoints in subranges are now automatically corrected after reporting the error. e.g., (3..2|5..5) becomes (2..3|5).</p>
<p><strong>304: Add IPv6 Support</strong></p>
<p>Communicating with SNMP agents over IPv6 is now supported. (Note: nmtrapd protocol doesn&#8217;t currently have a way to indicate an IPv6 source address for traps that aren&#8217;t received directly by the SDK, but there&#8217;s a plan in place to address this limitation.)</p>
<p><strong>1840: Clarify SMI version in error/warning messages</strong></p>
<p>Improved module SMI version detection for application of version-specific rules when imports are missing and changed most validation-stage messages to include the proper version string. (For example, COPS-PR-SPPI inherits most of its rules from SMIv2. Most of these messages previously mentioned SMIv2 even for PIB modules, but will now say COPS-PR-SPPI.)</p>
<p><strong>1837: Disallow non-attributes in COPS-PR-SPPI&#8217;s OBJECT-GROUP</strong></p>
<p>A validation rule was added to generate an error if an OBJECT-TYPE listed in a COPS-PR-SPPI OBJECT-GROUP is not an attribute OBJECT-TYPE.</p>
<p><strong>1895: Setting SMI database options at creation time</strong></p>
<p>The [smilib new] command, when used to create a new SMI database, can now accept options for setting the database properties the same way [snmplib new] can. Previously this required a separate [smilib set] call to set database properties, except when creating records in the database.</p>
<p><strong>1115: Allow named ports, in addition to numeric</strong></p>
<p>TCP ports for sending or receiving SNMP messages can now be specified by service name, rather than just numeric (e.g. &#8220;snmp&#8221; for port 161, if such a named entry is present in /etc/services).</p>
<p><strong>2185: INDEX/related lookup enhancements</strong></p>
<p>Added -extendsdecl, -pibindexdecl, -uniquedecl options to smilib get/set commands for OBJECT-TYPEs to function like -indexdecl and -augmentsdecl in returning the value directly defined in the record, while the old -extends and -pibindex options will return the value from the associated row.</p>
<p>The -index, -pibindex, -pibreferences, etc. options now trace AUGMENTS and EXTENDS to find the values inherited from augmented tables, rather than only looking one node up/down to find the row.</p>
<p>Also added -row and -table properties to return the record for the row or table OBJECT-TYPE associated with the specified OBJECT-TYPE (which could itself be a row, table, or column).</p>
<p><strong>1153: XMLSMI: relax parsing of unrecognized elements</strong></p>
<p>The XML parser now only generates a warning and treats as a successful parse (rather than an error and failed parse) when encountering tags that aren&#8217;t recognized. This should allow new tags to be added down the road, but still allow the file to load into versions back to 4.0.</p>
<p><strong>2184: Correct multiple INDEX/AUGMENTS/etc. at parse time</strong></p>
<p>The SMI parser previously recovered from having too many or out-of-order INDEX, AUGMENTS, etc. clauses by preserving them all and erroring at validation time, despite only having one legal value, which complicated validation and usage.  Instead of preserving them all, the parser now reports the extras as an error only at parse time and discards them, but still supports (and reports) recovery from ordering issues.</p>
<p><strong>1234: Provide socket errors as strings rather than numbers</strong></p>
<p>In a few cases, socket-related errors were provided just as an error number. They should all now give a more meaningful error message. Some of the existing messages have been further clarified.</p>
<p><strong>1871: Add checks for STATUS consistency</strong></p>
<p>Validation rules were added for checking consistency between related records and dependencies. An error or warning may be issued depending on the type of relation and difference (for example, it&#8217;s an error for a row and table to be different, but a warning for a &#8220;current&#8221; OBJECT-TYPE to use a &#8220;deprecated&#8221; TEXTUAL-CONVENTION).</p>
<p><strong>1830: VARIATIONs with DEFVAL and ACCESS not-implemented, accessible-for-notify</strong></p>
<p>A validation rule was added to issue a warning for a VARIATION having both a DEFVAL and ACCESS &#8216;not-implemented&#8217; or &#8216;accessible-for-notify&#8217; (the DEFVAL is superfluous).</p>
<p><strong>1702: Check for scalar objects with MAX-ACCESS not-accessible</strong></p>
<p>A validation rule was added to produce an error for a scalar SMIv2 OBJECT-TYPE having MAX-ACCESS &#8216;not-accessible&#8217;. If the object&#8217;s value is only available via notification, it should have MAX-ACCESS &#8216;accessible-for-notify&#8217;.</p>
<p><strong>1835: OBJECT-TYPEs not in OBJECT-GROUPs in SMIv2, COPS-PR-SPPI</strong></p>
<p>It is now an error, rather than a warning, for OBJECT-TYPEs and NOTIFICATION-TYPEs to not be a member of any OBJECT-GROUP or NOTIFICATION-GROUP when they otherwise must be.</p>
<p><strong>1834: Auto-correct missing &#8216;Z&#8217; suffix in ExtUTCTime values</strong></p>
<p>The validator now automatically corrects a missing &#8216;Z&#8217; suffix in LAST-UPDATED and REVISION timestamps after reporting the issue.</p>
<p><strong>1831: Use of type names (rather than objects) as INDEXes</strong></p>
<p>It is now an error, rather than a warning, for SMIv2 and COPS-PR-SPPI OBJECT-TYPE to use INDEX values pointing to type names rather than object names. For RFC-1212, it&#8217;s now a forward-compatibility warning.</p>
<p><strong>1742: Additional validation for read-create</strong></p>
<p>A validation rule was added to disallow any column from having access &#8220;read-write&#8221; if any column in the same table has access &#8220;read-create&#8221;, per RFC 2578 section 7.3.</p>
<p><strong>1833: Restrictions on MANDATORY-GROUPS and GROUPs</strong></p>
<p>It&#8217;s now an error for MODULE-COMPLIANCE&#8217;s MANDATORY-GROUPS or GROUP clauses to reference anything other than an OBJECT-GROUP or NOTIFICATION-GROUP. Previously they allowed any OID value, like AGENT-CAPABILITIES&#8217; INCLUDES allows specifying SMIv1 branches, but the text of RFC 2576 that allows this (in section 2.3) applies only to AGENT-CAPABILITIES.</p>
<p><strong>1841: Disallow empty binary/hex strings as enum values</strong></p>
<p>Hex/binary strings as enumeration values are not explicitly legal (or illegal) in SMI, but the SDK supports them (with warning) just in case.  However, it makes no sense for something that should be an integer to have no bits, so a validation rule was added to produce a warning specifically for empty hex/binary enumerations and integral DEFVALs.</p>
<p><strong>1842: Do not error for ASN.1 types in plain ASN.1 modules</strong></p>
<p>Towards support for plain ASN.1 modules, error levels for validation rules regarding the use of ASN.1 types not supported by SMI or COPS-PR-SPPI were changed. If the module is clearly intended to be a MIB or PIB module, an error is produced. If nothing is imported from SMI or COPS-PR-SPPI base modules, it&#8217;s assumed to be plain ASN.1 and no error or warning about the type is produced.</p>
<p><strong>1838: Improved parser recovery for enumerated types</strong></p>
<p>Enumerated types are now parseable with empty braces or no braces/enumerations, including BITS (where the legal syntax requires at least one bit to be defined and braced). This is mainly to allow incomplete MIB definitions to be saved and still reloaded in the MIB Smithy editor.</p>
<p><strong>1660: Misleading error when SDK falls back to direct trap port binding</strong></p>
<p>The failure messages from attempts to bind to port 162 before connecting to nmtrapd via Tcl_OpenCommandChannel were left in the interpreter result despite connection succeeding a TCL_OK result being returned. The message could mislead users (at least in the interactive shell) into thinking the [snmplib bind] command failed when it didn&#8217;t.</p>
<p><strong>375: Return OCTET STRINGs as binary</strong></p>
<p>SNMP session APIs no longer automatically encode/decode binary OCTET STRING data to/from hex format, but instead return and accept Tcl&#8217;s native binary format and conventions (e.g., byte array objects, [binary] command, and &#8220;\x&#8221; to specify hex-encoded data in scripts).</p>
<p>This change is intended to simplify scripted use of and prevent APIs from interpreting values as hex encoded when they are intended to be taken as literal.<br />
It affects variable bindings, session properties (such as community strings and passwords), and callback parameters alike.</p>
<p>Use the [smilib format] command to format values for display to a user. You can specify &#8220;OCTET STRING&#8221; to format values that aren&#8217;t associated with a varbind, such as the SNMPv3 Engine ID passed to request callbacks.</p>
<p><strong>1718: ExtUTCTime validation wrong after 2038</strong></p>
<p>ExtUTCTime validation (e.g. LAST-UPDATED and REVISION timestamps) is now Y2K38 compliant, no longer based on Unix epoch.</p>
<p><strong>2209: Wrong keywords for usm privKeyChange -privproto option</strong></p>
<p>The [snmplib usm privKeyChange] command&#8217;s -privproto option was expecting auth protocol keywords rather than priv protocol keywords. Consequently, one could not override the privacy protocol for the session without error.</p>
<p><strong>1832: Warning for duplicate INDEXes</strong></p>
<p>It is now a warning, rather than an error, for an OBJECT-TYPE&#8217;s INDEX to list the same object multiple times. SMIv2 discourages it, but it is not forbidden.</p>
<p><strong>1726: False &#8220;recursive loop&#8221; error with conformance groups</strong></p>
<p>A GROUP clause in MODULE-COMPLIANCE pointing to a non-group with missing dependencies could previously generate a &#8220;OBJECT IDENTIFER value assigned&#8230;is defined as a recursive loop&#8221; error due to the way OIDs were indexed in the old architecture. In the new architecture, along with forbidding non-groups, this is no longer an issue.</p>
<p><strong>1705: Using EXPORTS in SMIv2 modules should be an error</strong></p>
<p>It is now an error for an SMIv2 or COPS-PR-SPPI module to use the ASN.1 module&#8217;s EXPORTS clause. Previously it was a warning because the MIB Smithy editor automatically excluded it upon saving, but since it&#8217;s forbidden it should be an error for standalone validation.</p>
<p><strong>1428: [smilib new] doesn&#8217;t allow some set options</strong></p>
<p>The set of record properties supported by [smilib new] and [smilib set] had gotten out of sync, so some properties of some record types could not be set at creation time. They should be back in sync now, allowing all properties to be set at record creation time.</p>
<h3>Addendum</h3>
<p>The following additional cases were also fixed in 4.0 but didn&#8217;t make it into the release notes (they&#8217;d been dual-committed for 4.0 and a possible 3.4.9, but there was no 3.4.9 release):</p>
<p><strong>1815: Additional validation for first two subidentifiers</strong></p>
<p>ASN.1 places limits on the range of the first two subidentifiers of an OID. Validation previously did not check both values in some cases, depending on the form used to define the OID. Out-of-range values should now be reported as an error regardless of form.</p>
<p><strong>1782: Disallow hyphens in COPS-PR-SPPI enum/bit labels</strong></p>
<p>A warning will now be produced for enumeration and bit labels containing hyphens in COPS-PR-SPPI, as with 3.4.8, which added such warnings to record names.</p>
<p><strong>1779: DEFVAL identifier list not fully validated versus named bits</strong></p>
<p>When using the identifier list form for DEFVAL (used for named bits), the identifiers were not properly checked against the defined bit names to see if they exist.</p>
<p><strong>1802: Validation for single-valued size/range refinements</strong></p>
<p>Validation for size and range refinements was failing to detect and report a value as being out of the base size or range if it was only a single value (rather than a sub-range) in the refinement.</p>
<p><strong>1786: Hex/Binary enumeration order checking incorrect</strong></p>
<p>When using hex or binary values for enumeration and bit values, a false error was reported regarding the order due to treating the value as a hex or binary representation of a string rather than an integer.</p>
<p><strong>1809: Warning to start enums at 1 should not trigger when 1 is refined away</strong></p>
<p>A warning to start enumerations at 1 will no longer be generated for a record that refines the value away (such as a TEXTUAL-CONVENTION that starts at 1, but the OBJECT-TYPE using it refining it away).</p>
<p><strong>1808: Overlapping sizes/ranges should be an error</strong></p>
<p>There was a bug in the rule for detecting overlapping size and range lists that prevented the overlap from being detected in some cases. These will now be reported as an error as they should be.</p>
<p><strong>1810: Duplicate enum values in hex/binary not detected</strong></p>
<p>Duplicate enumeration values were not previously reported as an error if one or both of the values were in hex or binary string format (which is not explicitly legal or illegal in SMI).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muonics.com/blog/177/mib-smithy-sdk-4-0-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>One Last Case Before MIB Smithy SDK 4.0</title>
		<link>http://www.muonics.com/blog/172/one-last-case-before-mib-smithy-sdk-4-0/</link>
		<comments>http://www.muonics.com/blog/172/one-last-case-before-mib-smithy-sdk-4-0/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 10:47:06 +0000</pubDate>
		<dc:creator>Michael Kirkham</dc:creator>
				<category><![CDATA[MIB Smithy SDK]]></category>
		<category><![CDATA[mibsmithysdk]]></category>
		<category><![CDATA[snmp]]></category>
		<category><![CDATA[tcl]]></category>

		<guid isPermaLink="false">http://www.muonics.com/blog/?p=172</guid>
		<description><![CDATA[I&#8217;m happy to report that I&#8217;m working on the last open case assigned for the MIB Smithy SDK 4.0 release. This last case is for a certain set of new MIB and PIB validation rules that I think should be added, although it&#8217;s in an area the standards are silent on (like so many other [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m happy to report that I&#8217;m working on the last open case assigned for the <a href="http://www.muonics.com/Products/MIBSmithySDK/">MIB Smithy SDK</a> 4.0 release. This last case is for a certain set of new MIB and PIB validation rules that I think should be added, although it&#8217;s in an area the standards are silent on (like so many other areas of the SMI).</p>
<p>The other good news is on the platform front: I acquired a replacement for the dead Solaris box and spent the last couple days getting it set up with Solaris 10 (SPARC) plus the necessary build tools and libraries, and spent some time with Linux x86_64 while I mulled over this final case. After a few minor tweaks to build rules and such, the 4.0 code is now building and passing all 2143 regression tests on all targeted platforms (<em>including</em> Linux x86_64, so I can now say with certainty that it will be supported going forward).</p>
<p>It&#8217;s a little tricky to implement and write tests for the new validation rules I have planned for in the final case, and likely rare to come across. I&#8217;m not entirely settled on the approach I&#8217;ve taken (hence the mulling), so I may punt it to the next release if it would otherwise push the release beyond Monday.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muonics.com/blog/172/one-last-case-before-mib-smithy-sdk-4-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Sneek Peek at MIB Smithy SDK 4.0</title>
		<link>http://www.muonics.com/blog/167/a-sneek-peek-at-mib-smithy-sdk-4-0/</link>
		<comments>http://www.muonics.com/blog/167/a-sneek-peek-at-mib-smithy-sdk-4-0/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 07:28:25 +0000</pubDate>
		<dc:creator>Michael Kirkham</dc:creator>
				<category><![CDATA[MIB Smithy SDK]]></category>
		<category><![CDATA[mibsmithysdk]]></category>
		<category><![CDATA[snmp]]></category>
		<category><![CDATA[tcl]]></category>

		<guid isPermaLink="false">http://www.muonics.com/blog/?p=167</guid>
		<description><![CDATA[As I mentioned earlier, version 4.0 of MIB Smithy SDK is extremely close to release, now with only 9 cases left open (of which 3 are implemented but just need more QA testing, and one is nearly finished). I thought I&#8217;d whet your appetite with a summary of what&#8217;s coming, but I also wanted to [...]]]></description>
			<content:encoded><![CDATA[<p>As I <a href="http://www.muonics.com/blog/158/getting-very-close-to-mib-smithy-sdk-4-0-release/">mentioned earlier</a>, version 4.0 of <a href="http://www.muonics.com/Products/MIBSmithySDK/">MIB Smithy SDK</a> is extremely close to release, now with only 9 cases left open (of which 3 are implemented but just need more QA testing, and one is nearly finished). I thought I&#8217;d whet your appetite with a summary of what&#8217;s coming, but I also wanted to give fair warning regarding a couple points of compatibility so there are no surprises.</p>
<p>Compatibility issues are one of the main reasons for bumping the major version to 4.0, since Tcl&#8217;s &#8220;<code>package require</code>&#8221; version matching mechanisms make it easy to ensure your scripts pull in a version of a package that is compatible. If you use &#8220;<code>package require SmithySDK 3.0</code>&#8221; then Tcl will load the latest 3.x version found, but won&#8217;t load 4.x, so if there&#8217;s any migration you need to do in your scripts then you can change the required version as the migration is done.</p>
<p>The two potential compatibility issues are changes to [officially] supported platforms and in the handling of binary data passed to and returned by the APIs. I&#8217;ll get those out of the way first, as they are important, and then tell you about the new enhancements that will also be in the release.</p>
<h3>Supported Platform Changes</h3>
<p>The minimum version requirements for the Linux, FreeBSD, and Solaris platforms will be changing to something a bit more recent. Current releases are built against Fedora Core 5, FreeBSD 4.3, and Solaris 2.7, which are ancient and long past end of life. I&#8217;ve held off requiring newer versions for the next major version because I don&#8217;t like to break compatibility in a minor or patch level release. Plus the Solaris development machine, gifted to the company many years ago already many years used, died a couple months ago. That&#8217;s why there are no Solaris demos at the moment: I&#8217;m still shopping for a replacement; the demo builds expired and can&#8217;t be rebuilt at the moment.</p>
<p>We&#8217;re currently building 4.0 against FreeBSD 6.2 and Fedora Core 7 (kernel 2.6.23.x), and chances are we are looking at Solaris 10+ (as that&#8217;s likely what&#8217;s available), so these are likely to be the minimum officially supported versions: as it is, FreeBSD 6.2 and FC7 are both somewhat old. The software will likely run just fine on earlier versions, we just won&#8217;t be able to guarantee it since the FC5 and FreeBSD 4.3 VMs, only still around for SDK 3.x builds, will be retired soon after the 4.x release.</p>
<p>There are two upsides here, however, in that (1) I suspect it&#8217;s us who&#8217;ll be catching up a bit to our user&#8217;s platforms, not vise versa; and (2) the last of those 9 cases to be worked on for 4.0 is I&#8217;ll be looking at (not promising yet) Linux x86_64 support. I have a VM set up for it already, but I know need to upgrade at least one third-party library before our software will build on it, then I&#8217;ll see how it fares against the more than 2000 automated regression test scripts we have for the SDK now (probably 1500 or more written to test the architecture changes in 4.0).</p>
<h3>API Changes for Binary Data</h3>
<p>The way binary data (OCTET STRING, etc.) is handled is changing. Once upon a time, Tcl didn&#8217;t initially have support (or at least good support) for working with binary data at the Tcl level, but it&#8217;s now had this for many years (initially with Tcl 8.0, but there were bugs). To work around the limitation, I chose to use a hex format like <code>"0x01:ab"</code> that each of the APIs would accept or return (for example, in request variable bindings or a session&#8217;s community string). The SDK would check if a given value had this format and convert it to the equivalent octets, or check if a value to be returned contained anything other than 7-bit printable ASCII and convert it to hex. While this makes such values readable for interactive use, it&#8217;s cumbersome for scripts that want to make use of actual binary data. It&#8217;s also problematic for using strings that just <em>look like</em> they&#8217;re in that format but aren&#8217;t intended to be if the APIs go and reinterpret them when you don&#8217;t want them to.</p>
<p>And, ever since Tcl&#8217;s binary support became stable, I&#8217;ve wanted to drop this eventually. Tcl has its own way of specifying binary data in hex (<code>"\x01\xab"</code>), or other formats like unicode, so the SDK having its own hex format is superfluous. But I&#8217;ve similarly held off switching to binary for a long time so that it could be done with a major version bump according to package versioning rules. So, instead of using its own hex format, as of 4.0 the APIs will now accept (and return) binary data directly (as Tcl_ByteArrayObjs at Tcl&#8217;s C layer).  This change affects values in variable bindings, session configuration options (e.g. community strings), values parsed from instance identifiers, etc.</p>
<p>My hope is that switching to binary will have little or no impact on your scripts. Any value you get out of an API call (e.g. get request) and feed back into an API call (e.g. set request) should continue to work, since both sides of the conversion will go away. In general, you should also already be using the <code>[smilib format]</code> command to format SNMP values according to DISPLAY-HINTs when you want to display or print them. If you do, you shouldn&#8217;t see much impact there. Strings containing only 7-bit printable ASCII characters should be unaffected because they were not previously converted, and are indistinguishable from byte arrays already. Any impact will largely be confined to values currently hard coded in hex (which are fairly simple to convert to Tcl&#8217;s own syntax) or issuing requests in Tcl&#8217;s interactive mode (which may print gibberish for binary data).</p>
<p>The <code>[smilib format]</code> command has new capabilities to help as well. Where you now have to specify an OBJECT-TYPE or TEXTUAL-CONVENTION to format a value against, in 4.0 you can specify base types such as <code>"OCTET STRING"</code> to use a default format. For <code>"OCTET STRING"</code>, that default format is the same as before, but without the <code>0x</code> prefix (so, <code>"01:ab"</code> instead of <code>"0x01:ab"</code>). You can use this to, for example, get a guaranteed-printable version of, say, an SNMPv3 User Name (which is typically, but not necessarily, plain text).</p>
<h3>Summary of Enhancements</h3>
<p>Full release notes will be available with the release, but here&#8217;s a quick run down of the new goodies in MIB Smithy SDK 4.0, which will also find their way into <a href="http://www.muonics.com/Products/MIBSmithy/">MIB Smithy</a> and <a href="http://www.muonics.com/Products/MIBViews/">MIB Views</a> with their next feature releases:</p>
<ul>
<li>IPv6 support</li>
<li>Improved raw binary data support (explained above)</li>
<li>A new license key format to simplify managing multiple license keys (includes the serial number in plain text, for example)</li>
<li>A new licensing option (user based, rather than host based)</li>
<li>Many new MIB and PIB validation rules</li>
<li>Many clarifications to messages or error levels from existing MIB and PIB validation rules</li>
<li>More issues in your MIB and PIB modules are automatically corrected for you</li>
<li>Improved socket error reporting</li>
<li>Additional properties for working with table definitions smilib</li>
</ul>
<p>Best of all (for me) is the new architecture will be easier to maintain and extend, and once 4.0 is out I&#8217;ll be free to focus all my energy back into new features rather than maintaining two code branches or getting the new architecture to a stable release. With all the QA automation that&#8217;s been done for 4.0, it took a long time, but it should be the the most stable dot-zero release of any piece of software I&#8217;ve done.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muonics.com/blog/167/a-sneek-peek-at-mib-smithy-sdk-4-0/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Getting Very Close to MIB Smithy SDK 4.0 Release</title>
		<link>http://www.muonics.com/blog/158/getting-very-close-to-mib-smithy-sdk-4-0-release/</link>
		<comments>http://www.muonics.com/blog/158/getting-very-close-to-mib-smithy-sdk-4-0-release/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 14:52:49 +0000</pubDate>
		<dc:creator>Michael Kirkham</dc:creator>
				<category><![CDATA[MIB Smithy SDK]]></category>
		<category><![CDATA[mibsmithysdk]]></category>
		<category><![CDATA[snmp]]></category>
		<category><![CDATA[tcl]]></category>

		<guid isPermaLink="false">http://www.muonics.com/blog/?p=158</guid>
		<description><![CDATA[It&#8217;s been a very, very long time coming, due to the scope of architecture changes and QA testing required (along with numerous distractions along the way, including the pain of maintaining to very diverging branches of code), but I&#8217;m so close to finally releasing MIB Smithy SDK 4.0. I had told a few people that [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a very, very <a href="http://www.muonics.com/blog/137/an-ironic-argument-for-using-mib-smithy/">long time coming</a>, due to the scope of architecture changes and QA testing required (along with numerous distractions along the way, including the pain of maintaining to very diverging branches of code), but I&#8217;m so close to finally releasing <a href="http://www.muonics.com/Products/MIBSmithySDK/">MIB Smithy SDK</a> 4.0. I had told a few people that I was trying hard to get it out by the end of 2009, which obviously has passed. But there&#8217;s a bit more I&#8217;m trying to squeeze into the release (to make it more worthy of a major version number) and tiny bit more QA test automation to do for one of the feature changes.</p>
<p>As I write this, I have 16 open feature and 7 open bug cases in <a href="http://www.fogbugz.com/">FogBugz</a> currently targeted for 4.0, which is down from and 31 features and 13 bugs a week ago, to give you an idea how close it is and how much progress is being made.</p>
<p>My focus for these last cases is primarily clarifying some existing MIB/PIB validation messages, adding more validation routines where gaps in coverage were uncovered during the big QA test automation push (which involved hard core analysis of old vs. new code and revisiting the <a href="http://www.muonics.com/Docs/MIBSmithy/UserGuide/references.php">standards documents</a>), and closing nearly all of the known bugs in the SDK. The latter is particularly important to me in getting to where I can make it policy aim for each release to be &#8220;known bug free&#8221;.</p>
<p>At this point there are only 10 total remaining bug cases, and the three not targeted for 4.0 are so minor or obscure as to not matter for now: one of them, for example, is about comments just before macros not being preserved by the parser because we skip over (but don&#8217;t preserve) the macros themselves. Well, macros are only defined in the SMI base modules, which don&#8217;t change, so it&#8217;s a stretch to call it a bug and there&#8217;s no reason hold 4.0 any longer for it.</p>
<p>With the 4.0 release so close I can almost taste it, I feel a bit more comfortable talking about it, and you may have noticed I&#8217;ve also been sprucing up the Muonics web site a fair bit in preparation. I&#8217;ll be back later today or tomorrow with a little preview of MIB Smithy SDK 4.0.</p>
<p>PS: I set up a new <a href="http://twitter.com/muonics">twitter account</a> for another way to follow the goings on at Muonics. If I set things up correctly, this post should show up as the first tweet automatically.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muonics.com/blog/158/getting-very-close-to-mib-smithy-sdk-4-0-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MIB Smithy 4.1.5, SDK 3.4.8, MIB Views 1.4.4 Releases</title>
		<link>http://www.muonics.com/blog/156/mib-smithy-415-sdk-348-and-mib-views-144/</link>
		<comments>http://www.muonics.com/blog/156/mib-smithy-415-sdk-348-and-mib-views-144/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 04:03:04 +0000</pubDate>
		<dc:creator>Michael Kirkham</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[MIB Smithy]]></category>
		<category><![CDATA[MIB Smithy SDK]]></category>
		<category><![CDATA[MIB Views]]></category>

		<guid isPermaLink="false">http://www.muonics.com/blog/?p=156</guid>
		<description><![CDATA[We&#8217;re now in the final stretches of automating regression tests for our MIB parsing and validation code in preparation for releasing the 4.0 branch of the SDK, with better than 3/4 of the test automation done. After the latest round of several hundred tests and analyzing the current results, we identified some more areas for [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re now in the final stretches of automating regression tests for our MIB parsing and validation code in preparation for releasing the 4.0 branch of the SDK, with better than 3/4 of the test automation done. After the latest round of several hundred tests and analyzing the current results, we identified some more areas for improvement in the validation code we felt were appropriate to release in the current stable branch. These include eliminating redundant messages, clarifying other messages, correcting some false errors, some error level adjustments, and some additional rules. The changes below are incorporated into the latest releases for MIB Smithy, MIB Smithy SDK, and MIB Views.<strong></strong></p>
<p><strong>1735: INDEX and AUGMENTS forbidden with RFC1155-SMI, RFC1065-SMI</strong></p>
<p>It is now an error, rather than a warning, for an OBJECT-TYPE to have an INDEX or AUGMENTS clause when imported from RFC1065-SMI or RFC1155-SMI.</p>
<p><strong>1760: TEXTUAL-CONVENTIONs must not derive from other TEXTUAL-CONVENTIONs</strong></p>
<p>It is now an error, rather than a warning, for SMIv2 modules to define TEXTUAL-CONVENTIONs derived from other TEXTUAL-CONVENTIONs. This is also now an error for COPS-PR-SPPI modules, which previously gave no warning.</p>
<p><strong>1747: Additional validation for variant access levels</strong></p>
<p>PIB-MIN-ACCESS is now checked to ensure its values are allowed by COPS-PR-SPPI.  MODULE-COMPLIANCE&#8217;s PIB-MIN-ACCESS and MIN-ACCESS, and AGENT-CAPABILITIES ACCESS, are now checked to ensure their values are within bounds of the referenced object&#8217;s (or PRC&#8217;s) MAX-ACCESS or ACCESS value.</p>
<p><strong>1761: Improved version-specific validation with missing IMPORTS</strong></p>
<p>Previously, when a macro (such as OBJECT-TYPE) was not imported as required, certain version-specific validation checks (such as allowed STATUS values) were suppressed, giving only an error about the missing import. Now, the version may be assumed based on other imports that are present, allowing further checks to be performed.</p>
<p><strong>1733: Suppress bit zero warning when no bits are defined</strong></p>
<p>A redundant warning regarding starting BITS at zero when also erroring about needing at least one bit to be defined.</p>
<p><strong>1738: Clarify access keywords in error messages</strong></p>
<p>Validator messages should use the proper access keyword (ACCESS, MAX-ACCESS, PIB-ACCESS, MIN-ACCESS, PIB-MIN-ACCESS) depending on the record type and version (SMIv1, SMIv2, COPS-PR-SPPI) of the record. In some cases, they simply said &#8220;ACCESS&#8221;.<strong></strong></p>
<p><strong>1701: False errors and changes to BITS DEFVAL validation</strong></p>
<p>The algorithm for checking set bits in hex/binary DEFVALs versus BITS named bit values was not correct, leading to errors for valid DEFVALs. Also, an integer is no longer allowed for DEFVAL with BITS type, and undefined bits may no longer be set in the DEFVAL (previously these were warnings).<strong></strong></p>
<p><strong>1720: Disallow hyphens in COPS-PR-SPPI identifiers</strong></p>
<p>As with SMIv2 modules, which COPS-PR-SPPI derives from, a warning is now produced for identifiers with hyphens in PIB modules.<strong></strong></p>
<p><strong>1717: Wrong range given in INSTALL-ERRORS message</strong></p>
<p>INSTALL-ERRORS was being checked versus the correct allowed range of 1..65535, but the error message indicated 0..65536 was allowed.</p>
<p><strong>1689: False subordinate OID warnings for conformance records</strong></p>
<p>Conformance sub-records were not properly ignored when checking relative structure of the OID tree, causing false errors/warnings to be produced (nothing should be considered relative to these records as they&#8217;re purely an implementation detail, not truly separate from the conformance statement).</p>
<p><strong>1682: Value Assignment values missing from error messages</strong></p>
<p>Error messages regarding ASN.1 Value Assignment values not matching the type were giving an empty string for the value rather than the actual value. (Note: only ASN.1 Value Assignments of type OBJECT IDENTIFIER are allowed in MIB and PIB modules; this validation is part of plain ASN.1 support.)</p>
<p><strong>1685: False warning for starting bit zero when using BITS-derived type</strong></p>
<p>A warning message was produced for OBJECT-TYPEs with SYNTAX referencing a TEXTUAL-CONVENTION of type BITS indicating that bits should start at zero even when the TEXTUAL-CONVENTION itself started at bit zero.</p>
<p><strong>1684: Missing error for invalid PIB-REFERENCES</strong></p>
<p>An incorrect function argument was suppressing the error message for PIB-REFERENCES pointing somewhere other than a PRC (row) OBJECT-TYPE.<strong></strong></p>
<p><strong>1759: REVISIONs not sorted properly by XML parser</strong></p>
<p>MODULE-COMPLIANCE REVISIONs are normally sorted when assigned or parsed from normal SMI syntax (with parse-time warning in the latter case), and therefore not checked during validation. They were not sorted properly by the XML parser, however, leaving them out of order with no indication. They are now sorted at parse time from XML as well.</p>
<p><strong>1716: Severity of Value Assignments in SMIv2/SPPI</strong></p>
<p>It&#8217;s now an error, rather than a warning, to use ASN.1 Value Assignments other than of type OBJECT IDENTIFIER in SMIv2 and COPS-PR-SPPI modules. It remains a warning for SMIv1 modules, but is now suppressed entirely for modules that aren&#8217;t SMI or SPPI (just ASN.1).</p>
<p><strong>1736: Redundant messages for Counter with bad ACCESS</strong></p>
<p>Use of Counter, Counter32, or Counter64 syntax and ACCESS, MAX-ACCESS, or MIN-ACCESS value unknown to the SMI version now produces one error message for the unknown value, rather than a second for the value being disallowed with counter types.</p>
<p><strong>1729: PIB-INDEX may use attributes of other PRCs</strong></p>
<p>An error message was produced if PIB-INDEX referenced an attribute of another PRC (table) rather than an attribute of the same PRC. As this is explicitly allowed by RFC 3159 section 7.5, this check has been removed.</p>
<p><strong>1731: OID in module header forbidden in SMIv2</strong></p>
<p>It&#8217;s now an error, rather than a warning, to assign an OID to a module in the module in SMIv2 or COPS-PR-SPPI modules (which use MODULE-IDENTITY instead).  It remains a warning in SMIv1 and is now suppresed for modules that are neither SMI or SPPI (just ASN.1).</p>
<p><strong>1728: OBJECT-IDENTITY and Assignment with same OID should be a warning</strong></p>
<p>It is now a warning, rather than an error, when an OBJECT-IDENTITY statement and OID Value Assignment have the same OID, as it is with an OID Value Assignment and other macros having the same OID.</p>
<p><strong>1727: Missing error for INDEX with negative enumerations</strong></p>
<p>An intended warning for an INDEX pointing to an object with possible negative enumerations was not being produced.</p>
<p><strong>1725: Superfluous auxilliary INDEX warnings</strong></p>
<p>The warning for a table using only columns from other tables for indices is no longer generated when already indicating an error because the INDEX clause is not allowed (e.g. on a scalar OBJECT-TYPE).</p>
<p><strong>1711: Undefined symbols should always error if known to be undefined</strong></p>
<p>Dependency check &#8220;failed&#8221; errors and &#8220;skipped&#8221; warnings are now more consistent in behavior: e.g., a check is &#8220;skipped&#8221; with a warning if cross-checking can&#8217;t be performed because a module isn&#8217;t loaded, while an error is produced if it is loaded but the symbol imported from is not defined.<strong></strong></p>
<p><strong>1710: Mixing SMI and COPS-PR-SPPI base types/macros</strong></p>
<p>It&#8217;s now an error, rather than a warning, to import both SMI and COPS-PR-SPPI base types and macros within the same module (note: importing MIB OIDs and TEXTUAL-CONVENTIONs in PIB modules is allowed, provided the underlying base type is the supported by the SPPI).</p>
<p><strong>1690: Wrong format indicated in DEFVAL type/value mismatch errors</strong></p>
<p>When comparing the form of DEFVAL values to an object&#8217;s SYNTAX, the wrong keyword for the form of the value was specified in some errors pertaining to hex and binary. The wording of DEFVAL type/value related messages is also now more consistent.<strong></strong></p>
<p><strong>1686: Redundant hex/binary length errors</strong></p>
<p>When validating hex and binary DEFVALs, redundant errors were produced for some types when they were both not of the required length for that type and not the right multiple of digits. There was some inconsistency in whether or not they were checked for capitalization, and the wording of hex/binary related messages was also clarified.</p>
<p><strong>1683: UNIQUENESS value missing from message</strong></p>
<p>A warning message regarding UNIQUENESS values was showing an empty string for the value rather than indicating the actual value warned about.<strong></strong></p>
<p><strong>1708: SMI base modules should not require MODULE-IDENTITY</strong></p>
<p>On the off chance you load SNMPv2-CONF into the SDK and validate it, despite not defining anything other than macros, it will no longer error about needing a MODULE-IDENTITY statement (as with other SMI/COPS base modules).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muonics.com/blog/156/mib-smithy-415-sdk-348-and-mib-views-144/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An Ironic Argument for Using MIB Smithy</title>
		<link>http://www.muonics.com/blog/137/an-ironic-argument-for-using-mib-smithy/</link>
		<comments>http://www.muonics.com/blog/137/an-ironic-argument-for-using-mib-smithy/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 03:57:57 +0000</pubDate>
		<dc:creator>Michael Kirkham</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[MIB Smithy]]></category>
		<category><![CDATA[MIB Smithy SDK]]></category>

		<guid isPermaLink="false">http://www.muonics.com/blog/?p=137</guid>
		<description><![CDATA[I must admit I&#8217;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&#8217;d been collecting topics for a while but intended to [...]]]></description>
			<content:encoded><![CDATA[<p>I must admit I&#8217;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 <a href="http://en.wikipedia.org/wiki/Of_Mice_and_Men">best laid plans</a>. I&#8217;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&#8217;t started. Sometimes topics would come up that I wanted to write about when they were timely, but by the time I&#8217;d get to it they wouldn&#8217;t be anymore. So I made it one of my New Year&#8217;s Resolutions this year to forget The Plan, which by now was getting in the way, and Just Do It. It&#8217;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&#8217;re a MIB author.</p>
<p><a href="http://www.muonics.com/Products/MIBSmithy/">MIB Smithy</a>, 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.</p>
<p>In this regard, I believe I succeeded in my goal, though I&#8217;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&#8217;t account for checks handled by a single function applied in multiple places (like all the checks done on all OIDs). I&#8217;m a fan of <a href="http://en.wikipedia.org/wiki/Eat_one%27s_own_dog_food">eating out own dog food</a>, 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.</p>
<p>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&#8217;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 &#8220;partially&#8221; aspect became more and more of an obstacle to implementing various plans for the product, much as the compilers once were.</p>
<p>C++ standards compliance in g++ and Visual C++ have both come a <em>long</em> 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&#8217;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&#8217;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&#8217;t for core functionality like the MIB parser and validator, originally tested manually, that haven&#8217;t changed much&#8211;exactly the places with the most code changes now.</p>
<p>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&#8217;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&#8217;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.</p>
<p>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&#8217;t you?  Why don&#8217;t you <a href="http://www.muonics.com/Downloads/">give MIB Smithy a try</a>?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muonics.com/blog/137/an-ironic-argument-for-using-mib-smithy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MIB Smithy 4.1.2, SDK 3.4.6, MIB Views 1.4.2 Releases</title>
		<link>http://www.muonics.com/blog/131/mib-smithy-412-sdk-346-mib-views-142-releases/</link>
		<comments>http://www.muonics.com/blog/131/mib-smithy-412-sdk-346-mib-views-142-releases/#comments</comments>
		<pubDate>Sun, 15 Feb 2009 09:58:31 +0000</pubDate>
		<dc:creator>Michael Kirkham</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[MIB Smithy]]></category>
		<category><![CDATA[MIB Smithy SDK]]></category>
		<category><![CDATA[MIB Views]]></category>

		<guid isPermaLink="false">http://www.muonics.com/blog/?p=131</guid>
		<description><![CDATA[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&#8217;re finally getting close to having the SDK 4.0 development branch in a releasable state. [...]]]></description>
			<content:encoded><![CDATA[<p>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&#8217;re finally getting close to having the SDK 4.0 development branch in a releasable state. Since it&#8217;s taken an unusually long time to release 4.0 branch and there are some potential compatibility issues you&#8217;ll need to be aware of, as well as new features affecting all three of these products, I&#8217;ll talk a bit more about it in a post to follow shortly.</p>
<h3>Changes affecting MIB Smithy, MIB Smithy SDK, and MIB Views:</h3>
<p><strong>305: Host ID not matched when interface is disconnected</strong></p>
<p>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.</p>
<p><strong>727: Clarify &#8220;trailing hyphens will be stripped&#8221; error</strong></p>
<p>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.</p>
<p><strong>1368: Windows: IPv6-only interface Host IDs not available</strong></p>
<p>Windows interfaces configured to support only IPv6 could not previously be used for licenses keys, but can now.</p>
<p><strong>1406: Circular type references cause crash</strong></p>
<p>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.)</p>
<h3>Additional changes affecting MIB Smithy SDK:</h3>
<p><strong>312: Changing IPs with SNMPv3 loses auth/priv state</strong></p>
<p>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.</p>
<p><strong>1354: Timeout of Tnm-style async requests causes error with future request</strong></p>
<p>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.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muonics.com/blog/131/mib-smithy-412-sdk-346-mib-views-142-releases/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MIB Smithy 4.1.1 and SDK 3.4.5 Release</title>
		<link>http://www.muonics.com/blog/128/mib-smithy-411-and-sdk-345-release/</link>
		<comments>http://www.muonics.com/blog/128/mib-smithy-411-and-sdk-345-release/#comments</comments>
		<pubDate>Wed, 12 Nov 2008 20:03:49 +0000</pubDate>
		<dc:creator>Muonics, Inc.</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[MIB Smithy]]></category>
		<category><![CDATA[MIB Smithy SDK]]></category>

		<guid isPermaLink="false">http://www.muonics.com/blog/?p=128</guid>
		<description><![CDATA[MIB Smithy 4.1.1 and MIB Smithy SDK 3.4.5 are now available.  The majority of these changes parallel those of MIB Views 1.4.1, plus a number of bug fixes for the XML-SMI parser uncovered while putting together a full regression test suite for it.
Changes affecting MIB Smithy
482: Updated Tcl/Tk version
The Tcl/Tk base for MIB Views [...]]]></description>
			<content:encoded><![CDATA[<p>MIB Smithy 4.1.1 and MIB Smithy SDK 3.4.5 are now available.  The majority of these changes parallel those of <a href="http://www.muonics.com/Products/MIBViews/">MIB Views</a> 1.4.1, plus a number of bug fixes for the XML-SMI parser uncovered while putting together a full regression test suite for it.</p>
<h3>Changes affecting MIB Smithy</h3>
<p><strong>482: Updated Tcl/Tk version</strong></p>
<p>The Tcl/Tk base for MIB Views was upgraded to 8.4.19.  Among other things, this fixes a crash at startup on later versions of Mac OS X.</p>
<p><strong>606: Application icons for Unix</strong></p>
<p>Full-color application icons have been added to Unix platforms, replacing the old monochrome bitmaps.</p>
<p><strong>1272: TreeView: lexicographic errors can cause loop</strong></p>
<p>In certain circumstances, an agent returning lexicographically incorrect responses to get-next requests could cause branch expansion to loop until a user requested stop, and duplicate branches could be displayed.  More protections against lexicographic errors were added to prevent this.</p>
<h3>Changes affecting MIB Smithy and MIB Smithy SDK</h3>
<p><strong>1130: XMLSMI: some binary strings not formatted correctly</strong></p>
<p>In some cases, using the &#8216;bstring&#8217; integer format attribute would result in the binary value not being quoted/suffixed properly (e.g. &#8216;B&#8217;00001011 instead of &#8216;00001011&#8242;B).</p>
<p><strong>1133: XMLSMI: capability variation parse error</strong></p>
<p>A &#8220;variation element unexpected or unrecognized&#8221; error would occur due to attempting to parse the wrong element when parsing AGENT-CAPABILITIES variations.</p>
<p><strong>1159: XMLSMI: piberrors should be parsed as enum list</strong></p>
<p>The piberrors element was being parsed as a value reference, rather than an enumeration list.  This was fixed previously for the SMI parser and in the schema and database APIs, but not in the XML parser.</p>
<p><strong>1124: XMLSMI: oid child element doesn&#8217;t work in some places</strong></p>
<p>Using the oid element to define a defval or index with an OID value rather than an identifier or with importsfrom to disambiguate imported modules resulted in a parse error.</p>
<p><strong>1137: XMLSMI: wrong size/range using min or max attribute only</strong></p>
<p>When using the size or range element with only the min or max attribute, the other was defaulting to 0 rather than defaulting to the same value.</p>
<p><strong>1138: XMLSMI: syntax tag element&#8217;s &#8216;implicit&#8217; attribute not preserved</strong></p>
<p>The implicit attribute of the syntax tag element was not being checked or preserved by the XML parser.  This would generally only affect SMI base modules represented as XML, not MIB/PIB modules.</p>
<p><strong>1146: XMLSMI: text wrapping issues on load</strong></p>
<p>Newlines were being collapsed in places they shouldn&#8217;t when parsing MixedText fields like description, resulting in (for example) &lt;pre&gt; not being preformatted.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muonics.com/blog/128/mib-smithy-411-and-sdk-345-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MIB Smithy SDK 3.4.4 Release</title>
		<link>http://www.muonics.com/blog/110/mib-smithy-sdk-344-release/</link>
		<comments>http://www.muonics.com/blog/110/mib-smithy-sdk-344-release/#comments</comments>
		<pubDate>Wed, 30 Jul 2008 22:56:14 +0000</pubDate>
		<dc:creator>Michael Kirkham</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[MIB Smithy SDK]]></category>

		<guid isPermaLink="false">http://www.muonics.com/blog/110/mib-smithy-sdk-344-release/</guid>
		<description><![CDATA[I am pleased to announce the release of MIB Smithy SDK 3.4.4.  Many bug fixes have been made in this release to clear the way for new features.
Changes in this release:
741: Allow empty modules in SMI parser
Modules without any assignments in them (which might happen if you create a module in MIB Smithy and [...]]]></description>
			<content:encoded><![CDATA[<p>I am pleased to announce the release of MIB Smithy SDK 3.4.4.  Many bug fixes have been made in this release to clear the way for new features.</p>
<h3>Changes in this release:</h3>
<p><strong>741: Allow empty modules in SMI parser</strong></p>
<p>Modules without any assignments in them (which might happen if you create a module in MIB Smithy and save it before defining anything in it) can now be loaded by the SMI parser.</p>
<p><strong>253: Documentation for database -logcommand setting</strong></p>
<p>Documentation has been added for the SMI Database&#8217;s -logcommand setting, which allows user control over the formatting of compiler and parser messages.</p>
<p><strong>851: XML version of SNMPv2-SMI errors about IMPORTS</strong></p>
<p>Validating SNMPv2-SMI from XML format caused a false error regarding OBJECT-IDENTITY needing to be imported due to module version not being determined when there is no imports element.</p>
<p><strong>848: Tables are not saved/restored from XML correctly</strong></p>
<p>Single-identifier subtypes (as in the &#8216;SysORTable&#8217; in &#8216;SEQUENCE OF SysORTable&#8217;) were being assigned by the XML parser to the wrong field, resulting in saved/restored XML files from failing validation on tables.</p>
<p><strong>842: Importing of XML files fails with no error message</strong></p>
<p>The XML parser did not previously support sending log messages through the SMI database&#8217;s logcommand, just logchannel.  This resulted in error messages not being displayed in the &#8220;Tasks&#8221; list of MIB Smithy.</p>
<p><strong>844: XML files fail to import with large integers</strong></p>
<p>Due to an arithmetic error in the XML parser&#8217;s integer overflow checking, XML files could fail to import with sufficiently large integer values (e.g. in range elements).</p>
<p><strong>914: Dropped notifications during bursts</strong></p>
<p>Notifications could be dropped during bursts of many (or large) packets due to the default receive buffer size provided by the Windows TCP/IP stack. The SDK now requests up to a 1 MB buffer for the trap socket (on all platforms) to reduce the risk of packet loss.</p>
<p><strong>255: MacOSX: tclsh aborts loading SDK without valid license key</strong></p>
<p>With Tk built for Aqua, tclsh would terminate with SIGABRT when not logged in at the console when attempting to display the license dialog.  The SDK now checks if Aqua or X11 environments are available to the session before attempting to load Tk.</p>
<p><strong>882: Relaxed case restrictions on database queries</strong></p>
<p>Although the SMI parser was able to handle illegal upper/lowercase first letters for record names, the validation for database queries was still strict.  This caused &#8220;$db get -fulloid Foo&#8221; to succeed but &#8220;$db get -fulloid Foo.0&#8243; to error regarding an invalid OID (which it is, but limited the usefulness of the parser&#8217;s handling of them).</p>
<p><strong>912: SNMPv1 Trap-PDU encoding incorrect</strong></p>
<p>The SNMPv1 Trap-PDU fields were being encoded in the wrong order when using the SDK to send SNMPv1 traps.  Consequently, the SDK could not decode SNMPv1 traps sent to itself.</p>
<p><strong>850: XML parser doesn&#8217;t check for equal min/max range values</strong></p>
<p>Both the min and max attributes of the range element in the XML Schema are required, so single range values are generated as equal min and max.  However, upon importing an XML file these values were not merged back into one, resulting in validation errors.</p>
<p><strong>818: TRAP-TYPE&#8217;s REFERENCE field not preserved</strong></p>
<p>The REFERENCE field of TRAP-TYPEs will no longer be lost when loading MIB modules.</p>
<p><strong>817: Querying CREATION-REQUIRES returns only one element</strong></p>
<p>Querying CREATION-REQUIRES property of a variation will now return all of the symbols listed, rather than only one.</p>
<p><strong>254: snmplib format command documentation corrections</strong></p>
<p>Docs for the snmplib format command were corrected to reflect the actual default format for enumerations (label only) and invalid &#8220;-format&#8221; argument in example 2.</p>
<p><strong>308: -includes option missing from get capabilities</strong></p>
<p>The documented -includes property for querying AGENT-CAPABILITIES statements was implemented only with the -mandatory-groups synonym, while both -includes and -mandatory-groups were supported for querying conformance modules and only -mandatory-groups was supported for querying MODULE-COMPLIANCE.  Both ACs and MCs now support both synonyms.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muonics.com/blog/110/mib-smithy-sdk-344-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MIB Smithy 4.0.7 and SDK 3.4.3 Release</title>
		<link>http://www.muonics.com/blog/99/mib-smithy-407-and-sdk-343-release/</link>
		<comments>http://www.muonics.com/blog/99/mib-smithy-407-and-sdk-343-release/#comments</comments>
		<pubDate>Mon, 10 Sep 2007 03:37:29 +0000</pubDate>
		<dc:creator>Muonics, Inc.</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[MIB Smithy]]></category>
		<category><![CDATA[MIB Smithy SDK]]></category>

		<guid isPermaLink="false">http://www.muonics.com/blog/99/mib-smithy-407-and-sdk-343-release/</guid>
		<description><![CDATA[Changes affecting MIB Smithy:

A &#8220;wrong # args&#8221; error could occur when previewing a single OBJECT-TYPE in SMI format (the error did not occur when previewing the whole module).

Changes affecting both MIB Smithy and MIB Smithy SDK:

The &#8220;piberrors&#8221; type in the XML-SMI Schema document was not correct and did not match the implementation and has been [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Changes affecting MIB Smithy:</strong></p>
<ul>
<li>A &#8220;wrong # args&#8221; error could occur when previewing a single OBJECT-TYPE in SMI format (the error did not occur when previewing the whole module).</li>
</ul>
<p><strong>Changes affecting both MIB Smithy and MIB Smithy SDK:</strong></p>
<ul>
<li>The &#8220;piberrors&#8221; type in the XML-SMI Schema document was not correct and did not match the implementation and has been corrected.</li>
<li>Newlines and carriage returns in OCTET STRING values were forcing conversion to hex (such as in varbind values in responses) as if they were on-printable characters.</li>
<li>A crash could occur if the environment variable for pointing to the license key file were mistakenly set to a directory instead.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.muonics.com/blog/99/mib-smithy-407-and-sdk-343-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
