Commit graph

4727 commits

Author SHA1 Message Date
Thomas Haller
d16761d939 platform/trivial: rename object type enums to give them a common name prefix
Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-05-03 03:44:23 +02:00
Thomas Haller
59a56a0aff platform: add function nm_platform_link_cmp()
Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-05-03 03:44:23 +02:00
Thomas Haller
78b8af6651 core: preserve later expiry in nm_ip[46]_config_add_address()
When adding the same addresses from different sources, we want to
preserve the times with the later expiry . If the new address comes
from the kernel itself, we treat it specially and prefer the times
from other sources.

Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-05-03 03:44:23 +02:00
Thomas Haller
9cd7b40a04 platform: add nm_platform_ip_address_cmp_expiry()
This compares two addresses and returns which one has a longer
remaining life (i.e. a later expiry timestamp).

Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-05-03 03:44:23 +02:00
Thomas Haller
a8c17a2517 platform: extract common fields of IPv4/IPv6 addresses and routes to base struct
Especially the calculation of timestamps is identicall for addresses.
By creating a "base struct", we can use the same code for that, because
NMPlatformIP4Address and NMPlatformIP6Address can now both be treated as
NMPlatformIPAddress (and the same for routes).

Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-05-03 03:44:22 +02:00
Thomas Haller
09d3c833fd platform: refactor signals by combining added/changed/removed
Before platform raised 3 signals for each object type. Combine
them into one and add a new parameter @change_type to distinguish
between the change type.

Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-05-03 03:44:22 +02:00
Thomas Haller
38ffd3eb9b platform: refactor build_rtnl_addr() by replacing addr4_to_broadcast()
Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-05-03 03:44:22 +02:00
Thomas Haller
857e5e0b21 platform: don't zero terminate the result GArray of get_all() functions
Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-05-03 03:44:22 +02:00
Thomas Haller
53b6a99798 platform: refactor ip4_route_get_all() and ip6_route_get_all()
Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-05-03 01:03:06 +02:00
Thomas Haller
a4d2d71409 platform: refactor ip4_address_get_all() and ip6_address_get_all()
Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-05-03 01:03:06 +02:00
Thomas Haller
9ef23947cc all: fix various warnings detected with coverity
https://bugzilla.gnome.org/show_bug.cgi?id=728320

Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-05-02 15:20:30 +02:00
Thomas Haller
981e33b83b core: replace readlink() by glib equivalent in NMDeviceEthernet
Makes the function working for link destinations longer then 127 bytes and
fixes a potential bug that the result of readlink() was not zero
terminated for long paths.

Probably this would be no problem, but better be save.

Related: https://bugzilla.redhat.com/attachment.cgi?id=885371

Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-05-02 14:21:53 +02:00
Thomas Haller
4a22cefc6c core: add configuration main.debug and interpret environment variable NM_DEBUG
Interpret the configuration option main.debug and the
environment variable NM_DEBUG as a comma separated list
of debugging options (parsed with g_parse_debug_string()).

Currently only the option "RLIMIT_CORE" is supported, to set
the core dump size to unlimited.

Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-05-02 11:08:14 +02:00
Thomas Haller
516d66210f core: wait with "startup complete" for both IPv4 and IPv6 dynamic configuration
In case of DHCP4, DHCP6 and/or SLAAC, delay "startup complete" until
both IPv4 and IPv6 are ready. This especially has an effect on
nm-online/NetworkManager-wait-online.service, which blocks until
configuration of both IPv4 and IPv6 is ready.

We queue a pending_action when automatic configuration starts and
remove it again, when we receive an address. Before, "startup complete"
was reached when either one of the two IP protocols was configured.

https://bugzilla.redhat.com/show_bug.cgi?id=1086906

Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-05-01 22:06:52 +02:00
Thomas Haller
a16faa3985 core: add parameter to ignore error in add/remove pending action
Add a parameter to nm_device_add_pending_action() to silently
accept adding duplicate actions.

