[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Module names in SMIng
- To: <sming@ops.ietf.org>
- Subject: Module names in SMIng
- From: "David T. Perkins" <dperkins@dsperkins.com>
- Date: Sat, 17 Feb 2001 15:04:22 -0800
- Delivery-date: Sat, 17 Feb 2001 15:06:03 -0800
- Envelope-to: sming-data@psg.com
HI,
At the last IETF meeting in december, I had several comments on SMIng,
but didn't have the time to present them. One key one is naming of
modules. The language continues with the approach used in SMIv1/2
of assuming that module names are globally unique. There have been
few problems, so far, but the name clash problem only gets worse
as more modules are defined.
I would like to propose a simple fix. It is to require that module
names be defined DNS format and use the DNS name space administration.
(Thus, no new burden is required of IANA.) However, DNS names can
have their ownership lost and reassigned to another entity. This
problem already exists with URIs, and possibly other uses.
Even though this can happen, the advantages outweigh the disadvantages.
By choosing this approach (or similar ones), the following
is achieved with virtually no cost:
1) unique module names
2) ease of management of modules in libraries by module compilers,
editors, and other module tools
Current module name:
ucIndentifier - which is an uppercase identifier of 1 to 63
alphaNum characters and hyphens
(BY THE WAY the grammar for SMIng in the -04 version does not
have a definition for ucIdentifier. This is a BUG in the grammar.)
A module name is used in the following definitions:
moduleStatement = moduleKeyword sep ucIdentifier optsep
^^^^^^^^^^^^ module name
"{" stmtsep
*(importStatement stmtsep)
organizationStatement stmtsep
contactStatement stmtsep
descriptionStatement stmtsep
*1(referenceStatement stmtsep)
1*(revisionStatement stmtsep)
*(extensionStatement stmtsep)
*(typedefStatement stmtsep)
*(identityStatement stmtsep)
*(classStatement stmtsep)
"}" optsep ";"
importStatement = importKeyword sep ucIdentifier optsep
^^^^^^^^^module name
"(" optsep
identifierList optsep
")" optsep ";"
qucIdentifier = *1(ucIdentifier "::") ucIdentifier
^^^^^^^^^^^^module name
qlcIdentifier = *1(ucIdentifier "::") lcIdentifier
^^^^^^^^^^^^module name
And possibly others. However, the grammar definition could be
much improved by replacing "ucIndentifier" by "moduleName"
and adding the grammar definition for moduleName.
New module name:
moduleName = ucIndentifier 1*("." ucIdentifier)
An example would be SNMPv2-MIB.IETF.ORG (a conversion of the MIB module
from RFC 1907).
Regards,
/david t. perkins