Subject: Re: [Agentx] Clarification of RFC 2741, section 5.1

From: Randy Presuhn <[email-masked]>
Date: Fri, 16 Feb 2007 11:34:04 +0700 (GMT+07:00)

Hi -

>From: Frank Fock <[email-masked]>
>Sent: Feb 16, 2007 4:43 AM
>To: [email-masked]
>Subject: [Agentx] Clarification of RFC 2741, section 5.1
>
>Hi,
>
>I have been pointed to an interoperability problem between
>two different AgentX implementations regarding the encoding
>of a zeroDotZero (0.0) object identifier on the wire.
>
> From the AgentX object identifier encoding rules, I would
>expect an encoding as:
>
>0002 0000 0000 0000
>0000 0000 0000 0000
>0000 0000 0000 0000
>
>However section 5.1 of RFC 2741 says:
>
>    "A null Object Identifier consists of the
>     4-byte header with all bytes set to 0."
>
>which would be:
>
>0000 0000 0000 0000
>
>I think the term "null Object Identifier" refers to a zero
>length OID rather than the 0.0 OID, because otherwise
>the length field would be inconsistently used. Is this
>assumption true?

No.  There is no such thing as a zero-length OID in ASN.1
That is why 0.0 was usurped.

>If yes, in an upcoming update of the RFC 2741 "null"
>should be rephrased as "zero length", shouldn't it?

No, see above.

>Because in SNMP BER a zero length OID cannot be
>encoded, I am not sure if it is wise to allow such an
>OID to be encoded for AgentX?

Correct.  That's why "null Object Indentifier" means 0.0

>Regards,
>Frank Fock

Randy

---

From: Magnus Fromreide <[email-masked]>
Date: Sun, 18 Feb 2007 07:36:42 +0100

> That is why 0.0 was usurped.

Interesting. I have always interpreted the term "null Object Identifier"
to mean "an object identifier that most certainly doesn't exist - a NULL
value" and seen it as a placeholder value where an OID is needed.

> Correct.  That's why "null Object Indentifier" means 0.0

So a valid search range covering all oid's but 0.0 is one of

0002 0000 0000 0000
0000 0000 0000 0000
0000 0000 0000 0000
0002 0000 0000 0000
0000 0000 0000 0000
0000 0000 0000 0000

,

0000 0000 0000 0000
0002 0000 0000 0000
0000 0000 0000 0000
0000 0000 0000 0000

,

0002 0000 0000 0000
0000 0000 0000 0000
0000 0000 0000 0000
0000 0000 0000 0000

and

0000 0000 0000 0000
0000 0000 0000 0000

and one that covers all oid's is either

0002 0000 0001 0000
0000 0000 0000 0000
0000 0000 0000 0000
0002 0000 0000 0000
0000 0000 0000 0000
0000 0000 0000 0000

or

0002 0000 0001 0000
0000 0000 0000 0000
0000 0000 0000 0000
0000 0000 0000 0000

if I understand you correctly, or is it so that the two representations
are unequal so that

0002 0000 0000 0000
0000 0000 0000 0000
0000 0000 0000 0000

isn't a null object identifier while

0000 0000 0000 0000

is? If that is the case then that seems inconsistent as well, as they
are the same in al other ways.

I think the standard was cleaner with my interpretation of "null Object
Identifier" as a non-existant oid.

/Magnus Fromreide