Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[3.10] gh-113171: gh-65056: Fix "private" (non-global) IP address ranges (GH-113179) (GH-113186) (GH-118177) #118229

Merged
merged 2 commits into from
May 7, 2024

Commits on Apr 24, 2024

  1. pythongh-113171: pythongh-65056: Fix "private" (non-global) IP addres…

    …s ranges (pythonGH-113179) (pythonGH-113186) (pythonGH-118177)
    
    * pythonGH-113171: Fix "private" (non-global) IP address ranges (pythonGH-113179)
    
    The _private_networks variables, used by various is_private
    implementations, were missing some ranges and at the same time had
    overly strict ranges (where there are more specific ranges considered
    globally reachable by the IANA registries).
    
    This patch updates the ranges with what was missing or otherwise
    incorrect.
    
    100.64.0.0/10 is left alone, for now, as it's been made special in [1].
    
    The _address_exclude_many() call returns 8 networks for IPv4, 121
    networks for IPv6.
    
    [1] python#61602
    
    * pythonGH-65056: Improve the IP address' is_global/is_private documentation (pythonGH-113186)
    
    It wasn't clear what the semantics of is_global/is_private are and, when
    one gets to the bottom of it, it's not quite so simple (hence the
    exceptions listed).
    
    (cherry picked from commit 2a4cbf1)
    (cherry picked from commit 40d75c2)
    
    ---------
    
    (cherry picked from commit f86b17a)
    
    Co-authored-by: Jakub Stasiak <jakub@stasiak.at>
    encukou and jstasiak committed Apr 24, 2024
    Configuration menu
    Copy the full SHA
    0740166 View commit details
    Browse the repository at this point in the history
  2. Adjust test for 3.10 semantics of is_private on networks

    In 3.10 and below, is_private checks whether the network and broadcast
    address are both private.
    In later versions (where the test wss backported from), it checks
    whether they both are in the same private network.
    
    For 0.0.0.0/0, both 0.0.0.0 and 255.225.255.255 are private,
    but one is in 0.0.0.0/8 ("This network") and the other in
    255.255.255.255/32 ("Limited broadcast").
    encukou committed Apr 24, 2024
    Configuration menu
    Copy the full SHA
    554b28c View commit details
    Browse the repository at this point in the history