1. 15 Dec, 2017 11 commits
    • Thomas Haller's avatar
      device: generate unique default route-metrics per interface · 6a32c64d
      Thomas Haller authored
      In the past we had NMDefaultRouteManager which would coordinate adding
      the default-route with identical metrics. That especially happened, when
      activating two devices of the same type, without explicitly specifying
      ipv4.route-metric. For example, with ethernet devices, the routes on
      both interfaces would get a metric of 100.
      
      Coordinating routes was especially necessary, because we added
      routes with NLM_F_EXCL flag, akin to `ip route replace`. We not
      only had to avoid that activating two devices in NetworkManager would
      result in a fight over the default-route, but more importently
      to preserve externally added default-routes on unmanaged interfaces.
      
      NMDefaultRouteManager would ensure that in case of duplicate
      metrics, that the device that activated first would keep the
      best default-route. It would do so by bumping the metric
      of the second device to find a unused metric. The bumping itself
      was not very important -- MDefaultRouteManager could also just not
      configure any default-routes that show up as second, the result
      would be quite similar. More important was to keep the best
      default-route on the first activating device until the device
      deactivates or a device activates that really has a better
      default-route..
      
      Likewise, NMRouteManager would globally manage non-default-routes.
      It would not do any bumping of metrics, but it would also ensure that the routes
      of the device that activates first are not overwritten by a device activating
      later.
      
      However, the `ip route replace` approach has downsides, especially
      that it messes with routes on other interfaces, interfaces that are
      possibly not managed by NetworkManager. Another downside is, that
      binding a socket to an interface might not result in correct
      routes, because the route might just not be there (in case of
      NMRouteManager, which wouldn't configure duplicate routes by bumping
      their metric).
      
      Since commit 77ec3027 we would no longer
      use NLM_F_EXCL, but add routes akin to `ip route append`. When
      activating for example two ethernet devices with no explict route
      metric configuration, there are two routes like
      
         default via 10.16.122.254 dev eth0 proto dhcp metric 100
         default via 192.168.100.1 dev eth1 proto dhcp metric 100
      
      This does not only affect default routes. In case of a multi-homing
      setup you'd get
      
        192.168.100.0/24 dev eth0 proto kernel scope link src 192.168.100.1 metric 100
        192.168.100.0/24 dev eth1 proto kernel scope link src 192.168.100.1 metric 100
      
      but it's visible the most for default-routes.
      
      Note that we would append the routes that are activated later, as the order
      of `ip route show` confirms. One might hence expect, that kernel selects
      a route based on the order in the routing tables. However, that isn't
      the case, and activating the second interface will non-deterministically
      re-route traffic via the new interface. That will interfere badly with
      with NAT, stateful firewalls, and existing connections (like TCP).
      
      The solution is to have NMManager keep a global index of the default route-metrics
      currently in use. So, instead of determining the default-route metric based solely
      on the device-type, we now in addition generate default metrics that do not
      overlap. For example, if you activate eth0 first, it gets route-metric 100,
      and if you then activate eth1, it gets 101. Note that if you deactivate
      and re-activate eth0, then it will get route-metric 102, because the
      best route should stick on eth1 (which reserves the range 100 to 101).
      
      Note that when a connection explititly selects a particular metric, then that
      choice is honored (contrary to NMDefaultRouteManager which was more concerned
      with avoiding conflicts, then keeping the exact metric).
      
      https://bugzilla.redhat.com/show_bug.cgi?id=1505893
      6a32c64d
    • Thomas Haller's avatar
    • Thomas Haller's avatar
      core: cache device state in NMConfig and load all at once · ea08df92
      Thomas Haller authored
      NMManager will need to know the state of all device at once.
      Hence, load it once and cache it in NMConfig.
      
      Note that this wastes a bit of memory in the order of
      O(number-of-interfaces). But each device state entry is
      rather small, and we always consume memory in the order
      of O(number-of-interfaces).
      ea08df92
    • Thomas Haller's avatar
      3f38b765
    • Thomas Haller's avatar
      989b5fab
    • Thomas Haller's avatar
      utils: extend binary-search to return the first/last index · d83eee5d
      Thomas Haller authored
      binary-search can find an index of a matching entry in a sorted
      list. However, if the list contains multiple entries that compare
      equal, it can be interesting to find the first/last entry. For example,
      if you want to append new items after the last.
      
      Extend binary search to optionally continue the binary search
      to determine the range that compares equal.
      d83eee5d
    • Beniamino Galvani's avatar
      cli: fix editor crash · 54c0572d
      Beniamino Galvani authored
      Ensure @cmd_arg0 is not freed when returning it.
      
      Fixes: 88699435
      54c0572d
    • Beniamino Galvani's avatar
      platform: fix ipv6 address synchronization · ffc04e17
      Beniamino Galvani authored
      The @keep_link_local logic was wrong: when set to TRUE we must not
      delete addresses and when set to FALSE we must delete addresses only
      if they are unknown.
      
      Also, ignore link-local addresses when comparing positions.
      
      Fixes: 19d6d54b
      ffc04e17
    • Thomas Haller's avatar
      58c07d33
    • Thomas Haller's avatar
      src/tests: fix test_nm_utils_kill_child() under meson · bb7fcdf2
      Thomas Haller authored
      meson spawns the tests in a way that the test process is
      a session leader. Since the test wants to create a new
      process group to kill a group of processes that it starts,
      it failed.
      
        $ meson test -C build test-general-with-expect
      
      The test would have succeed when wrapping the test for example
      by strace:
      
        $ meson test -C build --wrap='strace' test-general-with-expect
      
      Fix that, by forking once more.
      bb7fcdf2
    • Thomas Haller's avatar
      src/tests: split test code in test_nm_utils_kill_child() · c04f4feb
      Thomas Haller authored
      Move the actual tests to a separate function. The remaingin parts currently
      setup and kill a process group, but that needs adjustment.
      c04f4feb
  2. 14 Dec, 2017 8 commits
    • Inigo Martínez's avatar
      build: rename unit tests with the `test-` pattern · d8493662
      Inigo Martínez authored
      There are some tests located in different directories which are
      using the same name. To avoid any confussion a prefix was used to
      name the test and the target.
      
      This patch uses the prefix just for the target, to avoid any
      collision that may happen, and uses the `test-` pattern as the
      name.
      
      https://mail.gnome.org/archives/networkmanager-list/2017-December/msg00051.html
      d8493662
    • Inigo Martínez's avatar
      build: fix test-ndisc-linux test · 8e009baa
      Inigo Martínez authored
      The `test-ndisc-linux` test is being run as an unit test. However,
      it is not meant to be run as one of them.
      
      This patch simply builts it as not installable binary.
      
      https://mail.gnome.org/archives/networkmanager-list/2017-December/msg00050.html
      8e009baa
    • Inigo Martínez's avatar
      build: fix libnm_linking test · a09f3aaa
      Inigo Martínez authored
      The `libnm_linking` test that belongs to the libnm-util's general
      tests is failing because the test is not able to find the
      `test-libnm-linking` binary, which is executed as a child process.
      
      The problem lies to the `BUILD_DIR` macro definition which is
      used to set the place to find the binary, and is wrongly defined
      with the source directory.
      
      This patch changes its value to the build directory that fixes
      the problem.
      
      https://mail.gnome.org/archives/networkmanager-list/2017-December/msg00049.html
      a09f3aaa
    • Inigo Martínez's avatar
      build: fix targets generated by generate-settings-docs.py · 48d4cda9
      Inigo Martínez authored
      generate-settings-docs.py script is used to generate the
      `nm-settings-docs.xml` and `nm-property-docs.xml` files. However,
      to generate these files properly, the path where `libnm` shared
      library is built must be passed to the script.
      
      This patch uses the recently added `--lib-path` parameter to
      pass the `libnm`'s built directory, which allows the proper
      generation of the files in meson.
      
      https://mail.gnome.org/archives/networkmanager-list/2017-December/msg00045.html
      48d4cda9
    • Inigo Martínez's avatar
      build: library paths as parameters for generate-settings-docs.py · 9fc990e8
      Inigo Martínez authored
      generate-settings-docs.py script uses the `LD_LIBRARY_PATH` to
      prepend directories to the library search path, which is useful to
      load a just built libnm shared library, when generating the
      `nm-settings-docs.xml` and `nm-property-docs.xml` files.
      
      However, this is a problem for meson, which is not able to set
      environment variables when executing the script.
      
      This patch adds a new optional parameter, `-l` or `--lib-path` that
      can be used to pass different paths to be prepended without using
      the `LD_LIBRARY_PATH` environment, which can still be used.
      
      [thaller@redhat.com: fix script to handle None lib_path argument]
      
      https://mail.gnome.org/archives/networkmanager-list/2017-December/msg00044.html
      9fc990e8
    • Thomas Haller's avatar
      systemd: merge branch systemd into master · 7d074fa6
      Thomas Haller authored
      Reimport systemd because it uses STRLEN() macro.
      We need to when building with -Wvla warning enabled.
      
      Related: https://github.com/systemd/systemd/pull/7625
      7d074fa6
    • Francesco Giudici's avatar
      devices/test: reapply commit 5c6a382d · d82c7eb5
      Francesco Giudici authored
      The commit was accidentally reverted during systemd code merge from
      upstream.
      
      devices/test: give more time to dad checking in test-arping
      
        # random seed: R02Sc708af827453d4ace33cd27ffd3d7f0b
        1..2
        # Start of arping tests
        **
        NetworkManager:ERROR:src/devices/tests/test-arping.c:95:test_arping_common: assertion failed (nm_arping_manager_check_address (manager, info->addresses[i]) == info->expected_result[i]): (1 == 0)
        ok 1 /arping/1
        PASS: src/devices/tests/test-arping 1 /arping/1
        ./tools/run-nm-test.sh: line 193:  2836 Aborted                 "${NMTST_DBUS_RUN_SESSION[@]}" "$TEST" "$@"
        # NetworkManager:ERROR:src/devices/tests/test-arping.c:95:test_arping_common: assertion failed (nm_arping_manager_check_address (manager, info->addresses[i]) == info->expected_result[i]): (1 == 0)
        ERROR: src/devices/tests/test-arping - too few tests run (expected 2, got 1)
        ERROR: src/devices/tests/test-arping - exited with status 134 (terminated by signal 6?)
      
      Fixes: 8c0dfd71
      d82c7eb5
    • Thomas Haller's avatar
      systemd: update code from upstream (2017-12-14) · 60afcc36
      Thomas Haller authored
      This is a direct dump from systemd git on 2017-12-14, git commit
      a327431bd168b2f327f3cd422379e213c643f2a5.
      
      ======
      
      SYSTEMD_DIR=../systemd
      COMMIT=a327431bd168b2f327f3cd422379e213c643f2a5
      
      (
        cd "$SYSTEMD_DIR"
        git checkout "$COMMIT"
        git reset --hard
        git clean -fdx
      )
      
      git ls-files :/src/systemd/src/ \
                   :/shared/nm-utils/siphash24.c \
                   :/shared/nm-utils/siphash24.h \
                   :/shared/nm-utils/unaligned.h | \
        xargs -d '\n' rm -f
      
      nm_copy_sd() {
          mkdir -p "./src/systemd/$(dirname "$1")"
          cp "$SYSTEMD_DIR/$1" "./src/systemd/$1"
      }
      
      nm_copy_sd_shared() {
          mkdir -p "./shared/nm-utils/"
          cp "$SYSTEMD_DIR/$1" "./shared/nm-utils/${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/process-util.h"
      nm_copy_sd "src/basic/process-util.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_shared "src/basic/siphash24.c"
      nm_copy_sd_shared "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_shared "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"
      60afcc36
  3. 13 Dec, 2017 15 commits
    • Beniamino Galvani's avatar
      dhcp: systemd: support the hostname property · 9c77b06b
      Beniamino Galvani authored
      Send the FQDN option when a hostname is set.
      9c77b06b
    • Inigo Martínez's avatar
      build: add initial support for meson build system · 03637ad8
      Inigo Martínez authored
      meson is a build system focused on speed an ease of use, which
      helps speeding up the software development. This patch adds meson
      support along autotools.
      
      [thaller@redhat.com: rebased patch and adjusted for iwd support]
      
      https://mail.gnome.org/archives/networkmanager-list/2017-December/msg00022.html
      03637ad8
    • Thomas Haller's avatar
      e96fabfc
    • Thomas Haller's avatar
    • Thomas Haller's avatar
      wifi: downgrade logging level and support reloading "wifi-backend" configuration · af6f2e49
      Thomas Haller authored
      NM_CONFIG_GET_DATA_ORIG is the configuration that was loaded the first time.
      NM_CONFIG_GET_DATA is the currently loaded one. Sometimes we want to always
      stick to the original configuration, if we don't support reloading the
      parameter (for example main.plugins, because it would be cumbersome to properly
      implementing loading/unloading setting plugins.
      
      In this case however, we can allow reloading the configuration just fine.
      Of course, this only matters, if the device appears after the configuration
      is reloaded, for example by reloading the driver.
      
      Also, don't log any warnings, unless necessary.
      af6f2e49
    • Andrew Zaborowski's avatar
      devices/wifi: Register an IWD PSK agent on dbus · 4d1025f6
      Andrew Zaborowski authored
      Add the PSK agent support to support PSK networks.  Note that the PSK
      itself will be saved by IWD on the first successful connection to the
      network and will not be updated when it is changed by the user on the NM
      side, this still needs fixing like a bunch of other problems.
      
      [bgalvani@redhat.com: fix checking return value of nm_utils_random_bytes()]
      4d1025f6
    • Andrew Zaborowski's avatar
      devices/wifi: Add the wifi-backend config option · 3967eca4
      Andrew Zaborowski authored
      Let the config file select between creating classes of NMDeviceWifi
      (for the usual wpa_supplicant based devices) and NMDeviceIwd depending
      on the new NetworkManager.conf setting.
      
      [bgalvani@redhat.com: fix leaking @backend in create_device()]
      3967eca4
    • Andrew Zaborowski's avatar
      devices/wifi: Track IWD devices, match to NMDeviceIwd objects · a25d99f5
      Andrew Zaborowski authored
      Add the NMIwdManager singleton to be responsible for matching
      NMDeviceIwd objects created from platform devices, to IWD Device dbus
      objects when they appear/disappear.
      a25d99f5
    • Andrew Zaborowski's avatar
      devices/wifi: Add NMDeviceIwd class to support IWD backend · ec1db966
      Andrew Zaborowski authored
      This is very similar to NMDeviceWifi but simplified to remove the things
      currently unsupported and with calls to nm_platform_wifi_* and
      nm_supplicant_* replaced with IWD DBus API calls.  Only unsecured
      infrastructure-mode networks are supported here.
      
      [bgalvani@redhat.com: fix compilation error after rebase for
        NMActRequestGetSecretsCallId]
      [thaller@redhat.com: don't use _() macro strings server side.
        Translating strings only makes sense for clients that set environment
        variables accordingly.]
      ec1db966
    • Andrew Zaborowski's avatar
      devices/wifi: Move is_manf_default_ssid to nm-wifi-utils.c · 89bbcb81
      Andrew Zaborowski authored
      Move the function for easier code reuse.
      89bbcb81
    • Andrew Zaborowski's avatar
      devices/wifi: Move AP list utilities to nm-wifi-ap.c · 0ff94718
      Andrew Zaborowski authored
      Move three functions for easier code reuse.
      0ff94718
    • Thomas Haller's avatar
      systemd: merge branch systemd into master · 8c0dfd71
      Thomas Haller authored
      Systemd instroduces a macro _fallthrough_, see
      https://github.com/systemd/systemd/pull/7389.
      However, it does not yet seem conclusive how to
      handle this properly in ever situation.
      
      While shared/nm-utils/siphash24.c makes use of
      the new macro, don't do that in our fork. siphash24.h
      does not include all systemd headers, hence _fallthrough_
      is not defined. We could re-implement it as _nm_fallthrough,
      but given the open questions, that doesn't seem the
      8c0dfd71
    • Thomas Haller's avatar
      macros: add _nm_fallthrough macro · 2fb7479e
      Thomas Haller authored
      Systemd introduced a _fallthrough_ macro in
      https://github.com/systemd/systemd/pull/7389.
      
      There might still be some issue with it, but as
      I am going to re-import the latest systemd code,
      we get them too.
      
      We need it, because "shared/nm-utils/siphash24.c"
      will use it too, and that source file does not include
      the other systemd macros. So, we will need to re-define
      it.
      2fb7479e
    • Francesco Giudici's avatar
      devices/test: give more time to dad checking in test-arping · 5c6a382d
      Francesco Giudici authored
        # random seed: R02Sc708af827453d4ace33cd27ffd3d7f0b
        1..2
        # Start of arping tests
        **
        NetworkManager:ERROR:src/devices/tests/test-arping.c:95:test_arping_common: assertion failed (nm_arping_manager_check_address (manager, info->addresses[i]) == info->expected_result[i]): (1 == 0)
        ok 1 /arping/1
        PASS: src/devices/tests/test-arping 1 /arping/1
        ./tools/run-nm-test.sh: line 193:  2836 Aborted                 "${NMTST_DBUS_RUN_SESSION[@]}" "$TEST" "$@"
        # NetworkManager:ERROR:src/devices/tests/test-arping.c:95:test_arping_common: assertion failed (nm_arping_manager_check_address (manager, info->addresses[i]) == info->expected_result[i]): (1 == 0)
        ERROR: src/devices/tests/test-arping - too few tests run (expected 2, got 1)
        ERROR: src/devices/tests/test-arping - exited with status 134 (terminated by signal 6?)
      5c6a382d
    • Thomas Haller's avatar
      systemd: update code from upstream (2017-12-13) · ac29b8cf
      Thomas Haller authored
      This is a direct dump from systemd git on 2017-12-13, git commit
      18a121f9b462e2241c4a590f0a47f5351cd47e0f.
      
      ======
      
      SYSTEMD_DIR=../systemd
      COMMIT=18a121f9b462e2241c4a590f0a47f5351cd47e0f
      
      (
        cd "$SYSTEMD_DIR"
        git checkout "$COMMIT"
        git reset --hard
        git clean -fdx
      )
      
      git ls-files :/src/systemd/src/ \
                   :/shared/nm-utils/siphash24.c \
                   :/shared/nm-utils/siphash24.h \
                   :/shared/nm-utils/unaligned.h | \
        xargs -d '\n' rm -f
      
      nm_copy_sd() {
          mkdir -p "./src/systemd/$(dirname "$1")"
          cp "$SYSTEMD_DIR/$1" "./src/systemd/$1"
      }
      
      nm_copy_sd_shared() {
          mkdir -p "./shared/nm-utils/"
          cp "$SYSTEMD_DIR/$1" "./shared/nm-utils/${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/process-util.h"
      nm_copy_sd "src/basic/process-util.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_shared "src/basic/siphash24.c"
      nm_copy_sd_shared "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_shared "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"
      ac29b8cf
  4. 12 Dec, 2017 6 commits
    • Thomas Haller's avatar
    • Thomas Haller's avatar
      cli: drop nmc_strsplit_set() · 5d3736ac
      Thomas Haller authored
      In most cases, it copies the entire strv needlessly.
      We can do better.
      
      Also, the max_tokens argument is handled wrongly (albeit
      not used anywhere anymore).
      5d3736ac
    • Thomas Haller's avatar
      cli: refactor splitting of first command line argument · 88699435
      Thomas Haller authored
      nmc_strsplit_set() handles max_token wrong. It cannot call
      g_strsplit_set() with max_token first, and then split empty
      words. You cannot use g_strsplit_set() to achieve what
      nmc_strsplit_set() wants to do, unless you first split all
      tokens, then them construct them together again -- thereby
      loosing the delimiters.
      
      Anyway, there are just a few caller that do essentially the same.
      
      Refactor the code to not use nmc_strsplit_set().
      88699435
    • Thomas Haller's avatar
      cli: rework DEFINE_SETTER_PRIV_KEY() · 97acd737
      Thomas Haller authored
      nmc_strsplit_set()'s max_token argument is broken,
      because it *first* calls g_strsplit_set() and then removes
      empty tokens. It wasn't an issue, because DEFINE_SETTER_PRIV_KEY()
      would first already remove leading spaces, and who uses multiple
      spaces anyway...
      
      Anyway, refactor DEFINE_SETTER_PRIV_KEY() to not use it.
      97acd737
    • Thomas Haller's avatar
      libnm: make nm_setting_802_1x_set_private_key() self-assignment safe · 51a3d8a8
      Thomas Haller authored
      nmcli calls nm_setting_802_1x_set_private_key() with a password pointer that
      it just got from the setting connection itself. Make this less fragile, by
      not freeing the current password before assigning it.
      51a3d8a8
    • Beniamino Galvani's avatar
      platform: improve ipv6 addresses synchronization · 19d6d54b
      Beniamino Galvani authored
      nm_platform_ip6_address_sync() must take care not only of adding
      missing addresses and removing unknown addresses, but also of the
      order in which they are added. The order is important because it
      determines which address is preferred by kernel.
      
      Since we can only add addresses at the top of the list, in order to
      change the position of an address we must first remove it and then
      re-add it in the right position.
      19d6d54b