Same for nm_device_remove_pending_action(), to silently ignore
removing non-pending actions.

Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-05-01 22:06:52 +02:00
Dan Winship
50bafeaf2e dns-manager: fix the rules for public suffixes and search domains (rh #851521)
dfe194ee made it so that we don't use "public suffixes" as resolv.conf
search domains (eg, we don't add "search com" if the hostname is
"example.com"). However, if this results in us writing a resolv.conf
with no "search" line at all, then the resolver will fall back to
using the parent domain of the hostname as a search domain anyway,
thwarting us.

To fix that, use the domain itself as a search domain in this case,
since that's likely to be the expected behavior anyway. (And even if
it's not, there doesn't appear to be any way to block the resolver
from using the hostname's parent domain as a search domain unless we
specify at least one search domain ourselves.)

https://bugzilla.gnome.org/show_bug.cgi?id=729137
2014-04-29 14:47:25 -04:00
Dan Winship
93c10a6eea dns-manager: don't write "domain" to resolv.conf
resolv.conf(5) says:

    The domain and search keywords are mutually exclusive.  If more than
    one instance of these keywords is present, the last instance wins.

NM always writes out a "search" line if it writes a "domain" line, so
the "domain" line is always a no-op. So drop it.

https://bugzilla.gnome.org/show_bug.cgi?id=729137
2014-04-29 14:47:25 -04:00
Peter Wu
a2eb4789ac platform: set link scope for IP4LL addresses
https://bugzilla.gnome.org/show_bug.cgi?id=728595

[thaller@redhat.com: minor change in coding style]
Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-04-27 15:32:07 +02:00
Dan Winship
a54fa87108 ifcfg-rh: fix alias tests to not depend on directory read order
test_read_wired_aliases_bad() would succeed or fail depending on the
order that ifcfg-aliasem1:1 and ifcfg-aliasem1:2 got read from disk.
Fix this by splitting it into two separate tests, each with only a
single alias.
2014-04-25 11:22:15 -04:00
Thomas Haller
cf96ced717 ifcfg-rh: fix leak in svOpenFileInternal()
Error found by coverity.

https://bugzilla.gnome.org/show_bug.cgi?id=728320

Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-04-24 21:18:44 +02:00
Thomas Haller
628e774ba8 ifcfg-rh: fix crash for reading invalid bridge configuration
Error found by coverity.

https://bugzilla.gnome.org/show_bug.cgi?id=728320

Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-04-24 21:18:44 +02:00
Thomas Haller
73d4edb0b7 core: fix leaks for nm_setting_ip[46]_config_add_\(route\|address\)()
Error found by coverity.

https://bugzilla.gnome.org/show_bug.cgi?id=728320

Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-04-24 21:18:08 +02:00
Thomas Haller
f19e79cd7a core: fix potential crash in nm-dhcp-client
Error found by coverity.

https://bugzilla.gnome.org/show_bug.cgi?id=728320

Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-04-24 21:18:08 +02:00
Thomas Haller
785c2a8c95 all/test: modify makefiles to run tests (without arguments) via autoconf TESTS=
This results in some nice coloring. Only move the tests that are called
without arguments from check-local to TESTS.

Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-04-23 21:28:55 +02:00
Thomas Haller
adb75b0fa6 ifnet/test: fix test breakage after refactoring tests
Remove fake platform.

This regression was introduced by commit 0140cdb73d).

Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-04-23 20:05:42 +02:00
Dan Winship
0140cdb73d core: use g_test_expect_message() in test programs
Use g_test_expect_message() in the various daemon-side test programs,
to avoid spewing error messages when (successfully) running "make
check".

The ifnet and ifupdown plugins are extremely verbose, so they were
partially "fixed" by turning down the logging level from INFO to WARN
in those tests.

test-dhcp-options needed to be converted to gtestutils so that the
newly-added check in nm-dbus-manager would recognize it as a test
program and not try to create a private bus.
2014-04-23 10:29:20 -04:00
Dan Winship
e3fc25731e dbus-manager: don't try to create private bus in test programs
When running test programs, don't try to create a private bus, since
it will fail if the user isn't root or if NetworkManager is currently
running, and it isn't what we want anyway.
2014-04-23 10:19:17 -04:00
Dan Winship
8537db959c settings: use nm_log_info/warning() in settings plugins
Remove the PLUGIN_PRINT() and PLUGIN_WARN() macros and use the
standard NM logging functions instead.

