Commit graph

7272 commits

Author SHA1 Message Date
Thomas Haller
30f72c2753 device/ethernet: use nm_clear_g*() function in remove_supplicant_interface_error_handler() 2016-01-21 14:58:54 +01:00
Thomas Haller
2505911ad5 supplicant: remove unused function nm_supplicant_interface_get_device() 2016-01-21 14:58:54 +01:00
Lubomir Rintel
c1cf3c25c8 linux-platform: treat gadget devices as ethernet devices
Also, don't manage them by default. Whatver created it should take care of
management.
2016-01-21 11:33:59 +01:00
Beniamino Galvani
64ac910131 dns-manager: prevent DNS plugins from respawning too quickly
If dnsmasq (or another DNS plugin) exits immediately (for example due
to an already used port), the DNS manager keeps restarting it forever,
wasting system resources and filling logs.

Add a simple rate-limiting mechanism.

https://bugzilla.gnome.org/show_bug.cgi?id=760691
2016-01-21 10:40:08 +01:00
Dan Williams
0a12a1711c libnm-core,core,cli: fix spelling of NM_IP_TUNNEL_MODE_UNKNOWN
Fixes: b614a5ec61
Fixes: ae8c7a8967
Fixes: 570fdce93f
2016-01-20 11:27:22 -06:00
Beniamino Galvani
75068a085a device: detect duplicate IPv4 addresses when method=auto 2016-01-20 11:53:47 +01:00
Beniamino Galvani
28f6e8b4d2 device: detect duplicate IPv4 addresses when method=manual 2016-01-20 11:53:47 +01:00
Beniamino Galvani
83b712aa42 core: add test for NMArpingManager 2016-01-20 11:53:47 +01:00
Beniamino Galvani
7a0fe9b21e core: add NMArpingManager
Add a new object which implements the logic for announcing IP
addresses and detecting duplicates using arping.

Based-on-patch-by: Jiří Klimeš <jklimes@redhat.com>
2016-01-20 11:53:47 +01:00
Jiří Klimeš
adbbf3aa5c ifcfg-rh: read/write ipv4.dad-timeout using ARPING_WAIT
ARPING_WAIT is used for DAD by Red Hat initscrips (ifup-eth).
2016-01-20 11:53:47 +01:00
Beniamino Galvani
f607a16994 device/macvlan: implement dispose()
When the object gets disposed, parent must be unreferenced and signals
disconnected.

Fixes: 4de8851eca

https://bugzilla.redhat.com/show_bug.cgi?id=1299803
2016-01-20 11:41:59 +01:00
Thomas Haller
26721b8a88 core: use guint type for glib's source ids 2016-01-20 10:27:36 +01:00
Thomas Haller
a99a0d194d dhcp: clear watch_id in child-watch callback 2016-01-20 10:27:36 +01:00
Beniamino Galvani
701d98acc5 device: fix check on device state in carrier_changed()
The function can now be called on unrealized devices before the
initial unmanaged flags are set and for those devices
nm_device_get_managed() will return TRUE. Since we only accept
states > UNMANAGED, return early when the condition is not met.

Fixes the following failed assertion:

carrier_changed: assertion 'priv->state >= NM_DEVICE_STATE_UNAVAILABLE' failed

https://bugzilla.gnome.org/show_bug.cgi?id=760844
2016-01-20 09:53:10 +01:00
Thomas Haller
7231626d31 core: use NM_GOBJECT_PROPERTIES_DEFINE() 2016-01-19 21:20:36 +01:00
Thomas Haller
76f90812f4 device: clear queued_state callback in dispose
dispose() calls _cleanup_generic_pre() which in turn already calls
nm_device_queued_state_clear(). So we would expect that at the end
of dispose() no queued-state is pending.

