def get_running(): dns_state = {DNS.SERVER: [], DNS.SEARCH: []} client = nmclient.client() for dns_conf in client.get_dns_configuration(): iface_name = dns_conf.get_interface() for ns in dns_conf.get_nameservers(): if iplib.is_ipv6_link_local_addr(ns, IPV6_ADDRESS_LENGTH): if not iface_name: # For IPv6 link local address, the interface name should be # appended also. raise NmstateInternalError( "Missing interface for IPv6 link-local DNS server " "entry {}".format(ns)) ns_addr = "{}%{}".format(ns, iface_name) else: ns_addr = ns if ns_addr not in dns_state[DNS.SERVER]: dns_state[DNS.SERVER].append(ns_addr) dns_domains = [ dns_domain for dns_domain in dns_conf.get_domains() if dns_domain not in dns_state[DNS.SEARCH] ] dns_state[DNS.SEARCH].extend(dns_domains) if not dns_state[DNS.SERVER] and not dns_state[DNS.SEARCH]: dns_state = {} return dns_state
def _remove_iface_ipv6_link_local_addr(desired_state, current_state): for state in (desired_state, current_state): state['ipv6']['address'] = list( addr for addr in state['ipv6']['address'] if not iplib.is_ipv6_link_local_addr(addr['ip'], addr['prefix-length'])) return desired_state, current_state
def remove_link_local_address(self): if self.addresses: self._info[InterfaceIP.ADDRESS] = [ addr for addr in self.addresses if not is_ipv6_link_local_addr( addr[InterfaceIP.ADDRESS_IP], addr[InterfaceIP.ADDRESS_PREFIX_LENGTH], ) ]
def _remove_iface_ipv6_link_local_addr(self): for ifstate in six.viewvalues(self.interfaces): ifstate['ipv6'][InterfaceIPv6.ADDRESS] = list( addr for addr in ifstate['ipv6'][InterfaceIPv6.ADDRESS] if not iplib.is_ipv6_link_local_addr( addr[InterfaceIPv6.ADDRESS_IP], addr[InterfaceIPv6.ADDRESS_PREFIX_LENGTH], ))
def _remove_iface_ipv6_link_local_addr(self): for ifstate in self.interfaces.values(): ipv6_state = ifstate.get(Interface.IPV6) if ipv6_state and InterfaceIPv6.ADDRESS in ipv6_state: ipv6_state[InterfaceIPv6.ADDRESS] = list( addr for addr in ipv6_state[InterfaceIPv6.ADDRESS] if not iplib.is_ipv6_link_local_addr( addr[InterfaceIPv6.ADDRESS_IP], addr[InterfaceIPv6.ADDRESS_PREFIX_LENGTH], ))
def _set_static(setting_ip, ip_addresses): for address in ip_addresses: if iplib.is_ipv6_link_local_addr(address['ip'], address['prefix-length']): logging.warning('IPv6 link local address ' '{a[ip]}/{a[prefix-length]} is ignored ' 'when applying desired state'.format(a=address)) else: naddr = nmclient.NM.IPAddress.new(socket.AF_INET6, address['ip'], address['prefix-length']) setting_ip.add_address(naddr) if setting_ip.props.addresses: setting_ip.props.method = nmclient.NM.SETTING_IP6_CONFIG_METHOD_MANUAL else: setting_ip.props.method = ( nmclient.NM.SETTING_IP6_CONFIG_METHOD_LINK_LOCAL)
def _set_static(setting_ip, ip_addresses): for address in ip_addresses: if iplib.is_ipv6_link_local_addr( address[InterfaceIPv6.ADDRESS_IP], address[InterfaceIPv6.ADDRESS_PREFIX_LENGTH], ): logging.warning("IPv6 link local address " "{a[ip]}/{a[prefix-length]} is ignored " "when applying desired state".format(a=address)) else: naddr = NM.IPAddress.new( socket.AF_INET6, address[InterfaceIPv6.ADDRESS_IP], address[InterfaceIPv6.ADDRESS_PREFIX_LENGTH], ) setting_ip.add_address(naddr) if setting_ip.props.addresses: setting_ip.props.method = NM.SETTING_IP6_CONFIG_METHOD_MANUAL else: setting_ip.props.method = NM.SETTING_IP6_CONFIG_METHOD_LINK_LOCAL
def _remove_iface_ipv6_link_local_addr(self): for ifstate in six.viewvalues(self.interfaces): ifstate['ipv6']['address'] = list( addr for addr in ifstate['ipv6']['address'] if not iplib.is_ipv6_link_local_addr(addr['ip'], addr['prefix-length']))