[Python-Dev] PEP 3144 review. (original) (raw)

Stephen J. Turnbull turnbull at sk.tsukuba.ac.jp
Thu Sep 17 21:56:43 CEST 2009


Andrew McNamara writes:

Conceptually, you sometimes need a bare address, and other times, you need an address with an associated network (host interface configs, router configs, etc). By AddressWithMask, I really mean AddressWithEnoughInformationToDeriveNetworkWhenNeeded. Conveniently, IPv4 and IPv6 addressing allows us to derive the network from the host

That's precisely the claim I deny. Yes, you can derive the network address from a generic address and a mask. You cannot derive the network that way! Eg, suppose in a routing application you have

class IPv4NetworkWithGateway(IPv4Network):

... oops. You want the IPv4Network instance that has all the gateway info, not just any IPv4Network instance that happens to have the same network address and mask. Address + mask is not sufficient to derive the desired IPv4Network instance.

I grant that sometimes all you really care about is that the network address and the mask match; constructing on the fly would be sufficient. However, many of the applications I can think of attach additional attributes to IPv4Networks, and really do want "the real thing" vs. a constructed imitation.



More information about the Python-Dev mailing list