Commit graph

13157 commits

Author SHA1 Message Date
Thomas Haller
d4d2e65eb7 macros: add NM_SET_OUT() macro 2015-10-07 16:35:19 +02:00
Thomas Haller
e73e55c6ec device: update hw_addr_len before emitting signal in nm_device_update_hw_address() 2015-10-07 16:35:06 +02:00
Lubomir Rintel
3abe1bb21a device: don't complain about repeated schedules of the same activation stage
Can easily happend with a storm of DHCP responses or RAs before the idle
handler has a chance to run.

https://bugzilla.redhat.com/show_bug.cgi?id=1269520
2015-10-07 15:54:45 +02:00
Beniamino Galvani
76726b9922 dhcp-manager: fix memory leak in DHCP listener
Fixes: 7f6e39ec6e
2015-10-07 14:21:37 +02:00
Jiří Klimeš
ee3c6d57a4 ifcfg-rh: write REORDER_HDR as more common "yes", "no"
initscripts just search for negative values "no" or "0"
(/etc/sysconfig/network-scripts/ifup)

Related: ccea442504
2015-10-07 13:45:30 +02:00
Jiří Klimeš
e8257af0d9 ifcfg-rh: allow svTrueValue() to accept "0" and "1" values
Some initscripts variables can use "0" or "1" instead of more common
"yes", "no", for example REORDER_HDR.

And we also write REORDER_HDR=0|1 in writer.c, so we did not read REODER_HDR
correctly.

