def build_ip_info(self): def get_row(widget): combo = widget.get_model() active = widget.get_active() if active == -1: return None return combo[active] def build_ip(addr_str): if not addr_str: return None ret = addr_str.rsplit("/", 1) ip = Interface.InterfaceProtocolIPAddress(ret[0]) if len(ret) > 1: ip.prefix = ret[1] return ip is_manual = self.widget("ip-do-manual").get_active() copy_row = get_row(self.widget("ip-copy-interface-combo")) v4_mode = self.widget("ipv4-mode").get_active() v4_addr = self.widget("ipv4-address").get_text() v4_gate = self.widget("ipv4-gateway").get_text() v6_mode = self.widget("ipv6-mode").get_active() v6_auto = self.widget("ipv6-autoconf").get_active() v6_gate = self.widget("ipv6-gateway").get_text() v6_addrlist = self.get_config_ipv6_addresses() copy_name = None proto_xml = None ipv4 = None ipv6 = None if not is_manual: if copy_row[1] and copy_row[2]: copy_name = copy_row[1].get_name() proto_xml = copy_row[1].get_protocol_xml() else: # Build IPv4 Info if v4_mode != IP_NONE: ipv4 = Interface.InterfaceProtocolIPv4() ipv4.dhcp = bool(v4_mode == IP_DHCP) if not ipv4.dhcp: if v4_addr: ipv4.ips.append(build_ip(v4_addr)) if v4_gate: ipv4.gateway = v4_gate # Build IPv6 Info if v6_mode != IP_NONE: ipv6 = Interface.InterfaceProtocolIPv6() ipv6.dhcp = bool(v6_mode == IP_DHCP) ipv6.autoconf = bool(v6_auto) if not ipv6.dhcp: if v6_gate: ipv6.gateway = v6_gate if v6_addrlist: ipv6.ips = [build_ip(i) for i in v6_addrlist] return [is_manual, copy_name, ipv4, ipv6, proto_xml]