1. 19 Nov, 2014 29 commits
  2. 18 Nov, 2014 1 commit
    • Dan Winship's avatar
      core: fix IP4Config.RouteData and IP6Config.RouteData · fac424b0
      Dan Winship authored
      NMIP4Config/NMIP6Config have their own NMIPRoute->D-Bus conversion
      code since the code in libnm-core is gdbus-specific. But they were
      doing it wrong, resulting in clients seeing a next hop of
      for all routes.
  3. 17 Nov, 2014 4 commits
    • Dan Williams's avatar
      trivial: remove leftover NM_IFACE_HELPER references · 3c1187ad
      Dan Williams authored
      Left over from a previous version of the iface helper patches and was
      never removed when NM_IFACE_HELPER was removed.  Since NM_IFACE_HELPER
      wasn't defined, this code was already always compiled.
    • Dan Williams's avatar
      core: bounce disable_ipv6 when setting userspace IPv6 link-local (bgo #740096) · 70f227f5
      Dan Williams authored
      The kernel does not terminate an ongoing IPv6LL address process when
      the IPv6LL address generation mode is set to 'none' (indicating that
      userspace wishes to handle IPv6LL).  Next, NetworkManager does not
      expose IPv6 addresses internally until they have completed DAD.  This
      means that the kernel may still be performing DAD for an IPv6LL
      address when NetworkManager turns userspace IPv6LL on, and when
      DAD is complete NetworkManager will finally pay attention to the
      address.  If the device is in the DISCONNECTED state, NetworkManager
      will then generate and assume an IPv6LL-only connection on the device.
      Unfortunately, that behavior happens if the following is true:
      1) IPv6LL addressing takes a while (eg, dad_transmits is high or
      the kernel takes a while for some reason)
      2) the activated connection fails quickly (dhclient fails or some
      other fatal error terminates the activation attempt)
      3) the activated connection has ipv6.method=ignore
      In this case, when the device was brought up and ipv6.method=ignore,
      NetworkManager re-enabled kernel IPv6LL and reset the IPv6 sysctl
      properties.  The kernel then generated an IPv6LL address and began
      DAD.  dhclient failed quickly, and NM deactivated the device.  NM
      then turned off kernel IPv6LL when deactivating the device, but the
      kernel does not terminate the ongoing DAD.  Some time after the device
      entered the DISCONNECTED state, the kernel finished DAD and that
      allowed NetworkManager to internally see the address, which caused
      NetworkManager to emit the 'recheck-assume' signal.  This
      generated a new IPv6LL-only connection which was then assumed.
      Bouncing 'disable_ipv6' when re-enabling userspace IPv6LL during
      device deactivation flushes the tentative kernel IPv6LL address,
      thus preventing the address from being announced after userspace
      IPv6LL is re-enabled.  The other alternative is to expose
      tentative addresses (eg those still doing DAD) in NMPlatform so
      they would be flushed when the device deactivates, but that is a
      larger & riskier set of changes.
      - ifconfig eth0 down
      - prepare a DHCPv4 connection with ipv6.method=ignore
      - set /proc/sys/net/ipv6/conf/all/dad_transmits to "15"
      - ensure that DHCPv4 will fail (replace dhclient with a script
          that exits after 2 seconds or something)
      - run NetworkManager
      - activate the DHCP connection and watch it immediately fail
      - wait for the kernel to announce the IPv6LL address after DAD finishes
      - watch NM "assume" the new IPv6LL connection
    • Dan Williams's avatar
      dhcp: wait for an IPv6LL address before starting DHCPv6 (bgo #740147) · d1295b12
      Dan Williams authored
      For ipv6.method=dhcp NM was not waiting for an IPv6LL address, which
      caused the DHCP client to exit early because it had no local address
      to bind to.
    • Dan Williams's avatar
      wifi: don't query nl80211 for non-WiFi devices (bgo #740131) · 45bfb653
      Dan Williams authored
      The upstream kernel added module aliases for nl80211 in commit
      fb4e156886ce6e8309e912d8b370d192330d19d3, so querying nl80211
      now auto-loads the module.  Previously NM was doing this to
      determine whether an ethernet-like device was a Wi-Fi device
      that supported nl80211, but this leads to the nl80211 loading
      on platforms that will never have or use Wi-Fi.
      Since every nl80211-capable device will already have
      DEVTYPE=wlan set (from /sys/class/net/wlan0/uevent), we can use
      that as an indicator that the ethernet-like device is WiFi
      instead of asking nl80211.
  4. 15 Nov, 2014 6 commits