Commit graph

12305 commits

Author SHA1 Message Date
Beniamino Galvani
97076260ae device: don't call ioctl to update priv->ip4_address
Just take the first address in priv->ip4_config.

(cherry picked from commit bfb459f8ed)
2015-08-11 18:38:56 +02:00
Thomas Haller
c5569a4e11 utils: add nm_utils_is_valid_path_component()
(cherry picked from commit 633deb0a98)
2015-08-11 18:38:55 +02:00
Thomas Haller
30768c7240 platform: optimize event_notification() not to create full nmp-objects for delete-events
For delete-events, we only need a shallow object with the key fields
set. That sufficies to lookup in the cache and find the object to
delete.

One other issue is that _nmp_vt_cmd_plobj_init_from_nl_link() and
link_extract_type() might call to ethtool for the already deleted
instance. Just avoid that.

https://bugzilla.redhat.com/show_bug.cgi?id=1247156
(cherry picked from commit a4c7176fe9)
2015-08-11 18:38:55 +02:00
Thomas Haller
796f78a04c platform: assert for valid ifname in ethtool_get()
Add an assert (g_return_val_if_reached()) that the interface name is
valid and shorter then 16 bytes. If it happened to be longer, strncpy()
would not have zero terminated the interface name.

(cherry picked from commit 5b123f2539)
2015-08-11 18:38:55 +02:00
Jiří Klimeš
5b71ec822a all: fix a compiler warning about function declarations
warning: function declaration isn’t a prototype [-Wstrict-prototypes]

In C function() and function(void) are two different prototypes (as opposed to
C++).
function()     accepts an arbitrary number of arguments
function(void) accepts zero arguments

