1. 11 Jan, 2022 5 commits
    • Lubomir Rintel's avatar
      Revert "nm-device: avoid starting ac6 if l3cfg is not there" · 5f0ddaa6
      Lubomir Rintel authored
      This reverts commit bb0a31e6.
      
      This was pushed by accident.
      5f0ddaa6
    • Lubomir Rintel's avatar
      nm-device: clean up IP methods if we lose ifindex · fccb5608
      Lubomir Rintel authored
      If the ovs interface goes away, the ifindex gets zeroed out and l3cfg is
      cleaned. We can't follow up with IP configuration. Bad things happen if
      we try to:
      
        #0  0x00007f769734c895 in _g_log_abort (breakpoint=1) at gmessages.c:580
        #1  0x00007f769734db98 in g_logv (log_domain=0x55b2472d8840 "nm",
              log_level=G_LOG_LEVEL_CRITICAL, format=<optimized out>,
              args=args@entry=0x7fff4041b9d0) at gmessages.c:1391
        #2  0x00007f769734dd63 in g_log (log_domain=log_domain@entry=0x55b2472d8840 "nm",
              log_level=log_level@entry=G_LOG_LEVEL_CRITICAL,
              format=format@entry=0x7f769739a620 "%s: assertion '%s' failed") at gmessages.c:1432
        #3  0x00007f769734e59d in g_return_if_fail_warning
            (log_domain=log_domain@entry=0x55b2472d8840 "nm",
              pretty_function=pretty_function@entry=0x55b2472d5fe0 <__func__.39677> "nm_lndp_ndisc_new",
              expression=expression@entry=0x55b2472d5fa3 "NM_IS_L3CFG(config->l3cfg)")
              at gmessages.c:2809
        #4  0x000055b2471ce3fa in nm_lndp_ndisc_new (config=config@entry=0x7fff4041bb30)
              at src/core/ndisc/nm-lndp-ndisc.c:680
        #5  0x000055b247123b32 in _dev_ipac6_start (self=self@entry=0x55b248078360 [NMDeviceOvsInterface])
              at src/core/devices/nm-device.c:11287
        #6  0x000055b2471232f8 in _dev_ipac6_start_continue (self=0x55b248078360 [NMDeviceOvsInterface])
              at src/core/devices/nm-device.c:11338
        #7  0x000055b2471232f8 in _dev_ipll6_set_llstate (self=0x55b248078360 [NMDeviceOvsInterface],
              llstate=<optimized out>, lladdr=<optimized out>) at src/core/devices/nm-device.c:10541
        #8  0x000055b2471c9e8b in _emit_changed_on_idle_cb (user_data=user_data@entry=0x55b24807bdd0)
              at src/core/nm-l3-ipv6ll.c:221
        #9  0x00007f769734327b in g_idle_dispatch (source=0x55b248119200,
              callback=0x55b2471c9ce0 <_emit_changed_on_idle_cb>,
              user_data=0x55b24807bdd0) at gmain.c:5579
        #10 0x00007f769734695d in g_main_dispatch (context=0x55b247f56bc0) at gmain.c:3193
        #11 0x00007f769734695d in g_main_context_dispatch (context=context@entry=0x55b247f56bc0)
              at gmain.c:3873
        #12 0x00007f7697346d18 in g_main_context_iterate (context=0x55b247f56bc0,
              block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3946
        #13 0x00007f7697347042 in g_main_loop_run (loop=0x55b247f320f0) at gmain.c:4142
        #14 0x000055b246f26b64 in main (argc=<optimized out>,
              argv=<optimized out>) at src/core/main.c:511
      
      https://bugzilla.redhat.com/show_bug.cgi?id=2012934
      !1044
      
      Fixes-test: @ovs_cloned_mac_set_on_iface
      fccb5608
    • Lubomir Rintel's avatar
      nm-device: avoid starting ac6 if l3cfg is not there · bb0a31e6
      Lubomir Rintel authored
      If the ovs interface goes away, the ifindex gets zeroed out and l3cfg is
      cleaned. Avoid starting ac6 in that case -- add checks similar to what
      we do for ll6.
      
      Bad things happen otherwise:
      
        #0  0x00007f769734c895 in _g_log_abort (breakpoint=1) at gmessages.c:580
        #1  0x00007f769734db98 in g_logv (log_domain=0x55b2472d8840 "nm",
              log_level=G_LOG_LEVEL_CRITICAL, format=<optimized out>,
              args=args@entry=0x7fff4041b9d0) at gmessages.c:1391
        #2  0x00007f769734dd63 in g_log (log_domain=log_domain@entry=0x55b2472d8840 "nm",
              log_level=log_level@entry=G_LOG_LEVEL_CRITICAL,
              format=format@entry=0x7f769739a620 "%s: assertion '%s' failed") at gmessages.c:1432
        #3  0x00007f769734e59d in g_return_if_fail_warning
            (log_domain=log_domain@entry=0x55b2472d8840 "nm",
              pretty_function=pretty_function@entry=0x55b2472d5fe0 <__func__.39677> "nm_lndp_ndisc_new",
              expression=expression@entry=0x55b2472d5fa3 "NM_IS_L3CFG(config->l3cfg)")
              at gmessages.c:2809
        #4  0x000055b2471ce3fa in nm_lndp_ndisc_new (config=config@entry=0x7fff4041bb30)
              at src/core/ndisc/nm-lndp-ndisc.c:680
        #5  0x000055b247123b32 in _dev_ipac6_start (self=self@entry=0x55b248078360 [NMDeviceOvsInterface])
              at src/core/devices/nm-device.c:11287
        #6  0x000055b2471232f8 in _dev_ipac6_start_continue (self=0x55b248078360 [NMDeviceOvsInterface])
              at src/core/devices/nm-device.c:11338
        #7  0x000055b2471232f8 in _dev_ipll6_set_llstate (self=0x55b248078360 [NMDeviceOvsInterface],
              llstate=<optimized out>, lladdr=<optimized out>) at src/core/devices/nm-device.c:10541
        #8  0x000055b2471c9e8b in _emit_changed_on_idle_cb (user_data=user_data@entry=0x55b24807bdd0)
              at src/core/nm-l3-ipv6ll.c:221
        #9  0x00007f769734327b in g_idle_dispatch (source=0x55b248119200,
              callback=0x55b2471c9ce0 <_emit_changed_on_idle_cb>,
              user_data=0x55b24807bdd0) at gmain.c:5579
        #10 0x00007f769734695d in g_main_dispatch (context=0x55b247f56bc0) at gmain.c:3193
        #11 0x00007f769734695d in g_main_context_dispatch (context=context@entry=0x55b247f56bc0)
              at gmain.c:3873
        #12 0x00007f7697346d18 in g_main_context_iterate (context=0x55b247f56bc0,
              block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3946
        #13 0x00007f7697347042 in g_main_loop_run (loop=0x55b247f320f0) at gmain.c:4142
        #14 0x000055b246f26b64 in main (argc=<optimized out>,
              argv=<optimized out>) at src/core/main.c:511
      bb0a31e6
    • Thomas Haller's avatar
      CONTRIBUTING: clarify on the use/lack of curly braces around blocks · 9ab22dbc
      Thomas Haller authored
      This is the style we have ever since. Spell it out. With the difference
      that now single line statements may have braces.
      
      Recently we were already sloppy about allowing curly braces for single line
      statements. Maybe there was a point in that. Imagine you start with:
      
          if (condition)
              call(some, parameter);
      
      Afterwards you change the code so that the line becomes too long and
      clang-format wraps the line (requiring you to add braces):
      
          if (condition) {
              call(some,
                   call_another_function(hey));
          }
      
      The problem now is that this diff is larger than it would have been, if
      you added curly braces from the start. Also, it means you have to go
      back and forth to add/remove these braces, as clang-format reformats the
      code.
      
      Also, if you have if-else-if blocks, then mixing multi line statements
      with single line statements is also cumbersome, because when something
      needs to change, the diff is may be larger (and the change more
      cumbersome).
      
      So it might be convenient to just always add the braces, and the
      documented style now allows for that.
      9ab22dbc
    • Thomas Haller's avatar
      bluetooth: fix invalid assertion in NMBluezManager:dispose() · d5f917e7
      Thomas Haller authored
      We need to first free "priv->bzobjs", which then will unlink all bzobjs
      from the lists. The assert needs to go after.
      
      https://bugzilla.redhat.com/show_bug.cgi?id=2028427
      
      Fixes: 4154d961 ('bluetooth: refactor BlueZ handling and let NMBluezManager cache ObjectManager data')
      d5f917e7
  2. 10 Jan, 2022 9 commits
  3. 07 Jan, 2022 1 commit
    • Thomas Haller's avatar
      checkpatch: complain about tabs in source file · 2b449694
      Thomas Haller authored
      There are very few places left where we would accept tabs in a source
      file. Warn about that, even if it might cause some false positives.
      
      I think this line was commented out due to a mistake.
      2b449694
  4. 06 Jan, 2022 2 commits
  5. 05 Jan, 2022 2 commits
    • Thomas Haller's avatar
      glib-aux: honor NM_OBFUSCATE_PTR=0 setting for printing raw pointer values · 0acb4b68
      Thomas Haller authored
      We avoid printing pointer values directly, instead we usually call
      NM_HASH_OBFUSCATE_PTR(). This hashes the pointers with a random seed
      so they are not directly visible.
      
      That obviously makes it harder to debug. Add an environment variable
      to disable that.
      
        $ NM_OBFUSCATE_PTR=0 LIBNM_CLIENT_DEBUG=trace,stdout nmcli
      
      Note that this flag is only honored in debug builds (WITH_MORE_ASSERTS>0).
      0acb4b68
    • Thomas Haller's avatar
      contrib: fix "find-backports" script to properly handle "Ignore-Backport" tag · 99f82b4b
      Thomas Haller authored
      The "Ignore-Backport" tag can be used to mark a commit that should not
      be backported. Similar to the "cherry picked from" line, which indicates
      that the patch was backported.
      
      Anyway, this didn't work correctly, because we first pre-filter the
      commits we search (as a performance optimization) by using `git-log` to
      get a subset of the commits we want to investigate.
      
      So if you had a commit with an "Ignore-Backport" tag, but without "cherry
      picked from" line, then it wasn't found.
      
      Fix that.
      99f82b4b
  6. 04 Jan, 2022 2 commits
  7. 03 Jan, 2022 3 commits
  8. 24 Dec, 2021 1 commit
  9. 23 Dec, 2021 1 commit
    • Beniamino Galvani's avatar
      libnm: fix warning when setting wrong ethtool ternary value · 25e705c3
      Beniamino Galvani authored
        $ nmcli connection modify dummy1 ethtool.feature-rx a
        (process:3077356): GLib-WARNING **: GError set over the top of a previous GError or uninitialized memory.
        This indicates a bug in someone's code. You must ensure an error is NULL before it's set.
        The overwriting error message was: 'a' is not valid; use 'on', 'off', or 'ignore'
        Error: failed to modify ethtool.feature-rx: 'a' is not valid; use [true, yes, on], [false, no, off] or [unknown].
      
      Fixes: e5b46aa3 ('cli: use nmc_string_to_ternary() to parse ternary in _set_fcn_ethtool()')
      25e705c3
  10. 21 Dec, 2021 1 commit
  11. 20 Dec, 2021 1 commit
    • Wen Liang's avatar
      core: don't reset assume state if the device is unmanaged by parent · 87674740
      Wen Liang authored and Wen Liang's avatar Wen Liang committed
      When the device gets realized, similar to the situation that the device
       is unmanaged by platform-init, if the device is still unmanaged by
      parent and we clear the assume state. Then, when the device becomes
      managed, NM is not able to properly assume the device using the UUID.
      
      Therefore, we should not clear the assume state if the device has only
      the NM_UNMANAGED_PLATFORM_INIT or the NM_UNMANAGED_PARENT flag set
      in the unmanaged flags.
      
      The previous commit 3c4450aa ('core: don't reset assume state too
      early') did something similar for NM_UNMANAGED_PLATFORM_INIT flag only.
      87674740
  12. 15 Dec, 2021 1 commit
  13. 10 Dec, 2021 1 commit
  14. 09 Dec, 2021 2 commits
    • Beniamino Galvani's avatar
      device: fix update of the ip-iface property · 02de0428
      Beniamino Galvani authored
      Before the l3cfg rework, the ip-iface property was exported only for
      interfaces with an ifindex, and only in some device states.
      
      Restore the old behavior since it is part of the API. For example,
      firewalld uses the property to tell which interfaces have a ifindex.
      
      Fixes: 58287cbc ('core: rework IP configuration in NetworkManager using layer 3 configuration')
      
      https://bugzilla.redhat.com/show_bug.cgi?id=2026024
      !1042
      02de0428
    • Beniamino Galvani's avatar
      platform: add bpf filter to ignore routes from routing daemons · e9ca5583
      Beniamino Galvani authored
      Routing daemons can add a large amount of routes to the
      system. Currently NM receives netlink notifications for all those
      routes and exposes them on D-Bus. With many routes, the daemon becomes
      increasingly slow and uses a lot of memory.
      
      The rtm_protocol field of the route indicates the source of the
      route. From /usr/include/linux/rtnetlink.h, the allowed values are:
      
        #define RTPROT_UNSPEC          0
        #define RTPROT_REDIRECT        1        /* Route installed by ICMP redirects;
                                                   not used by current IPv4 */
        #define RTPROT_KERNEL          2        /* Route installed by kernel */
        #define RTPROT_BOOT            3        /* Route installed during boot */
        #define RTPROT_STATIC          4        /* Route installed by administrator */
      
        /* Values of protocol >= RTPROT_STATIC are not interpreted by kernel;
           they are just passed from user and back as is.
           It will be used by hypothetical multiple routing daemons.
           Note that protocol values should be standardized in order to
           avoid conflicts.
         */
      
        #define RTPROT_GATED           8        /* Apparently, GateD */
        #define RTPROT_RA              9        /* RDISC/ND router advertisements */
        #define RTPROT_MRT            10        /* Merit MRT */
        #define RTPROT_ZEBRA          11        /* Zebra */
        #define RTPROT_BIRD           12        /* BIRD */
        #define RTPROT_DNROUTED       13        /* DECnet routing daemon */
        #define RTPROT_XORP           14        /* XORP */
        #define RTPROT_NTK            15        /* Netsukuku */
        #define RTPROT_DHCP           16        /* DHCP client */
        #define RTPROT_MROUTED        17        /* Multicast daemon */
        #define RTPROT_KEEPALIVED     18        /* Keepalived daemon */
        #define RTPROT_BABEL          42        /* Babel daemon */
        #define RTPROT_OPENR          99        /* Open Routing (Open/R) Routes */
        #define RTPROT_BGP           186        /* BGP Routes */
        #define RTPROT_ISIS          187        /* ISIS Routes */
        #define RTPROT_OSPF          188        /* OSPF Routes */
        #define RTPROT_RIP           189        /* RIP Routes */
        #define RTPROT_EIGRP         192        /* EIGRP Routes */
      
      Since NM uses only values <= RTPROT_STATIC, plus RTPROT_RA and
      RTPROT_DHCP, add a BPF filter to the netlink socket to discard
      notifications for other route types.
      
      https://bugzilla.redhat.com/show_bug.cgi?id=1861527
      !1038
      e9ca5583
  15. 01 Dec, 2021 6 commits
  16. 30 Nov, 2021 2 commits