However, there there are crashes reports in queued_set_state() with the
device instance already destructed (rh#1270247). Add this check trying
to avoid the crash and closing in on the cause.

Related: https://bugzilla.redhat.com/show_bug.cgi?id=1180827
Related: https://bugzilla.redhat.com/show_bug.cgi?id=1270247
Related: https://bugzilla.redhat.com/show_bug.cgi?id=1298009
2016-01-19 13:00:20 +01:00
Thomas Haller
1e90ef2043 device: remove unrealized device without connections on idle handler
Emitting the NM_DEVICE_REMOVED signal can cause the destruction of the
device, thus it should be emitted on an idle handler.
2016-01-19 11:38:29 +01:00
Thomas Haller
b0fc51841a config: implement nm_config_change_flags_to_string() via NM_UTILS_FLAGS2STR_DEFINE() 2016-01-19 11:14:51 +01:00
Lubomir Rintel
f7c76b372c device: don't remove a devices on connection availability checks
The availability checks are called from places that don't assume the device
will be removed mid-air. Call the removal routine only when we're the very
last thing that's being done.
2016-01-18 21:09:28 +01:00
Thomas Haller
988ad91976 manager: refactor construction of manager singleton instance
nm_manager_setup() should only call g_object_new() and leave
most of the initialization to the GObject constructor.
2016-01-18 18:12:15 +01:00
Thomas Haller
be9ff2c51a manager: initilize NETWORKING_ENABLED as constructor paramter 2016-01-18 14:22:50 +01:00
Thomas Haller
c8e7957c63 core: add NMLOG macros to nm-manager.c 2016-01-18 14:04:56 +01:00
Thomas Haller
4b917123ef platform: use NM_UTILS_ENUM2STR_DEFINE() to implement to-string functions 2016-01-18 13:10:18 +01:00
Thomas Haller
1d15d8c3ef core: add nm_utils_enum2str() 2016-01-18 13:10:18 +01:00
Thomas Haller
94fabafc1a platform: use RT_SCOPE_* names in nm_platform_route_scope2str() 2016-01-18 13:10:18 +01:00
Thomas Haller
262ba62708 core/trivial: add code comment explaining route-handling and gateway 2016-01-18 13:10:18 +01:00
Thomas Haller
3d463e2f69 device: only set NMDevice as "real" at the end of nm_device_realize_finish()
Only set the device as "real" at the end of nm_device_realize_finish(),
not already during nm_device_realize_start()/realize_start_setup().
2016-01-17 22:40:09 +01:00
Thomas Haller
9c2266741b device: cleanup unrealized device without connection
During nm_device_unrealize(), the connection might still
have some connections that only get removed later. We must
garbage collect unrealized devices when they loose their
available-connections, not during unrealize.

Fixes: 436ec5b8e3
2016-01-17 22:40:09 +01:00
Thomas Haller
eab9cca87c device: refactor cp_connection* functions to use @self pointer 2016-01-17 22:40:09 +01:00
Thomas Haller
2292cb63bf core: always unrealize software devices when platform link disappears
We possibly need the unrealized device for connections that need
this. nm_device_unrealize() will check if there are still any
available-connections and possibly emit DEVICE_REMOVED signal.

Fixes: 7e5f27a21c
2016-01-17 22:40:04 +01:00
Thomas Haller
7830b79d50 device: minor logging changes to device creation 2016-01-17 22:38:28 +01:00
Thomas Haller
ae7e468630 trivial: fix whitespace 2016-01-17 22:38:28 +01:00
Thomas Haller
7a2a96f8ef platform/tests: add test for handling IPv4 zero gateways
Adding a route via iproute2 with explicit gateway 0.0.0.0
sets the route scope to GLOBAL, contrary to a on-link device-route
which has scope LINK.

Add a test adding two such routes.
2016-01-16 21:27:12 +01:00
Thomas Haller
4c79b605bc platform: implement nmp_object_is_visible() based on nmp_object_is_alive()
An object should only be visible if it is also alive.
Hence, refactor nmp_object_is_visible() to be reject
object that fail nmp_object_is_alive().
2016-01-16 13:43:23 +01:00
Thomas Haller
3294e06c28 platform: add "link" scope to nm_platform_route_scope2str() 2016-01-16 13:43:23 +01:00
Lubomir Rintel
c4bd0cc5cb device: always process hop limit and MTU from the RA
Apply MTU and hop limit when managed or other flag is set as well. This wasn't
the case for the first RA and the previous commit made it slightly worse by
always ignoring it.

Fixes: ad2584c375
2016-01-15 12:08:24 +01:00
Beniamino Galvani
5996565ca9 manager: retry virtual connections when a device is added or changes
When a new device gets added or when an existing one changes name,
virtual connections that refer to it as parent device may become
ready, so let's try to activate them.

Previously we tried to activate virtual connections only on startup
and, after commit d8e1590c50 ("manager: retry device creation for
connection that would use a newly created device"), also when a
connection was added/changed, but this doesn't cover the case in which
a parent device appears or changes name at runtime.

https://bugzilla.redhat.com/show_bug.cgi?id=1275875
2016-01-15 09:36:19 +01:00
Lubomir Rintel
ad2584c375 device: apply the iv6 configuration as soon as we get the RA
With DHCPv6 it might be quite some time (we may even time out) until we get all
the information to finish activation, but we already have the addresses and
routes.
2016-01-14 21:00:59 +01:00
Thomas Haller
3dc28b2b23 device: don't progress to ip-check if the DHCPv6 is still pending 2016-01-14 21:00:59 +01:00
Lubomir Rintel
ac457aa322 device: use the REMOVED only when unmanaging an active device while quitting
For the devices that are not active we still want to run the cleanup path.

Fixes: 3e2fce288a
2016-01-14 17:46:20 +01:00
Lubomir Rintel
3e2fce288a device: use the REMOVED reason when unmanaging the device while quitting
With the final removal the reason of NOW_UNMANAGED causes the cleanup on the
device to be run, which downs the device:

  #0  nm_platform_link_set_down (self=0x555555a29bb0, ifindex=1711) at platform/nm-platform.c:1111
  #1  0x00005555555d6ccf in nm_device_take_down (self=self@entry=0x555555c07c70, block=block@entry=1) at devices/nm-device.c:8175
  #2  0x00005555555df0c7 in _set_state_full (self=0x555555c07c70, state=NM_DEVICE_STATE_UNMANAGED, reason=NM_DEVICE_STATE_REASON_NOW_UNMANAGED, quitting=quitting@entry=0) at devices/nm-device.c:9825
  #3  0x00005555555dfa97 in nm_device_state_changed (self=<optimized out>, state=<optimized out>, reason=<optimized out>) at devices/nm-device.c:10084
  #4  0x00005555555e472c in nm_device_set_unmanaged_flags (self=<optimized out>, flag=flag@entry=NM_UNMANAGED_INTERNAL, unmanaged=unmanaged@entry=1, reason=reason@entry=NM_DEVICE_STATE_REASON_NOW_UNMANAGED)
      at devices/nm-device.c:8745
  #5  0x00005555555e54a9 in nm_device_set_unmanaged_quitting (self=<optimized out>) at devices/nm-device.c:8806
  #6  0x000055555565b1aa in remove_device (manager=manager@entry=0x555555a4a2c0, device=0x555555c07c70, quitting=quitting@entry=1, allow_unmanage=allow_unmanage@entry=1) at nm-manager.c:833
  #7  0x0000555555660b81 in nm_manager_stop (self=0x555555a4a2c0) at nm-manager.c:4389
  #8  0x00005555555b3f9b in main (argc=1, argv=0x7fffffffdba8) at main.c:493
2016-01-14 12:29:03 +01:00
Lubomir Rintel
cdc8a92b37 device: the unrealized devices can attempt to autoconnect 2016-01-13 18:10:25 +01:00
Lubomir Rintel
71f92bf72d device: trivial: streamline nm_device_autoconnect_allowed()
The function returns early when autoconnect is off, so there's no reason to
branch for that case below. The signal is only generated for autoconnect=true.
2016-01-13 18:10:17 +01:00
Lubomir Rintel
8b18c613ab manager: don't reject all internal activations on non-autoconnectable devices
When there's a slave that allows autoconnection and an unrealized master this
would cause the master activation to fail.

For the actual auto-activations the proper check is already done in NMPolicy's
auto_activate_device().
2016-01-13 17:21:31 +01:00
Lubomir Rintel
a6c8a45463 platform: fix a typo when comparing the peer addresses 2016-01-12 17:59:23 +01:00
Lubomir Rintel
5e8e81e2cf ip4-config: be a bit more tolerant when dumping the connection
This one single commit magically turns a nightmare into a summer breeze.
2016-01-12 17:59:23 +01:00
Beniamino Galvani
45b77dbcfc device/vlan: reapply IPv6 configuration after MAC change
https://bugzilla.redhat.com/show_bug.cgi?id=1286105
2016-01-12 09:56:14 +01:00
Beniamino Galvani
d26a8c2eed device: export nm_device_reactivate_ip{4,6}_config functions
nm_device_reactivate_ip6_config() will be used to reconfigure IPv6
addressing when a VLAN interface changes MAC.
2016-01-12 09:56:14 +01:00
Thomas Haller
d8384aa8e6 trivial: fix whitespace 2016-01-11 14:25:38 +01:00
Thomas Haller
a602b18f74 device: refactor virtual function NMDevice:unrealize_notify() to only clear properties
Change the meaning of unrealize_notify() similar to realize_start_notify(),
which only resets device properites during unrealize.
2016-01-11 14:05:49 +01:00