(cherry picked from commit 94a393e9ed)
2015-08-11 18:36:53 +02:00
Jiří Klimeš
05d144dfb9 merge: respect DEVTIMEOUT when device is not udev initialized (rh #1192633)
https://bugzilla.redhat.com/show_bug.cgi?id=1192633
2015-08-11 18:28:09 +02:00
Thomas Haller
95443644c1 ifcfg-rh: reorder checks in nm_ifcfg_connection_check_devtimeout()
Move the check for a platform link before devtimeout_from_file(). The
check in the platform cache should be more performant and yield success
in most cases.

This can save reading and parsing the ifcfg-rh file.

(cherry picked from commit 6608331aec)
2015-08-11 18:27:44 +02:00
Jiří Klimeš
f3472ea4d8 ifcfg-rh: respect DEVTIMEOUT if link is not announced by udev yet (rh #1192633)
If NIC related initialization takes a long time in udev processing, but we have
an ifindex from kernel, we still want to wait until udev is finished and the
device is really usable.
Check that by calling nm_platform_link_get_by_ifname() and checking @initialized,
which means udev is finished.

Based on a patch by t-nishimura@hf.jp.nec.com
Improved by thaller@redhat.com

https://bugzilla.redhat.com/show_bug.cgi?id=1192633
(cherry picked from commit ecdf7cba6b)
2015-08-11 18:27:38 +02:00
Quentin Glidic
192ad96b1b configure.ac: do not hardcode pkg-config
Always use $PKG_CONFIG instead

Signed-off-by: Quentin Glidic <sardemff7+git@sardemff7.net>

https://bugzilla.gnome.org/show_bug.cgi?id=753502
(cherry picked from commit a6e3a60844)
2015-08-11 13:45:38 +02:00
Lubomir Rintel
042d0127f1 tests: don't use a local address for testing a gateway route
Doesn't work on RHEL 7 kernel:

https://bugzilla.redhat.com/show_bug.cgi?id=1252067
(cherry picked from commit 4b68c88023)
2015-08-10 17:47:02 +02:00
Lubomir Rintel
3af5403b3a device: avoid setting MTU to zero if undefined
(cherry picked from commit c44069c10a)
2015-08-10 14:10:45 +02:00
Dan Williams
6bd3f2637d libnm: fix nm_access_point_get_last_seen() code doc after 1e85c358
Fixes: 1e85c358
(cherry picked from commit 70f5968e9c)
2015-08-09 14:30:02 +02:00
Thomas Haller
9c7fe8c2ee libnm: add NM_AVAILABLE_IN_1_0_6 for new API nm_access_point_get_last_seen()
Fixes: fade4ded37
2015-08-09 11:04:13 +02:00
Thomas Haller
ad3d4a032c libnm-glib: add NM_AVAILABLE_IN_1_0_6 for new API nm_access_point_get_last_seen()
Fixes: cdb8a44a6e
2015-08-09 11:04:13 +02:00
Thomas Haller
38ef9ea0c4 libnm-util: update NM_VERSION macros
With this, "nm-version.h.in" is identical for "libnm-core/" and
"libnm-util/".
2015-08-09 11:04:13 +02:00
Dan Williams
f975078964 wifi/libnm: merge branch 'mtl/wifi-ap-last-seen'
https://mail.gnome.org/archives/networkmanager-list/2015-April/msg00053.html
2015-08-07 13:51:21 -05:00
Dan Williams
fade4ded37 libnm: add Wi-Fi AP 'last-seen' property 2015-08-07 12:38:59 -05:00
Mathieu Trudel-Lapierre
cdb8a44a6e wifi: expose the last_seen property for a NMAccessPoint
https://mail.gnome.org/archives/networkmanager-list/2015-April/msg00053.html
2015-08-07 12:38:24 -05:00
Thomas Haller
1b62ff1d24 core: add nm_utils_monotonic_timestamp_as_boottime() function 2015-08-07 12:33:09 -05:00
Beniamino Galvani
02b354023a device: fix memory leak in act_stage3_ip6_config_start()
If linklocal6_start() finds that the device already has an IPv6
link-local address and returns NM_ACT_STAGE_RETURN_FINISH, we don't
need to fill @out_config with an empty configuration. A non-NULL
@out_config is required only for ret = NM_ACT_STAGE_RETURN_SUCCESS.

Fixes: 396dc2b3b4
(cherry picked from commit 54d10f0ec1)
2015-08-07 13:14:53 +02:00
Thomas Haller
dfb1c0301a platform/tests: fix assertion for test-link for team device
Seems that team changed to now also raise two change signals.
Relax the assertion that broke tests on Fedora 22.

(cherry picked from commit 1c2883c940)
2015-08-06 18:06:19 +02:00
Thomas Haller
bcc94bb989 device: merge branch 'th/device-ignore-auto-bgo752546'
https://bugzilla.gnome.org/show_bug.cgi?id=752546

(cherry picked from commit 558117222f)
2015-08-06 18:02:25 +02:00
Thomas Haller
1ee28ba989 device: only 'ignore-auto-routes' and 'ignore-auto-dns' for certain settings
During merge_and_apply(), we merge several NMIPxConfig into a new
@composite. For 'ignore-auto-routes' and 'ignore-auto-dns', we want to
prevent certain routes/dns-settings to be merged.

But it is wrong to reject settings from all partial configs.
For example, especially ext_ipx_config and vpn_ipx_config contain
routes that we still must merge and preserve.

This was recently changed by 79630c11e5
and previously by ab6548c621. But it was
wrong for a long time already.

Also note, that nm_ip4_config_merge() now also ignores NIS, WINS, and
dns-options.

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

Fixes: 79630c11e5
(cherry picked from commit 43e6f6a178)
2015-08-06 18:00:44 +02:00
Thomas Haller
aadf202cf2 core: add @merge_flags argument to nm_ip4_config_merge() and nm_ip6_config_merge()
The new flags are not yet used, so there is no change in functionality.

The flags NM_IP_CONFIG_MERGE_NO_ROUTES and NM_IP_CONFIG_MERGE_NO_DNS go
together with the 'ignore-auto-routes' and 'ignore-auto-dns' setting.

Note that for IPv4, NM_IP_CONFIG_MERGE_NO_DNS also ignores NIS, WINS, and dns-options.
This is different from current other places that handle 'ignore-auto-dns'
and only care about nameservers, domains, and searches.

(cherry picked from commit f7a8962dd4)
2015-08-06 18:00:44 +02:00
Lubomir Rintel
dee3dcf9c5 device: lower serverity of MTU adjustment logging
Warn is probably too harsh, but we still need to log the reason for the change.

(cherry picked from commit f7f9e734aa)
2015-08-04 13:46:02 +02:00
Lubomir Rintel
82da29746d device: don't modify the device MTU if it's unset
The MTU of 0 means default, not zero-length packets:

  <warn>  (wlp3s0): Lowering IPv6 MTU (1472) to match device MTU (0)
  <warn>  (wlp3s0): IPv6 MTU (0) smaller than 1280, adjusting
  <warn>  (wlp3s0): Raising device MTU (0) to match IPv6 MTU (1280)
  <error> [1437068831.306733] [platform/nm-linux-platform.c:2440] sysctl_set(): platform-linux: sysctl: failed to set '/proc/sys/net/ipv6/conf/wlp3s0/mtu' to '1472': (22) Invalid argument

Reported-by:  Jan Alexander Steffens <jan.steffens@gmail.com>

https://bugzilla.gnome.org/show_bug.cgi?id=752508
(cherry picked from commit a92d8b0c67)
2015-08-04 13:45:59 +02:00
Beniamino Galvani
375100715f device: set Ethernet MTU for PPPoE connections in stage2/config
Try to set the MTU of the parent Ethernet interface to match the
requested PPP MTU and MRU. This allows the negotiation of a PPP MTU
and MRU greater than 1492.

(cherry picked from commit 1d3eff45d2)
2015-08-04 12:43:17 +02:00
Beniamino Galvani
ecb93850c1 device: set MTU on IP interface
Fixes: 7ba2a058f2
(cherry picked from commit 0a04be41d4)
2015-08-04 12:43:17 +02:00
Lubomir Rintel
6f616d4c4b libnm-core,libnm-util: drag in glib.h for nm-version.h
G_UNAVAILABLE defines need it.

Fix building of the Qt example.
2015-07-23 10:06:41 +02:00
Thomas Haller
82ddd94793 default-route: merge branch 'th/default-route-on-unmanaged-device-rh1244483'
Fix wrongly managing the default-route on unmanaged devices. Also,
improve handling for p2p link with an 0.0.0.0 IPv4 gateway.

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

(cherry picked from commit 7243c9f3d4d0c0d0508c9bed326eea99336196bd)
2015-07-22 14:51:31 +02:00
Thomas Haller
9cfdbf6a06 libnm-core: don't assert against non-NULL @ip argument to canonicalize_ip()
Remove an assertion in canonicalize_ip() to assert that either a
non-NULL @ip is given, or @null_any is TRUE.

The condition of the assert is not easy to understand without context.
Instead the caller should already handle %NULL properly.

All callers that pass @null_any=FALSE to canonicalize_ip(), already assert
that the argument is not %NULL. With the exception of nm_ip_route_new()
which however checks for a valid @dest early on.

(cherry picked from commit 7f129b976c)
2015-07-22 14:50:51 +02:00
Lubomir Rintel
2958b3d1af libnm-core: 0.0.0.0 is a valid gateway too
It makes sense for point-to point links.

https://bugzilla.redhat.com/show_bug.cgi?id=1244483
(cherry picked from commit f14fd048ff)
2015-07-22 14:50:51 +02:00
Thomas Haller
89b630ff32 libnm-core: fix nm-setting-ip-config.c:valid_ip() to handle %NULL argument
We call valid_ip() from nm_ip_route_new() to check whether an untrusted string
is a valid ip address. Properly handle %NULL argument.

Fixes: 21c8a6b20e
(cherry picked from commit 9342568694)
2015-07-22 14:50:51 +02:00
Thomas Haller
fa2b8fdbdf libnm-core: properly handle %NULL @ip in nm_utils_ipaddr_valid()
A is_valid() function should just accept NULL as input and
return "invalid". It certainly should not crash.

Fixes: 21c8a6b20e
(cherry picked from commit 2b55de8560)
2015-07-22 14:50:51 +02:00
Lubomir Rintel
f11e4c31ee ip4-config: 0.0.0.0 is a valid gateway too
It makes sense for point-to point links.

https://bugzilla.redhat.com/show_bug.cgi?id=1244483
(cherry picked from commit 063677101a)
2015-07-22 14:50:49 +02:00
Lubomir Rintel
5e9dd4b267 default-route-manager: pick up platform changes after NMDevice
If a default route is configured externally, we want the device to pick the
change and register it with the default-route-manager first.

https://bugzilla.redhat.com/show_bug.cgi?id=1244483
(cherry picked from commit e67b52ed16)
2015-07-22 14:49:16 +02:00
Thomas Haller
0ab389e15c device: always assume default-route for generate-assumed-connections
Commit d51975e changed, that we treat assumed and non-assumed
connections the same with respect to the default route. This is
certainly wrong, if we have an nm-generated-assumed connection
at hand. In this case, NM just generated a connection based on what
was configured on the system. Looking at that result and re-enforcing
the default-route is wrong.

We want to manage the default-route for assumed, persistent connections.
If the connection was assumed and generated, we do not.

This commit reverts d51975ed for nm-generated-assumed connection and
restores the previous behavior.

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

Fixes: d51975ed92
(cherry picked from commit bebeff69e8)
2015-07-22 14:49:16 +02:00
Thomas Haller
351a645ad6 device: move setting v4_commit_first_time/v6_commit_first_time to the end of merge_and_apply()
(cherry picked from commit cbd246c9b0)
2015-07-22 14:49:16 +02:00
Thomas Haller
83dadca08e device/trivial: rename private field in NMDevicePrivate
Rename "default_route.v4_configure_first_time" to "v4_commit_first_time".

For one, the name "commit" matches better to the @commit variable in ip4_config_merge_and_apply()
and ip6_config_merge_and_apply(). Then, we don't need this information
only for default-routes, so move the variable out of the @default_route
struct.

(cherry picked from commit ad03cdbc73)
2015-07-22 14:49:16 +02:00
Thomas Haller
3308114211 core: fix handling route-metric for nm_ip4_config_merge()
Fixes: bc75cd53a8
(cherry picked from commit 47cc91bef6)
2015-07-22 14:42:40 +02:00
Thomas Haller
9588c4633a core: detect route-metric when creating nm-generated-assumed connection
When generating a connection to assume it, also record the route-metric.
Do that by looking at the metric of the (best) default-route.

This is especially important since d51975ed92.
Now NM would also manage the default-route for assumed connections.
So the generated assumed connection would have a route metric based on
the device type, which might differ from the external configuration.
This caused NM to replace the externally configured default-route.

https://bugzilla.gnome.org/show_bug.cgi?id=750405
(cherry picked from commit bc75cd53a8)
2015-07-22 14:14:18 +02:00
Thomas Haller
1615d8c975 cli: fix metered to string property
nmc_property_connection_get_metered() must return non-localized strings
that can be parsed by nmc_property_connection_set_metered().

Fixes: f0aebfd746
(cherry picked from commit 5eba53cd53)
2015-07-22 13:54:32 +02:00
Beniamino Galvani
586bb2799f merge branch 'bg/metered-connections-bgo741725'
Expose information about whether a connection is metered and use some
heuristics to choose a reasonable default when the value is not
configured.

https://bugzilla.gnome.org/show_bug.cgi?id=741725
https://bugzilla.redhat.com/show_bug.cgi?id=1200452

(cherry picked from commit 7d09debdf0)
2015-07-22 13:53:38 +02:00
Beniamino Galvani
5c11d26a2e nm-manager: add 'metered' property
This introduces a global metered property which makes easier for
clients to obtain the metered status of the current primary
connection.

(cherry picked from commit 04d5804dd5)
2015-07-22 13:52:46 +02:00
Beniamino Galvani
83aba66a85 cli: fix error message localization
Valid values must not be translated in error messages generated in
nmc_string_to_bool() and nmc_string_to_tristate().

(cherry picked from commit bd4e1f37f8)
2015-07-22 13:52:46 +02:00
Beniamino Galvani
975afac6a4 ifcfg-rh: add support for CONNECTION_METERED
(cherry picked from commit 7e5e624daf)
2015-07-22 13:52:46 +02:00
Beniamino Galvani
1ab766b61b ifcfg-rh: change type of svTrueValue() return value and argument
Change type of return value and 'def' argument of svTrueValue() to
gint to make clear that it can be something different from TRUE and
FALSE.

(cherry picked from commit 862fd91df0)
2015-07-22 13:52:46 +02:00
Beniamino Galvani
afd1bf5642 core: update device 'metered' property on connection state change
The metered property of a NMDevice that reaches the activated state is
copied from the active connection and if its value is 'unknown' some
heuristics are used to guess the actual value.

When the connection is torn down the metered property is reset to
'unknown'.

(cherry picked from commit a86255a043)
2015-07-22 13:52:46 +02:00
Beniamino Galvani
c41fe4c659 dhcp: detect NMIP4Config 'metered' flag based on ANDROID_METERED DHCP option
Some versions of Android's DHCP server send option 43 (Vendor specific
information) with value "ANDROID_METERED" in Wi-Fi hotspot mode.

Mark the NMIP4Config as metered when such option is received.

(cherry picked from commit 1e39b2320d)
2015-07-22 13:52:46 +02:00
Beniamino Galvani
75f0c79494 systemd/dhcp: add support for vendor specific DHCP option
This adds support for DHCP option 43 (Vendor Specific Information) to
the internal DHCP client. The option carries an opaque object of n
octets, interpreted by vendor-specific code on the clients and
servers.

(cherry picked from commit 3c2f4a17f9)
2015-07-22 13:52:46 +02:00