Commit graph

14564 commits

Author SHA1 Message Date
Thomas Haller 8297683605 main: create NMSTATEDIR with permissions 700
"NMSTATEDIR" is "nmstatedir" is "'${localstatedir}'/lib/$PACKAGE" is
usually "/var/lib/NetworkManager".

The "install-data-hook" in "src/Makefile.am" properly installs the
directory with permissions 700. When creating the directory at startup,
we must also use those permissions.
2016-03-21 11:41:51 +01:00
Robby Workman b907d90f61 src/Makefile.am: create $rundir mode 0755 instead of 0700
Otherwise, $NMRUNDIR/resolv.conf isn't readable by unprivileged
users.

https://mail.gnome.org/archives/networkmanager-list/2016-March/msg00124.html
2016-03-21 11:33:15 +01:00
Lubomir Rintel 357a1c61a0 supplicant-config: fix misleading indentation 2016-03-20 17:05:35 +01:00
Lubomir Rintel 53029e321d dbus: don't do <deny send_interface="..." /> in dbus service file
It does more than intended; apart from denying messages to that particular
interface it also denies all messages non-qualified with an
interface globally.
This blocks messages completely unrelated to wpa_supplicant, such as
NetworkManager communication with the VPN plugins.

From the dbus-daemon manual:

  Be careful with send_interface/receive_interface, because the
  interface field in messages is optional. In particular, do NOT
  specify <deny send_interface="org.foo.Bar"/>! This will cause
  no-interface messages to be blocked for all services, which is
  almost certainly not what you intended. Always use rules of the form:
  <deny send_interface="org.foo.Bar" send_destination="org.foo.Service"/>

We can just safely remove those rules, since we're sufficiently protected
by the send_destination matches and method calls are disallowed by default
anyway.

https://bugzilla.gnome.org/show_bug.cgi?id=763880
2016-03-20 12:22:32 +01:00
Thomas Haller 98c772f0bc man: document IPv4 subnet for "shared" method 2016-03-20 11:18:37 +01:00
Thomas Haller 60cc501a66 device: optimize hashtable usage for shared_ips
No point ins storing "TRUE" as value in the @shared_ips hash
table. That forces glib to allocate a separate storage for the
value. Just use g_hash_table_add() instead.
2016-03-20 10:59:46 +01:00
Lubomir Rintel 6c12f04e87 vpn-connection: do not leak the connection if there's no timeout 2016-03-18 18:04:55 +01:00
Lubomir Rintel d568eb0e6c vpn-connection: don't dispose the proxy before we get the disconnect response
The return_method would be rejected by the dbus-daemon when the NM drops
its match, resulting in an ugly message in the log:

  method call time=1458301860.187048 sender=:1.267 -> destination=:1.276
    serial=5302 path=/org/freedesktop/NetworkManager/VPN/Plugin;
    interface=org.freedesktop.NetworkManager.VPN.Plugin; member=Disconnect
  method call time=1458301860.187054 sender=:1.267 -> destination=org.freedesktop.DBus
    serial=5303 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus;
    member=RemoveMatch
     string "type='signal',sender='org.freedesktop.DBus',
                                   interface='org.freedesktop.DBus',
                                   member='NameOwnerChanged',
                                   path='/org/freedesktop/DBus',
                                   arg0='org.freedesktop.NetworkManager.libreswan.Connection_10'"
  method return time=1458301860.187061 sender=org.freedesktop.DBus -> destination=:1.267
    serial=1835 reply_serial=5303
  ...
  method return time=1458301860.195351 sender=:1.276 -> destination=:1.267
    serial=19 reply_serial=5302
  error time=1458301860.195361 sender=org.freedesktop.DBus -> destination=:1.276
    error_name=org.freedesktop.DBus.Error.AccessDenied reply_serial=19
     string "Rejected send message, 7 matched rules; type="method_return",
             sender=":1.276" (uid=0 pid=26915
             comm="/usr/libexec/nm-libreswan-service --bus-name org.f")
             interface="(unset)" member="(unset)" error name="(unset)"
             requested_reply="0" destination=":1.267" (uid=0 pid=25724
             comm="/usr/sbin/NetworkManager --no-daemon ")"

Also, refcount the connection instance. While the proxy is alive, it
invokes singal callbacks that get the object as a parameter.
2016-03-18 18:04:55 +01:00
Francesco Giudici 99ad9df342 dhcp: fix GBytes leak in nm_dhcp_client_start_ip4() 2016-03-18 10:46:16 +01:00
Thomas Haller e3d2fc861b dhcp: support _LOGx_ENABLED() macro in dhcp-client
The macro _LOGx_ENABLED() is defined with a default implementation
that depends on _NMLOG_DOMAIN. Although that default does not
check for LOGD_DHCP4 vs. LOGD_DHCP6, still provide it.
Determining the correct domain might involve a larger performance
impact that what we would safe.
2016-03-17 18:00:53 +01:00
Lubomir Rintel 84c42aac1b test-nm-client: fix the remaining counter
We're expecting four callbacks: a client::devices change,
client::active-connections change, client::activate callback,
and a device::active-connection change.

