1. 21 Jan, 2015 3 commits
  2. 20 Jan, 2015 2 commits
  3. 19 Jan, 2015 13 commits
  4. 16 Jan, 2015 2 commits
  5. 15 Jan, 2015 16 commits
    • Dan Winship's avatar
    • Dan Winship's avatar
      libnm-core: validate property types from D-Bus (rh #1182567) · 76d9fc91
      Dan Winship authored
      In _nm_setting_new_from_dbus(), verify that the properties have the
      right types, and return an error if not. (In particular, don't crash
      if someone tries to assign a GBytes-valued property a non-'ay' value.)
      76d9fc91
    • Dan Winship's avatar
      libnm-core: simplify _nm_setting_new_from_dbus() · d80e1001
      Dan Winship authored
      libnm-util's nm_setting_new_from_hash() needed to call
      g_type_class_ref(setting_type) to ensure that the class had been
      initialized by the time we fetched its properties. But in libnm-core's
      version, we create the setting object before fetching the list of
      properties, so we know the class will already have been initialized by
      that point.
      d80e1001
    • Dan Winship's avatar
      bbbbca27
    • Aleksander Morgado's avatar
      platform: avoid storing unknown netlink object types (bgo #742928) · bf7865e8
      Aleksander Morgado authored
      Testing WWAN connections through a Nokia Series 40 phone, addresses of family
      AF_PHONET end up triggering an assert() in object_has_ifindex(), just because
      object_type_from_nl_object() only handles AF_INET and AF_INET6 address.
      
      In order to avoid this kind of problems, we'll try to make sure that the object
      caches kept by NM only store known object types.
      
      (fixup by dcbw to use cached passed to cache_remove_unknown())
      
      https://bugzilla.gnome.org/show_bug.cgi?id=742928
      
          Connect: ppp0 <--> /dev/ttyACM0
          nm-pppd-plugin-Message: nm-ppp-plugin: (nm_phasechange): status 5 / phase 'establish'
          NetworkManager[27434]: <info>  (ppp0): new Generic device (driver: 'unknown' ifindex: 12)
          NetworkManager[27434]: <info>  (ppp0): exported as /org/freedesktop/NetworkManager/Devices/4
          [Thread 0x7ffff1ecf700 (LWP 27439) exited]
          NetworkManager[27434]: <info>  (ttyACM0): device state change: ip-config -> deactivating (reason 'user-requested') [70 110 39]
          Terminating on signal 15
          nm-pppd-plugin-Message: nm-ppp-plugin: (nm_phasechange): status 10 / phase 'terminate'
          **
          NetworkManager:ERROR:platform/nm-linux-platform.c:1534:object_has_ifindex: code should not be reached
      
          Program received signal SIGABRT, Aborted.
          0x00007ffff4692a97 in raise () from /usr/lib/libc.so.6
          (gdb) bt
          #0  0x00007ffff4692a97 in raise () from /usr/lib/libc.so.6
          #1  0x00007ffff4693e6a in abort () from /usr/lib/libc.so.6
          #2  0x00007ffff4c8d7f5 in g_assertion_message () from /usr/lib/libglib-2.0.so.0
          #3  0x00007ffff4c8d88a in g_assertion_message_expr () from /usr/lib/libglib-2.0.so.0
          #4  0x0000000000472b91 in object_has_ifindex (object=0x8a8320, ifindex=12) at platform/nm-linux-platform.c:1534
          #5  0x0000000000472bec in check_cache_items (platform=0x7fe8a0, cache=0x7fda30, ifindex=12) at platform/nm-linux-platform.c:1549
          #6  0x0000000000472de3 in announce_object (platform=0x7fe8a0, object=0x8a8c30, change_type=NM_PLATFORM_SIGNAL_REMOVED, reason=NM_PLATFORM_REASON_EXTERNAL) at platform/nm-linux-platform.c:1617
          #7  0x0000000000473dd2 in event_notification (msg=0x8a7970, user_data=0x7fe8a0) at platform/nm-linux-platform.c:1992
          #8  0x00007ffff5ee14de in nl_recvmsgs_report () from /usr/lib/libnl-3.so.200
          #9  0x00007ffff5ee1849 in nl_recvmsgs () from /usr/lib/libnl-3.so.200
          #10 0x00000000004794df in event_handler (channel=0x7fc930, io_condition=G_IO_IN, user_data=0x7fe8a0) at platform/nm-linux-platform.c:4152
          #11 0x00007ffff4c6791d in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
          #12 0x00007ffff4c67cf8 in ?? () from /usr/lib/libglib-2.0.so.0
          #13 0x00007ffff4c68022 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
          #14 0x00000000004477ee in main (argc=1, argv=0x7fffffffeaa8) at main.c:447
          (gdb) fr 4
          #4  0x0000000000472b91 in object_has_ifindex (object=0x8a8320, ifindex=12) at platform/nm-linux-platform.c:1534
          1534                    g_assert_not_reached ();
      bf7865e8
    • Dan Williams's avatar
      Revert "platform: avoid storing unknown netlink object types (bgo #742928)" · dd20407c
      Dan Williams authored
      This reverts commit 6c1a6d2d.
      
      Mistaken push; it'll get committed, just needs a slight fixup.
      dd20407c
    • Dan Williams's avatar
      platform: don't read past end of address array (bgo #742937) · d2871089
      Dan Williams authored
      The address might be zero-size, and therefore nl_addr_get_binary_addr()
      returns a pointer to a zero-size array.  We don't want to read past the
      end of that array.  Since zero-size addresses really mean an address
      of all zeros, just make that happen.
      
      As an additional optimization, if the prefix length is zero, the whole
      address is host bits and should be cleared.
      
      ==30286== Invalid read of size 4
      ==30286==    at 0x478090: clear_host_address (nm-linux-platform.c:3786)
      ==30286==    by 0x4784D4: route_search_cache (nm-linux-platform.c:3883)
      ==30286==    by 0x4785A1: refresh_route (nm-linux-platform.c:3901)
      ==30286==    by 0x4787B6: ip4_route_delete (nm-linux-platform.c:3978)
      ==30286==    by 0x47F674: nm_platform_ip4_route_delete (nm-platform.c:1980)
      ==30286==    by 0x4B279D: _v4_platform_route_delete_default (nm-default-route-manager.c:1122)
      ==30286==    by 0x4AEF03: _platform_route_sync_flush (nm-default-route-manager.c:320)
      ==30286==    by 0x4B043E: _resync_all (nm-default-route-manager.c:574)
      ==30286==    by 0x4B0CA7: _entry_at_idx_remove (nm-default-route-manager.c:631)
      ==30286==    by 0x4B1A66: _ipx_update_default_route (nm-default-route-manager.c:806)
      ==30286==    by 0x4B1A9C: nm_default_route_manager_ip4_update_default_route (nm-default-route-manager.c:813)
      ==30286==    by 0x45C3BC: _cleanup_generic_post (nm-device.c:7143)
      ==30286==  Address 0xee33514 is 0 bytes after a block of size 20 alloc'd
      ==30286==    at 0x4C2C080: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
      ==30286==    by 0x6B2B0B1: nl_addr_alloc (in /usr/lib/libnl-3.so.200.20.0)
      ==30286==    by 0x6B2B0E3: nl_addr_build (in /usr/lib/libnl-3.so.200.20.0)
      ==30286==    by 0x6B2B181: nl_addr_clone (in /usr/lib/libnl-3.so.200.20.0)
      ==30286==    by 0x66DB0D7: ??? (in /usr/lib/libnl-route-3.so.200.20.0)
      ==30286==    by 0x6B33CE6: nl_object_clone (in /usr/lib/libnl-3.so.200.20.0)
      ==30286==    by 0x6B2D303: nl_cache_add (in /usr/lib/libnl-3.so.200.20.0)
      ==30286==    by 0x472E55: refresh_object (nm-linux-platform.c:1735)
      ==30286==    by 0x473137: add_object (nm-linux-platform.c:1795)
      ==30286==    by 0x478373: ip4_route_add (nm-linux-platform.c:3846)
      ==30286==    by 0x47F375: nm_platform_ip4_route_add (nm-platform.c:1939)
      ==30286==    by 0x4AEC06: _platform_route_sync_add (nm-default-route-manager.c:254)
      
      https://bugzilla.gnome.org/show_bug.cgi?id=742937
      d2871089
    • Aleksander Morgado's avatar
      platform: avoid storing unknown netlink object types (bgo #742928) · 6c1a6d2d
      Aleksander Morgado authored
      Testing WWAN connections through a Nokia Series 40 phone, addresses of family
      AF_PHONET end up triggering an assert() in object_has_ifindex(), just because
      object_type_from_nl_object() only handles AF_INET and AF_INET6 address.
      
      In order to avoid this kind of problems, we'll try to make sure that the object
      caches kept by NM only store known object types.
      
      https://bugzilla.gnome.org/show_bug.cgi?id=742928
      
          Connect: ppp0 <--> /dev/ttyACM0
          nm-pppd-plugin-Message: nm-ppp-plugin: (nm_phasechange): status 5 / phase 'establish'
          NetworkManager[27434]: <info>  (ppp0): new Generic device (driver: 'unknown' ifindex: 12)
          NetworkManager[27434]: <info>  (ppp0): exported as /org/freedesktop/NetworkManager/Devices/4
          [Thread 0x7ffff1ecf700 (LWP 27439) exited]
          NetworkManager[27434]: <info>  (ttyACM0): device state change: ip-config -> deactivating (reason 'user-requested') [70 110 39]
          Terminating on signal 15
          nm-pppd-plugin-Message: nm-ppp-plugin: (nm_phasechange): status 10 / phase 'terminate'
          **
          NetworkManager:ERROR:platform/nm-linux-platform.c:1534:object_has_ifindex: code should not be reached
      
          Program received signal SIGABRT, Aborted.
          0x00007ffff4692a97 in raise () from /usr/lib/libc.so.6
          (gdb) bt
          #0  0x00007ffff4692a97 in raise () from /usr/lib/libc.so.6
          #1  0x00007ffff4693e6a in abort () from /usr/lib/libc.so.6
          #2  0x00007ffff4c8d7f5 in g_assertion_message () from /usr/lib/libglib-2.0.so.0
          #3  0x00007ffff4c8d88a in g_assertion_message_expr () from /usr/lib/libglib-2.0.so.0
          #4  0x0000000000472b91 in object_has_ifindex (object=0x8a8320, ifindex=12) at platform/nm-linux-platform.c:1534
          #5  0x0000000000472bec in check_cache_items (platform=0x7fe8a0, cache=0x7fda30, ifindex=12) at platform/nm-linux-platform.c:1549
          #6  0x0000000000472de3 in announce_object (platform=0x7fe8a0, object=0x8a8c30, change_type=NM_PLATFORM_SIGNAL_REMOVED, reason=NM_PLATFORM_REASON_EXTERNAL) at platform/nm-linux-platform.c:1617
          #7  0x0000000000473dd2 in event_notification (msg=0x8a7970, user_data=0x7fe8a0) at platform/nm-linux-platform.c:1992
          #8  0x00007ffff5ee14de in nl_recvmsgs_report () from /usr/lib/libnl-3.so.200
          #9  0x00007ffff5ee1849 in nl_recvmsgs () from /usr/lib/libnl-3.so.200
          #10 0x00000000004794df in event_handler (channel=0x7fc930, io_condition=G_IO_IN, user_data=0x7fe8a0) at platform/nm-linux-platform.c:4152
          #11 0x00007ffff4c6791d in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
          #12 0x00007ffff4c67cf8 in ?? () from /usr/lib/libglib-2.0.so.0
          #13 0x00007ffff4c68022 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
          #14 0x00000000004477ee in main (argc=1, argv=0x7fffffffeaa8) at main.c:447
          (gdb) fr 4
          #4  0x0000000000472b91 in object_has_ifindex (object=0x8a8320, ifindex=12) at platform/nm-linux-platform.c:1534
          1534                    g_assert_not_reached ();
      6c1a6d2d
    • Dan Winship's avatar
    • Dan Winship's avatar
      connectivity: avoid redundant connectivity checks · 66b8f2b7
      Dan Winship authored
      Don't start an automatic connectivity check right when NMManager tells
      us we're online; only do it if the manager doesn't request an explicit
      connectivity check immediately afterward.
      66b8f2b7
    • Dan Winship's avatar
      connectivity: simplify redundant code · 0997c4b2
      Dan Winship authored
      Merge the two nm_connectivity_set_online() calls into one, after
      tweaking NMConnectivity to always update its internal state before
      alerting callers to the new state.
      0997c4b2
    • Dan Winship's avatar
      connectivity: fix manager state during connectivity check (bgo #742823) · 5e182d55
      Dan Winship authored
      When a connection has finished activating, but we don't know yet that
      we have full connectivity, then find_best_device_state() should return
      CONNECTED_SITE, not CONNECTING. Fixes a bug where the manager state
      would repeatedly switch between those two states.
      5e182d55
    • Dan Winship's avatar
      connectivity: improve debug logging · 53f2642c
      Dan Winship authored
      nm-connectivity was logging both "started" and "finished" for periodic
      connectivity checks, but was only logging "finished" for manual ones,
      which made the logs look weird. Fix it to log both periodic and manual
      starts, and differentiate them.
      
      Also add some additional logging to indicate when set_online() is
      called, and when :state changes.
      53f2642c
    • Jiří Klimeš's avatar
      ifcfg-rh: update test files not to use obsolete GATEWAY<n> variables · 233498e0
      Jiří Klimeš authored
      But add a dedicated test reading GATEWAY1 to ensure we are still backwards
      compatible.
      233498e0
    • Jiří Klimeš's avatar
    • Jiří Klimeš's avatar
      ifcfg-rh: read custom IP address for shared connections (rh #1174632) · c8fe3bba
      Jiří Klimeš authored
      Custom IP ranges for shared connection were implemeted in bgo #6759732
      (commit 32a001f5). The first IP address
      is used and a range is calculated.
      However, the commit missed to update ifcfg-rh plugin to read the address.
      
      Test case:
      * use ifcfg-rh plugin for NetworkManager
      $ nmcli con add type eth con-name shared-ip ifname eth0
      $ nmcli con mod shared-ip ipv4.addresses 9.8.7.6/24 ipv4.method shared
      $ nmcli con show shared-ip
      $ nmcli con show shared-ip  <--- ip address 9.8.7.6 was missing
      
      https://bugzilla.redhat.com/show_bug.cgi?id=1174632
      c8fe3bba
  6. 14 Jan, 2015 1 commit
  7. 13 Jan, 2015 3 commits