Commit Graph

16307 Commits

Author SHA1 Message Date
Thomas Haller
c7853a1415 build: add extra dependencies for linker-version-script for NetworkManager and libnm.so 2016-10-14 10:33:30 +02:00
Beniamino Galvani
185f008521 libnm-core: fix documentation comments
../libnm-core/nm-utils.c:4405: Warning: NM: nm_utils_is_json_object: unknown parameter 'str' in documentation comment, should be 'json'
../libnm-core/nm-connection.c:2208: Warning: NM: nm_connection_get_setting_proxy: return value: Missing (transfer) annotation
2016-10-14 10:05:54 +02:00
Thomas Haller
54f701b95c contrib/rpm: fix build_clean.sh --quick after removing shared/Makefile.am
Fixes: 24f566afa0
2016-10-14 10:02:46 +02:00
Beniamino Galvani
0539725aef supplicant: fix cancellation of interface association
The @assoc_cancellable was never initialized and thus ineffective; fix
this.

Furthermore, we only cancel it in nm_supplicant_interface_disconnect()
as we expect that clients call the function before destroying the
interface. Don't assume this and also cancel it in dispose().

https://bugzilla.redhat.com/show_bug.cgi?id=1383628
2016-10-14 09:32:48 +02:00
Thomas Haller
c23eb7043f dns/resolved: merge branch 'dns-resolved-add-domain'
https://bugzilla.gnome.org/show_bug.cgi?id=772343
2016-10-14 06:19:03 +02:00
Thomas Haller
510626bf74 ip-config: cleanup integer types for nm_ip4_config_get_num_*() 2016-10-14 06:18:43 +02:00
Thomas Haller
5253ab0d0d dns/resolved: don't repeatedly call nm_ip4_config_get_num_*() to iterate config 2016-10-14 06:09:11 +02:00
Thomas Haller
878ed77c6b dns/resolved: fix style issues 2016-10-14 05:55:31 +02:00
Sjoerd Simons
c4864ba63f dns/resolved: adjust link domain settings
Make link domain settings more conventional. If an IP Config only has no
search entries, use domains for search instead otherwise ignore domains.

Also on connections which are never the default, setup the
search/domains as routing-only meaning that only dns queries for those
domains will be done on this link. Prevents quering DNS information for
on-vpn host with other namservers and using the VPN DNS server for host
not on the VPN.

This is also fixes issues with a recent change in systemd-resolved where
links with a routing domain will only be used for those domains, which
meant that the previous strategry with a typical ip configuration (no
search only domains) resulted in no usable name resolution.

Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>

https://bugzilla.gnome.org/show_bug.cgi?id=772343
2016-10-14 05:40:53 +02:00
Thomas Haller
d2cc6fb148 build: merge branch 'th/nm-symbols-bgo772791'
https://bugzilla.gnome.org/show_bug.cgi?id=772791
2016-10-13 21:52:51 +02:00
Thomas Haller
17bb165c05 build: merge policy/Makefile.am into parent Makefile.am 2016-10-13 21:36:06 +02:00
Thomas Haller
88a7151579 build: reorder toplevel Makefile.am 2016-10-13 21:36:06 +02:00
Thomas Haller
24f566afa0 build: merge shared/Makefile.am into parent Makefile.am 2016-10-13 21:36:06 +02:00
Thomas Haller
92f4185575 devices/build: use one linker-script-devices.ver for all device plugins 2016-10-13 21:36:06 +02:00
Thomas Haller
a8284c57f9 tui,cli/build: add linker version script for nmcli and nmtui 2016-10-13 21:36:06 +02:00
Thomas Haller
757d06800e dhcp/build: add linker version script for nm-dhcp-helper binary 2016-10-13 21:33:33 +02:00
Thomas Haller
f42466215a callouts/dispatcher: rename directory callouts
Originally, the "callouts" directory contained various programs
that NetworkManager would call, for example the dhcp helper.

For a while, it only contains nm-dispatcher. Thus rename the directory
to indicate that it's for dispatcher.
2016-10-13 21:33:33 +02:00
Thomas Haller
8b660f2456 callouts: cleanup makefile and add linker version script for dispatcher 2016-10-13 21:33:33 +02:00
Thomas Haller
0e47b327dc libnm: move backported symbols from libnm-core to libnm
Backported symbols only make sense for libnm itself, not for
libnm-core which is statically linked with NetworkManager and
nm-ifcace-helper. Declaring the symbols in libnm-core, means
that NetworkManager binary also contains them, although there
are not used.

