1. 17 Aug, 2016 29 commits
    • Lubomir Rintel's avatar
      cb6f1f57
    • Thomas Haller's avatar
      all: merge branch 'th/device-statistics' · 844345ed
      Thomas Haller authored
      Add support to expose tx/rx statistics per device
      
      https://mail.gnome.org/archives/networkmanager-list/2016-August/msg00045.html
      844345ed
    • Thomas Haller's avatar
      device: always expose device statistics information · fbbebc21
      Thomas Haller authored
      Instead of updating the device-statistic counters only periodically as
      we refresh the link, update them on every link-changed event from
      platform.
      
      That means, also for devices that have RefreshRateMs at zero, the values
      will be updated at random times when the link information changes.
      The difference is, that previously the counters would be zero unless
      RefreshRateMs was set. Now, they have some (probably stale) values
      which however are not guaranteed to be kept up-to-date.
      
      Also, now we refresh more often then promised by RefreshRateMs. But the API
      technically doesn't specify that, so if we find there is a problem with
      this, we may revert it later.
      fbbebc21
    • Thomas Haller's avatar
      device: drop nm-device-statistics.c and refactor tracking device statistics · c16e14c7
      Thomas Haller authored
      Originally, "nm-device-statistics.c" contained code to fetch the device
      counters via netlink. As now the netlink part is handled by NMPlatform,
      the code can be simplified by merging it back to NMDevice.
      c16e14c7
    • Thomas Haller's avatar
    • Thomas Haller's avatar
      device: namespace fields related to statistics in NMDevicePrivate · 02a448e4
      Thomas Haller authored
      ... by grouping them together in a struct.
      02a448e4
    • Thomas Haller's avatar
      device: don't initalize fields in nm_device_init() to NULL · d9509a2d
      Thomas Haller authored
      They are already guaranteed to be 0/NULL.
      d9509a2d
    • Thomas Haller's avatar
      manager: add explicit cast for g_object_set() · 14a7b2a4
      Thomas Haller authored
      Technically, this is not needed because glib requires that
      int is at least 32 bits. Thus, uint32 will be safely promoted
      to uint.
      
      Just do the cast to be explict about the expected type.
      14a7b2a4
    • Thomas Haller's avatar
      36f8ffad
    • Thomas Haller's avatar
      device: reset device-stats in update_stats() on missing link · fc2f1d9c
      Thomas Haller authored
      First of all, we don't expect missing NMPlatformLink instances.
      If that actually happens, just reset the counters to zero.
      fc2f1d9c
    • Thomas Haller's avatar
      platform: drop nm_platform_link_get_stats() · 9c5405eb
      Thomas Haller authored
      No need to add accessors for fields of NMPlatformLink. Just access
      them directly.
      9c5405eb
    • Thomas Haller's avatar
    • Thomas Haller's avatar
      platform: fix sorting order for nm_platform_link_cmp() · b3c376cd
      Thomas Haller authored
      nm_platform_link_cmp() shall first compare the ifindex, otherwise
      the sort-order first considers rather unimportant fields instead
      of the primary key: the ifindex.
      
      Fixes: a3185f22e55484b819859cb4cef8f54385dac1a9
      b3c376cd
    • Alfonso Sanchez-Beato's avatar
      ce93bd2d
    • Alfonso Sanchez-Beato's avatar
      6fb0de0a
    • Thomas Haller's avatar
      2cb18efa
    • Alfonso Sanchez-Beato's avatar
      device: add statistics interface · 24b193ab
      Alfonso Sanchez-Beato authored
      Add statistics interface to all device instances. When active, the
      properties of this interface are refreshed whenever there is network
      activity for the device.
      
      Activation is performed by changing RefreshRateMs property. If set to
      zero, the interface is deactivated. If set to other value, the rest of
      the interface properties are refreshed whenever the related network
      metric changes, being RefreshRateMs the minimum time between property
      changes, in milliseconds.
      24b193ab
    • Thomas Haller's avatar
      platform/tests: relax condition in platform test · 85834a66
      Thomas Haller authored
      With device-statistics counters in NMPlatformLink we may get an additional
      link-changed event. Relax the assertion in the test.
      85834a66
    • Alfonso Sanchez-Beato's avatar
      platform: add network statistics · 6ed939e8
      Alfonso Sanchez-Beato authored
      Make network traffic statistics data available through the platform.
      6ed939e8
    • Alfonso Sanchez-Beato's avatar
      exported-object: allow exporting multiple ifaces · 3bc5c7db
      Alfonso Sanchez-Beato authored
      Allow exporting more than one interface per object class.
      3bc5c7db
    • Thomas Haller's avatar
      device: copy the plink instance before realize_start_setup() · f04baa63
      Thomas Haller authored
      To make sure, we don't end up with a dangling pointer due
      to an intermediate platform access which may invalidate the
      pointer.
      f04baa63
    • Lubomir Rintel's avatar
      act-request: queue failing the slave when master fails · d070d7f4
      Lubomir Rintel authored
      We might be already handling a state change:
      
      Aug 17 05:26:34 dacan.local NetworkManager[618]: (devices/nm-device.c:10982):
      _set_state_full: runtime check failed: (priv->in_state_changed == FALSE)
      
        (gdb) bt
        #0  0x00007fc218dad643 in g_logv (log_domain=0x7fc21c0db3c3 "NetworkManager", log_level=G_LOG_LEVEL_WARNING, format=<optimized out>, args=args@entry=0x7ffe6f0b30d0) at gmessages.c:1086
        #1  0x00007fc218dad7bf in g_log (log_domain=log_domain@entry=0x7fc21c0db3c3 "NetworkManager", log_level=log_level@entry=G_LOG_LEVEL_WARNING, format=format@entry=0x7fc218e1b70f "%s") at gmessages.c:1119
        #2  0x00007fc218dadb16 in g_warn_message (domain=domain@entry=0x7fc21c0db3c3 "NetworkManager", file=file@entry=0x7fc21c0d6597 "devices/nm-device.c", line=line@entry=10982, func=func@entry=0x7fc21c0dabf0 <__FUNCTION__.42233> "_set_state_full", warnexpr=warnexpr@entry=0x7fc21c0d95a0 "priv->in_state_changed == FALSE") at gmessages.c:1152
        #3  0x00007fc21bf79bd6 in _set_state_full (self=0x7fc21ccd88b0 [NMDeviceEthernet], state=NM_DEVICE_STATE_FAILED, reason=NM_DEVICE_STATE_REASON_DEPENDENCY_FAILED, quitting=0) at devices/nm-device.c:10982
        #7  0x00007fc2190bdd9f in <emit signal notify:master on instance 0x7fc21ccd88b0 [NMDeviceEthernet]> (instance=instance@entry=0x7fc21ccd88b0, signal_id=<optimized out>, detail=<optimized out>) at gsignal.c:3439
            #4  0x00007fc2190a3908 in g_closure_invoke (closure=0x7fc21cd009e0, return_value=return_value@entry=0x0, n_param_values=2, param_values=param_values@entry=0x7ffe6f0b34b0, invocation_hint=invocation_hint@entry=0x7ffe6f0b3450) at gclosure.c:801
            #5  0x00007fc2190b5a1d in signal_emit_unlocked_R (node=node@entry=0x7fc21cb66500, detail=detail@entry=588, instance=instance@entry=0x7fc21ccd88b0, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffe6f0b34b0)
            at gsignal.c:3627
            #6  0x00007fc2190bdab1 in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7ffe6f0b3640) at gsignal.c:3383
        #8  0x00007fc2190a7fd4 in g_object_dispatch_properties_changed (object=0x7fc21ccd88b0 [NMDeviceEthernet], n_pspecs=<optimized out>, pspecs=<optimized out>) at gobject.c:1061
        #9  0x00007fc2190aa619 in g_object_notify_by_pspec (pspec=<optimized out>, object=0x7fc21ccd88b0 [NMDeviceEthernet]) at gobject.c:1155
        #10 0x00007fc2190aa619 in g_object_notify_by_pspec (object=object@entry=0x7fc21ccd88b0 [NMDeviceEthernet], pspec=<optimized out>) at gobject.c:1264
        #11 0x00007fc21bf7de3f in nm_device_master_enslave_slave (prop=PROP_MASTER, obj=0x7fc21ccd88b0 [NMDeviceEthernet]) at devices/nm-device.c:103
        #12 0x00007fc21bf7de3f in nm_device_master_enslave_slave (success=1, self=0x7fc21ccd88b0 [NMDeviceEthernet]) at devices/nm-device.c:2757
        #13 0x00007fc21bf7de3f in nm_device_master_enslave_slave (self=0x7fc21cd42810 [NMDeviceBond], slave=0x7fc21ccd88b0 [NMDeviceEthernet], connection=<optimized out>) at devices/nm-device.c:1300
        #14 0x00007fc2167c8dcc in ffi_call_unix64 () at ../src/x86/unix64.S:76
        #15 0x00007fc2167c86f5 in ffi_call (cif=cif@entry=0x7ffe6f0b3a10, fn=<optimized out>, rvalue=0x7ffe6f0b3980, avalue=avalue@entry=0x7ffe6f0b3900) at ../src/x86/ffi64.c:522
        #20 0x00007fc2190be2e8 in <emit signal 0x7fc21c0ea3d5 "state-changed" on instance 0x7fc21ccd88b0 [NMDeviceEthernet]> (instance=instance@entry=0x7fc21ccd88b0, detailed_signal=detailed_signal@entry=0x7fc21c0ea3d5 "state-changed") at gsignal.c:3479
            #16 0x00007fc2190a4148 in g_cclosure_marshal_generic (closure=0x7fc21cc84de0, return_gvalue=0x0, n_param_values=<optimized out>, param_values=<optimized out>, invocation_hint=<optimized out>, marshal_data=0x0) at gclosure.c:1487
            #17 0x00007fc2190a3908 in g_closure_invoke (closure=0x7fc21cc84de0, return_value=return_value@entry=0x0, n_param_values=4, param_values=param_values@entry=0x7ffe6f0b3c10, invocation_hint=invocation_hint@entry=0x7ffe6f0b3bb0) at gclosure.c:801
            #18 0x00007fc2190b5a1d in signal_emit_unlocked_R (node=node@entry=0x7fc21cbeef20, detail=detail@entry=0, instance=instance@entry=0x7fc21ccd88b0, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffe6f0b3c10) at gsignal.c:3627
            #19 0x00007fc2190bdab1 in g_signal_emit_valist (instance=instance@entry=0x7fc21ccd88b0, signal_id=signal_id@entry=112, detail=detail@entry=0, var_args=var_args@entry=0x7ffe6f0b3e48) at gsignal.c:3383
        #21 0x00007fc21bf79e3d in _set_state_full (self=self@entry=0x7fc21ccd88b0 [NMDeviceEthernet], state=state@entry=NM_DEVICE_STATE_IP_CONFIG, reason=reason@entry=NM_DEVICE_STATE_REASON_NONE, quitting=quitting@entry=0) at devices/nm-device.c:11123
        #22 0x00007fc21bf7a707 in nm_device_state_changed (self=self@entry=0x7fc21ccd88b0 [NMDeviceEthernet], state=state@entry=NM_DEVICE_STATE_IP_CONFIG, reason=reason@entry=NM_DEVICE_STATE_REASON_NONE) at devices/nm-device.c:11308
        #23 0x00007fc21bf7e92f in activate_stage3_ip_config_start (self=0x7fc21ccd88b0 [NMDeviceEthernet]) at devices/nm-device.c:6759
        #24 0x00007fc21bf68dac in activation_source_handle_cb (self=0x7fc21ccd88b0 [NMDeviceEthernet], family=family@entry=2) at devices/nm-device.c:3627
        #25 0x00007fc21bf68e6e in activation_source_handle_cb4 (user_data=<optimized out>) at devices/nm-device.c:3564
        #26 0x00007fc218da6d7a in g_main_context_dispatch (context=0x7fc21cb6e000) at gmain.c:3152
        #27 0x00007fc218da6d7a in g_main_context_dispatch (context=context@entry=0x7fc21cb6e000) at gmain.c:3767
        #28 0x00007fc218da70b8 in g_main_context_iterate (context=0x7fc21cb6e000, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3838
        #29 0x00007fc218da738a in g_main_loop_run (loop=0x7fc21cb6c8c0) at gmain.c:4032
        #30 0x00007fc21bf4a23e in main (argc=1, argv=0x7ffe6f0b43e8) at main.c:411
        (gdb)
      
      https://bugzilla.redhat.com/show_bug.cgi?id=1367702
      d070d7f4
    • Jiří Klimeš's avatar
      cli: show pre-filled readline input if it is not a real password (rh #1351272) · c9f63099
      Jiří Klimeš authored
      Example:
      $ nmcli -a con up test-conn
      Passwords or encryption keys are required to access the wireless network 'kkk'.
      Username (802-1x.identity): cimrman
      Password (802-1x.password):
      
      https://bugzilla.redhat.com/show_bug.cgi?id=1351272
      c9f63099
    • Beniamino Galvani's avatar
      merge: branch 'bg/checkpoint-bgo757858-v2' · 6308c90b
      Beniamino Galvani authored
      Introduce D-Bus API to create, rollback and destroy checkpoints of
      some devices' status.
      
      https://bugzilla.gnome.org/show_bug.cgi?id=757858
      6308c90b
    • Beniamino Galvani's avatar
      checkpoint: add python D-Bus example · 048801ad
      Beniamino Galvani authored
      048801ad
    • Beniamino Galvani's avatar
      checkpoint: add audit support · a82e5148
      Beniamino Galvani authored
      a82e5148
    • Beniamino Galvani's avatar
      a52d4654
    • Beniamino Galvani's avatar
    • Beniamino Galvani's avatar
      core: fix builds without polkit support · b9e89c91
      Beniamino Galvani authored
      Fix the following build error:
      
       nm-auth-utils.c: In function ‘nm_auth_chain_add_call’:
       nm-auth-utils.c:402:46: error: ‘DBUS_GERROR’ undeclared (first use in this function)
           call->chain->error = g_error_new_literal (DBUS_GERROR,
      
      Fixes: 1cf35cb2
      b9e89c91
  2. 15 Aug, 2016 3 commits
  3. 12 Aug, 2016 8 commits
    • Thomas Haller's avatar
    • Thomas Haller's avatar
      dispatcher/tests: fix memleak in test · 1acbe1d6
      Thomas Haller authored
      Causes valgrind failure.
      
      Fixes: 570e8ee2
      1acbe1d6
    • Thomas Haller's avatar
      systemd: cleanup systemd's include paths in src/Makefile.am · f956d2e3
      Thomas Haller authored
      Certain systemd include paths are internal and should not be added
      to the include paths when compiling non-systemd sources.
      f956d2e3
    • Thomas Haller's avatar
      systemd: hide "nm-sd-adapt.h" and expose required internal API in "nm-sd.h" · f5a4a7e0
      Thomas Haller authored
      Users outside of src/systemd should not make use of internal API.
      
      Currently, "nm-dhcp-systemd.c" still makes use of internal systemd
      functions. Instead of letting "nm-dhcp-systemd.c" include internal
      headers, handpick the required defines to "nm-sd.h" and hide "nm-sd-adapt.h".
      
      "nm-sd-adapt.h" is now only used to compile internal systemd sources.
      f5a4a7e0
    • Thomas Haller's avatar
      systemd: add dummy header files to adapt compilation of systemd sources · 4c849d14
      Thomas Haller authored
      Instead of repeatedly disabling the inclusion like
      
        #if 0 /* NM_IGNORED */
        #include "missing.h"
        #endif /* NM_IGNORED */
      
      add dummy header files to "src/systemd/sd-adapt".
      4c849d14
    • Thomas Haller's avatar
      systemd: merge branch systemd into master · 2f296cb8
      Thomas Haller authored
      Conflicts:
          src/systemd/src/basic/fd-util.c
          src/systemd/src/basic/fileio.c
          src/systemd/src/libsystemd/sd-event/sd-event.c
          src/systemd/src/libsystemd/sd-id128/sd-id128.c
      2f296cb8
    • Thomas Haller's avatar
      systemd: update code from upstream · 5507dd68
      Thomas Haller authored
      This is a direct dump from systemd git on 2016-08-11, git commit
      9c5077fed42dc3cd2517a7ab816babef549dd079.
      
      ======
      
      SYSTEMD_DIR=../systemd
      COMMIT=9c5077fed42dc3cd2517a7ab816babef549dd079
      
      (
        cd "$SYSTEMD_DIR"
        git checkout "$COMMIT"
        git reset --hard
        git clean -fdx
      )
      
      git ls-files :/src/systemd/src/ | xargs -d '\n' rm -f
      
      nm_copy_sd() {
          mkdir -p "./src/systemd/$(dirname "$1")"
          cp "$SYSTEMD_DIR/$1" "./src/systemd/$1"
      }
      
      nm_copy_sd "src/basic/alloc-util.c"
      nm_copy_sd "src/basic/alloc-util.h"
      nm_copy_sd "src/basic/async.h"
      nm_copy_sd "src/basic/escape.c"
      nm_copy_sd "src/basic/escape.h"
      nm_copy_sd "src/basic/ether-addr-util.c"
      nm_copy_sd "src/basic/ether-addr-util.h"
      nm_copy_sd "src/basic/extract-word.c"
      nm_copy_sd "src/basic/extract-word.h"
      nm_copy_sd "src/basic/fileio.c"
      nm_copy_sd "src/basic/fileio.h"
      nm_copy_sd "src/basic/fd-util.c"
      nm_copy_sd "src/basic/fd-util.h"
      nm_copy_sd "src/basic/fs-util.c"
      nm_copy_sd "src/basic/fs-util.h"
      nm_copy_sd "src/basic/hash-funcs.c"
      nm_copy_sd "src/basic/hash-funcs.h"
      nm_copy_sd "src/basic/hashmap.c"
      nm_copy_sd "src/basic/hashmap.h"
      nm_copy_sd "src/basic/hexdecoct.c"
      nm_copy_sd "src/basic/hexdecoct.h"
      nm_copy_sd "src/basic/hostname-util.c"
      nm_copy_sd "src/basic/hostname-util.h"
      nm_copy_sd "src/basic/in-addr-util.c"
      nm_copy_sd "src/basic/in-addr-util.h"
      nm_copy_sd "src/basic/io-util.c"
      nm_copy_sd "src/basic/io-util.h"
      nm_copy_sd "src/basic/list.h"
      nm_copy_sd "src/basic/log.h"
      nm_copy_sd "src/basic/macro.h"
      nm_copy_sd "src/basic/mempool.h"
      nm_copy_sd "src/basic/mempool.c"
      nm_copy_sd "src/basic/parse-util.c"
      nm_copy_sd "src/basic/parse-util.h"
      nm_copy_sd "src/basic/path-util.c"
      nm_copy_sd "src/basic/path-util.h"
      nm_copy_sd "src/basic/prioq.h"
      nm_copy_sd "src/basic/prioq.c"
      nm_copy_sd "src/basic/random-util.c"
      nm_copy_sd "src/basic/random-util.h"
      nm_copy_sd "src/basic/refcnt.h"
      nm_copy_sd "src/basic/set.h"
      nm_copy_sd "src/basic/signal-util.h"
      nm_copy_sd "src/basic/siphash24.c"
      nm_copy_sd "src/basic/siphash24.h"
      nm_copy_sd "src/basic/socket-util.c"
      nm_copy_sd "src/basic/socket-util.h"
      nm_copy_sd "src/basic/sparse-endian.h"
      nm_copy_sd "src/basic/stdio-util.h"
      nm_copy_sd "src/basic/string-table.c"
      nm_copy_sd "src/basic/string-table.h"
      nm_copy_sd "src/basic/string-util.c"
      nm_copy_sd "src/basic/string-util.h"
      nm_copy_sd "src/basic/strv.c"
      nm_copy_sd "src/basic/strv.h"
      nm_copy_sd "src/basic/time-util.c"
      nm_copy_sd "src/basic/time-util.h"
      nm_copy_sd "src/basic/umask-util.h"
      nm_copy_sd "src/basic/unaligned.h"
      nm_copy_sd "src/basic/utf8.c"
      nm_copy_sd "src/basic/utf8.h"
      nm_copy_sd "src/basic/util.c"
      nm_copy_sd "src/basic/util.h"
      nm_copy_sd "src/libsystemd-network/arp-util.c"
      nm_copy_sd "src/libsystemd-network/arp-util.h"
      nm_copy_sd "src/libsystemd-network/dhcp6-internal.h"
      nm_copy_sd "src/libsystemd-network/dhcp6-lease-internal.h"
      nm_copy_sd "src/libsystemd-network/dhcp6-network.c"
      nm_copy_sd "src/libsystemd-network/dhcp6-option.c"
      nm_copy_sd "src/libsystemd-network/dhcp6-protocol.h"
      nm_copy_sd "src/libsystemd-network/dhcp-identifier.c"
      nm_copy_sd "src/libsystemd-network/dhcp-identifier.h"
      nm_copy_sd "src/libsystemd-network/dhcp-internal.h"
      nm_copy_sd "src/libsystemd-network/dhcp-lease-internal.h"
      nm_copy_sd "src/libsystemd-network/dhcp-network.c"
      nm_copy_sd "src/libsystemd-network/dhcp-option.c"
      nm_copy_sd "src/libsystemd-network/dhcp-packet.c"
      nm_copy_sd "src/libsystemd-network/dhcp-protocol.h"
      nm_copy_sd "src/libsystemd-network/lldp-internal.h"
      nm_copy_sd "src/libsystemd-network/lldp-neighbor.c"
      nm_copy_sd "src/libsystemd-network/lldp-neighbor.h"
      nm_copy_sd "src/libsystemd-network/lldp-network.c"
      nm_copy_sd "src/libsystemd-network/lldp-network.h"
      nm_copy_sd "src/libsystemd-network/network-internal.c"
      nm_copy_sd "src/libsystemd-network/network-internal.h"
      nm_copy_sd "src/libsystemd-network/sd-dhcp6-client.c"
      nm_copy_sd "src/libsystemd-network/sd-dhcp6-lease.c"
      nm_copy_sd "src/libsystemd-network/sd-dhcp-client.c"
      nm_copy_sd "src/libsystemd-network/sd-dhcp-lease.c"
      nm_copy_sd "src/libsystemd-network/sd-ipv4ll.c"
      nm_copy_sd "src/libsystemd-network/sd-ipv4acd.c"
      nm_copy_sd "src/libsystemd-network/sd-lldp.c"
      nm_copy_sd "src/libsystemd/sd-event/sd-event.c"
      nm_copy_sd "src/libsystemd/sd-id128/id128-util.c"
      nm_copy_sd "src/libsystemd/sd-id128/id128-util.h"
      nm_copy_sd "src/libsystemd/sd-id128/sd-id128.c"
      nm_copy_sd "src/shared/dns-domain.c"
      nm_copy_sd "src/shared/dns-domain.h"
      nm_copy_sd "src/systemd/_sd-common.h"
      nm_copy_sd "src/systemd/sd-dhcp6-client.h"
      nm_copy_sd "src/systemd/sd-dhcp6-lease.h"
      nm_copy_sd "src/systemd/sd-dhcp-client.h"
      nm_copy_sd "src/systemd/sd-dhcp-lease.h"
      nm_copy_sd "src/systemd/sd-event.h"
      nm_copy_sd "src/systemd/sd-ndisc.h"
      nm_copy_sd "src/systemd/sd-id128.h"
      nm_copy_sd "src/systemd/sd-ipv4acd.h"
      nm_copy_sd "src/systemd/sd-ipv4ll.h"
      nm_copy_sd "src/systemd/sd-lldp.h"
      5507dd68
    • Thomas Haller's avatar
      systemd/tests: don't link test-systemd against libNetworkManagerBase · 9c8b7b00
      Thomas Haller authored
      One point of test-systemd is to see whether our internal systemd code can
      fully link without external systemd library. In fact, we want all symbols
      from the internal systemd code to resolve, because when we link against
      an external libsystemd library, we may mix differing APIs, resulting in
      subtle bugs.
      
      Currently, it may well be that libNetworkManagerBase.la already links
      against libsystemd, which would result in test-systemd to wrongly
      succeed resolving all names.
      
      Fix that, by don't link libNetworkManagerBase.la into test-systemd.
      9c8b7b00