summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* clients: only handle secret requests for connection being explicitly activatedjk/clients-secrets-ask-fixJiří Klimeš2014-11-115-8/+28
| | | | | | | | | | | When a connection is being activated, nmcli could ask for secrets for another connection, which might confuse users. We check the request now and only ask for secrets of connection being activated. Test case: $ nmcli con up my-ethernet0 Passwords or encryption keys are required to access the wireless network 'Red Hat'. Warning: password for '802-1x.identity' not given in 'passwd-file' and nmcli cannot ask without '--ask' option.
* cli: fix nmcli timeout when disconnecting a deviceJiří Klimeš2014-11-101-2/+14
| | | | | | | | | | | $ nmcli dev disconnect nm-bond Error: Timeout 10 sec expired. When a software device is disconnected, it will be removed. And it may not go to NM_DEVICE_STATE_DISCONNECTED state before that. So we need to listen to "device-removed" signal. Fixes:Beaker:test_log-NetworkManager_Test189_bond_activate
* dhcp-manager: Keep size of PID consistentlr/crashesLubomir Rintel2014-11-103-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Things explode on i386 when marshalling a 32-bit value when a 64-bit one is expected: Program received signal SIGSEGV, Segmentation fault. __memset_sse2 () at ../sysdeps/i386/i686/multiarch/memset-sse2.S:242 242 movdqu %xmm0, (%edx) Missing separate debuginfos, use: debuginfo-install nss-mdns-0.10-15.fc21.i686 (gdb) bt #0 0xffffffff in __memset_sse2 () at ../sysdeps/i386/i686/multiarch/memset-sse2.S:242 #1 0xffffffff in g_hash_table_remove_all_nodes (__len=<optimized out>, __ch=0, __dest=<optimized out>) at /usr/include/bits/string3.h:84 #2 0xffffffff in g_hash_table_remove_all_nodes (hash_table=hash_table@entry=0x82ee250<error reading variable: Cannot access memory at address 0x8dbaacd6>, notify=notify@entry=1) at ghash.c:481 #3 0xffffffff in g_hash_table_unref (hash_table=0x82ee250<error reading variable: Cannot access memory at address 0x8dbaacd6>) at ghash.c:1042 #4 0xffffffff in _g_type_boxed_free (type=136861824, value=0x82ee250) at gtype.c:4262 #5 0xffffffff in boxed_proxy_value_free (value=0xbfffe8ec) at gboxed.c:209 #6 0xffffffff in g_value_unset (value=value@entry=0xbfffe8ec) at gvalue.c:272 #7 0xffffffff in g_signal_emit_valist (instance=instance@entry=0x82492b8, signal_id=signal_id@entry=125, detail=detail@entry=0, var_args=<optimized out>, var_args@entry=0xbfffea4c "\030\342.\bL#") at gsignal.c:3338 #8 0xffffffff in g_signal_emit (instance=0x82492b8, signal_id=125, detail=0) at gsignal.c:3365 #9 0x0809c05d in handle_event (proxy=0xb5d012e8 [DBusGProxy], options=0x82eb640 = {...}, user_data=0x82492b8) at dhcp-manager/nm-dhcp-listener.c:146 #10 0xffffffff in g_cclosure_marshal_VOID__BOXED (closure=0x82bf270, return_value=0x0, n_param_values=2, param_values=0x82c60c0, invocation_hint=0xbfffec68, marshal_data=0x0) at gmarshal.c:1120 #11 0xffffffff in marshal_dbus_message_to_g_marshaller () at /lib/libdbus-glib-1.so.2 #15 0xffffffff in <emit signal received:org-freedesktop-nm_dhcp_client-Event on instance 0xb5d012e8 [DBusGProxy]> (instance=0xb5d012e8, signal_id=19, detail=915) at gsignal.c:3365 #12 0xffffffff in g_closure_invoke (closure=0x82bf270, return_value=return_value@entry=0x0, n_param_values=n_param_values@entry=3, param_values=param_values@entry=0xbfffecc0, invocation_hint=invocation_hint@entry=0xbfffec68) at gclosure.c:768 #13 0xffffffff in signal_emit_unlocked_R (node=node@entry=0x8263660, detail=detail@entry=915, instance=0xb5d012e8, emission_return=emission_return@entry=0x0, instance_and_params=0xbfffecc0) at gsignal.c:3553 #14 0xffffffff in g_signal_emit_valist (instance=instance@entry=0xb5d012e8, signal_id=signal_id@entry=19, detail=detail@entry=915, var_args=0xbfffee34 "\340\370.\b\004", var_args@entry=0xbfffee2c "\340\370.\b\300\303/\b\340\370.\b\004") at gsignal.c:3309 #16 0xffffffff in dbus_g_proxy_manager_filter () at /lib/libdbus-glib-1.so.2 #17 0xffffffff in dbus_connection_dispatch () at /lib/libdbus-1.so.3 #18 0xffffffff in message_queue_dispatch () at /lib/libdbus-glib-1.so.2 #19 0xffffffff in g_main_context_dispatch (context=0x8246720) at gmain.c:3111 #20 0xffffffff in g_main_context_dispatch (context=context@entry=0x8246720) at gmain.c:3710 #21 0xffffffff in g_main_context_iterate (context=0x8246720, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3781 #22 0xffffffff in g_main_loop_run (loop=0x8246798) at gmain.c:3975 #23 0x08070c09 in main (argc=1, argv=0xbffff2b4) at main.c:479 (gdb) PIDs use native word width, a gint seems more suitable than gint32 or gint64. https://bugzilla.gnome.org/show_bug.cgi?id=739861
* libnm: Fix type mismatch in testLubomir Rintel2014-11-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Causes the info->remaining to be counted incorrectly possibly resulting in g_main_loop_quit() being called twice: Program received signal SIGSEGV, Segmentation fault. 0x00007ffff5a03155 in g_mutex_lock (mutex=0x7ffff7b764b4) at gthread-posix.c:1331 1331 if G_UNLIKELY (g_atomic_int_add (&mutex->i[0], 1) != 0) Missing separate debuginfos, use: debuginfo-install libgcc-4.9.2-1.fc21.x86_64 libgudev1-216-8.fc21.x86_64 libselinux-2.3-5.fc21.x86_64 libuuid-2.25.2-1.fc21.x86_64 ncurses-libs-5.9-16.20140323.fc21.x86_64 nspr-4.10.7-1.fc21.x86_64 nss-3.17.2-1.fc21.x86_64 nss-softokn-3.17.2-1.fc21.x86_64 nss-softokn-freebl-3.17.2-1.fc21.x86_64 nss-util-3.17.2-1.fc21.x86_64 sqlite-3.8.7-1.fc21.x86_64 systemd-libs-216-8.fc21.x86_64 (gdb) bt #0 0x00007ffff5a03155 in g_mutex_lock (mutex=0x7ffff7b764b4) at gthread-posix.c:1331 #1 0x00007ffff59bf258 in g_main_loop_quit (loop=0x7fffffffd130) at gmain.c:4000 #5 0x00007ffff5edc3bf in <emit signal notify:active-connection on instance 0x5555557bd180 [NMDeviceVlan]> (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at gsignal.c:3365 #2 0x00007ffff5ec1d35 in g_closure_invoke (closure=0x5555557b3da0, return_value=return_value@entry=0x0, n_param_values=2, param_values=param_values@entry=0x7fffffffd760, invocation_hint=invocation_hint@entry=0x7fffffffd700) at gclosure.c:768 #3 0x00007ffff5ed3a52 in signal_emit_unlocked_R (node=node@entry=0x555555787040, detail=detail@entry=341, instance=instance@entry=0x5555557bd180, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffffd760) at gsignal.c:3553 #4 0x00007ffff5edc191 in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffffd8f0) at gsignal.c:3309 #6 0x00007ffff5ec6465 in g_object_dispatch_properties_changed (object=0x7ffff7b764b4, n_pspecs=1434087776, pspecs=0x5555557ba880) at gobject.c:1056 #7 0x00007ffff5ec88c1 in g_object_notify (pspec=<optimized out>, object=0x5555557bd180 [NMDeviceVlan]) at gobject.c:1149 #8 0x00007ffff5ec88c1 in g_object_notify (object=0x5555557bd180 [NMDeviceVlan], property_name=property_name@entry=0x7ffff7b772f6 "active-connection") at gobject.c:1197 #9 0x00007ffff7ae57d3 in deferred_notify_cb (data=<optimized out>) at nm-object.c:246 #10 0x00007ffff59beafb in g_main_context_dispatch (context=0x555555784ac0) at gmain.c:3111 #11 0x00007ffff59beafb in g_main_context_dispatch (context=context@entry=0x555555784ac0) at gmain.c:3710 #12 0x00007ffff59bee98 in g_main_context_iterate (context=0x555555784ac0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3781 #13 0x00007ffff59bf1c2 in g_main_loop_run (loop=0x5555557699e0) at gmain.c:3975 #14 0x000055555555811d in test_activate_virtual () at test-nm-client.c:1103 #15 0x00007ffff59e4243 in g_test_run_suite_internal (tc=0x555555769a30) at gtestutils.c:2059 #16 0x00007ffff59e4243 in g_test_run_suite_internal (suite=suite@entry=0x555555766640, path=path@entry=0x7ffff5a6355e "") at gtestutils.c:2120 #17 0x00007ffff59e4412 in g_test_run_suite_internal (suite=suite@entry=0x555555766620, path=<optimized out>, path@entry=0x7ffff5a6355e "") at gtestutils.c:2131 #18 0x00007ffff59e477b in g_test_run_suite (suite=0x555555766620) at gtestutils.c:2184 #19 0x00007ffff59e47b1 in g_test_run () at gtestutils.c:1488 #20 0x0000555555556c01 in main (argc=1, argv=0x7fffffffe028) at test-nm-client.c:1189 https://bugzilla.gnome.org/show_bug.cgi?id=739861
* policy: fix using wrong loop counter in _platform_route_sync_flush()Thomas Haller2014-11-101-3/+3
| | | | | Fixes: e8824f6a5205ffcf761abd3e0897a22b254c7797 Signed-off-by: Thomas Haller <thaller@redhat.com>
* libnm-core: emit added/removed signals before property change notificationsDan Williams2014-11-072-11/+14
| | | | | | | | | | | | | | | | | | | Because internal objects do some processing/setup in the various _added class signal handlers, they need to be emitted before property change notifications. Otherwise it leads to situations where external objects that listen to NMClient property changes will be called before internal processing has been completed. Specifically, NMRemoteSettings uses connection_added() to check connection visibility and assign the new connection to one of two internal arrays. If a client got a property notification for NMClient::connections before NMRemoteSettings can process the new connection, then nm_client_get_connections() will return an empty array because NMRemoteSettings hasn't had the chance to add the new connection to priv->visible yet, which is done in NMRemoteSettings::connection_added(). Fixes:Beaker:NetworkManager_Test240_nmtui_general_realtime_refresh_edit_screen
* libnm: make dispose() of NMClient reentrantThomas Haller2014-11-071-4/+8
| | | | Signed-off-by: Thomas Haller <thaller@redhat.com>
* libnm: fix a crash after unreffing NMClientDan Winship2014-11-071-0/+2
| | | | | | Make NMClient disconnect from the NMManager and NMRemoteSettings signals when disposing, in case they outlive the NMClient (which shouldn't happen, but...)
* dhcp: demote DHCP client registration message to 'debug' levelDan Williams2014-11-071-2/+8
| | | | Was supposed to be that level originally.
* po/test: add contrib/rpm directory to POTFILES.skipThomas Haller2014-11-071-0/+1
| | | | | | | | Add contrib/fedora/rpm/ directory to POTFILES.skip. Otherwise, after building an RPM, make check would fail due to the source files from the rpmbuild. Signed-off-by: Thomas Haller <thaller@redhat.com>
* docs: fix libnm docs out-of-tree buildDan Winship2014-11-071-1/+5
|
* contrib/rpm: add option to only building SRPMThomas Haller2014-11-072-2/+15
| | | | | | | Set environment variable BUILDTYPE=SRPM or call `build_clean.sh --srpm`. Signed-off-by: Thomas Haller <thaller@redhat.com>
* cli: fix an activation bugDan Winship2014-11-071-0/+1
| | | | | Add a missing g_clear_error() that, for circuitous reasons, made trying to activate a virtual connection fail silently.
* merge: add 'configure-and-quit' option (rh #1083683) (rh #863515)Dan Williams2014-11-0745-881/+2355
|\ | | | | | | | | When initial configuration is complete, spawns helpers to preserve DHCP and RA addresses on interfaces and quits the main NM process.
| * iface-helper: add nm-iface-helper for dynamic configure-then-quit supportDan Williams2014-11-0714-72/+865
| | | | | | | | | | | | | | | | | | | | | | | | When quitting, the Manager asks each device to spawn the interface helper, which persists and manages dynamic address on the interface after NetworkManager is gone. If the dynamic address cannot be maintaned, the helper quits and the interface's address may be removed when their lifetime runs out. To keep the helper as simple as possible, NetworkManager passes most of the configuration on the command-line, including some properties of the device's current state, which are necessary for the helper to maintain DHCP leases or IPv6 SLAAC addresses.
| * man: document 'configure-and-quit' configuration optionJiří Klimeš2014-11-071-1/+23
| |
| * core: add option to quit when startup is complete (rh #863515) (rh #1083683)Dan Williams2014-11-073-0/+30
| | | | | | | | | | | | | | | | | | | | Cloud setups often have a never-changing setup and since every cycle counts, they don't really want a management process running in the background after network setup is complete. Since it's likely a VM, it's not like links are going to go up/down very often. Add a new "configure-quit=true/false" config option which, when set to true, will quit NetworkManager after startup and initial configuration is complete.
| * core: add nm_utils_ip4_property_path()Dan Williams2014-11-072-11/+41
| |
| * dhcp: track last IPv4 address on start for renewalDan Williams2014-11-078-23/+32
| | | | | | | | | | | | | | | | | | Really only used by systemd because it doesn't have as good lease handling, but it's also necessary if we switch DHCP clients mid-stream (which we'll be doing later) since the new DHCP client won't have a lease file for the current IP address, and thus has nowhere to pull the current IP address from to request the same address from the DHCP server.
| * dhcp: preserve hostname for later useDan Williams2014-11-075-21/+31
| |
| * dhcp: preserve DHCPv4 client ID for later useDan Williams2014-11-079-83/+327
| | | | | | | | | | If we can, read the existing client ID from the leasefile and preserve it for later use.
| * dhcp: move client-specific knowledge out of the managerDan Williams2014-11-0710-80/+154
| |
| * dhcp: move D-Bus DHCP listener into separate classDan Williams2014-11-078-247/+377
| | | | | | | | | | This simplifies the manager and ensures that only the clients that use D-Bus-based DHCP helpers need to care about them.
| * core: split signal/pidfile/option handling into separate source fileDan Williams2014-11-075-226/+335
| | | | | | | | We'll use this from more than one spot.
| * libnm,core: enhance nm_utils_hexstr2bin()Dan Williams2014-11-0710-153/+176
|/ | | | | | | Make the type return GBytes since most in-tree users want that. Allow the function to accept many more formats as valid hex, including bytes delimited by ':' and a leading '0x'.
* libnm, docs: docs fixesDan Winship2014-11-0713-75/+114
| | | | | | | | | | Update the docs build to include and exclude the correct files. Fill in some missing documentation, and fix problems in the existing docs. (In particular, "<" can't appear as a literal in documentation, so change it to "&lt;". Also, "PKCS#12" has to be written as "PKCS#<!-- -->12", or gtk-doc will think "#12" is a reference to a type named "12".)
* ifcfg-rh: strip trailing whitespace from ifcfg files (rh #1100336)Dan Williams2014-11-074-2/+53
| | | | | | | | | shvar.c has apparently never stripped trailing whitespace, but obviously a shell doesn't care. Unfortunately NM does. Strip trailing whitespace before unescaping, to preserve quoted whitespace. https://bugzilla.redhat.com/show_bug.cgi?id=1100336
* ifcfg-rh: (trivial) fix formattingDan Williams2014-11-071-2/+1
|
* policy: fix get_best_device() to return only active devices from the listThomas Haller2014-11-071-10/+10
| | | | | | | | | | | | | This fixes an assertion during shutdown. NMManager:dispose() calls remove_device(), which eventually hit the assertion in nm_default_route_manager_ip4_get_best_device(). Remove the assertion, but also make sure that the function only returns devices from the provided list. It is counter intuitive, that the function might return devices that are not in the provided list. Signed-off-by: Thomas Haller <thaller@redhat.com>
* build: add the compatibility header for g_clear_pointer()Jiří Klimeš2014-11-073-0/+3
| | | | Necessary for GLib < 2.34
* core: fix new NMIP4Config and NMIP6Config propertiesDan Winship2014-11-073-107/+108
| | | | | The AddressData and RouteData marshalling code were still using the types from an earlier version of the branch. Fix that.
* core: ensure generated connections has no gateway if it has no addressesThomas Haller2014-11-072-2/+10
| | | | | Fixes: f17699f4e3dacb9358a8503c8b15efe3cb852b48 Signed-off-by: Thomas Haller <thaller@redhat.com>
* core: merge branch 'th/bgo735512_route_metric'Thomas Haller2014-11-0745-683/+2036
|\ | | | | | | | | | | | | | | | | | | | | Now NetworkManager will add a route for every device/VPN that is not never-default. Multiple routes are prioritized via the route metric. https://bugzilla.gnome.org/show_bug.cgi?id=735512 https://bugzilla.redhat.com/show_bug.cgi?id=663730 Signed-off-by: Thomas Haller <thaller@redhat.com>
| * core: even vor MODEM devices don't add IPv6 default routes without gatewayThomas Haller2014-11-071-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | We'll ever have WWAN devices with a NULL gateway because the IPv6 over WWAN still uses router advertisements to get a prefix. Thus you'll always have a gateway if the device has real IPv6 connectivity. For the IPv4 case, we still allow default routes without gateway on WWAN. https://bugzilla.gnome.org/show_bug.cgi?id=735512 Signed-off-by: Thomas Haller <thaller@redhat.com>
| * policy: return best config based on the internal sorting of ↵Thomas Haller2014-11-073-73/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | NMDefaultRouteManager Now that both VPN and devices are managed (and ordered) by NMDefaultRouteManager, refactor get_best_config() to use the priority accordingly. Before, we would first iterate over all VPN connections and returning the best one. Only if no suitable VPN connection was found, a best device would be returned. Modify get_best_config() to treat VPN and device the same and return the best one based on the route metric. With this change, get_best_config() gives consistent results together with get_best_device(). Also, you can configure that a device gets a higher priority then a VPN. Signed-off-by: Thomas Haller <thaller@redhat.com>
| * policy: improve get_best_device() to strictly adhering the sort order of the ↵Thomas Haller2014-11-071-60/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | entries get_best_device() has two different modes depending on the @fully_activated argument. If @fully_activated, it only considers devices that are considered as active. Otherwise, it returns the best activating device (if that device is expected to be better then any of the already activated devices). Before, the check whether an activated device is considered best device also involved looking at the device state. This redundancy was harmful because part of NMDefaultRouteManager considered a device as fully activated, but get_best_device() might not return them. Split get_best_device() in two parts. The one part _ipx_get_best_activating_device() now checks for still activating devices. When inspecting devices with an entry, those devices are weighted according to _ipx_get_best_device(). That means that both functions now give a consistent result. Signed-off-by: Thomas Haller <thaller@redhat.com>
| * policy: set default routes for VPN via NMDefaultRouteManagerThomas Haller2014-11-073-93/+17
| | | | | | | | Signed-off-by: Thomas Haller <thaller@redhat.com>
| * policy: move get_best_config() function to nm-default-route-managerThomas Haller2014-11-073-134/+193
| | | | | | | | | | | | No functional change, only refactoring by moving and combining the code. Signed-off-by: Thomas Haller <thaller@redhat.com>
| * policy: track default route for VPN in NMDefaultRouteManagerThomas Haller2014-11-072-13/+111
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Extend NMDefaultRouteManager to track NMVpnConnection beside NMDevice. That way, all default routes are managed by NMDefaultRouteManager. For VPN connections the manager also tracks connections that are set never_default. That is useful because NMPolicy still uses VPNs without default route to setup DNS. Hence, NMDefaultRouteManager trackes those connections to have the relative priority of the devices. Interestingly, that means that for VPNs that are ipv4.never-default, ipv4.route-metric still has an effect in determining relative priorities for DNS configuration. This commit only adds the parts to track the default route. NMPolicy still sets the route as before. Signed-off-by: Thomas Haller <thaller@redhat.com>
| * policy: better sync get_best_device() with NMDefaultRouteManagerThomas Haller2014-11-071-41/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | NMDefaultRouteManager has a sorted list of routes. Change get_best_device() to better consider that list when choosing a best device. Always prefer the priority as reported from entry->effective_metric if the device is registered to have a default route. Before for !fully_activated, we choose the metric based on nm_device_get_ipx_route_metric(). Add more checks in case of equal priority. For @fully_activated, always prefer the device that is sorted by NMDefaultRouteManager. For non @fully_activated, prefer the device with an entry. Signed-off-by: Thomas Haller <thaller@redhat.com>
| * policy: move get_best_device() function to nm-default-route-managerThomas Haller2014-11-073-119/+98
| | | | | | | | | | | | No functional change, only refactoring by moving and combining the code. Signed-off-by: Thomas Haller <thaller@redhat.com>
| * policy: add manager for default routes and support multiple default routesThomas Haller2014-11-079-119/+1021
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Up to now, NMPolicy would iterate over all devices to find the "best" device and assign the default route to that device. A better approach is to add a default route to *all* devices that are never-default=no. The relative priority is choosen according to the route metrics. If two devices receive the same metric, we want to prefer the device that activates first. That way, the default route sticks to the same device until a better device activates or the device deactivates. Hence, the order of activation is imporant in this case (as it is already now). Also, if several devices have identical metrics, increment their metrics so that every metric is unique. This makes the routing deterministic according to what we choose as best device. A special case is assumed devices. In this case we cannot adjust the metric in face of equal metrics. Add a new singleton class NMDefaultRouteManager that has a list of all devices and their default routes. The manager will order the devices by their priority and configure the routes using platform. Also update the metric for VPN connections. Later we will track VPN routes also via NMDefaultRouteManager. For now, fix the VPN metric because otherwise VPNs would always get metric 1024 (which is usually much larger then the device metrics). https://bugzilla.gnome.org/show_bug.cgi?id=735512 Signed-off-by: Thomas Haller <thaller@redhat.com>
| * policy: remove redundant check for never-default in get_best_ipx_config()Thomas Haller2014-11-071-22/+4
| | | | | | | | | | | | | | | | get_best_ip4_config() and get_best_ip6_config() checked both for never-default of the setting. This check was redundant, because the never-default value was already merged into NMIPXConfig. Signed-off-by: Thomas Haller <thaller@redhat.com>
| * policy: minor refactoring in get_best_ipx_device()Thomas Haller2014-11-071-30/+30
| | | | | | | | | | | | | | | | In get_best_ip4_device() and get_best_ip6_device(), move conditions to check for suitable connection first. Makes the following patch more coherent. Signed-off-by: Thomas Haller <thaller@redhat.com>
| * policy: fix updating the default route for VPNThomas Haller2014-11-071-25/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When adding a default route fails, the most common reason is that we don't have a direct route to the gateway. In that case, NMPolicy tries to add a direct route to the gateway and then retries adding the default route. For VPN however, previously NMPolicy would not added a direct route to the gateway via the VPN device. Instead it would add a direct route to the external gateway via the parent interface. That is wrong. Indeed the external gateway must be reachable directly not via the VPN interface itself. But for that the vpn connection already sets a route via nm_device_set_vpn4_config(). Signed-off-by: Thomas Haller <thaller@redhat.com>
| * vpn: add nm_vpn_connection_get_connection_id() functionThomas Haller2014-11-072-0/+12
| | | | | | | | Signed-off-by: Thomas Haller <thaller@redhat.com>
| * core: remove unneeded check in nm_ip4_config_commit() for default routesThomas Haller2014-11-073-20/+4
| | | | | | | | | | | | | | | | These lines are part of NM for a very long time. I think they are wrong, because the default route is not added to the NMIP4Config/NMIP6Config objects. Signed-off-by: Thomas Haller <thaller@redhat.com>
| * device: add function nm_device_uses_assumed_connection()Thomas Haller2014-11-072-0/+13
| | | | | | | | Signed-off-by: Thomas Haller <thaller@redhat.com>
| * platform: support route_get_all() to return route for every ifindexThomas Haller2014-11-072-22/+8
| | | | | | | | | | | | | | By passing an ifindex of 0, the search is not limited to a certain ifindex. Signed-off-by: Thomas Haller <thaller@redhat.com>
| * platform: extend nm_platform_ipX_route_get_all() to return default-routes onlyThomas Haller2014-11-0710-36/+80
| | | | | | | | | | | | | | | | Add a new enum NMPlatformGetRouteMode. This extends the existing functions nm_platform_ip4_route_get_all() and nm_platform_ip6_route_get_all() to return default routes only. Signed-off-by: Thomas Haller <thaller@redhat.com>