
Juergen Schoenwaelder wrote: [snip]
I have a strong opinion about this: Broken MIBs should be rejected.
I think this is more an academic/perfect world view. NET-SNMP will be used in conjunction of MIB modules shipped by vendors. These vendors are not using NET-SNMP and their customers are using UCD-SNMP without their knowledgde. Now these customers upgrade to NET_SNMP and everything breaks, because of the broken MIB module. Yes, I agree the vendors need to improve their MIB modules. But in real life the customer has a problem directly.
I agree that libsmi could be improved to recover more gracefully in some cases. And this is what I heard Frank saying as well. But adding code to accept modules that for example mix SMI versions is definitely not the direction I want to go.
I agree, that is just an example. Even though, my own MIB compiler is flexible with this.
We are facing the following situation:
(a) There are so many broken MIB because so many lenient parsers do accept them. (b) There are so many lenient parsers that accept broken MIBs because there are so many broken MIBs.
This circular logic needs to be broken up. And the way to do this is to provide people with good parsers that help them to fix the broken modules. Yes, it will not be without pain for everyone. But in the longer term, there will be clear benefits.
I am sure all vendors will agree, but that they fix the problem. The bigger problem is taht sometimes MIB modules are already shipped.
There is also another view of this. Libsmi as such is currently focussed on parsing and testing MIB modules for there syntactical and semantical correctness. Usage of libsmi inside NET-SNMP is I beleive different. It is there focussed on getting more knowledge of the managed objects at the manager side. I beleive that the resulting libsmi need to be that when used as parser/tester it should reject broken MIB modules and when used inside applications it should attempt as much error recovery as possible. After the error recovery it still may provide all problems of the MIB module, but the application may start using it.
Correct me if I am wrong Dave, but I beleive you are looking for something like this too.
Harrie