1. 18 Apr, 2019 2 commits
    • Thomas Haller's avatar
      platform: fix nm_platform_lnk_gre_to_string() for tap links · 400293d3
      Thomas Haller authored
      Why didn't we get a compiler warning about this bug?
      At least clang (3.8.0-2ubuntu4, Ubuntu 16.04) warns:
      
          CC       src/platform/src_libNetworkManagerBase_la-nm-platform.lo
        ../src/platform/nm-platform.c:5389:14: error: data argument not used by format string [-Werror,-Wformat-extra-args]
                            lnk->remote ? nm_sprintf_buf (str_remote, " remote %s", nm_utils_inet4_ntop (lnk->remote, str_remote1)) : "",
                            ^
      
      Fixes: 4c2862b9 ('platform: add gretap tunnels support')
      (cherry picked from commit dfb899f4)
      (cherry picked from commit ed88c71f)
      400293d3
    • Thomas Haller's avatar
      libnm-core/tests: fix "-Werror=logical-not-parentheses" warning in _sock_addr_endpoint() · 8190a68c
      Thomas Haller authored
          CC       libnm-core/tests/libnm_core_tests_test_general-test-general.o
        In file included from ../shared/nm-default.h:280:0,
                         from ../libnm-core/tests/test-general.c:24:
        ../libnm-core/tests/test-general.c: In function _sock_addr_endpoint:
        ../libnm-core/tests/test-general.c:5911:18: error: logical not is only applied to the left hand side of comparison [-Werror=logical-not-parentheses]
          g_assert (!host == (port == -1));
                          ^
        ../shared/nm-utils/nm-macros-internal.h:1793:7: note: in definition of macro __NM_G_BOOLEAN_EXPR_IMPL
           if (expr) \
               ^
        /usr/include/glib-2.0/glib/gmacros.h:376:43: note: in expansion of macro _G_BOOLEAN_EXPR
         #define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR((expr)), 1))
                                                   ^
        /usr/include/glib-2.0/glib/gtestutils.h:116:49: note: in expansion of macro G_LIKELY
                                                      if G_LIKELY (expr) ; else \
                                                         ^
        ../libnm-core/tests/test-general.c:5911:2: note: in expansion of macro g_assert
          g_assert (!host == (port == -1));
          ^
      
      Fixes: 713e879d ('libnm: add NMSockAddrEndpoint API')
      (cherry picked from commit 1e8c0873)
      (cherry picked from commit fd8b78dd)
      8190a68c
  2. 15 Apr, 2019 1 commit
  3. 12 Apr, 2019 5 commits
  4. 11 Apr, 2019 10 commits
    • Thomas Haller's avatar
      build: merge branch 'build-cleanup-and-disable-ebpf' · a94403bb
      Thomas Haller authored
      - make contrib/rpm similar to master.
      
      - make .gitlab-ci.yml similar to master.
      
      - disable eBPF everywhere. Now it must be explicitly disabled.
        It seems to break unit tests on gitlab-ci, with something that
        looks like a kernel issue. Or maybe ulimit -l is so small?
        Anyway, disable it for now as there are problems with it.
      a94403bb
    • Thomas Haller's avatar
      contrib/rpm: disable eBPF for package builds on Fedora · 3443a800
      Thomas Haller authored
      We have random failures to build on gitlab-ci. Something is wrong,
      at least, eBPF is not working reliably. Disable it for now.
      
      (cherry picked from commit 0d16b037)
      3443a800
    • Thomas Haller's avatar
      contrib/rpm: make spec file more similar to rhel-7's · 9fc91c23
      Thomas Haller authored
      (cherry picked from commit b3997312)
      9fc91c23
    • Thomas Haller's avatar
      contrib/rpm: from Fedora 31 onwards use internal DHCP client by default · 7bbb6a20
      Thomas Haller authored
      In RHEL-8.0 we already switched the default DHCP plugin.
      It's past time that we do the same for Fedora.
      
      (cherry picked from commit b1f556ba)
      7bbb6a20
    • Thomas Haller's avatar
      contrib/rpm: disable NDEBUG for meson builds · 46dce6e6
      Thomas Haller authored
      For better or worse, our release builds commonly do not disable assertions.
      That means,
      
       - NDEBUG is not set, and assert() is in effect
       - G_DISABLE_ASSERT is not set, and g_assert() is in effect
       - G_DISABLE_CHECKS is not set, and g_return*() is in effect.
      
      On the other hand, NM_MORE_ASSERTS is not enabled by default and nm_assert()
      is stripped away. That is the actual purpose of nm_assert(): it is
      commonly disabled on release builds, while all other assertions are
      enabled.
      
      Note that it is fully supported to build NetworkManager with all kind of
      assertions disabled. However, such a configuration is not much tested
      and I would not recommend it for that reason.
      
      %meson expands to
      
        $ /usr/bin/meson --buildtype=plain --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/libexec --bindir=/usr/bin --sbindir=/usr/sbin --includedir=/usr/include --datadir=/usr/share --mandir=/usr/share/man --infodir=/usr/share/info --localedir=/usr/share/locale --sysconfdir=/etc --localstatedir=/var --sharedstatedir=/var/lib --wrap-mode=nodownload --auto-features=enabled -Db_ndebug=true . x86_64-redhat-linux-gnu $OTHER_ARGS
      
      thus passing -DNDEBUG to the meson build. Override that.
      
      (cherry picked from commit ef338667)
      46dce6e6
    • Thomas Haller's avatar
      build: disable eBPF by default · 38ee0c78
      Thomas Haller authored
      We have random failures to build on gitlab-ci. Something is wrong,
      at least, eBPF is not working reliably. Disable it for now.
      
      (cherry picked from commit 52ea426b)
      38ee0c78
    • Thomas Haller's avatar
      gitlab-ci: run unit tests for n-acd with eBPF disabled · 114ce3cb
      Thomas Haller authored
      Enabling eBPF causes src/devices/tests/test-acd to fail:
      
          strace: bpf(BPF_MAP_CREATE, {map_type=BPF_MAP_TYPE_HASH, key_size=4, value_size=1, max_entries=8, map_flags=0, inner_map_fd=0, map_name="", map_ifindex=0, btf_fd=0, btf_key_type_id=0, btf_value_type_id=0}, 112) = -1 EPERM (Operation not permitted)
      
          NetworkManager-Message: 10:07:04.404: <warn>  [1554631624.4046] acd[0xa2b400,10]: couldn't init ACD for announcing addresses on interface 'nm-test-veth0': Operation not permitted
      
      Interestingly it does not always fail. Seems to depend on the kernel
      which is used in the containerized test environments of gitlab-ci.
      
      For now, just disable eBPF and use the fallback implementation.
      
      (cherry picked from commit a5869d1b)
      114ce3cb
    • Thomas Haller's avatar
      gitlab-ci: add test on Fedora 30 image · ed39bf76
      Thomas Haller authored
      And no longer use "fedora:lastest". While "fedora:rawhide" names the very
      latest branch (and we want to test that), for all proper releases we want
      name them explicitly.
      
      (cherry picked from commit 2955d5e6)
      ed39bf76
    • Thomas Haller's avatar
      gitlab-ci: print information about test environment in tests · 54a525c1
      Thomas Haller authored
      It's just interesting to see in the logs.
      
      (cherry picked from commit 645b195f)
      54a525c1
    • Beniamino Galvani's avatar
      clients: fix assertion when requesting gsm pin secret · eee2eda4
      Beniamino Galvani authored
        [root@gsm-r5s4-01 ~]# nmcli  connection up id gsm
        **
        libnmc:ERROR:clients/common/nm-secret-agent-simple.c:171:_secret_real_new_plain: assertion failed: ((secret_type == NM_SECRET_AGENT_SECRET_TYPE_SECRET) == nm_setting_get_secret_flags (setting, property, ((void *)0), ((void *)0)))
        Aborted (core dumped)
      
      The pin is a secret property.
      
      https://bugzilla.redhat.com/show_bug.cgi?id=1698495
      (cherry picked from commit a94ccc9a)
      eee2eda4
  5. 10 Apr, 2019 2 commits
  6. 09 Apr, 2019 1 commit
    • Beniamino Galvani's avatar
      libnm-core: fix invalid memory access · 3fa39f61
      Beniamino Galvani authored
      When we delete the runner.name property, the runner object itself gets
      deleted if that was the only property, and @runner becomes invalid.
      
       ==13818== Invalid read of size 1
       ==13818==    at 0x55EAF4: nm_streq (nm-macros-internal.h:869)
       ==13818==    by 0x55EAF4: _json_team_normalize_defaults (nm-utils.c:5573)
       ==13818==    by 0x566C89: _nm_utils_team_config_set (nm-utils.c:6057)
       ==13818==    by 0x5498A6: _nm_utils_json_append_gvalue (nm-utils-private.h:228)
       ==13818==    by 0x5498A6: set_property (nm-setting-team.c:1622)
       ==13818==  Address 0x182a9330 is 0 bytes inside a block of size 13 free'd
       ==13818==    at 0x4839A0C: free (vg_replace_malloc.c:530)
       ==13818==    by 0x4857868: json_delete_string (value.c:763)
       ==13818==    by 0x4857868: json_delete (value.c:975)
       ==13818==    by 0x4851FA1: UnknownInlinedFun (jansson.h:129)
       ==13818==    by 0x4851FA1: hashtable_do_del (hashtable.c:131)
       ==13818==    by 0x4851FA1: hashtable_del (hashtable.c:289)
       ==13818==    by 0x55DFDD: _json_del_object (nm-utils.c:5384)
       ==13818==    by 0x55EA70: _json_delete_object_on_string_match (nm-utils.c:5532)
       ==13818==    by 0x55EADB: _json_team_normalize_defaults (nm-utils.c:5549)
       ==13818==    by 0x566C89: _nm_utils_team_config_set (nm-utils.c:6057)
       ==13818==    by 0x5498A6: _nm_utils_json_append_gvalue (nm-utils-private.h:228)
       ==13818==    by 0x5498A6: set_property (nm-setting-team.c:1622)
       ==13818==  Block was alloc'd at
       ==13818==    at 0x483880B: malloc (vg_replace_malloc.c:299)
       ==13818==    by 0x4852E8C: lex_scan_string (load.c:389)
       ==13818==    by 0x4852E8C: lex_scan (load.c:620)
       ==13818==    by 0x4853458: parse_object (load.c:738)
       ==13818==    by 0x4853458: parse_value (load.c:862)
       ==13818==    by 0x4853466: parse_object (load.c:739)
       ==13818==    by 0x4853466: parse_value (load.c:862)
       ==13818==    by 0x4853655: parse_json.constprop.7 (load.c:899)
       ==13818==    by 0x48537CF: json_loads (load.c:959)
       ==13818==    by 0x566780: _nm_utils_team_config_set (nm-utils.c:5961)
       ==13818==    by 0x5498A6: _nm_utils_json_append_gvalue (nm-utils-private.h:228)
       ==13818==    by 0x5498A6: set_property (nm-setting-team.c:1622)
      
      Fixes: a5642fd9 ('libnm-core: team: rework defaults management on runner properties')
      (cherry picked from commit 80a3031a)
      3fa39f61
  7. 02 Apr, 2019 2 commits
  8. 31 Mar, 2019 1 commit
    • Beniamino Galvani's avatar
      build: fix searching dlopen in configure · 1fa0914b
      Beniamino Galvani authored
      The 4th argument of AC_SEARCH_LIBS is a list of additional libraries,
      not the name of the variable to hold the result which is always
      ac_cv_search_$function. Also, we should ignore the result when it is
      "none required".
      
      Fixes: 1f2eeb85 ('build: rename $(LIBDL) to $(DL_LIBS) and modify detection')
      (cherry picked from commit bd4957fc)
      1fa0914b
  9. 28 Mar, 2019 4 commits
    • Lubomir Rintel's avatar
      ovs: don't traverse interface through disconnected when the ovsdb entry is removed · 8ec09545
      Lubomir Rintel authored
      Go straight to unmanaged. That's what all the other devices do when
      their backing resources vanish. If the device reached disconnected
      state, an autoconnect check would try to connect it back, in vain.
      
      https://github.com/NetworkManager/NetworkManager/pull/324
      (cherry picked from commit 045b88a5)
      8ec09545
    • Lubomir Rintel's avatar
      ovs-interface: dissociate the link on disconnection · 015ef82e
      Lubomir Rintel authored
      Open vSwitch is the special kid on the block -- it likes to be in charge of
      the link lifetime and so we shouldn't be. This means that we shouldn't be
      attempting to remove the link: we'd just (gracefully) fail anyways.
      
      More importantly, this also means that we shouldn't care if we see the link
      go away. Once the device reaches DISCONNECTED state, its configuration is
      cleaned up and we may already be activating another connection. We shouldn't
      alter the device state when OpenVSwitch decides to drop the old link.
      
      https://bugzilla.redhat.com/show_bug.cgi?id=1543557
      https://github.com/NetworkManager/NetworkManager/pull/324
      (cherry picked from commit 3a55ec63)
      015ef82e
    • Lubomir Rintel's avatar
      settings: keep the added connection alive for a bit longer · ebdc37e3
      Lubomir Rintel authored
      Fixes a crash on failed AddAndActivate:
      
        $ ip link set eth0 down
        $ nmcli d conn eth0
        Error: Failed to add/activate new connection: Connection 'eth0' is not available on device eth0 because device has no carrier
        <NetworkManager crashes>
      
        #3  0x000055555558b6c5 in _nm_g_return_if_fail_warning
        #4  0x00005555557008c7 in nm_settings_has_connection
        #5  0x0000555555700e5f in pk_add_cb
        #6  0x0000555555726e30 in pk_call_cb
        #7  0x0000555555726e30 in pk_call_cb
        #8  0x0000555555726e30 in pk_call_cb
        #9  0x00005555555aaea8 in _call_id_invoke_callback
        #10 0x00005555555ab2e8 in _call_on_idle
      
      https://github.com/NetworkManager/NetworkManager/pull/325
      (cherry picked from commit f034f17f)
      ebdc37e3
    • Lubomir Rintel's avatar
      device: fix the slave state change reason on master connection removal · b4359e57
      Lubomir Rintel authored
      If we surprise-remove the master, slaves would immediately attempt to bring
      things up by autoconnecting. Not cool. Policy, however, blocks
      autoconnect if the slaves disconnect due to "dependency-failed", and it
      indeed seems to be an appropriate reason here:
      
        $ nmcli c add type bridge
        $ nmcli c add type dummy ifname dummy0 master bridge autoconnect yes
        $ nmcli c del bridge
        $
      
      Before:
      
        (nm-bridge): state change: ip-config -> deactivating (reason 'connection-removed')
        (nm-bridge): state change: deactivating -> disconnected (reason 'connection-removed')
        (nm-bridge): detached bridge port dummy0
        (dummy0): state change: activated -> disconnected (reason 'connection-removed')
        (nm-bridge): state change: disconnected -> unmanaged (reason 'user-requested')
        (dummy0): state change: disconnected -> unmanaged (reason 'user-requested')
        policy: auto-activating connection 'bridge-slave-dummy0'
      
      After:
      
        (nm-bridge): state change: ip-config -> deactivating (reason 'connection-removed')
        (nm-bridge): state change: deactivating -> disconnected (reason 'connection-removed')
        (nm-bridge): detached bridge port dummy0
        (dummy0): state change: activated -> deactivating (reason 'dependency-failed')
        (nm-bridge): state change: disconnected -> unmanaged (reason 'user-requested')
        (dummy0): state change: deactivating -> disconnected (reason 'dependency-failed')
        (dummy0): state change: disconnected -> unmanaged (reason 'user-requested')
      
      https://github.com/NetworkManager/NetworkManager/pull/319
      (cherry picked from commit 8f2a8a52)
      b4359e57
  10. 26 Mar, 2019 1 commit
  11. 19 Mar, 2019 1 commit
    • Thomas Haller's avatar
      contrib/checkpatch: avoid command injection in checkpatch.pl script · 5e66dcc6
      Thomas Haller authored
      The capture variables, $1, etc, are not valid unless the match
      succeeded, and they're not cleared, either.
      
          $ git checkout -B C origin/master && \
              echo XXXXX > f.txt && \
              git add f.txt && \
              git commit -m 'this commit does something()'
          Branch 'C' set up to track remote branch 'master' from 'origin'.
          Reset branch 'C'
          Your branch is up to date with 'origin/master'.
          sh: -c: line 0: syntax error near unexpected token `('
          sh: -c: line 0: `git log --abbrev=12 --pretty=format:"%h ('%s')" -1 does something() 2>/dev/null'
      
          >>> VALIDATE "a169a98e14 this commit does something()"
          (commit message):4: Commit 'does something()' does not seem to exist:
          > Subject: [PATCH] this commit does something()
      
          (commit message):4: Refer to the commit id properly: :
          > Subject: [PATCH] this commit does something()
      
          The patch does not validate.
      
      (cherry picked from commit d66a1ace)
      5e66dcc6
  12. 15 Mar, 2019 5 commits
  13. 13 Mar, 2019 2 commits
  14. 11 Mar, 2019 3 commits