Move them to libnm.
2016-10-13 21:33:33 +02:00
Thomas Haller
569d28f573 iface-helper/build: don't link nm-iface-helper with -rdynamic / -export-dynamic
Since nm-iface-helper doesn't dlopen any library, it seems not necessary
to link with -rdynamic.
2016-10-13 21:33:33 +02:00
Thomas Haller
401f6c2b8c iface-helper/build: add linker version script 2016-10-13 21:33:33 +02:00
Thomas Haller
e95090d303 settings/build: add linker version script for settings plugins 2016-10-13 21:33:33 +02:00
Thomas Haller
b171fbc9ca build: explicitly whitelist symbols in NetworkManager binary
- this allows the linker to drop unused symbols via link-time optimization
  or with --gc-sections:

    git clean -fdx
    ./autogen.sh --enable-ld-gc --enable-ifcfg-rh --enable-ifupdown \
        --enable-ifnet --enable-ibft --enable-teamdctl --enable-wifi \
        --with-modem-manager-1 --with-ofono --with-more-asserts \
        --with-more-logging
    make -j20
    strip ./src/NetworkManager

  gives 2822840 vs. 2625960 bytes (-7%).

- this also gives more control over the symbols that are used by the
  plugins. Yes, it means if you modify a plugin to use a new symbols,
  you have to extend NetworkManager.ver file.
  You can run the script to create the version file:

    $ ./tools/create-exports-NetworkManager.sh update

  but be sure that your current configuration enables all plugins
  and debugging options to actually use all symbols that are in use.

- If you compile with certain plugins enabled, you could theoretically
  re-compile NetworkManager to expose less symbols. Try:

    $ ./tools/create-exports-NetworkManager.sh build

- note that we have `make check` tests to ensure that all used
  symbols of the plugins can be found. So, it should not be possible
  to accidentally forget to expose a symbol.
2016-10-13 21:33:33 +02:00
Thomas Haller
76a057b4ec build: always include subdir wifi/tests regardless of ENABLE_TESTS
Like done for all other device plugins.
2016-10-13 21:33:33 +02:00
Thomas Haller
9f5b80d215 build: don't guard check-local with "if ENABLE_TESTS"
We should enable tests by default, probably we even should drop
the configure flags to enable tests and just always build them.

Anyway, at this point there is no use in guarding check-local
with a check for ENABLE_TESTS. A user who does't want to run
the tests, should just not call `make check`.
2016-10-13 21:33:33 +02:00
Thomas Haller
38d669d5ee build: move check_so_symbols for settings plugins to parent makefile
Like for the device plugins, check_so_symbols is called from the
Makefile of the plugin itself, not from tests/Makefile.am.

Just keep it consistent.
2016-10-13 21:33:33 +02:00
Thomas Haller
cc78d89796 build: fix check_local for wifi plugin 2016-10-13 21:33:33 +02:00
Beniamino Galvani
034f07787d pacrunner: accept NULL interface name
Pacrunner uses the interface information to implement a myIpAddress()
function which returns the first IPv4 address of the interface
associated to a proxy. That function doesn't deal with multiple
addresses per interface, and so in case of a VPN which configures
addresses on the parent interface (e.g. IPsec), we currently pass a
NULL interface. That is correct, but triggers the following assertion:

GLib-CRITICAL **: g_variant_new_variant: assertion 'value != NULL' failed
 #0  g_logv () from target:/lib64/libglib-2.0.so.0
 #1  g_log () from target:/lib64/libglib-2.0.so.0
 #2  g_variant_new_string () from target:/lib64/libglib-2.0.so.0
 #3  nm_pacrunner_manager_send (self=0xab3230, iface=iface@entry=0x0, proxy_config=proxy_config@entry=0xc83470, ip4_config=ip4_config@entry=0x7f66b4002710, ip6_config=ip6_config@entry=0x0) at nm-pacrunner-manager.c:334
 #4  _set_vpn_state (self=self@entry=0xd0c120, vpn_state=vpn_state@entry=STATE_ACTIVATED, reason=reason@entry=NM_VPN_CONNECTION_STATE_REASON_NONE, quitting=quitting@entry=0) at vpn-manager/nm-vpn-connection.c:571
 #5  dispatcher_pre_up_done (call_id=<optimized out>, user_data=<optimized out>) at vpn-manager/nm-vpn-connection.c:460
 #6  dispatcher_done_cb (proxy=0x988870, result=<optimized out>, user_data=0xae1740) at nm-dispatcher.c:444

