Re: Compilation compatibiltiy with draft-ietf-hubmib-rfc3636bis-05
"Clay Sikes" <[email protected]> Tue, 05 Sep 2006 16:04:56 -0400
| Newsgroups | gmane.ietf.hubmib |
|---|---|
| Organization | Zhone Technologies, Inc. |
| Message-ID | <[email protected]> |
Hi Mike, Below is a snippet of what our MIB compiler generates for definitions for our implementation of RFC 2668. When I replace RFC 2668 with the ID, the compiler failed because code used D_ifMauAutoNegCapabilityBits_bfdxPause, D_ifMauAutoNegCapabilityBits_bfdxAPause, D_ifMauAutoNegCapabilityBits_bfdxSPause, and /or D_ifMauAutoNegCapabilityBits_bfdxBPause. I have replace RFC 2668 with RFC 3636 and there are not compatibility issues. Since I have a definite compilation compatibility failure, then could others face the same situation? And if so, does this group really want to create that kind of a situation? /* enumerated values for ifMauAutoNegCapabilityBits */ #define D_ifMauAutoNegCapabilityBits_bOther 0 #define D_ifMauAutoNegCapabilityBits_b10baseT 1 #define D_ifMauAutoNegCapabilityBits_b10baseTFD 2 #define D_ifMauAutoNegCapabilityBits_b100baseT4 3 #define D_ifMauAutoNegCapabilityBits_b100baseTX 4 #define D_ifMauAutoNegCapabilityBits_b100baseTXFD 5 #define D_ifMauAutoNegCapabilityBits_b100baseT2 6 #define D_ifMauAutoNegCapabilityBits_b100baseT2FD 7 #define D_ifMauAutoNegCapabilityBits_bfdxPause 8 #define D_ifMauAutoNegCapabilityBits_bfdxAPause 9 #define D_ifMauAutoNegCapabilityBits_bfdxSPause 10 #define D_ifMauAutoNegCapabilityBits_bfdxBPause 11 #define D_ifMauAutoNegCapabilityBits_b1000baseX 12 #define D_ifMauAutoNegCapabilityBits_b1000baseXFD 13 #define D_ifMauAutoNegCapabilityBits_b1000baseT 14 #define D_ifMauAutoNegCapabilityBits_b1000baseTFD 15 /* enumerated values for ifMauAutoNegCapAdvertisedBits */ #define D_ifMauAutoNegCapAdvertisedBits_bOther 0 #define D_ifMauAutoNegCapAdvertisedBits_b10baseT 1 #define D_ifMauAutoNegCapAdvertisedBits_b10baseTFD 2 #define D_ifMauAutoNegCapAdvertisedBits_b100baseT4 3 #define D_ifMauAutoNegCapAdvertisedBits_b100baseTX 4 #define D_ifMauAutoNegCapAdvertisedBits_b100baseTXFD 5 #define D_ifMauAutoNegCapAdvertisedBits_b100baseT2 6 #define D_ifMauAutoNegCapAdvertisedBits_b100baseT2FD 7 #define D_ifMauAutoNegCapAdvertisedBits_bFdxPause 8 #define D_ifMauAutoNegCapAdvertisedBits_bFdxAPause 9 #define D_ifMauAutoNegCapAdvertisedBits_bFdxSPause 10 #define D_ifMauAutoNegCapAdvertisedBits_bFdxBPause 11 #define D_ifMauAutoNegCapAdvertisedBits_b1000baseX 12 #define D_ifMauAutoNegCapAdvertisedBits_b1000baseXFD 13 #define D_ifMauAutoNegCapAdvertisedBits_b1000baseT 14 #define D_ifMauAutoNegCapAdvertisedBits_b1000baseTFD 15 /* enumerated values for ifMauAutoNegCapReceivedBits */ #define D_ifMauAutoNegCapReceivedBits_bOther 0 #define D_ifMauAutoNegCapReceivedBits_b10baseT 1 #define D_ifMauAutoNegCapReceivedBits_b10baseTFD 2 #define D_ifMauAutoNegCapReceivedBits_b100baseT4 3 #define D_ifMauAutoNegCapReceivedBits_b100baseTX 4 #define D_ifMauAutoNegCapReceivedBits_b100baseTXFD 5 #define D_ifMauAutoNegCapReceivedBits_b100baseT2 6 #define D_ifMauAutoNegCapReceivedBits_b100baseT2FD 7 #define D_ifMauAutoNegCapReceivedBits_bFdxPause 8 #define D_ifMauAutoNegCapReceivedBits_bFdxAPause 9 #define D_ifMauAutoNegCapReceivedBits_bFdxSPause 10 #define D_ifMauAutoNegCapReceivedBits_bFdxBPause 11 #define D_ifMauAutoNegCapReceivedBits_b1000baseX 12 #define D_ifMauAutoNegCapReceivedBits_b1000baseXFD 13 #define D_ifMauAutoNegCapReceivedBits_b1000baseT 14 #define D_ifMauAutoNegCapReceivedBits_b1000baseTFD 15 Thanks, Clay C. M. Heard wrote: On Tue, 5 Sep 2006, Clay Sikes wrote: Wow! I'm extremely surprised that correcting a typo and breaking compilation compatibility is ok. Clay, Here is the relevant excerpt from the MIB review guidelines -- specifically, RFC 4181 Section 4.9: RFC 2578 Section 10.2 specifies rules that apply to revisions of object definitions. The following guidelines correct some errors in these rules and provide some clarifications: - Bullet (1) allows the labels of named numbers and named bits in SYNTAX clauses of type enumerated INTEGER or BITS to be changed. This can break compilation compatibility, since those labels may be used by DEFVAL clauses in modules that import the definitions of the affected objects. Therefore, labels of named numbers and named bits MUST NOT be changed when revising IETF MIB modules (except to correct typographical errors), and they SHOULD NOT be changed when revising enterprise MIB modules. The only potential compilation problem of which I am aware would arise when a module containing an AGENT-CAPABILITIES definition references ifMauAutoNegCapabilityBits in a VARIATION clause and provides a DEFVAL for it. Have you actually seen this problem? Or is there perhaps another problem of which the MIB Doctors were not aware when they discussed this part of RFC 4181? Thanks Mike Heard __________________________________________________________________ From: Clay Sikes [ mailto:[email protected] ] Sent: Friday, September 01, 2006 17:24 To: Edward Beili Cc: IETF Hub MIB Working Group; C. M. Heard Subject: Compilation compatibiltiy with draft-ietf-hubmib-rfc3636bis-05 Hi Edward, First, thanks for all the editor work you are doing on the MIB modules. I attempted to update an implementation of the MAU-MIB from RFC 2668 to that which is specified in this ID and ran into a compilation compatibility issue. An update from RFC 2668 to RFC 3636 does not have this compilation compatibility issue. In this ID, the ifMauAutoNegCapabilityBits, ifMauAutoNegCapAdvertisedBits, and ifMauAutoNegCapReceivedBits have their syntax changed to use the IANAifMauAutoNegCapBits TC. I strongly support this change. However, RFC 2668 and RFC 3636 have different labels for the following named bits for the ifMauAutoNegCapabilityBits object's syntax: 1. Bit 8 -- 2668/3636 bfdxPause(8), this ID bFdxPause(8) 2. Bit 9 -- 2668/3636 bfdxAPause(9), this ID bFdxAPause(9) 3. Bit 10 -- 2668/3636 bfdxSPause(10), this ID bFdxSPause(10) 4. Bit 11 -- 2668/3636 bfdxBPause(11), this ID bFdxBPause(11) Compilation of the ID fails because some these labels changed from 2668/3636 to this ID. Although the RFC 2578 Section 10.2 allows the labels of named bits to change, this is generally not a good idea. In the case of this ID, "over the wire" operation is not effected, but compilation compatibility has been broken. Please refer to RFC 4181 Section 4.9 top of page 29 for a discussion on changing labels for named bits. Given the fact that back in RFC 2668 ifMauAutoNegCapabilityBits have different labels for bits 8 through 11 then ifMauAutoNegCapAdvertisedBits and ifMauAutoNegCapReceivedBits, it would seem like there needs to be a different TC in the proposed IANA-MAU-MIB for ifMauAutoNegCapabilityBits to use then what ifMauAutoNegCapAdvertisedBits and ifMauAutoNegCapReceivedBits use to maintain compilation compatibility. I hope this has not already been discussed. I did a quick glance in the list and didn't see anything. Thoughts? Best Regards, Clay Sikes _______________________________________________ Hubmib mailing list [email protected] https://www1.ietf.org/mailman/listinfo/hubmib