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