Commit graph

7728 commits

Author SHA1 Message Date
Thomas Haller
af55476bf1 platform/tests: improve nmtstp_wait_for_signal() to return number of signals
Instead of returning only TRUE/FALSE, return the number of signals
that were received while waiting. This make the API cleared, because
previously I always had to check anew whether wait-for-signal returns
TRUE or FALSE on timeout.

Also, add nmtstp_assert_wait_for_signal() and nmtstp_assert_wait_for_signal_until()
macros.
2016-04-11 11:26:37 +02:00
Thomas Haller
c4151ebb5b platform/tests: add @platform argument to nmtstp functions
This allows tests to use these functions on a different platform instance
then on the singleton. The change makes the argument list longer, which is
unfortunate. On the other hand, it makes those functions more useful
in general.

You can't have it all.

Also, they now follow the pattern of most functions in NM where the type
is a singleton: you always pass the singleton to the function, although
in the usual case there is only one singleton instance. This allows to
use the function also on the non-singleton instance.
2016-04-11 11:26:37 +02:00
Thomas Haller
468501d0b0 platform/tests: change build order to first build test-common.c and platform core 2016-04-11 11:26:37 +02:00
Thomas Haller
f8f8c516e0 platform/tests/trivial: rename ip4_route_exists() functions to have nmtstp prefix 2016-04-11 11:26:37 +02:00
Thomas Haller
25d826ec49 platform/tests/trivial: rename init_tests() and setup_tests() function
Make it clear that they are nmtstp functions, i.e. they are found
in the header "test-common.h".
2016-04-11 11:26:37 +02:00
Thomas Haller
93c81a809d platform/tests: cleanup includes 2016-04-11 11:26:37 +02:00
Thomas Haller
56753ee41f platform/tests/trivial: move code around 2016-04-11 11:26:37 +02:00
Thomas Haller
35e7703bdc platform/tests: use nm_linux_platform_new() 2016-04-11 11:26:37 +02:00
Thomas Haller
d6b3081f7b platform: add NM_PLATFORM_NETNS_SUPPORT_DEFAULT 2016-04-11 11:26:37 +02:00
Thomas Haller
45a9a6b30b platform: add nm_linux_platform_new() constructor 2016-04-11 11:26:37 +02:00
Thomas Haller
44768f0311 platform: change @plen field of NMPlatformIPxAddress to type guint8
On netlink layer, this field is uint8_t/uchar.

A larger (signed) plen makes no sense. Adjust the signatures
to have only guint8.
2016-04-11 11:26:36 +02:00
Thomas Haller
14ee5dd2f8 platform: change @plen field of NMPlatformIPxRoute to type guint8
On netlink layer, this field is uint8_t/uchar.

A larger (signed) plen makes no sense. Adjust the signatures
to have only guint8.
2016-04-11 11:26:36 +02:00
Thomas Haller
b1e3deaf2f nmp-object: refactor handling of NMPCacheId to consider only relevant part of union
NMPCacheId is a union with fields for all known NMPCacheIdTypes.
Up to now, we always cloned the entire union, computed the hash
over all (possibly unset) fields and used memcmp() unanimously.

That was ok, because NMPCacheId was 16 bytes in total and cache-id
types that consumed less bytes didn't have a large overhead.

Next, we will add a new cache id type which increases the size of
NMPCacheId to 24 bytes. So, while possibly only a fraction of the
instances is that large, they would all have to pay that price.

Change that to consider and clone only those parts of the id
that are actually used.
2016-04-11 11:26:36 +02:00
Thomas Haller
fe78ae0b6a nmp-object: refactor initializing NMPCacheId
As we get more NMPCacheIdType values, it's better to have for
each type a pre-declared list of supported types, instead of
iterating over all types and letting _nmp_object_init_cache_id()
figure out that the cache-id-type is unsupported on that object.
2016-04-11 11:26:36 +02:00
Thomas Haller
966fcdba1b ip6-config: use nm_utils_ip6_address_same_prefix().
Instead of same_prefix() in nm_ip6_config_destination_is_direct(),
use nm_utils_ip6_address_same_prefix().
2016-04-11 11:26:36 +02:00
Thomas Haller
db3175d9c0 core: add nm_utils_ip6_address_same_prefix() util 2016-04-11 11:26:36 +02:00
Thomas Haller
a18fca36a5 dnsmasq/tests: make use of nmtst util to initialize NMPlatformIP4Address 2016-04-11 11:26:36 +02:00
Thomas Haller
b3daf156de ip-config/tests: refactor tests to use utilities from "nm-test-utils.h" 2016-04-11 11:26:36 +02:00
Thomas Haller
fbfe2ef216 core/utils: add NM_UTILS_LOOKUP_ITEM_IGNORE_OTHER() switch case
NM_UTILS_LOOKUP_DEFAULT_NM_ASSERT() is useful because unless
compiled with NM_MORE_ASSERTS, there is no assertion.
An assertion includes the function name, and can make the
function ineligible for inlining.
2016-04-11 11:22:50 +02:00
Thomas Haller
c328cf52f2 dnsmasq: fix using '%' delimiter to scope link local with zone-id
Since long, dnsmasq supports scoping the IPv6 address
with '@<interface-name>'. Since 2.58, it also supports
'%' as delimiter, which is the standard way to specify
the zone-id (rfc6874).

