Re: [netmod] 6991bis: address-with-prefix-length

Kristian Larsson <> Thu, 18 April 2019 08:09 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id B5CDF12024F for <>; Thu, 18 Apr 2019 01:09:50 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id ZDAY5lu6dI1H for <>; Thu, 18 Apr 2019 01:09:48 -0700 (PDT)
Received: from Mail1.SpriteLink.NET ( []) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 3B729120041 for <>; Thu, 18 Apr 2019 01:09:48 -0700 (PDT)
Received: from mbp.local ( []) by Mail1.SpriteLink.NET (Postfix) with ESMTPSA id DAF933F42C for <>; Thu, 18 Apr 2019 10:09:45 +0200 (CEST)
References: <> <> <> <> <> <> <>
From: Kristian Larsson <>
Message-ID: <>
Date: Thu, 18 Apr 2019 10:09:45 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0) Gecko/20100101 Thunderbird/60.5.3
MIME-Version: 1.0
In-Reply-To: <>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Language: en-US
Content-Transfer-Encoding: 7bit
Archived-At: <>
Subject: Re: [netmod] 6991bis: address-with-prefix-length
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: NETMOD WG list <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Thu, 18 Apr 2019 08:09:51 -0000

On 2019-04-18 09:40, Ladislav Lhotka wrote:
> Juergen Schoenwaelder <> writes:
>> On Wed, Apr 17, 2019 at 09:35:51PM +0200, Kristian Larsson wrote:
>>> I wonder though, isn't ipX-address-and-prefix-length the clearer name, or if
>>> we do want to shorten then ipX-address-and-plen. I think Martin stated the
>>> case for ipX-address-and-prefix but that is IMHO not the way this is
>>> typically perceived by people.
>>> ^^^^^^^----- ipv4 address
>>>         ^^^-- ipv4 prefix length
>>> now, taking the prefix-length you know that 1.2.3 is the prefix but does
>>> that mean the above is an IPv4 address and a prefix? Or is it just that you
>>> can infer the prefix from the above? It's just different ways of looking at
>>> it. My experience tells me ipX-address-and-prefix-length is the clearer way
>>> of conveying what this is.
>> I guess this is somewhat subjective. The prefix length is the number
>> used to convey what the prefix is. So you are effectively defining an
>> address and the prefix that this address belongs to. ;-)
> Strictly speaking, what is being defined by the number is a subnet mask.

Heh, amazing how something so binary can turn out to be so subjective ;) 
This sort of turns into philosophical questions and I'm not sure we need 
to straighten it all out. I'd still call the prefix-length the 
prefix-length. It directly maps to the typical subnet mask 
representation and as you say, they can be thought of as the same thing.

Does this mean you prefer ipX-address-and-subnet-mask? Because I think 
that when someone reads that they are going to expect a value that looks 
like rather than, which is why I still 
think ipX-address-and-prefix-length (possibly s/prefix-length/plen/) is 
the better name :)

>> Given that we already have ip-prefix (which does as well use a prefix
>> length to convey what the prefix is), it seems ip-address-and-prefix
>> is more consistent with the existing RFC 6991 definitions. Being
>> consistent with what we have was the main reason for me to prefer
>> ip-address-and-prefix.
> I am not in favour of adding this type. Having ip-prefix next to
> ip-address-and-prefix is confusing.

Confusing or not, they are NOT interchangeable and actually do different 
things, which is why both are needed. There's plenty of precedence to 
this, like postgresql has data types (cidr and inet) that map exactly to 
this behaviour, i.e. both store something that looks like an IP address 
and a prefix-length but one (cidr for pg) forces bits in host portion to 
be set to all 0. Python ipaddress has the same with IPv4Address and 

> Moreover, the most natural use for
> this type would be the address specification in the "ietf-ip" module,
> but we already have two leaves there: ip and prefix-length.

Like I said in another mail, I think it is nice if these common 
datatypes become used by vendors and implementors. Many use proprietary 
models but at least using standard datatypes allows us to easily parse 
the data into sensible datatypes on our end, like Python's