You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
ipaddress - add ability to get next closest network of any prefix size #87027
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee=Noneclosed_at=Nonecreated_at=<Date2021-01-08.00:30:51.031>labels= ['type-feature', 'library', '3.10']
title='ipaddress - add ability to get next closest network of any prefix size'updated_at=<Date2021-07-17.22:04:30.115>user='https://github.com/777GE90'
The ipaddress module in Python is an excellent tool, but I noticed it is missing a feature that I needed several months ago, which is the ability to find the next closest subnet with a specific prefix length.
For example, imagine I had a IPv4Network("10.10.0.72/30"), how would I find the next possible /25 address? It is not the most straightforward thing to do, so think it would be a great enhancement to the ipaddress library.
I think this can be achieved by adding in a new method to the BaseNetwork class, the method could be defined like "next_prefix(next_prefix=None)". Calling this method would return an IPv4/v6 address that is the closest possible match with the new prefix (defined as next_prefix).
v4=IPv4Network("10.10.0.72/30")
next_network=v4.next_subnet(next_prefix=30)
# Output: next_network = IPv4Network("10.10.0.76/30")v4=IPv4Network("10.10.0.72/30")
next_network=v4.next_subnet() # if next_prefix is not defined it will use the existing prefix of /30, so this call is exactly the same as the previous# Output: next_network = IPv4Network("10.10.0.76/30")v6=IPv6Network("2001:db8:aaaa:aaaa:aaaa:aaaa:aaaa:0000/112")
next_network=v6.next_subnet()
# Output: next_network = IPv6Network("2001:db8:aaaa:aaaa:aaaa:aaaa:aaab:0/112")v6=IPv6Network("2001:db8:aaaa:aaaa:aaaa:aaaa:aaaa:0000/112")
next_network=v6.next_subnet(next_prefix=64)
# Output: next_network = IPv6Network("2001:db8:aaaa:aaab::/64")
I am going to be working on this and plan to raise a PR soon. This is my first time contributing to Python, so I appreciate your help / comments / suggestions / guidance as I go along.
Not sure how to edit an issue, but I made a mistake, where I said:
"...Calling this method would return an IPv4/v6 address that is the closest possible match..."
I meant to say:
"...Calling this method would return an IPv4/v6 -NETWORK- that is the closest possible match..."
777GE90 commented on Jan 9, 2021
777GE90mannequin
MannequinAuthor
More actions
Updated the title and method naming, I previously mentioned the "next subnet" and called the method "next_subnet", but technically this is wrong. What this method should be doing is finding the next closest network of prefix size n.
So I guess the method definition should be: next_network(self, next_network=None)
changed the title [-]ipaddress - add ability to get next closet subnet of any prefix size[/-][+]ipaddress - add ability to get next closet network of any prefix size[/+]on Jan 9, 2021
changed the title [-]ipaddress - add ability to get next closet network of any prefix size[/-][+]ipaddress - add ability to get next closest network of any prefix size[/+]on Feb 15, 2021
Activity
777GE90 commentedon Jan 8, 2021
The ipaddress module in Python is an excellent tool, but I noticed it is missing a feature that I needed several months ago, which is the ability to find the next closest subnet with a specific prefix length.
For example, imagine I had a IPv4Network("10.10.0.72/30"), how would I find the next possible /25 address? It is not the most straightforward thing to do, so think it would be a great enhancement to the ipaddress library.
I think this can be achieved by adding in a new method to the BaseNetwork class, the method could be defined like "next_prefix(next_prefix=None)". Calling this method would return an IPv4/v6 address that is the closest possible match with the new prefix (defined as next_prefix).
Example calls:
v4 = IPv4Network("10.10.0.72/30")
next_network = v4.next_subnet(next_prefix=25)
# Output: next_network = IPv4Network("10.10.0.128/25")
I am going to be working on this and plan to raise a PR soon. This is my first time contributing to Python, so I appreciate your help / comments / suggestions / guidance as I go along.
777GE90 commentedon Jan 8, 2021
Not sure how to edit an issue, but I made a mistake, where I said:
"...Calling this method would return an IPv4/v6 address that is the closest possible match..."
I meant to say:
"...Calling this method would return an IPv4/v6 -NETWORK- that is the closest possible match..."
777GE90 commentedon Jan 9, 2021
Updated the title and method naming, I previously mentioned the "next subnet" and called the method "next_subnet", but technically this is wrong. What this method should be doing is finding the next closest network of prefix size n.
So I guess the method definition should be:
next_network(self, next_network=None)[-]ipaddress - add ability to get next closet subnet of any prefix size[/-][+]ipaddress - add ability to get next closet network of any prefix size[/+]777GE90 commentedon Feb 8, 2021
Bump :)
[-]ipaddress - add ability to get next closet network of any prefix size[/-][+]ipaddress - add ability to get next closest network of any prefix size[/+]orsenthil commentedon Jul 8, 2026
Addressed here #24180