addr.py
author Tero Marttila <terom@fixme.fi>
Sun, 12 Jul 2009 00:43:36 +0300
changeset 6 57e8168ba8c4
parent 4 8b633782f02d
permissions -rw-r--r--
use FQDN for zone hosts
0
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
"""
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
    Used to define IP-address/subnet stuff
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
"""
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     5
import IPy
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     6
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     7
class IP (IPy.IP, object) :
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     8
    """
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     9
        A literal IPv4 address
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    10
    """
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    11
    
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    12
    def __init__ (self, address) :
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    13
        """
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    14
            Parse the given literal IP address in "a.b.c.d" form
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    15
        """
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    16
    
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    17
        super(IP, self).__init__(address)
4
8b633782f02d write bind_conf.py
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    18
    
8b633782f02d write bind_conf.py
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    19
    def is_v4 (self) :
8b633782f02d write bind_conf.py
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    20
        """
8b633782f02d write bind_conf.py
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    21
            Returns True if the address is an IPv4 address
8b633782f02d write bind_conf.py
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    22
        """
8b633782f02d write bind_conf.py
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    23
8b633782f02d write bind_conf.py
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    24
        return self.version() == 4
8b633782f02d write bind_conf.py
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    25
8b633782f02d write bind_conf.py
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    26
    def is_v6 (self) :
8b633782f02d write bind_conf.py
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    27
        """
8b633782f02d write bind_conf.py
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    28
            Returns True if the address is an IPv6 address
8b633782f02d write bind_conf.py
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    29
        """
8b633782f02d write bind_conf.py
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    30
8b633782f02d write bind_conf.py
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    31
        return self.version() == 6
0
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    32
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    33
class Network (IPy.IP, object) :
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    34
    """
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    35
        An IPv4 network (subnet)
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    36
    """
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    37
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    38
    def __init__ (self, prefix) :
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    39
        """
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    40
            Parse the given prefix in "a.b.c.d/l" form
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    41
        """
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    42
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    43
        super(Network, self).__init__(prefix)
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    44
1
2223ade4f259 continue the overengineering effort, we are now able to generate dhcpd.conf files
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    45
class MAC (object) :
2223ade4f259 continue the overengineering effort, we are now able to generate dhcpd.conf files
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    46
    """
2223ade4f259 continue the overengineering effort, we are now able to generate dhcpd.conf files
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    47
        A mac address
2223ade4f259 continue the overengineering effort, we are now able to generate dhcpd.conf files
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    48
    """
2223ade4f259 continue the overengineering effort, we are now able to generate dhcpd.conf files
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    49
2223ade4f259 continue the overengineering effort, we are now able to generate dhcpd.conf files
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    50
    def __init__ (self, mac) :
2223ade4f259 continue the overengineering effort, we are now able to generate dhcpd.conf files
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    51
        """
2223ade4f259 continue the overengineering effort, we are now able to generate dhcpd.conf files
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    52
            Parse the given MAC address in "aa:bb:cc:dd:ee:ff" form
2223ade4f259 continue the overengineering effort, we are now able to generate dhcpd.conf files
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    53
        """
2223ade4f259 continue the overengineering effort, we are now able to generate dhcpd.conf files
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    54
2223ade4f259 continue the overengineering effort, we are now able to generate dhcpd.conf files
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    55
        # XXX: validate
2223ade4f259 continue the overengineering effort, we are now able to generate dhcpd.conf files
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    56
        self.mac = mac
2223ade4f259 continue the overengineering effort, we are now able to generate dhcpd.conf files
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    57
2223ade4f259 continue the overengineering effort, we are now able to generate dhcpd.conf files
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    58
    def __str__ (self) :
2223ade4f259 continue the overengineering effort, we are now able to generate dhcpd.conf files
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    59
        return self.mac
2223ade4f259 continue the overengineering effort, we are now able to generate dhcpd.conf files
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    60