Disclaimer

This is a personal web page. The views expressed on this blog are mine and do not necessarily reflect the views of my current employer, Microsoft Corporation.

2009/10/01

Trident Sign: 3.1 Shipped on National Day

Today is the 60th birthday of People's Republic of China. It's my honor to ship Trident Refresh 3.1 on this remarkable day. You can grab a copy from here.


Work on 4.0 SquareRoot will also start tonight. Stay tuned.

2009/09/26

Trident Sign: 3.1 Ready and Next

I just checked in the last bit for 3.1 release. So Trident Refresh will be released after one month of baking. This is a bug fix release, so changes are rare (but some are significant),
  1. Work item 4988 is resolved. This issue can lead to memory leak, so all 3.0 users need to migrate to 3.1 as soon as possible.
  2. snmpset tool is enhanced. Now it supports most argument the Net-SNMP alternative uses. 
  3. snmpwalk tool now supports "mode" switch.
  4. SharpSnmpLib.Optional.dll is added. An experimental AES privacy is added. I may port more such providers from SNMP#NET in the future.
  5. Message factory parser is enhanced. Bytes that cannot be parsed as SNMP messages will be thrown out in SharpMessageFactoryException.
  6. StringUtility.GetAlternativeTextualForm is finally added. It can be used to generate strings such as "iso.org.dod.internet.mgmt.mib-2.system" which is asked by many #SNMP users.
I have chosen a name for our 4.0 release. That is, SquareRoot. In that release, we will see more enhancements for the Browser and the Compiler, which aim to make your life much easier than present. If we are lucky enough to have a new compiler implemented in this release, then we may get rid of some long lived issues and provide much more powerful features. 

I admit that this new compiler has been delayed several times. But still at this moment I don't have anything more to share. We won't upgrade the poor-designed one exising, and we lack of resources to finish the experimental one. Maybe I should have learned ANTLR earlier and spent more time on that approach.

Anyhow, we have delivered a lot still in Trident, so we are on the way again.

Stay tuned.

2009/09/13

Trident Sign: How to Set Up SNMP4J Agent, Part 1

To enrich #SNMP v3 support, I am going to use snmp4j agent. But due to lack of documentation for me, a Java blind, I have to learn about it bit by bit.

Below is a summary of my steps,
  1. Download and install Java runtime from http://java.com. I install it to C:\Program Files (x86)\Java\jre6.
  2. Configure JAVA_HOME like this (http://wso2.org/project/wsas/java/1.1/docs/setting-java-home.html) and add C:\Program Files (x86)\Java\jre6\bin to PATH.
  3. Download snmp4j agent ZIP package from here (http://snmp4j.org/html/download.html). I use 1.3.1 version.
  4. Unzip this package and copy all JARs from "lib" to "dist\lib".
  5. Create a launch.bat in "dist\lib" and use the following content.
  6. Execute this batch file to launch the agent. To stop it, simply close the console window.
Batch file content is,

    java -cp SNMP4J-agent.jar;SNMP4J.jar;log4j-1.2.9.jar org.snmp4j.agent.test.TestAgent
    pause

I will spend more time on this agent and post future findings later.

2009/08/29

Trident Sign: Release Notes

Finally we start to ship Trident 3.0 of #SNMP Suite. In this release the changes are,

  1. SNMP v3 support added to the Library and the command line utilities.
  2. *Message classes interface enhanced.
  3. Classes and namespaces re-organized.
  4. Obsolete items in 2.0 release removed.
  5. Several bugs fixed.
This is an intermediate release as SNMP v3 support can be further enhanced. The Browser as well as the Compiler needs to be updated for v3 too. Therefore, the work for the next release will be started very soon. Hope that release can be ready by the new year eve. But who knows? :)

2009/08/23

Trident Sign: Prior to Release Day

After four months, we come to another milestone of #SNMP project, the
release day of #SNMP Suite 3.0.

Within these days, though the speed is limited, we implemented most of
SNMP v3 support in the Library, and addressed reported issues. We tried
to introduce brand new features while commit as less changes to the
previous interfaces as possible. And today I think it is time to
announce the completion of Trident release (3.0).

Obviously we still have the following areas to investigate in the next
release (codename is under discussion),

1. Complete the remaining SNMP v3 pieces.
2. Add more authentication and privacy providers.
3. Prepare the Browser to work with SNMP v3.

But I hope you enjoy this release and continue your support on this open
source project (by viewing the home page, submitting your comments and
reporting issues, and so on).

Thanks,

2009/06/01

Trident Sign: Listener Adapters

It is a really interesting question why Gendarme think Listener.HandleMessage is a large function. But now I have the answer and today I finally refactored on this function, and designed a few new classes.

Listener Adapters
For an SNMP v1 manager, actually only TRAP v1 message is useful. So why it needs to be bothered by other versions of messages? Now you can use a simple listener adapter for v1 manager and hook it to the Listener object.

Yes, it sounds like filters for incoming messages. That's it.

I have also created a default adapter for backward compatibility, too. You can check how to use it in the samples.


Breaking Change Notice
Now all events for Listener component are obsolete except that one for exceptions. So you must follow the samples to update your code as so to adapt the changes.

Stay tuned.

2009/05/29

CrossRoad Billboard: More on IP v6 and 2.1

Here is the technical details about work item 4016 and release 2.1.

Background
I bought my notebook in 2007, which ships with Windows Vista Home Basic, so from then on I have worked on IP v6 enabled platforms (Windows Vista and Windows 7).

Before the release of 2.0 final, when I tried to make the library IP v6 compatible, I had a lot of tests executed on Windows 7. So I didn't realize that such tests are not enough.

Yes, I did learn a few key points about Windows XP and Windows Server 2003 in March. But I simply neglected them that day and left the bug there. (Next time surely I will do some tests on Windows XP.


Report
BACON report this bug on April 29th (three days after the release day), which soon drew my attention.

This is one of the best bug reports I ever saw, in which not only the problem description was comprehensive, but the solution was presented as well. Soon we closed the work item (on May 1).

I must thank BACON again as he/she did a great job.


Extra
The report was about the library, but in fact there was another relevant issue in the browser.

When I designed the notification panel, it also made use of IP v6 so that all TRAP and INFORM messages can be correctly handled. If we only fixed the library, the browser would still fail to work.

The good news is that both issues are addressed, and 2.1 contains both patches.


Side Notes
First, what if your application only targets Windows 6.0 (Vista and Server 2008) and the upcoming Windows 7 (Windows Server 2008 R2 as well)? Do you need to upgrade? I think you can continue using release 2.0.

Second, as I removed most obsolete items in 2.1 release, please compile your code against 2.0 and follow the migration suggestions. After those changes, you can move on to compile against 2.1.

If you meet any problem with 2.0/2.1, feel free to let me know via this blog or the discussion board.

2009/05/25

CrossRoad Billboard: CrossRoad Refresh (2.1)

This is a silent release, as it only contains important bug fixes for Windows XP/Server 2003, which do not have IP v6 installed by default.

If you meet socket exceptions with 2.0, please try if 2.1 works for you.