Skip to content

Releases: nerves-networking/vintage_net

v0.11.4

21 Dec 03:36
Compare
Choose a tag to compare
  • Changed
    • Internet connectivity checks can now take domain names. Previously only IP
      addresses were supported. This change lets you add your own servers to the
      list since those servers may be more reliable indicators of Internet access
      in highly firewalled locations. A section on this was added to the README.md
      with an example.

v0.11.3

21 Dec 03:35
Compare
Choose a tag to compare
  • Changed
    • Don't downgrade the connection status on DHCP renewals. Previously, if there
      was a DHCP renewal, the connection status could go from "Internet-connected"
      "LAN-connected". The logic was that IP address and router changes may make
      the Internet unreachible. The new logic is to assume that the device is
      still Internet-connected and let the connectivity checker downgrade the
      status should it be necessary. This not only removes a status hiccup, but
      also fixes a race between the connectivity checker upgrading the connection
      and the DHCP notification degrading it.
    • Improve the VintageNet.info error when the :vintage_net application
      stops.

v0.11.2

26 Oct 00:46
Compare
Choose a tag to compare
  • Added
    • Added VintageNet.RouteManager.refresh_route_metrics/0 to recompute the
      routing table metrics. This is useful if you're supplying your own
      :route_metric_fun and something has changed to make it return a different
      prioritization. Thanks to @LostKobrakai for this feature.

v0.11.1

26 Oct 00:45
Compare
Choose a tag to compare
  • Changed
    • The DNS server ordering is more deterministic now. Global DNS servers are
      guaranteed to be listed first and in the order specified. VintageNet will
      also try to preserve the ordering of DNS servers learned through DHCP. This
      isn't always possible, though. This fixes a hard-to-find error where an
      a difference in DNS server orderings between to device locations led to
      different behavior.
    • Use VintageNet.ConnectivityChecker.* in VintageNet. The connectivity
      checker module change was half made in v0.11.0, but the old module name
      was kept in a couple places to avoid breaking unit tests in other VintageNet
      libraries. Now it's completely converted. This doesn't affect runtime. Code
      that references the previous names will still get deprecation warnings like
      in v0.11.0.

v0.11.0

07 Sep 18:30
Compare
Choose a tag to compare

This release should be a safe update for most users. Many routing table and
internet connectivity check modules were updated, but the changes were primarily
in private APIs.

  • Added

    • Support for detecting Internet connectivity on an interface passively by
      watching tx and rx stats on TCP sockets. For example, if you have a
      long-lived TCP connection (like for MQTT), the keepalive messages will
      bump tx and rx counters that will let VintageNet skip testing the connection
      for connectivity. This reduces traffic on metered connections.
    • Support for completely overriding route metric calculation. You can now
      specify a :route_metric_fun instead of using the DefaultMetric
      calculator for determining which network interface preferences.
    • VintageNet property change events now come with timestamps. These are useful
      for computing state durations and other time-based stats for events.
  • Removed

    • Support for setting route prioritization order. This feature was more
      limiting that it originally looked. The new :route_metric_fun is more
      straightforward since it lets you explicitly specify orderings and lets
      decisions be made based on more input data.
  • Changed

    • VintageNet.Interface.InternetConnectivityChecker is now
      VintageNet.Connectivity.InternetChecker. Please update any references. Old
      references will continue to work, but give a deprecation message at runtime.

v0.10.5

12 Jul 05:39
Compare
Choose a tag to compare

This release only contains build system and hex package update. It doesn't
change any code and is a safe update.

v0.10.4

06 Jul 21:11
Compare
Choose a tag to compare
  • Bug fixes
    • DHCP renewals would bounce connection status from :internet to :lan and back
      even when the IP address, subnet, and default gateway didn't change. This
      could cause a network connectivity hiccup that would happen every 24 hours
      (a common DHCP lease time). A fix was added to assume internet connectivity
      was maintained if the DHCP renewal didn't change IP parameters.

v0.10.3

23 Jun 00:46
Compare
Choose a tag to compare
  • Bug fixes
    • Fix regression with tracking udhcpd lease notifications. Leases
      notifications were being ignored, so if you were monitoring leases to see
      who was connected, then you wouldn't see any connections without this fix.
      Thanks to Jon Thacker for reporting this issue.
    • Fix crashes when the application config is invalid. While the configurations
      were incorrect and needed to be fixed, it was harder to debug than it should
      have been. This release logs messages on invalid configs and carries on
      bringing up left that's valid. Thanks to Matt Ludwigs for this fix.

v0.10.2

20 May 15:37
Compare
Choose a tag to compare

This release officially removes support for Elixir 1.7 and Elixir 1.8. It turns
out that those versions wouldn't have worked in v0.10.0 due to a dependency that
was added.

  • Improvements
    • Add VintageNet.reset_to_defaults/1 so that it's easy to reset a network
      interface's configuration to what it would be if VintageNet.configure had
      never been called. The previous "easy" way of doing this was to erase the
      persisted configuration file and reboot.
    • Clean up interface reachability handling (disconnected vs. lan-connected vs
      internet-connected). There was an issue where the status was out of sync due
      a bug in a technology implementation. This is harder to do now. IMPORTANT:
      if you have a custom technology implementation, calling
      VintageNet.RouteManager.set_connection_status is sufficient. You no
      longer need to update the status property for your interface. This is not a
      common need.

v0.10.1

06 May 19:55
Compare
Choose a tag to compare
  • Improvements
    • There's now an :additional_name_servers global configuration key so that
      it's possible to force name servers to always be in the list to use. For
      example, if you don't trust that you'll always get good name servers from
      DHCP, you can add a few public name servers to this list.
    • /etc/resolv.conf now has nice comments on where configuration items come
      from. Thanks to Connor Rigby for this idea and implementation.