Пример #1
0
def create_setting(config, base_con_profile):
    setting_ip = None
    if base_con_profile and config and config.get(InterfaceIPv6.ENABLED):
        setting_ip = base_con_profile.get_setting_ip6_config()
        if setting_ip:
            setting_ip = setting_ip.duplicate()
            setting_ip.clear_addresses()
            setting_ip.props.ignore_auto_routes = False
            setting_ip.props.never_default = False
            setting_ip.props.ignore_auto_dns = False
            setting_ip.clear_routes()
            setting_ip.props.gateway = None
            setting_ip.props.route_table = Route.USE_DEFAULT_ROUTE_TABLE
            setting_ip.props.route_metric = Route.USE_DEFAULT_METRIC
            setting_ip.clear_dns()
            setting_ip.clear_dns_searches()
            setting_ip.props.dns_priority = nm_dns.DEFAULT_DNS_PRIORITY

    if not setting_ip:
        setting_ip = nmclient.NM.SettingIP6Config.new()

    # Ensure IPv6 RA and DHCPv6 is based on MAC address only
    setting_ip.props.addr_gen_mode = (
        nmclient.NM.SettingIP6ConfigAddrGenMode.EUI64)
    setting_ip.props.dhcp_duid = "ll"

    if not config or not config.get(InterfaceIPv6.ENABLED):
        setting_ip.props.method = (
            nmclient.NM.SETTING_IP6_CONFIG_METHOD_DISABLED)
        return setting_ip

    is_dhcp = config.get(InterfaceIPv6.DHCP, False)
    is_autoconf = config.get(InterfaceIPv6.AUTOCONF, False)
    ip_addresses = config.get(InterfaceIPv6.ADDRESS, ())

    if is_dhcp or is_autoconf:
        _set_dynamic(setting_ip, is_dhcp, is_autoconf)
        setting_ip.props.ignore_auto_routes = not config.get(
            InterfaceIPv6.AUTO_ROUTES, True)
        setting_ip.props.never_default = not config.get(
            InterfaceIPv6.AUTO_GATEWAY, True)
        setting_ip.props.ignore_auto_dns = not config.get(
            InterfaceIPv6.AUTO_DNS, True)
    elif ip_addresses:
        _set_static(setting_ip, ip_addresses)
    else:
        setting_ip.props.method = (
            nmclient.NM.SETTING_IP6_CONFIG_METHOD_LINK_LOCAL)

    nm_route.add_routes(setting_ip, config.get(nm_route.ROUTE_METADATA, []))
    nm_dns.add_dns(setting_ip, config.get(nm_dns.DNS_METADATA, {}))
    nm_route.add_route_rules(
        setting_ip,
        socket.AF_INET6,
        config.get(nm_route.ROUTE_RULES_METADATA, []),
    )
    return setting_ip
Пример #2
0
def create_setting(config, base_con_profile):
    setting_ipv4 = None
    if base_con_profile and config and config.get(InterfaceIPv4.ENABLED):
        setting_ipv4 = base_con_profile.get_setting_ip4_config()
        if setting_ipv4:
            setting_ipv4 = setting_ipv4.duplicate()
            setting_ipv4.clear_addresses()
            setting_ipv4.props.ignore_auto_routes = False
            setting_ipv4.props.never_default = False
            setting_ipv4.props.ignore_auto_dns = False
            setting_ipv4.props.gateway = None
            setting_ipv4.props.route_table = Route.USE_DEFAULT_ROUTE_TABLE
            setting_ipv4.props.route_metric = Route.USE_DEFAULT_METRIC
            setting_ipv4.clear_routes()
            setting_ipv4.clear_routing_rules()
            setting_ipv4.clear_dns()
            setting_ipv4.clear_dns_searches()
            setting_ipv4.props.dns_priority = nm_dns.DEFAULT_DNS_PRIORITY

    if not setting_ipv4:
        setting_ipv4 = NM.SettingIP4Config.new()

    setting_ipv4.props.dhcp_client_id = "mac"
    setting_ipv4.props.method = NM.SETTING_IP4_CONFIG_METHOD_DISABLED
    if config and config.get(InterfaceIPv4.ENABLED):
        if config.get(InterfaceIPv4.DHCP):
            setting_ipv4.props.method = NM.SETTING_IP4_CONFIG_METHOD_AUTO
            setting_ipv4.props.ignore_auto_routes = not config.get(
                InterfaceIPv4.AUTO_ROUTES, True)
            setting_ipv4.props.never_default = not config.get(
                InterfaceIPv4.AUTO_GATEWAY, True)
            setting_ipv4.props.ignore_auto_dns = not config.get(
                InterfaceIPv4.AUTO_DNS, True)
            setting_ipv4.props.route_table = config.get(
                InterfaceIPv4.AUTO_ROUTE_TABLE_ID,
                Route.USE_DEFAULT_ROUTE_TABLE,
            )
            # NetworkManager will remove the virtual interfaces like bridges
            # when the DHCP timeout expired, set it to the maximum value to
            # make this unlikely.
            setting_ipv4.props.dhcp_timeout = INT32_MAX
        elif config.get(InterfaceIPv4.ADDRESS):
            setting_ipv4.props.method = NM.SETTING_IP4_CONFIG_METHOD_MANUAL
            _add_addresses(setting_ipv4, config[InterfaceIPv4.ADDRESS])
        nm_route.add_routes(setting_ipv4,
                            config.get(BaseIface.ROUTES_METADATA, []))
        nm_dns.add_dns(setting_ipv4, config.get(BaseIface.DNS_METADATA, {}))
        nm_route.add_route_rules(
            setting_ipv4,
            socket.AF_INET,
            config.get(BaseIface.ROUTE_RULES_METADATA, []),
        )
    return setting_ipv4