Since 2.73, specifying the scope with '@' as "server"
address is no longer working properly, thus breaking
NetworkManager with dnsmasq >= 2.73.

To work around that, use '%' delimiter. That breaks pre-2.58
users that have a DNS server on a link local address, but that
seems acceptable as that version was released in January 2012.

https://bugzilla.gnome.org/show_bug.cgi?id=764839
2016-04-11 11:13:17 +02:00
Beniamino Galvani
9b7f9af077 device: take care of default route of DHCP generated-assumed connections
In general we don't touch the externally set default route on devices
that use a generated-assumed connection. When the IP method is AUTO
(or DHCP), this means that we are not able to restore the default
route after a temporary expiration of the lease which removes
addresses/routes from the device.

Change this, and let NM update the default route for generated-assumed
devices using dynamic addressing.

https://bugzilla.redhat.com/show_bug.cgi?id=1265239
2016-04-08 21:28:57 +02:00
Beniamino Galvani
c84fd50287 device: don't update applied connection for generated assumed devices
The applied connection must describe the configuration that was
initially activated on the device. Even if the IP configuration
changes, we shouldn't reset the applied connection for devices using a
generated-assumed connection, otherwise we would lose information on
the IP method we're trying on the device.
2016-04-08 21:28:57 +02:00
Thomas Haller
2e34d34cf0 device: let managed by user-udev overwrite external-down
An externally configured software device is considered external-down until
it is IF_UP and has IP configuration.

When the user explicitly manages the device via UDEV rule, that decision
should overrule external-down.
2016-04-08 11:37:38 +02:00
Thomas Haller
4a8a294fe1 ppp-manager: refactor create temporary ppp setting in nm_ppp_manager_start() 2016-04-08 11:16:53 +02:00
Beniamino Galvani
76309ebe79 ppp-manager: don't modify the applied connection
The applied connection must not be modified during the activation. If
the PPP setting needs to be changed when activating a PPPoE
connection, make a copy to prevent the following error:

 could not get secrets:
 GDBus.Error:org.freedesktop.NetworkManager.Settings.Failed:
 The connection was modified since activation

https://bugzilla.redhat.com/show_bug.cgi?id=1324895
2016-04-08 11:08:54 +02:00
Thomas Haller
8f8bf0d315 config/tests: avoid test failure for valgrind due to g_file_copy()
Valgrind doesn't like it, so don't use g_file_copy().

  ==10410== Syscall param ioctl(generic) points to unaddressable byte(s)
  ==10410==    at 0x82E1707: ioctl (syscall-template.S:84)
  ==10410==    by 0x7712E71: btrfs_reflink_with_progress (gfile.c:3012)
  ==10410==    by 0x7712E71: file_copy_fallback (gfile.c:3186)
  ==10410==    by 0x7712E71: g_file_copy (gfile.c:3394)
  ==10410==    by 0x1350CA: test_config_state_file (test-config.c:948)
  ==10410==    by 0x7D0845A: test_case_run (gtestutils.c:2158)
  ==10410==    by 0x7D0845A: g_test_run_suite_internal (gtestutils.c:2241)
  ==10410==    by 0x7D08622: g_test_run_suite_internal (gtestutils.c:2253)
  ==10410==    by 0x7D0882D: g_test_run_suite (gtestutils.c:2328)
  ==10410==    by 0x7D08850: g_test_run (gtestutils.c:1596)
  ==10410==    by 0x12EFA4: main (test-config.c:1032)
  ==10410==  Address 0x9 is not stack'd, malloc'd or (recently) free'd
  ==10410==

Fixes: e3a30665d7
2016-04-08 10:46:33 +02:00
Thomas Haller
d0836be0eb core: rename nm_config_run_state* to nm_config_state*
After all, this state is stored persistently to /var/lib/NetworkManager,
and not to volatile storage in /var/run. Hence the name is better.
It's also shorter, so rename it.

The commit is mostly trivial, including update of code comments
and logging messages.

