Stephen Hemminger <step...@networkplumber.org> writes:

> On Tue, 19 Mar 2019 10:18:00 +0000
> Petr Machata <pe...@mellanox.com> wrote:
>
>> Stephen Hemminger <step...@networkplumber.org> writes:
>> 
>> > On Mon, 18 Mar 2019 15:02:53 +0100
>> > Andrew Lunn <and...@lunn.ch> wrote:
>> >  
>> >> On Mon, Mar 18, 2019 at 01:15:41PM +0000, Petr Machata wrote:  
>> >> >
>> >> > Andrew Lunn <and...@lunn.ch> writes:
>> >> >  
>> >> > >> +enum rtnl_link_down_reason_major {
>> >> > >> +    RTNL_LDR_OTHER,  
>> >> > >
>> >> > > Does 'other' make any sense? Seem better to just not report anything
>> >> > > at all, or add a comment that more reasons should be added at the end
>> >> > > to reflect whatever the hardware or software can determine.  
>> >> >
>> >> > You still have the minor code to give you some information.  
>> >>
>> >> The problem i have with OTHER, is that you know it is not NO_CABLE,
>> >> UNSUPPORTED_CABLE, AUTONEG_FAILURE, etc. But for people to know what
>> >> OTHER cannot be, they have to know all the codes.
>> >>
>> >> But then later, some other driver writer does the right thing, adds a
>> >> new value to the end for a code they can detect. Say for example
>> >> SFP_OVERHEATED.  This happened to be what the previous driver was
>> >> using for OTHER. Now we have one driver returning SFP_OVERHEATED and
>> >> the older driver OTHER. So OTHER no longer actually mean 'other', it
>> >> just means something random, which could actually be the same as one
>> >> of the listed codes.
>> >>
>> >> You can stop this from happening by not having OTHER. Always add a new
>> >> code if there is something you can report, but there currently is no
>> >> code for it. And the userspace tool should just print the decimal
>> >> value if it does not know what text to translate it into.  
>> >
>> > Gut feel is that enumerated values are going to grow and grow and be
>> > long term API headache.
>> >
>> > Would it be possible to use a string like the external ack error
>> > message?  
>> 
>> It would, but then if any automated tools want to make use of it beyond
>> just blindly displaying it, they will need to parse it with all the
>> usual problems. In the end the string itself becomes the API anyway.
>
> The problem with codes is that without some standard (like IETF) the
> values are very system specific and likely to get lots of of version churn.

I think this would be even worse with just strings.

Reply via email to