Commit graph

12107 commits

Author SHA1 Message Date
Beniamino Galvani
1d3eff45d2 device: set Ethernet MTU for PPPoE connections in stage2/config
Try to set the MTU of the parent Ethernet interface to match the
requested PPP MTU and MRU. This allows the negotiation of a PPP MTU
and MRU greater than 1492.
2015-05-13 13:29:51 +02:00
Dan Williams
6fdfb03107 Revert "ppp-manager: don't use kernel pppoe (rh #1034860, rh #1061641)"
We switched to user-mode PPPoE client to work around a bug in kernel
PPPoE code that caused pppd not to be notified when the connection was
terminated with a PADT before the LCP Termination Request.

The kernel bug has now been fixed upstream with commit 287f3a943fef
"pppoe: Use workqueue to die properly when a PADT is received", queued
for v4.1.

Since the issue affected only very particular scenarios and could
somehow be solved with the right configuration (see bugzilla entry),
we can safely revert the patch and restore the use of kernel mode
PPPoE.

This reverts commit 7955806a02.

https://bugzilla.gnome.org/show_bug.cgi?id=742939
2015-05-13 13:29:38 +02:00
Beniamino Galvani
0a04be41d4 device: set MTU on IP interface
Fixes: 7ba2a058f2
2015-05-13 13:29:38 +02:00
Thomas Haller
78c1849b53 core: fix compile error due to missing pointer cast
Fixes: 72baf9fa24
2015-05-13 12:30:37 +02:00
Lubomir Rintel
72baf9fa24 manager: AddAndActivateConnection(): don't save until the connection is activatable
https://bugzilla.redhat.com/show_bug.cgi?id=1174164
2015-05-12 17:26:25 +02:00
Thomas Haller
067202b34e core: use explict NMLogDomain enum instead of int
A while ago (f4f3f4d69b) we added an
enum to represent the logging domain. Use it.
2015-05-12 16:46:48 +02:00
Jiří Klimeš
e07efa836f libnm: add ifcfg-rh description for 802-11-wireless.powersave property
so that it is displayed in nm-settings-ifcfg-rh manual page.
2015-05-12 15:42:51 +02:00
Thomas Haller
0d7012faab platform/test: fix valgrind warning about NULL arguments to mount()
==21573== Syscall param mount(type) points to unaddressable byte(s)
    ==21573==    at 0x854B9BA: mount (syscall-template.S:81)
    ==21573==    by 0x158922: main (test-common.c:295)
    ==21573==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
    ==21573==
    {
       <insert_a_suppression_name_here>
       Memcheck:Param
       mount(type)
       fun:mount
       fun:main
    }