Fixes: 1b43c880ba
2016-04-07 18:52:12 +02:00
Beniamino Galvani
e3a30665d7 config: test reading and writing of state file 2016-04-07 17:57:25 +02:00
Beniamino Galvani
69955694a7 core: add code coverage support for files in src/ 2016-04-07 17:57:25 +02:00
Thomas Haller
1b43c880ba config: let NMConfig handle "NetworkManager.state" file (bgo#764474)
Move reading and writing of the state file to NMConfig
("/var/lib/NetworkManager/NetworkManager.state" file).

Originally, I intended to persist more state, thus it made
sense to cleanup handling of the state file and move it all
at one place. Now, it's not clear that will happen anytime soon.

Still, the change is a worthy cleanup, so do it anyway.

https://bugzilla.gnome.org/show_bug.cgi?id=764474
2016-04-07 10:15:01 +02:00
Thomas Haller
9152dec99f build: disable deprecation checks for internal compilation
For internal compilation we want to be able to use deprecated
API without warnings.

Define the version min/max macros to effectively disable deprecation
warnings.

However, don't do it via CFLAGS option in the makefiles, instead hack it
to "nm-default.h". After all, *every* source file that is for internal
compilation needs to include this header as first.
2016-04-05 22:22:58 +02:00
Lubomir Rintel
a8e8e76641 dbus: fix up the XML formatting
The conversion script didn't do a very good job. It got fired.
2016-04-05 14:37:51 +02:00
Lubomir Rintel
6e2b188361 dbus: convert the annotations to gtk-doc blocks 2016-04-05 14:37:51 +02:00
Beniamino Galvani
5e78322088 core: fix message format for failed creation of secret key 2016-04-05 14:32:00 +02:00
Thomas Haller
e4c1699a83 build: reorder files for building platform
Build the sources in order so that files that depend on other
files are build after the files they depend on.
2016-04-05 13:38:32 +02:00
Thomas Haller
30302d7157 auth: downgrade g_assert() to nm_assert()
We know that this isn't going to fail. No need to check every time.
2016-04-05 10:39:20 +02:00
Lubomir Rintel
9498ea507e manager: ensure IP config of device is cleared before removal
If the manager removes the device, the IP config objects must
be cleared. The reason is that NMPolicy registers to the IP config
changed signal and passes these object on to NMDnsManager.

If the INTERNAL_DEVICE_REMOVED signal is emited with IP configuration
object pending, those objects will be leaked.

This partly redoes commit f72816bf10,
which was reverted.

Co-Authored-By: Thomas Haller <thaller@redhat.com>

https://bugzilla.gnome.org/show_bug.cgi?id=764483
2016-04-04 23:10:20 +02:00
Thomas Haller
c5d827057e device: ensure @error always set by nm_device_factory_create_device()
https://bugzilla.gnome.org/show_bug.cgi?id=764606
2016-04-04 21:27:05 +02:00
Thomas Haller
fe6940b692 manager: refactor error variable in platform_link_added()
Free the error via gs_free_error and create separate instances.
2016-04-04 21:26:51 +02:00
Thomas Haller
f7729751da core: use defines for signal names in NMDnsManager and NMFirewallManager 2016-04-04 16:48:10 +02:00
Thomas Haller
1ddc2c59b8 policy: pass private pointer as signal user-data for settings handlers 2016-04-04 16:48:10 +02:00
Thomas Haller
9e886147c9 policy: pass private pointer as signal user-data for manager handlers 2016-04-04 16:48:10 +02:00
Thomas Haller
9a9250e53a policy: pass private pointer as signal user-data for device handlers
We want to unregister the signals at cleanup time via
g_signal_handlers_disconnect_by_data(). This saves us from
storing the signal handler id or by naming the function
explicitly via g_signal_handlers_disconnect_by_func().

However, the registered user-data @self is a public pointer. That
is ugly, because potentially another component could register a
signal with passing the public @self pointer as user-data.
Although that doesn't currently happen, it is more correct to register
with a private pointer to avoid this case altogether.
2016-04-04 16:46:48 +02:00
Thomas Haller
b298d3e279 policy: removed unused signal subscription to "NMManager::state-changed" 2016-04-04 16:45:48 +02:00
Thomas Haller
1dd0693055 policy: refactor tracking registered signals to NMManager's instance 2016-04-04 16:45:48 +02:00
Thomas Haller
ccda474a02 manager: remove unused signal "user-permissions-changed" 2016-04-04 16:45:48 +02:00
Thomas Haller
9cc00d9e26 manager: use defines for signal names 2016-04-04 16:45:48 +02:00
Thomas Haller
aabb63e8b7 policy: refactor tracking registered signals to NMSettings's instance 2016-04-04 15:47:22 +02:00
Thomas Haller
6a08085d27 policy: embed pointer to private data into NMPolicy
Instead of a G_TYPE_INSTANCE_GET_PRIVATE() call every time,
fetching the private data becomes a pointer dereference.

As only one instance of NMPolicy exists, this costs us only
one additional pointer of memory.
2016-04-04 15:47:22 +02:00
Thomas Haller
7e3d090acb policy: refactor tracking of registered devices
No need to track the signal id of the device. We unsubscribe
all devices together, hence we can just use
g_signal_handlers_disconnect_by_data().
2016-04-04 15:47:21 +02:00