Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 3
0
 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],
             )
         ]
Esempio n. 4
0
 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],
             ))
Esempio n. 5
0
 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],
                 ))
Esempio n. 6
0
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)
Esempio n. 7
0
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
Esempio n. 8
0
 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']))