We only hook the second one in the callback to the first one, and
only if client::active-connections is not set already. If it is
(when running slowly in valgrind), we just decrement the counter.

However, as the counter is one less than it should be, it would
underflow and we wait forever* instead.

For the value of forever=20s, given that's the timeout of the
mockup service.
2016-03-17 17:37:06 +01:00
Thomas Haller 01732b87f6 rdisc: fix setting netns during consturction of NMRDisc
We obtain the netns from the platform instance that is passed
in. It's wrong to set the current netns in nm_rdisc_init().

Fixes: 3ba9444728
2016-03-17 16:19:09 +01:00
Thomas Haller d4ca43613e lldp: merge branch 'th/lldp-bgo763499'
https://bugzilla.gnome.org/show_bug.cgi?id=763499
2016-03-17 15:14:53 +01:00
Thomas Haller 3363d8fd4e lldp: refactor keeping tlv data and order entries in neighbor GVariant
The fields in the neighbor variant should have a defined order.

Instead of sorting the hash table entries while constructing the
variant in lldp_neighbor_to_variant(), refactor the management of
the TLV attributes.
As we only support known attributes, we can
store them in an array at a known index instead of putting them
in a hash table.
An alternative would be to have explict fields for every known
attribute. That would be even more efficient, but requires more
work when adding new attributes.
2016-03-17 15:04:37 +01:00
Thomas Haller 191e5ae8a7 lldp: ensure stable order of variants in LLDP neighbor list 2016-03-17 15:00:49 +01:00
Thomas Haller 121e790bda lldp: drop process_lldp_neighbors()
We register the callback early on, so we get notified about
every single neighbor as they show up. No need to iterate over
them explicitly -- and probably, at that early state, there are
no neighbors yet.
2016-03-17 15:00:49 +01:00
Thomas Haller 4cd6ac3a7b lldp: process one neighbor at a time
The systemd event tells which neighbor changed. Make use
of this information and don't rebuild all the neighbors
all the time.

That means, we must also change our rate limiting. Instead of
rate limiting the processing of all neighbors, we process neighbors
right away but limit the notification that gobject property changed.
2016-03-17 15:00:49 +01:00
Thomas Haller e1f1e07a3d lldp: implement properties via NM_GOBJECT_PROPERTIES_DEFINE() 2016-03-17 15:00:48 +01:00
Thomas Haller c68dd4a202 lldp: improve logging 2016-03-17 15:00:48 +01:00
Thomas Haller 9c5265621c lldp: let lldp_neighbor_new() also create invalid objects
When we receive an update for a certain neighbor, the update
might be invalid and we want to reject it. However, we still
must create an invalid object to compare whether the update
causes a remove of a previously valid neighbor.

Let lldp_neighbor_new() create an instance as long as the
id fields are present.
2016-03-17 15:00:48 +01:00
Thomas Haller 1497b7eaf8 lldp: cache the GVariant in LldpNeighbor 2016-03-17 15:00:48 +01:00
Thomas Haller 2cf562f58e lldp: factor out lldp_neighbor_to_variant() 2016-03-17 15:00:48 +01:00
Thomas Haller a16da9c6a8 lldp: refactor processing all lldp-neighbors
Instead of replacing the whole hash with a new one (and all new by a new one,
LldpNeighbor instances), update the existing hash.

One point of this is that our process-all function requires less
comparisons and avoids duplicate work right earlier. E.g. if a neighbor
didn't change, we don't have to put it into a hash to compare later for
equality.

But more importantly, we preserve our LldpNeighbor instance instead
of recreating them all the time. Later, the LldpNeighbor will cache
the GVariant.
2016-03-17 15:00:48 +01:00
Thomas Haller e66c581c11 lldp: split out creation of LldpNeighbor instance 2016-03-17 15:00:48 +01:00
Thomas Haller 4797e9fcdb lldp/trivial: rename internal type LLDPNeighbor to LldpNeighbor
Our convention is to use camel case for abbreviations
that are longer then 2 charaters.
2016-03-17 15:00:48 +01:00
Thomas Haller e94329f092 systemd: lldp: fix starting ttl timer for lldp neighbor
lldp_start_timer() was only called during sd_lldp_get_neighbors().
Ensure that the timer is (re-)started when a new neighbor appears.
Otherwise, the timer is not started when relying on the events alone.

https://github.com/systemd/systemd/pull/2826
2016-03-17 15:00:48 +01:00
Thomas Haller c75c51d505 logging: add new logging domain "SYSTEMD" for internal systemd logging 2016-03-17 15:00:48 +01:00
Thomas Haller 0330a55851 shared: add nm_unauto() helper macro 2016-03-17 15:00:48 +01:00
Thomas Haller a50d28d4dd shared: add nm_assert_not_reached() 2016-03-17 15:00:48 +01:00
Thomas Haller ab2456493d utils/core: add NM_UTILS_NS_PER_MSEC macro 2016-03-17 15:00:48 +01:00
Thomas Haller 2778d257cc libnm: declare internal function as static 2016-03-17 11:32:53 +01:00
Beniamino Galvani e2040e5ebe merge: branch 'bg/8021x-domain-suffix-match-bgo341323'
Add domain-suffix-match properties to NMSetting8021x.

