On 03/28/2014 02:57 AM, Chen Hanxiao wrote: > This patch will use socket module to check > whether an ip address is valid or not. > > Signed-off-by: Chen Hanxiao <chenhanxiao@xxxxxxxxxxxxxx> > --- > virtManager/createinterface.py | 26 +++++++++++++++++++++++--- > 1 file changed, 23 insertions(+), 3 deletions(-) > > diff --git a/virtManager/createinterface.py b/virtManager/createinterface.py > index 4588bba..ac83291 100644 > --- a/virtManager/createinterface.py > +++ b/virtManager/createinterface.py > @@ -24,6 +24,7 @@ from gi.repository import Gdk > # pylint: enable=E0611 > > import logging > +import socket > > from virtinst import Interface, InterfaceProtocol > > @@ -762,7 +763,23 @@ class vmmCreateInterface(vmmGObjectUI): > return self.build_ip_info() > > def build_ip_info(self): > - def build_ip(addr_str): > + def ipFormatCheck(addr, version): > + if version == "IPv4": > + try: > + socket.inet_pton(socket.AF_INET, addr) > + except socket.error: > + return False > + else: > + return True > + if version == "IPv6": > + try: > + socket.inet_pton(socket.AF_INET6, addr) > + except socket.error: > + return False > + else: > + return True > + > + def build_ip(addr_str, version): > if not addr_str: > raise ValueError(_("Please enter an IP address")) > ret = addr_str.rsplit("/", 1) > @@ -770,6 +787,9 @@ class vmmCreateInterface(vmmGObjectUI): > prefix = None > if len(ret) > 1: > prefix = ret[1] > + > + if not ipFormatCheck(address, version): > + raise ValueError(_("Bad IP address: '%s'") % address) > return address, prefix > > is_manual = self.widget("ip-do-manual").get_active() > @@ -803,7 +823,7 @@ class vmmCreateInterface(vmmGObjectUI): > ipv4.family = "ipv4" > ipv4.dhcp = bool(v4_mode == IP_DHCP) > if not ipv4.dhcp: > - addr, prefix = build_ip(v4_addr) > + addr, prefix = build_ip(v4_addr, "IPv4") > if addr: > ipv4.add_ip(addr, prefix) > if v4_gate: > @@ -819,7 +839,7 @@ class vmmCreateInterface(vmmGObjectUI): > if v6_gate: > ipv6.gateway = v6_gate > for v6_addr in v6_addrlist: > - addr, prefix = build_ip(v6_addr) > + addr, prefix = build_ip(v6_addr, "IPv6") > if addr: > ipv6.add_ip(addr, prefix) > > We use python-ipaddr for the virtual network code, which makes validating an IP address a oneline I think. And this validation should actually be in virtinst/interface.py, if it fits there. - Cole _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list