Ignore the interface parameter when it's NULL.
2016-10-13 17:39:56 +02:00
Beniamino Galvani
db9589f0ce session-monitor: fix parsing of ConsoleKit database
The section name is "Session", not "CkSession".  Restore the correct
value, changed by commit 0de60b300e ("session: merge
nm-session-monitor-* modules").

Fixes: 0de60b300e

https://bugzilla.gnome.org/show_bug.cgi?id=772640
2016-10-13 09:40:36 +02:00
Beniamino Galvani
0e7f834a6f session-monitor: use logging macros
Use logging macros and also, print the session tracking method during
startup for debugging purposes.
2016-10-13 09:40:14 +02:00
Thomas Haller
45c0518a5e cli: fix synopsis for hotspot arguments for nmcli device wifi --help 2016-10-12 15:15:19 +02:00
Beniamino Galvani
21358edc54 core: introduce and use nm_utils_file_set_contents()
In some places we use g_file_set_contents() after a umask() to limit
the permissions of the created file. Unfortunately if the containing
directory has a default ACL the umask will be ignored and the new file
will have a mode equal to the default ACL (since g_file_set_contents()
opens the file with mode 0666).

Calling a chmod() after the file gets created is insecure (see commit
60b7ed3bdc) and so the only solution seems to be to reimplement
g_file_set_contents() and accept a mode as parameter.

We already had similar functions in the tree, consolidate them into a
new generic utility function.

https://bugzilla.gnome.org/show_bug.cgi?id=769702
2016-10-12 14:54:57 +02:00
Thomas Haller
a4110d6d4d build: drop deleted nm-atm-manager.h header file from Makefile.am
Fixes: 4d37f7a1e9
2016-10-12 11:59:04 +02:00
Thomas Haller
814b1aec53 libnm/tests: fix bug in test
Fixes: 6b904a51ee
2016-10-11 14:08:36 +02:00
Thomas Haller
6b904a51ee shared: re-define _G_BOOLEAN_EXPR() to allow nesting g_assert()
g_assert() uses G_LIKELY(), which in turn uses _G_BOOLEAN_EXPR().
As glib's version of _G_BOOLEAN_EXPR() uses a local variable
_g_boolean_var_, we cannot nest a G_LIKELY() inside a G_LIKELY(),
or inside a g_assert(), or a g_assert() inside a g_assert().

Workaround that, by redefining the macro.

I already encountered this problem before, when having a nm_assert()
inside a ({...}) block, inside a g_assert(). Then I just avoided that
combination, but this situation is quite easy to encounter.
2016-10-11 13:14:43 +02:00
Thomas Haller
97d3b07753 ifcfg-rh/build: fix build error due to line-break in Makefile.am
Fixes: dd4ce10c92
2016-10-11 12:12:25 +02:00
Thomas Haller
6ee7f429aa device: merge branch 'th/device-factory-bgo772579'
https://bugzilla.gnome.org/show_bug.cgi?id=772579
2016-10-11 12:00:05 +02:00
Thomas Haller
2c26e3e7f9 device: make registration of internal device-factories more explicit
Internal device types are a static thing. Let's not do a
constructor function to register the device factory.

This gets rid of all attribute((constructor)) functions inside
NetworkManager core. That is desired, because we don't want to
run code before main(). For example, at that point logging is
not yet initialized, but with code that runs before main() it
is hard to ensure that we don't log anything yet.
2016-10-11 11:57:43 +02:00
Thomas Haller
92b7cb2161 device: rename internal device factories
Instead of NMBondFactory, call it NMBondDeviceFactory.
2016-10-11 11:46:30 +02:00
Thomas Haller
18660604aa device: make NMDeviceFactory a class instead of an interface
An interface would make sense to allow the actual device-factory to inherit
from another type.

However, glib interfaces make code much harder to follow and less
efficient. The device factory shall be a very simple type with meta data
about supported device types and the ability to create device instances.
There is no need to make this an interface implementation, instead just
let the factories inherit from NM_TYPE_DEVICE_FACTORY directly.
2016-10-11 11:45:14 +02:00
Thomas Haller
05e6d155ba device: minor cleanup of nm-device-factory.c 2016-10-11 11:43:16 +02:00
Thomas Haller
85fe39e549 settings: merge branch 'th/settings-plugins-cleanup-bgo772561'
https://bugzilla.gnome.org/show_bug.cgi?id=772561
2016-10-11 11:37:53 +02:00
Thomas Haller
051bcd9f1c ifcfg-rh: hide shvarFile struct 2016-10-11 11:37:46 +02:00
Thomas Haller
29f7688da5 ifcfg-rh: avoid copying and unescaping current line when unsetting value 2016-10-11 11:37:46 +02:00
Thomas Haller
b00ee52ab3 ifcfg-rh/trivial: move code in shvar.c 2016-10-11 11:37:46 +02:00
Thomas Haller
96846352de ifcfg-rh: minor cleanups in writer 2016-10-11 11:37:46 +02:00
Thomas Haller
0ed009f236 ifcfg-rh: use svUnsetValue()
sed 's/^\(\t\+\)svSetValue (\([a-z]\+\), \("[^"]*"\|[*a-z_0-9A-Z]\+\(\(->\|.\)[a-z0-9A-Z_]\+\)\), NULL, \(FALSE\|TRUE\));$/\1svUnsetValue (\2, \3);/g' src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c -i
2016-10-11 11:37:46 +02:00
Thomas Haller
491b6027ba ifcfg-rh: add svUnsetValue() 2016-10-11 11:37:46 +02:00
Thomas Haller
b3b0cb0b17 ifupdown: rename files to "nms-ifupdown-*" 2016-10-11 11:37:46 +02:00
Thomas Haller
1eac4f3e60 ifnet: rename files to "nms-ifnet-*" 2016-10-11 11:37:46 +02:00