Пример #3
0
def create_setting(config, base_con_profile):
    setting_ip = None
    if base_con_profile and config and config.get('enabled'):
        setting_ip = base_con_profile.get_setting_ip6_config()
        if setting_ip:
            setting_ip = setting_ip.duplicate()
            setting_ip.clear_addresses()
            setting_ip.props.ignore_auto_routes = False
            setting_ip.props.never_default = False
            setting_ip.props.ignore_auto_dns = False
            setting_ip.clear_routes()
            setting_ip.props.gateway = None
            setting_ip.props.route_table = Route.USE_DEFAULT_ROUTE_TABLE
            setting_ip.props.route_metric = Route.USE_DEFAULT_METRIC
            setting_ip.clear_dns()
            setting_ip.clear_dns_searches()
            setting_ip.props.dns_priority = nm_dns.DEFAULT_DNS_PRIORITY

    if not setting_ip:
        setting_ip = nmclient.NM.SettingIP6Config.new()

    if not config or not config.get('enabled'):
        setting_ip.props.method = nmclient.NM.SETTING_IP6_CONFIG_METHOD_IGNORE
        return setting_ip

    is_dhcp = config.get('dhcp', False)
    is_autoconf = config.get('autoconf', False)
    ip_addresses = config.get('address', ())

    if is_dhcp or is_autoconf:
        _set_dynamic(setting_ip, is_dhcp, is_autoconf)
        setting_ip.props.ignore_auto_routes = not config.get(
            'auto-routes', True)
        setting_ip.props.never_default = not config.get('auto-gateway', True)
        setting_ip.props.ignore_auto_dns = not config.get('auto-dns', True)
    elif ip_addresses:
        _set_static(setting_ip, ip_addresses)
    else:
        setting_ip.props.method = (
            nmclient.NM.SETTING_IP6_CONFIG_METHOD_LINK_LOCAL)

    nm_route.add_routes(setting_ip, config.get(nm_route.ROUTE_METADATA, []))
    nm_dns.add_dns(setting_ip, config.get(nm_dns.DNS_METADATA, {}))
    return setting_ip