Fixes: ccea442504
2015-10-07 13:45:30 +02:00
Jiří Klimeš
687b651598 libnm/vlan: default to vlan.flags=REORDER_HDR for new connections (rh #1250225)
The kernel defaults REORDER_HDR to 1 when creating a new VLAN, but
NetworkManager's VLAN flags property defaulted to 0. Thus REORDER_HDR was not
set for NM-created VLANs with default values.

We want to match the kernel default, so we change the default value for the
vlan.flags property. However, we do not want to change the flags for existing
connections if the property is missing in connection files. Thus we have to
update plugins for that. We also make sure that vlan.flags is always written
by 'keyfile' when the value is default. That way new connections have flags
property explicitly written and it will be loaded as expected.

https://bugzilla.redhat.com/show_bug.cgi?id=1250225
2015-10-07 13:45:30 +02:00
Thomas Haller
c41be469ab device: assert that master-ready handler is not scheduled in schedule_stage2_device_config() 2015-10-06 17:35:13 +02:00
Thomas Haller
7bbc090387 device: handle master-ready before scheduling stage2
Don't handle master-ready at the beginning of stage2, but instead while
scheduling (and then possibly delaying the scheduling of stage2).

This seems more idiomatic:

  When inside a stage and your part is done: call schedule-next-stage.
  That is, always schedule the next stage, not the current one.
  schedule-next-stage then might delay to really scheduling until the
  device is ready for the next state.

Fixes: 85ac903bb8
2015-10-06 17:35:13 +02:00
Thomas Haller
c5210b322d device: fix activating master/slave devices during stage2
During stage2, if the slave detected that it would need to wait for
the master, it would return FALSE (which removes the g-idle-handler).

However, it would not clear the activation-source, so later, when
the master becomes ready, its attempt to schedule stage2 again would
result in an error-log and the idle-handler would not be scheduled
again.

Fixes: 85ac903bb8
https://bugzilla.redhat.com/show_bug.cgi?id=1268797
https://bugzilla.redhat.com/show_bug.cgi?id=1183444
2015-10-06 17:35:13 +02:00
Lubomir Rintel
b0ba25cdbc dbus: allow talking to fortisslvpn plugin 2015-10-06 17:31:50 +02:00
Lubomir Rintel
bdedad5f72 ifcfg-rh: don't disallow console users from owning the bus name
Root can be logged on console and this would prevent NM from acquiring the bus
name. Non-privileged users are covered by the default policy anyway.
2015-10-06 17:30:51 +02:00
Lubomir Rintel
343bade03b merge: branch 'lr/ipv4-dhcp-timeout-rh1262922'
https://bugzilla.redhat.com/show_bug.cgi?id=1262922
2015-10-06 14:18:02 +02:00
Lubomir Rintel
7d1b2efc52 cli: add support for ipv4.dhcp-timeout property
https://bugzilla.redhat.com/show_bug.cgi?id=1262922
2015-10-06 14:16:55 +02:00
Lubomir Rintel
7b46cab8eb device: allow overriding the DHCPv4 timeout
https://bugzilla.redhat.com/show_bug.cgi?id=1262922
2015-10-06 14:16:55 +02:00
Lubomir Rintel
fdbf4ae5e6 ifcfg-rh: add IPV4_DHCP_TIMEOUT key for ipv4.dhcp-timeout property
https://bugzilla.redhat.com/show_bug.cgi?id=1262922
2015-10-06 14:16:55 +02:00
Lubomir Rintel
c17ab1b6ff libnm-util: add ipv4.dhcp-timeout property
https://bugzilla.redhat.com/show_bug.cgi?id=1262922
2015-10-06 14:16:55 +02:00
Lubomir Rintel
3f0d595cc8 libnm,ip4-config: add ipv4.dhcp-timeout property
This is intentionally IPv4 specific since this is used for a quick fallback to
method=link-local -- something that's not needed for IPv6 since the link local
address is always there.

https://bugzilla.redhat.com/show_bug.cgi?id=1262922
2015-10-06 14:16:55 +02:00
Lubomir Rintel
8c9b791768 libnm: avoid notifying for objects until they're async-inited
Otherwise the uninitializeded objects could be prematurely signalled if their
paths are seen twice in quick succession. This happens when you have ethernet
hardware and add an ethernet connection -- it's immediatelly added to
AvialableConnections and the property reload signals the object addition
before the NMRemoteSettings's GetSettings() finishes:

  # nmcli c add type ethernet autoconnect no ifname '*'
  (process:4610): libnm-CRITICAL **: nm_connection_get_id: assertion 's_con != NULL' failed
  Connection '(null)' ((null)) successfully added.
  #

https://bugzilla.gnome.org/show_bug.cgi?id=754794
2015-10-06 14:10:55 +02:00
Lubomir Rintel
4691101517 Revert "libnm: fix initializing of new connections"
This reverts commit d20bed069c.
2015-10-06 14:10:32 +02:00
Thomas Haller
7b446137f5 config: merge branch 'th/config-enable-bgo755935'
https://bugzilla.gnome.org/show_bug.cgi?id=755935
2015-10-05 18:32:42 +02:00
Thomas Haller
da0ded4927 config: drop global-dns.enable option in favor of .config.enable
No longer support disabling the global-dns configuration via the
"enable" option.

Instead, the user can put the entire dns-configuration in one separate
snippet, and disable it altogether with ".config.enable".
2015-10-05 17:12:50 +02:00
Thomas Haller
7182304684 config: allow to enable/disable configuration snippets
Support a new configuration option

  [.config]
  enable=<ENABLED>

for configuration snippets.

This new [.config] section is only relevant within the snippet itself
and it is not merged into the combined configuration.

Currently only the "enable" key is supported. If the "enable" key is
missing, it obviously defaults to being enabled. It allows snippets
to be skipped from loading. The main configuration "NetworkManager.conf"
cannot be skipped.

<ENABLED> can be a boolean value (false), to skip a configuration
snippet from loading.
It can also be a string to match against the NetworkManager version,
like "enable=nm-version-min:1.1,nm-version-min:1.0.6"

There are several motivations for this:

- the user can disable an entire configuration snippet by toggeling
  one entry.
  This generalizes  the functionality of the global-dns.enable
  setting, but in a way that applies to configuration on a per-file
  basis.

- for developing, we often switch between different versions of
  NetworkManager. Thus, we might want to use different configuration.
  E.g. before global-dns options, I want to use "dns=none" and manage
  resolv.conf myself. Now, I can use global-dns setting to do that.
  That can be achieved with something like the following (not exactly,
  it's an example only):

      [.config]
      enable=nm-version-min:1.1
      [main]
      dns=default
      [global-dns-domain-*]
      nameserver=127.0.0.1

  Arguably, this would be more awesome, if we would bump our micro devel
  version (1.1.0) more often while developing 1.2.0 (*hint*).

- in principle, packages could drop configuration snippets and enable
  them based on the NetworkManager version.

- with the "env:" spec, you can enable/disable snippets by configuring
  an environment variable. Again, useful for testing and developing.
2015-10-05 17:12:50 +02:00
Thomas Haller
72ff5e8cac core: add nm_utils_ascii_str_to_bool()
This is effectively the same as nm_config_parse_boolean(). The difference is,
that "nm-config.c" is not available to the interface-helper, thus any
code used by interface-helper (like "NetworkManager.c") cannot use this
function.

Still don't drop nm_config_parse_boolean() entirely, because it's better
to have the explicit notion of parsing a string in the config-context.

I ended up not using the function. But I'd still keep this patch.
2015-10-05 17:12:50 +02:00
Thomas Haller
ced1dcabef config/trivial: rename nm_config_get_device_match_spec() to nm_config_get_match_spec()
We want to use the term match-spec more generally and not only
for "device-specs".
2015-10-05 17:12:50 +02:00
Thomas Haller
d5bfe04dea core: merge branch 'th/more-asserts'
Change NM_MORE_ASSERTS to allow for different levels for which
asserts are enabled.
2015-10-05 16:02:38 +02:00
Thomas Haller
3b6c1aa1a3 device: add assertion to consistency of nm_device_check_connection_available() 2015-10-05 15:58:51 +02:00
Thomas Haller
6395c829bb build: make NM_MORE_ASSERTS define numeric for different levels of more-asserts
Allows to enable more-asserts more granularly.

Unfortunately, the old check was "${enable_more_asserts} == "yes", thus
we cannot extend "--enable-more-assert=level" because that would mean
that the same build script cannot set the option on both old and new
NetworkManager.
Thus, add a new option --with-more-asserts=level. If you put the
following in your build script, it will work as expected whether
you build a new or an old version of NetworkManager.
  ./configure --enable-more-asserts --with-more-asserts=5
2015-10-05 15:25:54 +02:00
Thomas Haller
0907f3c21e build: include "config.h" in nm*enum-types.c sources
Also include the "config.h" file in the generated sources
like "nm-enum-types.c".
2015-10-05 15:01:38 +02:00
Thomas Haller
82c37e643b config: add missing include to "config.h" header 2015-10-05 15:01:38 +02:00
Thomas Haller
9358588a2a build: drop generating empty nm-*-enum-types for device plugins
The device plugins adsl, team and wifi were generating empty
"nm-*-enum-types" header and source files.
2015-10-05 15:01:38 +02:00
Thomas Haller
bb9d4b0ad1 device: use _LOG() logging macros for per-device logging 2015-10-05 13:05:05 +02:00
Thomas Haller
6b40108418 libnm: use nm_clear_g_source() in nm-object.c 2015-10-03 18:12:11 +02:00
Thomas Haller
b74574fb0d wifi: align logging AP dumps
There are several places where we log the APs. It looks
nicer in the log, if all use the same length prefix.
2015-10-03 15:39:53 +02:00
Thomas Haller
f1aece753d wifi: fix alignment of logging strength in nm_ap_dump() 2015-10-03 15:38:58 +02:00
Beniamino Galvani
7c5518ac8d bus-manager: fix handling of incoming signals
The 'new-connection' signal of a GDBusServer is emitted by default
through an idle source and the actual message processing starts only
after a signal handler returns TRUE.

Thus, before the signal handler has the chance to run, the GDBus
worker thread may detect that the connection is closed and schedule
the delivery of the 'closed' signal through another idle source.

After the termination of the 'new-connection' handler, the 'closed'
handler is executed, which cancels the subscription to GDBus signals
before any message has been processed.

This looks like a bug in GDBusServer; to work around it, just delay
the close of connection to let the signal dispatch run first.

https://bugzilla.gnome.org/show_bug.cgi?id=755170
2015-10-03 09:51:32 +02:00
Thomas Haller
18b20c4f6f code: merge branch 'th/enslave-team-rh1183444'
https://bugzilla.redhat.com/show_bug.cgi?id=1183444
2015-10-02 18:48:29 +02:00
Thomas Haller
85ac903bb8 device: fix activating slave device when stage1 delays action
When activating for example a team device which is to be enslaved to a
bridge, nm_device_activate_stage1_device_prepare() will postpone
stage 2.

In that case, we didn't register the "master-ready" of the team
device and thus never progressed the slave from stage2.

Reproduce:

  # nmcli connection delete t-br0
  # nmcli connection delete t-team0
  nmcli connection add type bridge con-name t-br0   autoconnect no ifname i-br0 ip4 192.168.177.100/24 gw4 192.168.177.1
  nmcli connection add type team   con-name t-team0 autoconnect no ifname i-team0
  nmcli connection modify id t-team0 connection.master i-br0 connection.slave-type bridge
  nmcli connection up t-team0
2015-10-02 18:45:39 +02:00
Thomas Haller
e427d32ec3 device: use nm_clear_g_signal_handler() to clear master-ready signal handler 2015-10-02 16:42:44 +02:00
Thomas Haller
c98c7a486c macros: add nm_clear_g_signal_handler() helper 2015-10-02 16:42:44 +02:00
Jiří Klimeš
6f9a7a8daa config: initialize gs_free marked variable
Otherwise I get the following error (iwhile building in Jenkins):

In file included from ../include/nm-default.h:45:0,
                 from nm-config.c:27:
nm-config.c: In function 'nm_config_set_global_dns':
../include/gsystem-local-alloc.h:31:10: error: 'group_name' may be used uninitialized in this function [-Werror=maybe-uninitialized]
     func (*(Type*)v); \
          ^
nm-config.c:1483:17: note: 'group_name' was declared here
   gs_free char *group_name;
                 ^
2015-10-02 10:03:03 +02:00
Jiří Klimeš
956577a246 wifi: emit NEW_BSS on ScanDone to update APs in Wi-Fi device (rh #1267327)
When a Wi-Fi is switched to AP mode, NMDeviceWifi forgets the AP scan list.
Later, when the device goes back to normal managed mode, the device was not
able to acquire the AP list again (for a long time), because the list is only
populated when a new BSS is signalled. And that could take very long or never
happen as the supplicant would have to lost the BSS and announce it later.

Fix the problem by announcing known BSSs as a response to ScanDone signal.

Testcase:
$ nmcli con add type wifi ifname wlan0 con-name my-wifi-ap autoconnect off ssid MYSSID
$ nmcli con modify my-wifi-ap wifi.mode ap ipv4.method shared
$ nmcli con up my-wifi-ap
$ nmcli con down my-wifi-ap
$ nmcli device wifi list

https://bugzilla.redhat.com/show_bug.cgi?id=1267327
2015-10-02 09:45:15 +02:00
Jiří Klimeš
984714333f supplicant: fix BSSs property type
BSSs property is an array of object paths, not strings.
2015-10-02 09:36:09 +02:00
Lubomir Rintel
b1512221bc nm-vpn-service-plugin: increase the quit timer
We now (since 3272ff6 libnm/libnm-glib: don't quit in the middle of asking for
secrets) always hook on the quit timer when NM asks the plugin if it needs
secrets. The timer is 20 seconds, which seems too short.

Let's make it three minutes. Don't bother adding another timer or using a
distinct timeout: it does no harm for the plugin to remain unused for three
minutes on a bus.

Another option would be to completely unhook it; however the plugin wouldn't
learn if the user cancelled the NM's secrets request and would remain unused
on the bus forever.
2015-10-01 17:17:52 +02:00
Lubomir Rintel
d4a7645865 nm-config: drop a glib 2.40-ism
Fixes: ae9e82354a
2015-10-01 10:10:58 +02:00
Beniamino Galvani
f04b27bd1f core: merge branch 'bg/global-dns-conf-bgo750458'
Add support for a global DNS configuration read from user
configuration file or set through D-Bus.

https://bugzilla.gnome.org/show_bug.cgi?id=750458
2015-10-01 09:21:32 +02:00
Beniamino Galvani
c83ac1ed41 manager: export DNS global configuration D-Bus property 2015-10-01 09:05:08 +02:00
Beniamino Galvani
dd6fbe7bfa man: document global DNS configuration sections 2015-10-01 09:05:08 +02:00
Beniamino Galvani
ae9e82354a dns: add support for global configuration in DNS manager
Modify the DNS manager to use the static global DNS configuration when
available. In addition, change DNS plugins interface to accept a new
argument for global configuration and add support for this new
parameter to the dnsmasq plugin.
2015-10-01 09:05:08 +02:00
Beniamino Galvani
55c204b9a3 core: add support for reading global DNS configuration from keyfile
Add to the NMConfigData object information about global DNS
configuration, which is loaded from user or internal keyfile upon
object construction.
2015-10-01 09:05:08 +02:00