Also changed PLUGIN_PRINT("error: ...") to nm_log_warn("...") in
places.
2014-04-23 10:19:17 -04:00
Dan Winship
a4b8645a60 logging: use GLib's logging functions if not using syslog
If nm_logging_syslog_openlog() isn't called (ie, in the test
programs), then route nm_log() messages to g_log() rather than just
using fprintf().
2014-04-23 10:19:17 -04:00
Dan Winship
bea82ca98b all: set G_LOG_DOMAIN appropriately, for better g_log() messages 2014-04-23 10:19:17 -04:00
Thomas Haller
6fcbd20597 ifnet/test: fix test breakage after moving wifi-utils to platform
Need to initialize (fake) platform.

This regression was introduced by commit df435f4015.

Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-04-22 11:49:57 +02:00
Jiří Klimeš
0757e33e74 core: fix MTU handling while merging/subtracting IP configs (bgo #721420)
https://bugzilla.gnome.org/show_bug.cgi?id=721420
https://bugzilla.redhat.com/show_bug.cgi?id=1047083
2014-04-22 10:58:55 +02:00
Dan Winship
3b197de59f dispatcher: add better debugging
Add LOGD_DISPATCH, and if it's set to DEBUG, tell nm-dispatcher to log
additional information about each script it runs.
2014-04-18 11:33:15 -04:00
Dan Winship
d9334503d7 dispatcher: bump script timeout up to 20 seconds (rh #1048345)
The dispatcher would kill scripts after 3 seconds, but on
heavily-loaded machines, that was sometimes too short even for simple
scripts. Bump the timeout up to 20 seconds instead (and change the
10-second quit-on-idle timer to not run when a script is running).

Also change the D-Bus call timeout in the daemon to 30 seconds, so
that it only triggers if something goes really wrong and the action
timeout fails.
2014-04-18 11:29:14 -04:00
Dan Winship
1796aae751 ifcfg-rh: don't write out IP config on Team connections 2014-04-17 13:00:41 -04:00
Dan Winship
6b2579fcdf keyfile: don't g_return_if_fail() on bad user input
return-if-fail is only for programmer errors
2014-04-17 13:00:37 -04:00
Dan Winship
1218b7e0c7 core: leave wake-on-LAN devices up over suspend/resume
Taking down a wake-on-LAN device before suspending will effectively
disable wake-on-LAN. So don't do that.

Based on a patch from Stanislaw Gruszka.

https://bugzilla.gnome.org/show_bug.cgi?id=712745
https://bugzilla.redhat.com/show_bug.cgi?id=826652
https://bugzilla.redhat.com/show_bug.cgi?id=1025009
2014-04-17 12:48:20 -04:00
Dan Winship
ddb17bef81 platform: add link_get_wake_on_lan() 2014-04-17 12:48:20 -04:00
Stanislaw Gruszka
79675fc1c9 wifi: add wifi_utils_get_wowlan() 2014-04-17 12:48:20 -04:00
Dan Winship
df435f4015 wifi: move wifi-utils into platform
Move wifi-utils into NMPlatform, and update callers to use the new
NMPlatform wrappers
2014-04-17 12:45:32 -04:00
Dan Winship
090a52217c wifi: (trivial) style / indent / whitespace fixes 2014-04-17 12:45:32 -04:00
Thomas Haller
ef770ca450 core: refactor NMManager by adding function for converting NMState to string
This will be especially nice, with lazy evaluation for NM logging.

Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-04-15 18:12:14 +02:00
Thomas Haller
05b5577815 platform: be more resilient in init_link against missing name of the rtnl link
Now we use init_link to print the rtnllink object, so be more
resilient to incompletly initilized objects and just set the
fields to NULL.

This fixes the (non harmful) warning:

  <debug> [1397563880.690580] [platform/nm-linux-platform.c:1950] link_change_flags(): link: change 3: flags set 'up' (1)
  init_link: assertion 'rtnl_link_get_name (rtnllink)' failed
  file platform/nm-linux-platform.c: line 1021 (to_string_link): should not be reached
  <error> [1397563880.690632] [platform/nm-linux-platform.c:1836] link_change(): Netlink error changing link (invalid link 0x7f88b5cf93c0): Unspecific failure

Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-04-15 14:42:14 +02:00
Jiří Klimeš
c54faa4801 policy: check device state before changing it for secondaries (rh #1055099)
We have to check the previous base device state in process_secondaries() when
making a state change. The device might got disconnected in the meantime and
thus the transition from DISCONNECTED to ACTIVATED or FAILED would have been
incorrect.

Logs showing the problem:
NetworkManager[2655]: <info> (eth0): disconnecting for new activation request.
NetworkManager[2655]: <info> (eth0): device state change: secondaries -> deactivating (reason 'none') [90 110 0]
NetworkManager[2655]: <info> (eth0): device state change: deactivating -> disconnected (reason 'none') [110 30 0]
NetworkManager[2655]: <info> (eth0): deactivating device (reason 'none') [0]
NetworkManager[2655]: <info> (eth0): canceled DHCP transaction, DHCP client pid 11409
NetworkManager[2655]: <info> NetworkManager state is now DISCONNECTED
NetworkManager[2655]: (devices/nm-device.c:6591):nm_device_state_changed: runtime check failed: (priv->in_state_changed == FALSE)
NetworkManager[2655]: <info> (eth0): device state change: disconnected -> failed (reason 'secondary-connection-failed') [30 120 54]
NetworkManager[2655]: <warn> Activation (eth0) failed for connection '<unknown>'
NetworkManager[2655]: <warn> (eth0): add_pending_action (4): 'queued state change to disconnected' already added
NetworkManager[2655]: file devices/nm-device.c: line 7682 (nm_device_add_pending_action): should not be reached
NetworkManager[2655]: <info> Activation (eth0) starting connection 'ethernet-12'
NetworkManager[2655]: <info> Activation (eth0) Stage 1 of 5 (Device Prepare) scheduled...
NetworkManager[2655]: <info> (eth0): device state change: failed -> disconnected (reason 'none') [120 30 0]
NetworkManager[2655]: <info> (eth0): deactivating device (reason 'none') [0]
NetworkManager[2655]: <warn> (eth0): remove_pending_action (2): 'queued state change to disconnected' never added
NetworkManager[2655]: file devices/nm-device.c: line 7733 (nm_device_remove_pending_action): should not be reached
NetworkManager[2655]: <info> VPN service 'openvpn' disappeared

https://bugzilla.redhat.com/show_bug.cgi?id=1055099
https://bugzilla.redhat.com/show_bug.cgi?id=1055101
2014-04-15 12:55:33 +02:00
Dan Winship
7955806a02 ppp-manager: don't use kernel pppoe (rh #1034860, rh #1061641)
The kernel PPPoE code disconnects when it receives a PADT frame, but
doesn't notify userland about it. So if the server sends a PPPoE PADT
without having sent the standard PPP LCP Termination request first,
then pppd (and thus NetworkManager) will not know that the connection
has been disconnected.

This should eventually be fixed in the kernel, but for now, work
around this by using the userland pppoe client rather than the kernel
code.
2014-04-14 10:11:05 -04:00
Dan Winship
ebc5ea0b80 ppp-manager: find pppd at build time, allow overriding
Add --with-pppd, just like --with-dnsmasq.

Also change "ppp" to "pppd" for clarity in a few places.
2014-04-14 10:11:05 -04:00
Dan Winship
3e58107fe0 ppp-manager: trivial: fix tabs/spaces 2014-04-14 10:11:05 -04:00
Dan Winship
b455d6996d ppp-manager: minor GObject boilerplate cleanups
Use constructed() rather than constructor(), and remove
priv->disposed, which isn't needed since dispose() was already
idempotent.
2014-04-14 10:11:05 -04:00
Jiří Klimeš
52dfc777bb Merge changes for connection matching on connection assumption (rh #1083196)
https://bugzilla.redhat.com/show_bug.cgi?id=1083196
2014-04-11 11:45:12 +02:00
Thomas Haller
0600fa0004 dhcp: refactor state to string conversion
Signed-off-by: Thomas Haller <thaller@redhat.com>
2014-04-11 11:31:34 +02:00