Fixes: d6aef9c188
2015-05-12 14:37:36 +02:00
Piotr Drąg
10d03ed5f5 po: update Polish (pl) translation (bgo #749164)
https://bugzilla.gnome.org/show_bug.cgi?id=749164
2015-05-12 13:05:49 +02:00
Thomas Haller
843205521f device: fix configuring static ip addresses
When a connection had static IP addresses, an early event
from plaform would clear them from priv->con_ip4_config.

Fix that, by don't initializing priv->con_ip4_config
before we commit the first time.

https://bugzilla.gnome.org/show_bug.cgi?id=749052

Fixes: 557667df12
2015-05-11 21:44:26 +02:00
Lubomir Rintel
26aeb12749 linux-platforms: don't enumerate devices via udev if udevd is not running
We'd be able to do so for already existing devices, but not for devices that
are added afterwards, since gudev is hardwired not to listen for events from
kernel.
2015-05-11 19:28:13 +02:00
Lubomir Rintel
d6aef9c188 platform/test: unshare the netns namespace so that root tests don't mess with the system
Mount a private sysfs instance. Otherwise gudev sees the devices from the
parent netns as opposed to our netns.

We do, however need a writable /sys/devices subtree for testing the bridge
code. There doesn't seem to be any other way to get a writable subtree of a
read-only filesystem than remounting it with no parameters after the initial
mount. We use this to get a writable sysfs instance and then bindmount it so
that it fits properly in the sysfs hierarchy.

Co-Authored-By: Thomas Haller <thaller@redhat.com>
2015-05-11 19:28:13 +02:00
Dan Williams
21fef6a357 build: correct help message about missing readline + termcap libraries 2015-05-11 10:33:21 -05:00
Lubomir Rintel
c8236ea694 build: re-add a line accidentally removed by the last merge 2015-05-11 11:35:52 +02:00
Beniamino Galvani
b341431f87 ipv4ll: merge branch 'bg/ipv4ll-bgo747463'
https://bugzilla.gnome.org/show_bug.cgi?id=747463
2015-05-11 10:49:53 +02:00
Beniamino Galvani
db923366b2 contrib/rpm: remove avahi-autoipd dependency and files 2015-05-11 10:48:48 +02:00
Beniamino Galvani
3376952ef9 callouts: avahi-autoipd-action is no more 2015-05-11 10:48:48 +02:00
Beniamino Galvani
c029502912 ipv4ll: use internal implementation 2015-05-11 10:48:48 +02:00
Beniamino Galvani
c6302f3227 device: fix device state transition after IPv4LL failure
Don't terminate the entire connection if IPv4LL configuration fails
but instead call nm_device_check_ip_failed() to check the result of
IPv6 as well.
2015-05-11 10:48:48 +02:00
Beniamino Galvani
33d4232c3d device/trivial: move nm_device_check_ip_failed()
Move nm_device_check_ip_failed() upwards as it will be used by IPv4LL
code.
2015-05-11 10:48:48 +02:00
Beniamino Galvani
7a7f280ef3 device/trivial: rename 'aipd' and 'autoip4' to 'ipv4ll' 2015-05-11 10:48:48 +02:00
Beniamino Galvani
9d6a2e6f0f systemd: ensure every file includes 'nm-sd-adapt.h' first 2015-05-11 10:48:48 +02:00
Lubomir Rintel
6fba9fd2e5 device: make sure NMDevice doesn't vanish halfway through applying configuration
It could be that the device was removed and the default route manager holds the
last reference:

  Breakpoint 1, dispose (object=0x90e710 [NMDeviceTun]) at devices/nm-device.c:8588
  8588            NMDevice *self = NM_DEVICE (object);
  (gdb) bt
  #0  0x000000000045d24e in dispose (object=0x90e710 [NMDeviceTun]) at devices/nm-device.c:8588
  #1  0x00007ffff4d29b7c in g_object_unref (_object=0x90e710) at gobject.c:3133
  #2  0x00000000004b0a61 in _entry_at_idx_remove (entry=<optimized out>) at nm-default-route-manager.c:192
  #3  0x00000000004b0a61 in _entry_at_idx_remove (vtable=<optimized out>, self=<optimized out>, entry_idx=<optimized out>) at nm-default-route-manager.c:638
  #4  0x00000000004adb51 in _ipx_update_default_route (vtable=0x7b1850 <vtable_ip6>, self=0x7da610 [NMDefaultRouteManager], source=<optimized out>) at nm-default-route-manager.c:814
  #5  0x0000000000459ccb in nm_device_set_ip6_config (self=0x90e710 [NMDeviceTun], new_config=<optimized out>, commit=<optimized out>, reason=<optimized out>) at devices/nm-device.c:6213
  #6  0x0000000000450c92 in ip6_config_merge_and_apply (self=0x90e710 [NMDeviceTun], commit=0, out_reason=0x0) at devices/nm-device.c:3670
  #7  0x0000000000452d06 in update_ip_config (self=0x90e710 [NMDeviceTun], initial=<optimized out>) at devices/nm-device.c:6915
  #8  0x000000000046253e in queued_ip_config_change (user_data=<optimized out>) at devices/nm-device.c:6945
  #9  0x00007ffff4a257fb in g_main_context_dispatch (context=0x7ca3e0) at gmain.c:3111
  #10 0x00007ffff4a257fb in g_main_context_dispatch (context=context@entry=0x7ca3e0) at gmain.c:3710
  #11 0x00007ffff4a25b98 in g_main_context_iterate (context=0x7ca3e0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3781
  #12 0x00007ffff4a25ec2 in g_main_loop_run (loop=0x7ca4a0) at gmain.c:3975
  #13 0x0000000000444bbe in main (argc=<optimized out>, argv=<optimized out>) at main.c:486
  (gdb)

  Program received signal SIGTRAP, Trace/breakpoint trap.
  g_logv (log_domain=0x7ffff4d4f164 "GLib-GObject", log_level=G_LOG_LEVEL_WARNING, format=<optimized out>, args=args@entry=0x7fffffffd5b0) at gmessages.c:1046
  1046              g_private_set (&g_log_depth, GUINT_TO_POINTER (depth));
  (gdb) bt
  #0  0x00007ffff4a2c970 in g_logv (log_domain=0x7ffff4d4f164 "GLib-GObject", log_level=G_LOG_LEVEL_WARNING, format=<optimized out>, args=args@entry=0x7fffffffd5b0) at gmessages.c:1046
  #1  0x00007ffff4a2cbaf in g_log (log_domain=log_domain@entry=0x7ffff4d4f164 "GLib-GObject", log_level=log_level@entry=G_LOG_LEVEL_WARNING, format=format@entry=0x7ffff4d563b0 "invalid unclassed pointer in cast to '%s'") at gmessages.c:1079
  #2  0x00007ffff4d481f9 in g_type_check_instance_cast (type_instance=0x90e710, iface_type=<optimized out>) at gtype.c:4030
  #3  0x0000000000459ceb in nm_device_set_ip6_config (self=0x90e710, new_config=<optimized out>, commit=<optimized out>, reason=0x0) at devices/nm-device.c:6217
  #4  0x0000000000450c92 in ip6_config_merge_and_apply (self=0x90e710, commit=0, out_reason=0x0) at devices/nm-device.c:3670
  #5  0x0000000000452d06 in update_ip_config (self=0x90e710, initial=<optimized out>) at devices/nm-device.c:6915
  #6  0x000000000046253e in queued_ip_config_change (user_data=<optimized out>) at devices/nm-device.c:6945
  #7  0x00007ffff4a257fb in g_main_context_dispatch (context=0x7ca3e0) at gmain.c:3111
  #8  0x00007ffff4a257fb in g_main_context_dispatch (context=context@entry=0x7ca3e0) at gmain.c:3710
  #9  0x00007ffff4a25b98 in g_main_context_iterate (context=0x7ca3e0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3781
  #10 0x00007ffff4a25ec2 in g_main_loop_run (loop=0x7ca4a0) at gmain.c:3975
  #11 0x0000000000444bbe in main (argc=<optimized out>, argv=<optimized out>) at main.c:486
  (gdb)

https://bugzilla.gnome.org/show_bug.cgi?id=748193
2015-05-11 10:44:02 +02:00
Beniamino Galvani
caac8785da systemd: merge branch 'systemd'
Conflicts:
	src/systemd/src/shared/strv.c
	src/systemd/src/shared/util.c
2015-05-11 09:20:33 +02:00
Beniamino Galvani
8ff2c2e936 systemd: merge branch 'systemd'
In addition, update src/Makefile.am with new paths and move

  src/{dhcp-manager/systemd-dhcp => systemd}/nm-sd-adapt.[ch]

as well.
2015-05-11 09:19:02 +02:00
Beniamino Galvani
6edc737173 dns: don't override DHCP-supplied search order with domain
NM always prepends the list of DNS domains received through DHCP to
the search list in /etc/resolv.conf, overriding the DHCP-supplied DNS
domain search order. This behavior is not entirely correct since it
changes the search order provided by system administrators.

We cannot simply avoid adding the DNS domain list to the search list
because this would break some configurations that rely on the 'domain'
option to deliver the search list.

This patch modifies the behavior of DNS manager to:
 - insert the DHCP-provided 'domain' at the end of 'searches' option
   so that 'searches' is always preferred
 - ignore 'domain' if 'searches' option exists and 'domain' is a
   single domain

https://bugzilla.gnome.org/show_bug.cgi?id=748900
2015-05-08 10:21:28 +02:00
Jiří Klimeš
33527341b1 wifi: fix a crash in on_bss_proxy_acquired()
g_dbus_proxy_get_cached_property_names() function can return NULL.

 Program received signal SIGSEGV, Segmentation fault.
 on_bss_proxy_acquired (proxy=0x7fffe4003880 [GDBusProxy], result=0x895490, user_data=<optimized out>) at supplicant-manager/nm-supplicant-interface.c:159
 159		while (*iter) {
 (gdb) bt
 #0  0x000000000048fac7 in on_bss_proxy_acquired (proxy=0x7fffe4003880 [GDBusProxy], result=0x895490, user_data=<optimized out>)
     at supplicant-manager/nm-supplicant-interface.c:159
 #1  0x0000003bf84728b7 in g_simple_async_result_complete (simple=0x895490 [GSimpleAsyncResult]) at gsimpleasyncresult.c:763
 #2  0x0000003bf8472919 in complete_in_idle_cb (data=<optimized out>) at gsimpleasyncresult.c:775
 #3  0x0000003bf5c497fb in g_main_context_dispatch (context=0x7d6420) at gmain.c:3111
 #4  0x0000003bf5c497fb in g_main_context_dispatch (context=context@entry=0x7d6420) at gmain.c:3710
 #5  0x0000003bf5c49b98 in g_main_context_iterate (context=0x7d6420, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3781
 #6  0x0000003bf5c49ec2 in g_main_loop_run (loop=0x7d64e0) at gmain.c:3975
 #7  0x00000000004349d6 in main (argc=1, argv=0x7fffffffe598) at main.c:486
2015-05-07 13:08:16 +02:00
Thomas Haller
f55a272ade platform: fix compiler warning about non-initialized pointer
When compiling with -fexceptions (as we build our RPM), we must
initialize all variables with a cleanup attribute.

Fixes: 29ccb8851c
2015-05-07 11:10:36 +02:00
Dan Williams
6270db5f0b merge: device factory cleanups and first parts of devices-for-all (bgo #747429) 2015-05-06 16:17:01 -05:00
Dan Williams
8fa0f4690f core: let plugins indicate links which should be ignored
Instead of hacky stuff in the Manager, let plugins themselves indicate
which links should be ignored (because they are really child links that
are controlled by a different device that the plugin handles).
2015-05-06 16:14:25 -05:00
Dan Williams
aba250a7d4 core: move permanent and initial MAC address reading to NMDevice and NMPlatform
Ethernet, WiFi, and VLAN used the same implementation for initial address.

Ethernet and WiFi used the same implementation (and duplicated code) for
permanent MAC address, plus they both used ethtool in what should be
generic code, which is better done in the platform.
2015-05-06 16:14:25 -05:00
Dan Williams
ddaea22332 platform: move driver & firmware version reading into the platform 2015-05-06 16:14:25 -05:00
Dan Williams
fa74ed7ca1 platform: add nm_platform_link_get_by_address() 2015-05-06 16:14:25 -05:00
Dan Williams
29ccb8851c platform: ensure created interface matches requested type
If the caller requested that a bond be created, don't return success
if there was an existing bridge with the same name.
2015-05-06 16:14:25 -05:00
Dan Williams
2abda4bfa5 platform: return link objects from add functions 2015-05-06 16:14:25 -05:00
Dan Williams
179d56c73c core: move virtual interface name handling into device plugins
Instead of having a bunch of logic in the Manager for determining the
VLAN and Infiniband virtual interface names, move the type-specific
logic into the plugins themselves.
2015-05-06 16:14:25 -05:00
Dan Williams
42b272b604 trivial: move code 2015-05-06 16:14:24 -05:00
Dan Williams
71bde20c30 core: let device plugins advertise supported link and setting types
Instead of looping over all plugins and asking each plugin whether it
can handle a link or a connection, have them advertise the link and
connection types they support, and use that when creating new devices.
2015-05-06 16:14:24 -05:00
Dan Williams
cd3df12c8f vlan: don't fail if parent isn't found at construct time for existing devices
For existing devices, depending on the order that netlink sends interfaces to
us, the parent may be found after the VLAN interface and not be available when
the VLAN interface is constructed.  Instead of failing construction, when a
NMDeviceVlan has no parent keep it unavailable for activation.  Then have
the Manager notify existing devices when a new device is found, and let
NMDeviceVlan find the parent later and become available via that mechanism.

This doesn't apply to VLANs created by NM itself, because the kernel requires
a parent ifindex when creating a VLAN device.  Thus this fix only applies to
VLANs created outside NetworkManager, or existing when NM starts up.
2015-05-06 16:14:24 -05:00
Dan Williams
477cbc848a trivial: move code 2015-05-06 16:14:24 -05:00
Dan Williams
baee9080b7 platform: recognize Bluetooth BNEP devices via DEVTYPE
Instead of strcmp()-ing the device name, recognize these devices from their
driver's DEVTYPE.
2015-05-06 16:14:24 -05:00
Dan Williams
77d01c9094 settings: ignore incompatible connections when looking for existing ones
beb18050 made this code run for all devices instead of just ethernet
devices, which means any kind of connection gets compared to any
device.  But only compatible connections should be considered.
2015-05-06 16:14:24 -05:00
Dan Williams
fb1d04099f core: don't activate failed queued activation requests
If the queued activation request failed before the device is
finished deactiving the old request, don't start activating
the failed queued request.
2015-05-06 16:14:24 -05:00
Dan Williams
8203ae8093 merge: follow supplicant's AP list instead of managing lifetime internally (bgo #748593) 2015-05-06 15:25:03 -05:00
Dan Williams
1fcc9690d1 platform: remove unused wifi_utils_get_ssid() 2015-05-06 15:23:47 -05:00
Dan Williams
2028ef2c82 wifi: remove anachronistic NMAccessPoint getter pattern
Just use priv.
2015-05-06 15:23:47 -05:00
Dan Williams
a646514fb6 wifi: remove unused NMAccessPoint set_property() code
Properties are never set at construct time through GValues, but
later through helpers.
2015-05-06 15:23:47 -05:00
Dan Williams
7202449b47 wifi: beautify spacing in nm-wifi-ap.h 2015-05-06 15:21:32 -05:00
Dan Williams
8cd2353cd9 wifi: make internal functions static or remove them
Convert internal-only getters to priv-> at their point of usage,
and make internal-only setters static.
2015-05-06 15:21:32 -05:00
Dan Williams
13c77b09eb wifi: move NMAccessPoint getters/setters to top
Allows us to remove some no longer used prototypes from the headers.
Remove some pointless comments at the same time.
2015-05-06 15:21:31 -05:00