1. 03 May, 2019 4 commits
  2. 02 May, 2019 1 commit
    • Thomas Haller's avatar
      platform/tests: workaround routing-rules test failure due to suppress_prefixlen on older kernels · d5a2b709
      Thomas Haller authored
      On Ubuntu 14.04 kernel (4.4.0-146-generic, x86_64) this easily causes
      test failures:
      
          make -j 8 src/platform/tests/test-route-linux \
          && while true; do \
              NMTST_SEED_RANDOM= ./tools/run-nm-test.sh src/platform/tests/test-route-linux -p /route/rule \
              || break; \
          done
      
      outputs:
      
          ...
          /route/rule/1:
          nmtst: initialize nmtst_get_rand() with NMTST_SEED_RAND=22892021
          OK
          /route/rule/2: >>> failing...
          >>> no fuzzy match between: [routing-rule,0x205ab30,1,+alive,+visible; [6] 0: from all suppress_prefixlen 8 none]
          >>>                    and: [routing-rule,0x205c0c0,1,+alive,+visible; [6] 0: from all suppress_prefixlen -1579099242 none]
          **
          test:ERROR:src/platform/tests/test-route.c:1695:test_rule: code should not be reached
      d5a2b709
  3. 01 May, 2019 9 commits
    • Rodrigo Lledó's avatar
      po: update Spanish (es) translation · 0a0a8706
      Rodrigo Lledó authored
      Changing "Token" translation from "identificador" to "testigo" as discussed
      in the GNOME Spanish Translation Team's mailing list.
      
      Special thanks to Daniel Mustieles our coordinator.
      
      NetworkManager/NetworkManager!130
      0a0a8706
    • Yuri Chornoivan's avatar
    • Thomas Haller's avatar
    • Thomas Haller's avatar
      libnm: unify property-to-dbus handling of NMSetting · 0d1b8ee9
      Thomas Haller authored
      Merge the function pointer get_func() into to_dbus_fcn().
      
      Previously, get_func() as handled separately from to_dbus_fnc()
      (formerly synth_func()). The notion was that synth-func would syntetize
      properties that are D-Bus only. But that distinction does not seem
      very helpful to me.
      
      Instaed, we want to convert a property to D-Bus. Period. The
      implementation should be handled uniformly. Hence, now that is
      all done by property_to_dbus().
      
      Note that property_to_dbus() is also called as default implementation
      for compare-property. At least, for properties that are backed by a
      GObject property.
      0d1b8ee9
    • Thomas Haller's avatar
      libnm: rename function pointers of NMSettInfoProperty · bb7829cb
      Thomas Haller authored
      The naming was not very clear. How does get_func(), synth_func()
      and to_dbus() relate? What does synth_func() do anyway?
      
      Answers:
      
      - get_func() and synth_func() do very similar. They should be merged
        in a next step.
        synth_func() has the notion of "synthetize" a property for
        D-Bus. As such, these properties are a bit unusual in that they
        don't have a backing GObject property in the setting. But it'd
        rather treat such properties like other properties. The step
        in that direction will be to merge the to-dbus functions.
      
      - to_dbus() converts a GValue of the GObject property go GVariant.
        It's a simplified form of get_func()/synth_func() and a better name
        is gprop_to_dbus_fcn().
        The same for gprop_from_dbus_fcn().
      
      For now, just rename.
      bb7829cb
    • Thomas Haller's avatar
      libnm: pass connection to compare_property() function · b1344b6b
      Thomas Haller authored
      We have certain artificial properties that not only depend on one
      property alone or that depend on a property in another(!) setting.
      
      For that, we have synth_func.
      
      Other than that, synth_func and get_func are really fundamentally
      similar and should be merged. That is because the distinction whether a
      property value is "synthetized" or just based on a plain property is
      minor. It's better to have the general concept of "convert property to
      GVariant" in one form only.
      
      Note that compare_property() is by default implemented based
      on get_func. Hence, if get_func and synth_func get merged,
      compare_property() will also require access to the NMConnection.
      
      Also it makes some sense: some properties are artificial and actually
      stored in "another" setting of the connection. But still, the property
      descriptor for the property is in this setting. The example is the
      "bond.interface-name" which only exists on D-Bus. It's stored as
      "connection.interface-name".
      I don't really like to say "exists on D-Bus only". It's still a valid
      property, despite in NMSetting it's stored somehow differently (or not
      at all). So, this is also just a regular property for which we have a
      property-info vtable.
      Does it make sense to compare such properties? Maybe. But the point is that
      compare_property() function needs sometimes access to the entire
      connection. So add the argument.
      b1344b6b
    • Thomas Haller's avatar
      libnm: cleanup converting properties to GVariant · 3c810a84
      Thomas Haller authored
      Always properly set NMSettInfoProperty.dbus_type, instead of leaving it
      unspecified for GObject property based properties, and detect it each
      time anew with variant_type_for_gtype().
      
      Instead, autodetect and remember the dbus-type during _properties_override_add_struct().
      For types that need special handling (GBytes, enums and flags) set a to_dbus() function.
      This allows us to handle properties uniformly by either calling the to_dbus() function
      or g_dbus_gvalue_to_gvariant().
      3c810a84
    • Thomas Haller's avatar
      libnm: cleanup get_property_for_dbus() · 7726f5b4
      Thomas Haller authored
      - use cleanup attribute in get_property_for_dbus() and return early.
      
      - use NM_FLAGS_HAS() macro in _nm_setting_to_dbus().
      
      - in nm_setting_get_dbus_property_type() use g_return*() asserts
        instead of crash or hard asserts.
      
      - return early from variant_type_for_gtype().
      7726f5b4
    • Thomas Haller's avatar
      shared: add nm_g_variant_take_ref() util · 4853be52
      Thomas Haller authored
      4853be52
  4. 30 Apr, 2019 4 commits
  5. 29 Apr, 2019 3 commits
  6. 26 Apr, 2019 2 commits
    • Lubomir Rintel's avatar
      src/dispatcher: do not monitor dispatcher scripts · 3fc41cd6
      Lubomir Rintel authored
      The monitors have been in place since the dispatcher has been introduced.
      They need the daemon to do extra work know where the files are supposed to
      be. It seems to me the complexity is not worth it.
      
      Let's remove them now, making it easier to modify the dispatcher to look
      for scripts in other places.
      3fc41cd6
    • Lubomir Rintel's avatar
      build: install dispatcher dirs in /usr · a95b674c
      Lubomir Rintel authored
      The dispatcher looks there for scripts now. This actually doesn't break
      the RPM build, since it doesn't mind extra empty directories in
      buildroot. Good.
      a95b674c
  7. 25 Apr, 2019 17 commits
    • Thomas Haller's avatar
    • Thomas Haller's avatar
      ifcfg-rh: support serializaing all possible values for ethernet.s390-options (OPTIONS) · df769c8d
      Thomas Haller authored
      While the keys of s390-options are from a well-behaving set of names
      (that is enforced by nm_connection_verify()), the values are arbitrary
      strings.
      
      Our settings plugin must be able to express all values of a connection,
      hence we need to support escapes.
      df769c8d
    • Thomas Haller's avatar
      libnm: refactor implementation of "ethernet.s390-options" property · 0a8f1163
      Thomas Haller authored
      - the previous implementation of nm_setting_wired_get_s390_option()
        returned the elements in an arbitrary order (because it just iterated
        idx times over the unsorted hash table).
      
      - the API for "s390-options" suggests both accessing by index and by
        name. Storing the options in a hash-table is not optimal for lookup
        by index. It also requires us to sort the elements over and over
        again.
        Use instead a sorted array. Note that add/remove of course requires to
        move the elements (and has thus O(n)).
      
      - "s390-options" are very seldomly set. We shouldn't pay the price in every
        NMSettingWired to allocate a GHashTable and deal with it.
      
      - don't assert in nm_setting_wired_add_s390_option() and
        nm_setting_wired_remove_s390_option() that the key is valid.
        ifcfg-rh reader understandably does not want to implement additional
        logic to pre-validate the key, so any invalid keys would trigger an
        assertion failure. We have verify() for this purpose.
      0a8f1163
    • Thomas Haller's avatar
      libnm/keyfile: implement ethernet.s390-options in keyfile · cf9b8d3b
      Thomas Haller authored
      Currently, nm_setting_wired_get_s390_option() returns the key
      in an undefined order. Hence, the keyfile writer and the test
      need to awkwardly sort the keys first. That will be solved better
      in the next commit, when nm_setting_wired_get_s390_option() returns
      the items sorted by key.
      cf9b8d3b
    • Thomas Haller's avatar
      2f9e55ee
    • Thomas Haller's avatar
      shared: add nm_utils_named_value_list_*() utils · 6d472dac
      Thomas Haller authored
      nm_utils_named_value_list_find(), nm_utils_named_value_list_sort(),
      and nm_utils_named_value_list_is_sorted().
      6d472dac
    • Thomas Haller's avatar
      cli: drop GValue transform functions for strdict and implement it in _get_fcn_gobject_impl() · 020c4c81
      Thomas Haller authored
      The only remaining GValue transform function was from GHashTable (of (str,str) type)
      to string. Drop that too, and implement the conversion in _get_fcn_gobject_impl().
      
      Note that there are few GObject properties of type GHashTable and most
      of them implement their own logic. This only applies to
      "802-3-ethernet.s390-options".
      
      Also, always sort the keys. Otherwise, the output is not stable.
      020c4c81
    • Thomas Haller's avatar
      cli: drop GValue transformation of GBytes to string and implement bytes getter... · e55a45fa
      Thomas Haller authored
      cli: drop GValue transformation of GBytes to string and implement bytes getter via _get_fcn_gobject_impl()
      
      The g_value_register_transform_func() for handling GBytes was not actually used.
      All properties of type G_TYPE_BYTES have their explit handler how to convert bytes
      to string. That is good, because the implementation there was very bad (it did not
      honor pretty/parsable get-type).
      
      Also, merge _get_fcn_gobject_bytes() into _get_fcn_gobject_impl(). We
      already have a generic handler that handles properties solely based on
      the GObject type: _get_fcn_gobject_impl(). Just let it also handle
      bytes. It's better to have fewer handlers, if they don't need special
      context.
      e55a45fa
    • Thomas Haller's avatar
      cli: drop GValue transform function for G_TYPE_STRV to G_TYPE_STRING · d4d1e5f0
      Thomas Haller authored
      It's ugly to modify the global behavior of glib to convert between
      types. Instead, _get_fcn_gobject_impl() is perfectly capable to implement
      converting a strv array to string.
      d4d1e5f0
    • Thomas Haller's avatar
      cli: cleanup and fix handling of unset/empty "ipv4.dns-options" · 655a9205
      Thomas Haller authored
      "ipv4.dns-options" and "ipv6.dns-options" are special, in that they can
      be either unset/default or an empty list of options. That means, nmcli
      must treat these two options differently.
      
      For the (terse) getter, it returns "" for default and " " for empty.
      The setter must likewise support and distingish between these two cases.
      
      Cleanup the handling of such options. This only applies to properties of
      type "multilist". Hence, add multilist.clear_emptyunset_fcn() handler
      that indicates that the property is of that kind.
      
      Try:
      
        nmcli connection modify "$PROFILE" ipv4.dns-options ''
        nmcli connection modify "$PROFILE" ipv4.dns-options ' '
      
      and compare the output:
      
        nmcli connection show "$PROFILE" | sed -n '/ipv4.dns-options/ s/.*/<\0>/p'
        nmcli -t connection show "$PROFILE" | sed -n '/ipv4.dns-options/ s/.*/<\0>/p'
        nmcli -o connection show "$PROFILE" | sed -n '/ipv4.dns-options/ s/.*/<\0>/p'
      655a9205
    • Thomas Haller's avatar
      bee4d30b
    • Thomas Haller's avatar
      cli: use escaped-tokens style for team-link-watcher list properties · d76f3748
      Thomas Haller authored
      The link-watcher properties are not expected to contain any special values
      that require escaping. Hence, change the tokenizing from plain splitting
      at ',' to escaped-tokens style is likely to not affect any existing
      setups.
      
      Still, all our properties should be handled the same way (including a
      tokenizing which allows escaping to represent every possible value).
      d76f3748
    • Thomas Haller's avatar
      cli: refactor team-link-watcher to/from strings · a473ab43
      Thomas Haller authored
      Stricter parsing of the string:
      
      - reject attributes that don't make sense depending on the type.
      
      - reject duplicate attributes.
      a473ab43
    • Thomas Haller's avatar
      shared: fix to/from string of vlanid and missed-max values for NMTeamLinkWatcher · 28005742
      Thomas Haller authored
      The vlanid and missed-max values have non-zero default values.
      That is what nm_utils_team_link_watcher_from_string() honors.
      
      Note that nm_utils_team_link_watcher_to_string() must omit printing
      the value only if it's the default value too.
      
      Otherwise, these values are not preserved during a to string conversion
      and back.
      
      Maybe a better fix would be to always print the values, regardless of
      the default value. But arguably, that is quite ugly because in most
      cases we don't want to cluter the string output with values that are
      left at the default.
      28005742
    • Thomas Haller's avatar
    • Thomas Haller's avatar
      shared/tests: add tests for libnm-core-aux · 7a25f67a
      Thomas Haller authored
      These tests cannot (easily) be under "shared/nm-libnm-core-aux/tests"
      because libnm/libnm-core requires code under shared while
      "nm-libnm-core-aux" requires libnm/libnm-core. With autotools that is
      not problem, but with meson we include sub directories in a particular
      order and there is no way to foward declare stuff (AFAIK). To avoid
      the circular dependency, add the tests to "clients/common/tests", which
      is always built last.
      7a25f67a
    • Thomas Haller's avatar