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
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
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
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
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