1. 24 Mar, 2019 1 commit
  2. 22 Mar, 2019 8 commits
  3. 20 Mar, 2019 5 commits
  4. 19 Mar, 2019 1 commit
    • Lubomir Rintel's avatar
      all: goodbye libnm-glib · 1de8383a
      Lubomir Rintel authored
      This removes libnm-glib, libnm-glib-vpn, and libnm-util for good.
      The it has been replaced with libnm since NetworkManager 1.0, disabled
      by default since 1.12 and no up-to-date distributions ship it for years
      Removing the libraries allows us to:
      * Remove the horrible hacks that were in place to deal with accidental use
        of both the new and old library in a single process.
      * Relief the translators of maintenance burden of similar yet different
      * Get rid of known bad code without chances of ever getting fixed
        (libnm-glib/nm-object.c and libnm-glib/nm-object-cache.c)
      * Generally lower the footprint of the releases and our workspace
      If there are some really really legacy users; they can just build
      libnm-glib and friends from the NetworkManager-1.16 distribution. The
      D-Bus API is stable and old libnm-glib will keep working forever.
  5. 18 Mar, 2019 2 commits
    • Lubomir Rintel's avatar
      Revert "wwan/device-modem: don't enter available state until registered" · 32e0bf14
      Lubomir Rintel authored
      This is wrong -- we may want to start activating before device is
      registered if it the SIM needs unlocking with a PIN code that's included
      in the connection.
      This reverts commit 2e8f43e3.
    • Thomas Haller's avatar
      contrib/checkpatch: avoid command injection in checkpatch.pl script · d66a1ace
      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.
  6. 15 Mar, 2019 9 commits
  7. 13 Mar, 2019 14 commits
    • Thomas Haller's avatar
    • Thomas Haller's avatar
      libnm-core: fix type of argument for nm_utils_inet_ntop_dup() · f90c663d
      Thomas Haller authored
      Fixes: 898f7a56 ('libnm: add internal API nm_utils_inet*_ntop_dup()')
      (cherry picked from commit a0d0d4d7)
    • Thomas Haller's avatar
    • Thomas Haller's avatar
      libnm-core: fix type of argument for nm_utils_inet_ntop_dup() · a0d0d4d7
      Thomas Haller authored
      Fixes: 898f7a56 ('libnm: add internal API nm_utils_inet*_ntop_dup()')
    • Thomas Haller's avatar
    • Thomas Haller's avatar
      platform: add NMPRulesManager for syncing routing rules · b8398b9e
      Thomas Haller authored
      Routing rules are unlike addresses or routes not tied to an interface.
      NetworkManager thinks in terms of connection profiles. That works well
      for addresses and routes, as one profile configures addresses and routes
      for one device. For example, when activating a profile on a device, the
      configuration does not interfere with the addresses/routes of other
      devices. That is not the case for routing rules, which are global, netns-wide
      When one connection profile specifies rules, then this per-device configuration
      must be merged with the global configuration. And when a device disconnects later,
      the rules must be removed.
      Add a new NMPRulesManager API to track/untrack routing rules. Devices can
      register/add there the routing rules they require. And the sync method will
      apply the configuration. This is be implemented on top of NMPlatform's
      caching API.
    • Thomas Haller's avatar
    • Thomas Haller's avatar
    • Thomas Haller's avatar
      platform: add support for routing-rule objects and cache them in platform · 9934a6a0
      Thomas Haller authored
      Add and implement NMPlatformRoutingRule types and let the platform cache
      handle rules.
      Rules are special in two ways:
      - they don't have an ifindex. That makes them different from all other
        currently existing NMPlatform* types, which have an "ifindex" field and
        "implement" NMPlatformObjWithIfindex.
      - they have an address family, but contrary to addresses and routes, there
        is only one NMPlatformRoutingRule object to handle both address
      Both of these points require some special considerations.
      Kernel treats routing-rules quite similar to routes. That is, kernel
      allows to add different rules/routes, as long as they differ in certain
      fields. These "fields" make up the identity of the rules/routes. But
      in practice, it's not defined which fields contribute to the identity
      of these objects. That makes using the netlink API very hard. For
      example, when kernel gains support for a new attribute which
      NetworkManager does not know yet, then users can add two rules/routes
      that look the same to NetworkManager. That can easily result in cache
      Another problem is, that older kernel versions may not yet support all
      fields, which NetworkManager (and newer kernels) considers for identity.
      The older kernel will not simply reject netlink messages with these unknown
      keys, instead it will proceed adding the route/rule without it. That means,
      the added route/rule will have a different identity than what NetworkManager
      intended to add.
    • Thomas Haller's avatar
      platform: separate the refresh-type from the object type · b9ee40b8
      Thomas Haller authored
      Currently, there is a directy one to one relation between
       - NMP_OBJECT_TYPE_*
      For IP addresses, routes and routing policy rules, when we request
      a refresh-all (NLM_F_DUMP), we want to specify the address family.
      For addresses and routes that is currently solved by having two
      sets of NMPObject types, for each address family one.
      I think that is cumbersome because the implementations of both address
      families are quite similar. By implementing both families as different
      object types, we have a lot of duplicate code and it's hard to see where
      the families actually differ. It would be better to have only one NMPObject
      type, but then when we "refresh-all" such types, we still want to be able
      to dump all (AF_UNSPEC) or only a particular address family (AF_INET, AF_INET6).
      Decouple REFRESH_ALL_TYPE_* from NMP_OBJECT_TYPE_* to make that
    • Thomas Haller's avatar
      platform/trivial: rename enum DELAYED_ACTION_IDX_REFRESH_ALL_* to REFRESH_ALL_TYPE_* · 0a2a8617
      Thomas Haller authored
      While these numbers are strongly related to DELAYED_ACTION_TYPE_REFRESH_ALL_*,
      they differ in their meaning.
      These are the refresh-all-types that we support. While some of the delayed-actions
      are indeed for refresh-all, they are not the same thing.
      Rename the enum.
    • Thomas Haller's avatar
      platform: drop unused nm_platform_refresh_all() · 7c5ad2d9
      Thomas Haller authored
      The function is unused. It would require redesign to work with
      future changes, and since it's unused, just drop it.
      The long reasoning is:
          Currently, a refresh-all is tied to an NMPObjectType. However, with
          NMPObjectRoutingRule (for policy-routing-rules) that will no longer
          be the case.
          That is because NMPObjectRoutingRule will be one object type for
          AF_INET and AF_INET6. Contrary to IPv4 addresses and routes, where
          there are two sets of NMPObject types.
          The reason is, that it's preferable to treat IPv4 and IPv6 objects
          similarly, that is: as the same type with an address family property.
          That also follows netlink, which uses RTM_GET* messages for both
          address families, and the address family is expressed inside the
          But then an API like nm_platform_refresh_all() makes little sense,
          it would require at least an addr_family argument. But since the
          API is unused, just drop it.
    • Thomas Haller's avatar
      platform: suppress unnecessary logging in do_request_all_no_delayed_actions() · bbfb8a9b
      Thomas Haller authored
      When we refresh all links, we clear all flags to refresh a specific
      link. However, only log a message if there was anything to clear.
    • Thomas Haller's avatar
      platform: add NULL check in inline nmp_object_unref() function · 2c37a3fb
      Thomas Haller authored
      This allows the compiler to see that this function does nothing for %NULL.
      That is not so unusual, as we use nm_auto_nmpobj to free objects. Often
      the compiler can see that these pointers are %NULL.