Пример #4
0
def create_setting(config, base_con_profile):
    setting_ipv4 = None
    if base_con_profile and config and config.get(InterfaceIPv4.ENABLED):
        setting_ipv4 = base_con_profile.get_setting_ip4_config()
        if setting_ipv4:
            setting_ipv4 = setting_ipv4.duplicate()
            setting_ipv4.clear_addresses()
            setting_ipv4.props.ignore_auto_routes = False
            setting_ipv4.props.never_default = False
            setting_ipv4.props.ignore_auto_dns = False
            setting_ipv4.props.gateway = None
            setting_ipv4.props.route_table = Route.USE_DEFAULT_ROUTE_TABLE
            setting_ipv4.props.route_metric = Route.USE_DEFAULT_METRIC
            setting_ipv4.clear_routes()
            setting_ipv4.clear_dns()
            setting_ipv4.clear_dns_searches()
            setting_ipv4.props.dns_priority = nm_dns.DEFAULT_DNS_PRIORITY

    if not setting_ipv4:
        setting_ipv4 = nmclient.NM.SettingIP4Config.new()

    setting_ipv4.props.dhcp_client_id = 'mac'
    setting_ipv4.props.method = nmclient.NM.SETTING_IP4_CONFIG_METHOD_DISABLED
    if config and config.get(InterfaceIPv4.ENABLED):
        if config.get(InterfaceIPv4.DHCP):
            setting_ipv4.props.method = (
                nmclient.NM.SETTING_IP4_CONFIG_METHOD_AUTO)
            setting_ipv4.props.ignore_auto_routes = not config.get(
                InterfaceIPv4.AUTO_ROUTES, True)
            setting_ipv4.props.never_default = not config.get(
                InterfaceIPv4.AUTO_GATEWAY, True)
            setting_ipv4.props.ignore_auto_dns = not config.get(
                InterfaceIPv4.AUTO_DNS, True)
        elif config.get(InterfaceIPv4.ADDRESS):
            setting_ipv4.props.method = (
                nmclient.NM.SETTING_IP4_CONFIG_METHOD_MANUAL)
            _add_addresses(setting_ipv4, config[InterfaceIPv4.ADDRESS])
        nm_route.add_routes(setting_ipv4,
                            config.get(nm_route.ROUTE_METADATA, []))
        nm_dns.add_dns(setting_ipv4, config.get(nm_dns.DNS_METADATA, {}))
    return setting_ipv4
Пример #5
0
def create_setting(config, base_con_profile):
    setting_ip = None
    if base_con_profile and config and config.get(InterfaceIPv6.ENABLED):
        setting_ip = base_con_profile.get_setting_ip6_config()
        if setting_ip:
            setting_ip = setting_ip.duplicate()
            setting_ip.clear_addresses()
            setting_ip.props.ignore_auto_routes = False
            setting_ip.props.never_default = False
            setting_ip.props.ignore_auto_dns = False
            setting_ip.clear_routes()
            setting_ip.props.gateway = None
            setting_ip.props.route_table = Route.USE_DEFAULT_ROUTE_TABLE
            setting_ip.props.route_metric = Route.USE_DEFAULT_METRIC
            setting_ip.clear_dns()
            setting_ip.clear_dns_searches()
            setting_ip.props.dns_priority = nm_dns.DEFAULT_DNS_PRIORITY

    if not setting_ip:
        setting_ip = NM.SettingIP6Config.new()

    # Ensure IPv6 RA and DHCPv6 is based on MAC address only
    setting_ip.props.addr_gen_mode = NM.SettingIP6ConfigAddrGenMode.EUI64
    setting_ip.props.dhcp_duid = "ll"
    setting_ip.props.dhcp_iaid = "mac"

    if not config or not config.get(InterfaceIPv6.ENABLED):
        setting_ip.props.method = NM.SETTING_IP6_CONFIG_METHOD_DISABLED
        return setting_ip

    is_dhcp = config.get(InterfaceIPv6.DHCP, False)
    is_autoconf = config.get(InterfaceIPv6.AUTOCONF, False)
    ip_addresses = config.get(InterfaceIPv6.ADDRESS, ())

    if is_dhcp or is_autoconf:
        _set_dynamic(setting_ip, is_dhcp, is_autoconf)
        # NetworkManager will remove the virtual interface when DHCPv6 or
        # IPv6-RA timeout, set them to infinity.
        setting_ip.props.dhcp_timeout = INT32_MAX
        setting_ip.props.ra_timeout = INT32_MAX
        setting_ip.props.ignore_auto_routes = not config.get(
            InterfaceIPv6.AUTO_ROUTES, True
        )
        setting_ip.props.never_default = not config.get(
            InterfaceIPv6.AUTO_GATEWAY, True
        )
        setting_ip.props.ignore_auto_dns = not config.get(
            InterfaceIPv6.AUTO_DNS, True
        )
        route_table = config.get(InterfaceIPv6.AUTO_ROUTE_TABLE_ID)
        if route_table:
            setting_ip.props.route_table = route_table

    elif ip_addresses:
        _set_static(setting_ip, ip_addresses)
    else:
        setting_ip.props.method = NM.SETTING_IP6_CONFIG_METHOD_LINK_LOCAL

    nm_route.add_routes(setting_ip, config.get(BaseIface.ROUTES_METADATA, []))
    nm_dns.add_dns(setting_ip, config.get(BaseIface.DNS_METADATA, {}))
    nm_route.add_route_rules(
        setting_ip,
        socket.AF_INET6,
        config.get(BaseIface.ROUTE_RULES_METADATA, []),
    )
    return setting_ip