Commit graph

362 commits

Author SHA1 Message Date
Dan Williams
17338069e3 core: only manage those bridges created by NetworkManager (rh #905035)
Until we handle bridges non-destructively, only manage bridges
created by NM.  When quitting write out a file listing all
bridges created by NM and a timestamp, and when starting read
that file and if the timestamp is within 30 minutes, manage
any bridge that was listed in that file.  This scheme, while
not foolproof (eg, if NM crashes), should ensure that NM can
recognize bridges it created if it's restarted.  The file
is stored in /run or /var/run, which is cleaned each restart,
ensuring that the state does not persist across reboots.

If an automatic or user-initiated activation request for
a bridge NM does not manage is received, that request is
denied.  Only if the bridge interface does not yet exist, or
was present in the managed bridges file, will an
NMDeviceBridge be created and activation be possible.
2013-02-04 11:59:15 -06:00
Dan Williams
2dac2cf56e core: don't allow auto-activation of a master that has been disconnected
The master-activation code was ignoring whether or not the master device
was inhibiting automatic connections.
2013-02-04 10:37:47 -06:00
Jiří Klimeš
2952c09902 core: add GetLogging() D-Bus call to org.freedesktop.NetworkManager
Returns current logging level and domains set.
2013-01-09 16:47:49 +01:00
Dan Williams
94d6074e26 core: fix crash on device deactivation after 'pending' branch merge
Since the manager now tracks active connections, it needs to hold
a reference to the active connection objects too.  The active
connection teardown code was changed to release that reference
(_active_connection_cleanup()) but the creation code was never
changed to remove the bits that pass ownership over the initial
reference to the NMDevice.  Fix that.
2012-12-18 21:06:02 -06:00
Dan Williams
c0d15e8eb2 trivial: remove unused argument 2012-12-17 17:01:11 -06:00
Dan Williams
1fcb577e19 vpn: make nm_vpn_manager_deactivate_connection() take an object, not a path
Pointless to look up the object by its path when we already have the object.
2012-12-17 17:01:11 -06:00
Dan Williams
1b968f4021 core: simplify looking up NMActiveConnection objects by object path 2012-12-17 17:01:10 -06:00
Dan Williams
92ea35469d core: add manager active connection added/removed signals
Will replace the VPN manager's activated/deactivated signals; listeners
can attach to the active connection's 'state' property and listen
for the changes to ACTIVATED and DEACTIVATED.  Works for all connections,
not just VPN ones.
2012-12-17 17:01:10 -06:00
Dan Williams
6ddc25dcab core: handle some connection timestamp updating in NMActiveConnection
Handle it in the base active connection class instead of in separate
places for the device and the VPN cases.
2012-12-17 17:01:10 -06:00
Dan Williams
3a10f695b3 vpn: kill nm_vpn_manager_get_vpn_connection_for_active()
No longer required now that the manager tracks active connections.
2012-12-17 17:01:10 -06:00
Dan Williams
a64127a7c2 vpn: kill nm_vpn_manager_get_active_connections()
No longer needed now that the manager tracks active connections.
2012-12-17 17:01:10 -06:00
Dan Williams
59420add04 core: track active connections directly in the manager
Instead of using devices as a proxy for active connections, and
then also asking the VPN manager for the active connections it's
tracking, just track *all* active connections in the manager.
2012-12-17 17:01:10 -06:00
Dan Williams
84603c2380 core: move most activation request logic to the active connection class
We'll want to use NMActiveConnection more in the manager and also fold
the PendingActivation functionality into it.  All this functionality
applies to the VPN connections too, so it makes sense to have it all
in the base class instead of both NMActRequest and NMVPNConnection.
2012-12-17 17:01:10 -06:00
Dan Williams
b4a11a86f7 core: rework master/slave handling 2012-11-30 13:21:51 -06:00
Dan Williams
6116a84048 core: simplify nm_device_activate()
We don't need to check device state here because the manager, which
is the only thing that calls nm_device_activate() in
internal_activate_device() ensures that the device is deactivated
before starting a new activation request.
2012-11-30 13:21:51 -06:00
Thomas Graf
cfff5a63d9 bridge: add bridge device type
This adds a new device type 'bridge'. Kernel devices are created
on demand.
2012-11-30 13:21:51 -06:00
Aleksander Morgado
2e74fc8cf4 modem-manager, manager: integrate the new `ModemManager1' interface support
The new `MMManager' object takes care of notifying modems added or removed from
the ModemManager1 interface.

We will listen to both the old and new ModemManager implementations, but as soon
as the first ModemManager implementation is found, the other one gets cleared,
so that we don't wait forever to appear.
2012-11-21 11:48:25 -06:00
Dan Winship
e98d1869eb core: fix up virtual device creation on connection creation
Previously, when a new bond or VLAN connection was created, NM would
always create the virtual device right away. But on startup, it only
creates virtual devices for connections that can autoconnect. Fix
connection_added() to make that check as well.
2012-11-20 10:02:39 -05:00
Aleksander Morgado
6853518852 manager: trivial fix in object type in signal callback 2012-10-30 18:34:26 -05:00
Aleksander Morgado
a8f7a45e3f modem-manager: rework interface related properties in `NMModem'
The logic behind the `iface' property (which actually is removed) gets split
into three new properties, as follows::

 * `uid': Just defines a new string property which must contain a unique ID of
    the modem, mainly for logging.

 * `control-port': a string property defining which is the control port the
    modem uses. This property is actually optional and may be specified as NULL.
    The main purpose of this property is to allow the easy integration of the
    new ModemManager into the `NMDeviceBt' object. The bluetooth device needs
    to know the port used by the modem; and we cannot use the Data port
    information as that is only available until the bearer is created. Instead,
    for the new ModemManager we will use the control port information exposed.

 * `data-port': a string property defining which is the data port to use in the
    connection. This property is always defined in the `NMModemGsm' and
    `NMModemCdma' objects.
2012-10-30 18:34:26 -05:00
Dan Williams
dd42da51a8 core: fix suspend/resume signal names which the manager listens for
Introduced in 64fd8eea7706038e5d38c8463a1c765ed9331db2; but honestly
I also thought GObject lower-cased signal names since it munges them
for - and _ too.  Apparently not.
2012-10-14 10:44:34 -05:00
Matthias Clasen
64fd8eea77 core: factor out the upower suspend/resume code (bgo #677694)
Factor the code that listens for upower sleeping and resuming
signals out into a class code NMSleepMonitor.
2012-10-13 09:20:00 -05:00
Dan Winship
0a30843caa core: don't try to create VLANs on devices that don't support them
VLANs are only supported on certain kinds of devices, so don't try to
create them on other devices. (In fact, NM currently assumes that
VLANs are only created on Ethernet devices, so we need to be even more
picky than that.)
2012-09-27 13:57:47 -04:00
Jiří Klimeš
65ce4e52ef core: add some helper functions to activation request 2012-09-24 10:38:26 +02:00
Dan Winship
2062a98851 core: remove erroneous reference to VLAN-over-IPoIB 2012-08-27 13:27:35 -04:00
Dan Williams
722ce46aaa core: ignore PPP interface removal signals from udev
PPP interfaces are transient and created by their master interface
(usually for PPPoE or WWAN) and thus we don't want their removal
to affect their master device.  Unfortunately, that was happening
when a manual 'killall -TERM pppd' was run, which caused the
udev device removal signal, which caused NM to remove the master
WWAN device when udev signaled that the 'ppp' interface was gone.
2012-08-24 12:06:22 -05:00
Dan Williams
26b833cd53 core: more VPN activated/deactivated fixups
More fallout from 330247399c.
2012-06-14 18:01:58 -05:00
Dan Williams
4692c00be2 core: re-implement device disconnect using generic auth request signal 2012-06-01 17:05:00 -05:00
Dan Williams
0ab9c25646 core: add generic device authorization request signal
Allows devices to generically request authorization from the manager
for whatever operation they want, and allows us to keep the devices
from including the auth code directly.
2012-06-01 17:05:00 -05:00
Jiří Klimeš
d1cbeebfc6 core: authenticate Set() D-Bus call for NMDevice "Autoconnect" property 2012-05-22 18:30:31 +02:00
Jiří Klimeš
6d9338f2c6 core: add "Autoconnect" property to NMDevice
It is bound to autoconnect_inhibit private variable (has opposite meaning).
While 'Autoconnect' is TRUE (default value) the device can automatically
activate a connection. If it is changed to FALSE, the device will not
auto-activate until 'Autoconnect' is TRUE again.
Disconnect() method sets 'Autoconnect' to FALSE. NMPolicy monitors the property
and schedules auto activation when FALSE->TRUE transition is made.
2012-05-22 17:11:44 +02:00
Pantelis Koukousoulas
0e6f5ce38e adsl: settings and initial "scaffolding"
This patch adds the settings code (NMSettingAdsl) and the initial
"scaffolding" i.e., a tiny stub version of NMDeviceAdsl and the
udev handler code to get the device detected.

With this patch you should be able to see an atm device being detected
by networkmanager in the logs, although of course it doesn't
do anything useful yet.

Extract from the logs:

 [1304668252.341354] [nm-udev-manager.c:562] adsl_add(): adsl_add: ATM Device detected from udev. Adding ..
(ueagle-atm0): failed to look up interface index
(ueagle-atm0): new ADSL device (driver: 'ueagle-atm' ifindex: -1)
(ueagle-atm0): exported as /org/freedesktop/NetworkManager/Devices/2
(ueagle-atm0): now managed
(ueagle-atm0): device state change: unmanaged -> unavailable (reason 'managed') [10 20 2]
(ueagle-atm0): deactivating device (reason: 2).
 [1304668252.345102] [nm-system.c:1349] flush_routes(): (ueagle-atm0) failed to lookup interface index
 [1304668252.347821] [nm-device.c:3912] nm_device_state_changed(): (ueagle-atm0): device is available,

In this version, we hack the nm-device.c:nm_device_get_priority() to get better priority
instead of changing the DeviceType enum.

Signed-off-by: Pantelis Koukousoulas <pktoss@gmail.com>
2012-05-18 15:42:55 -05:00
Dan Williams
201096b209 bluetooth: move device logic to bluez manager
To simplify NMManager and to make use of the new connection provider
functionality, move the logic for when a paired Bluetooth device
is actually usable for network connections or not into the bluez
manager and out of NMManager.  The general direction should be towards
moving this sort of logic out of the manager and into the device
specific stuff, like we did with the WiMAX bits, so we can make
stuff into plugins.
2012-05-17 13:27:09 -05:00
Dan Williams
4dc5e6c92a core: fix ifindex value checks
Kernel ifindexes are always greater than zero (see dev_new_index()
in net/core/dev.c).  Also don't bother warning about ifindex
lookup failures for devices we know aren't kernel network interfaces.
2012-05-17 13:23:39 -05:00
Dan Williams
4980a6882b core: pass connection provider to devices 2012-05-02 17:33:17 -05:00
Dan Winship
49214066a4 Fix capitalization of "InfiniBand"
"InfiniBand" has a capital "B". Fix that everywhere it's being used as
a human-readable string.

In particular, the RH initscripts recognize "TYPE=infiniband" and
"TYPE=InfiniBand", but not "TYPE=Infiniband", which is what we were
writing before.
2012-03-06 13:23:29 -05:00
Dan Williams
11da5fb6bc core: handle NULL device path for activation
For virtual interfaces and other cases we won't necessarily have
a device path, which means clients will be passing "/" instead.
Fix that up the same way we fix up the specific object.
2012-03-06 12:00:41 -06:00
Dan Williams
3567e6f9ea core: remove some redundant code and add some argument checks
ifindex is already passed to the function, no need to look it
up again.
2012-03-06 11:38:03 -06:00
Dan Williams
cd2c721762 core: use a second startup pass to detect all VLAN interfaces
We can't guarantee the ordering of devices that udev sends to us
on startup.  Thus, a VLAN interface could be sent before its
parent is, and we won't be able to find the parent in the device
list.  But that's fine; all parents will be detected during the
first pass, and we silently fail the VLAN interface.  Then we
do a second pass where any remaining VLAN interfaces will be
created because we found the parents during the first pass.
2012-03-06 11:07:15 -06:00
Dan Williams
d08b33bb01 core: ensure master connections are available for dependence
If the connection requires a master connection or master device,
find that connection, and activate it if it's not already
activated.
2012-03-01 17:40:17 -06:00
Dan Williams
fbfdecf380 core: reorganize activation flow by splitting out VPN activation work
Just split the VPN-specific stuff out to its own function so that
nm_manager_activate_connection() isn't so large.
2012-03-01 17:40:17 -06:00
Dan Williams
7aa2a8271d core: use NMActiveConnection objects throughout activation paths
They are the basic class that tracks active connections, and we're
going to use them for connection dependencies.  So use the fact that
both NMVPNConnection and NMActRequest have the same base class
instead of using object paths.
2012-03-01 17:40:17 -06:00
Dan Williams
65a13f9d8a core: convert VLAN interfaces to a device subclass
Many different interface types can support VLANs, including
Infiniband, WiFi, etc.  So we have to create a new device class
for them instead of keeping the support in NMDeviceEthernet.
2012-03-01 17:40:17 -06:00
Dan Williams
5ee7841475 core: extend nm_device_hwaddr_matches() to match specific addresses
We'll want to eventually match (for VLAN) a given hardware address
that's not the device's hardware address.  Only the device itself
knows which NMSetting should contain it's hardware address (ie
the 'wired' setting for NMDeviceEthernet, 'infiniband' for
NMDeviceInfiniband, etc) and VLANs take their hardware address
from the parent interface.  So eventually we'll have VLAN
interfaces use these new arguments to ask their parent interface
to match the VLAN hardware address in a connection, since the
VLAN doesn't know (or need to know) what kind of interface it
really is underneath.
2012-03-01 17:40:17 -06:00
Dan Williams
51edc6ae97 core: use VLAN parent instead of master for creating the virtual interface
The 'parent' property of NMSettingVlan is now what describes the
interface from which the VLAN gets created, not master.
2012-03-01 17:40:17 -06:00
Jiri Popelka
64753b9b3a trivial: fix unused variable ‘priv’ 2012-03-01 12:37:19 -06:00
Dan Williams
ca3c39abd3 wifi: let WEXT be disabled with --with-wext=no
It's still enabled by default if you don't pass --with-wext=no.
But now it's possible to build without WEXT entirely.
2012-02-29 23:11:04 -06:00
Dan Williams
330eb2f74b core: additional connectivity checking debug messages 2012-02-27 10:56:51 -06:00
Dan Williams
5937861ca7 core: fix up connectivity state checks
We want to start the connectivity checks when any device gets
activated, and stop them when all devices get deactivated.  We
also want to make sure it's running if a device gets deactivated
but other devices are still active.  If multiple devices are
activated and if the default device gets deactivated, the other
device may become the default device and we'll need a connectivity
check for that device since we can't do per-device checks yet.

Also, if connectivity checking is enabled at compile-time but
not enabled at runtime, the connectivity bits should always
report "connected" to preserve previous behavior, and this code
makes it clearer how that is handled.
2012-02-27 10:56:51 -06:00
Dan Williams
d47072a1a1 core: clean up and simplify connectivity check
We can just use property notifications instead of having
a separate connected signal.  Also clean up some formatting
and make some private variable names shorter.
2012-02-27 10:56:51 -06:00