https://bugzilla.gnome.org/show_bug.cgi?id=341323
2016-03-16 17:34:52 +01:00
Beniamino Galvani 46f8045c9e libnm-core: nm-setting-8021x: treat some empty properties as NULL
For some properties as *subject-match and *domain-suffix-match an
empty string means that we don't want to do any filtering and should
be stored as NULL.
2016-03-16 17:32:17 +01:00
Beniamino Galvani 2f45aaa55f supplicant: honor the domain-suffix-match properties 2016-03-16 17:32:17 +01:00
Beniamino Galvani 945c459f20 cli: add support for NMSetting8021x domain-suffix-match properties 2016-03-16 17:32:17 +01:00
Beniamino Galvani a4b4e0bc5b ifcfg-rh: add support for domain-suffix-match properties 2016-03-16 17:32:17 +01:00
Beniamino Galvani 64b76ba906 libnm-core: add domain-suffix-match properties to NMSetting8021x
The new domain-suffix-match and phase2-domain-suffix-match properties
can be used to match against a given server domain suffix in the
dNSName elements or in the SubjectName CN of the server certificate.

Also, add a comment to the old subject-match properties documentation
to suggest that they are deprecated and should not be used anymore.
2016-03-16 17:32:17 +01:00
Thomas Haller c1383371cc NEWS: minor update referencing 1.0.10 release 2016-03-16 12:29:46 +01:00
Lubomir Rintel 8f82fa83ce ethernet: set the connection type when generating the connection
Otherwise the connection wouldn't verify:

  <error> [1458066126.2270] device (eth10): Generated connection does not verify:
    connection.type: property type should be set to '802-3-ethernet'
  <debug> [1458066126.2271] manager: (eth10): can't assume; no connection

(cherry picked from commit 4b71939e9ac3df93bfe72af0eac42b4ebaf94e15)
2016-03-16 11:38:00 +01:00
Thomas Haller ecd42cd915 libnm-util: reword code comment 2016-03-15 18:53:24 +01:00
Thomas Haller 35586da48e libnm-util: add comment for return value of nm_connection_replace_settings_from_connection()
nm_connection_replace_settings_from_connection() can safely be used
to copy an invalid connection. The return value only says, whether
the connection is valid after the fact.
2016-03-15 18:51:49 +01:00
Thomas Haller c7aea6b620 platform: use gint32 for monotonic-timestamp seconds
@now is obtained via nm_utils_get_monotonic_timestamp_s(),
which is gint32 (although it will never be negative).

Use the correct type.
2016-03-15 18:28:43 +01:00
Thomas Haller 6cb7322465 platform: remove padding for IP address lifetimes
We used to pad the lifetime since the beginning (commit
f121995fad).

However, there is not race involved, since our platform cache
is in sync with the messages from kernel (which didn't used to
be the case).

Also, when receiving a RA with a zero preferred time, we must
not extend the address lifetime by 5 seconds, but instead deprecate
the address immediately.

https://bugzilla.gnome.org/show_bug.cgi?id=763513
2016-03-15 18:28:43 +01:00
Beniamino Galvani ca5da5d80f device: fix handling of available connections
The prune list is for elements that must be deleted from the list of
available connections. So, when processing all the existing
connections an element must be deleted from the prune list iff it's
available.

Fixes: 8b2abe0e2c

https://bugzilla.redhat.com/show_bug.cgi?id=1316488
2016-03-15 17:38:58 +01:00
Thomas Haller 7037e0b374 platform: merge branch 'th/netns-aware-bgo763323'
https://bugzilla.gnome.org/show_bug.cgi?id=763323
2016-03-15 12:56:59 +01:00
Thomas Haller 46f5c07643 platform: add nmp_netns_bind_to_path() helper function
Based-on-patch-by: Stjepan Gros <stjepan.gros@gmail.com>
2016-03-15 12:56:59 +01:00
Thomas Haller 3428d8607d platform: support switching partial namespaces
Previously, the push/pop API to switch between namespaces would always
switch both the net and mount namespace together.

There are situations, where we want to only switch one namespace.
For example, the function nmp_netns_bind_to_path() introduced next
only wants to switch the net namespace to get /proc/self/ns/net,
but must not switch the mount namespace as it bind-mounds in the
namespace of the caller.
2016-03-15 12:56:58 +01:00
Thomas Haller a0cce2b195 platform/tests: add test for nm_platform_link_set_netns() 2016-03-15 12:56:58 +01:00
Thomas Haller ad345cdf7d platform/tests: pass platform argument to nmtstp helper functions
Make the test helper independent from the platform singleton instance.
That way, we can also use them for other platform instances (e.g. in a
different namespace).
2016-03-15 12:56:58 +01:00
Stjepan Gros 9995699116 platform: add nm_platform_link_set_netns() function
[thaller@redhat.com: cherry-picked original patch and modified
  slightly]
2016-03-15 12:56:58 +01:00