Commit graph

1665 commits

Author SHA1 Message Date
Michael Biebl
1669e3a778 build: fix distcheck 2009-11-29 15:32:45 -08:00
Dan Williams
5d9a367e63 core: silence flush_routes() and flush_addresses() warnings 2009-11-24 11:19:57 -08:00
Dan Williams
e123fcb143 wifi: poll rfkill status for ipw2x00 devices
The ipw2x00 drivers won't be converted over to the kernel's rfkill
subsystem until 2.6.33, and thus listening for udev rfkill change
events on these devices doesn't work.  So until then, poll rfkill
state for ipw2x00 devices every few seconds in addition to listening
to other rfkill sources.
2009-11-24 10:43:43 -08:00
Dan Williams
830bded555 ppp: increase PPPoE pppd timeout to 30 seconds
Mostly to help debug stuff like (rh #528314) where it's hanging somewhere
in rp-pppoe while trying to connect to the access concentrator.
2009-11-23 00:08:35 -08:00
Dan Williams
6f21e935d6 wifi: don't allow scan requests when associating
Shouldn't be allowing scan requests when associating or when the
supplicant is otherwise busy doing something else.

Older fullmac cards are much more likely to run into this problem
since they usually take longer to connect; since they take so
long, NM may sometimes request a scan during association or
during DHCP which can cause the card to miss DHCP replies.  I've
never seen this happen with mac80211 drivers though.
2009-11-21 02:48:46 -08:00
Dan Williams
f1444bbabe wifi: ensure wifi devices are enabled on wakeup if not rfkilled
Since rfkill state is saved but not acted upon during sleep
(since NM shouldn't be touching devices while sleeping) we have to
remember to act on the new state when waking up.
2009-11-20 09:11:46 -08:00
Dan Williams
1151ac2478 system-settings: cache secrets to protect against nm_connection_clear_secrets()
3rd patch in a series with:
0bbdc6b0fc
b135fa3265

With NM 0.8 the system settings service was integrated into NM and
thus nm_connection_clear_secrets() acts directly on the system
settings plugins' NMConnection objects.  So when NM cleared secrets
(for example after determining that they might be bad in a device's
stage2 handler), we completely lost the secrets forever.

With this commit, the secrets are now cached and updated whenever
the connection is updated, and thus are again available to send to
NetworkManager when needed.
2009-11-16 16:48:59 -08:00
Dan Williams
0bbdc6b0fc system-settings: generalize nm_sysconfig_connection_update() a bit
So that it can be the sole location where secrets caching happens.
2009-11-16 16:14:50 -08:00
Dan Williams
b135fa3265 system-settings: add helper for updating plugin connections
nm_connection_replace_settings() replaces the connection's settings
but doesn't allow interception of the new settings.  Plugins would then
send out the update signal, but secrets are scrubbed out of them to
ensure secrets aren't leaked out into D-Bus signals.

With NM 0.8 the system settings service was integrated into NM and
thus nm_connection_clear_secrets() acts directly on the system
settings plugins' NMConnection objects.  So when NM cleared secrets
(for example after determining that they might be bad in a device's
stage2 handler), we completely lost the secrets forever.

Adding this function allows the system settings service to hook into
the connection updates when the plugin connection's backing storage
(like config files or whatever) changes and cache the secrets for
use in NMSettingsConnectionInterface get_secrets() requestes.
2009-11-16 15:51:40 -08:00
Frederik Himpe
f4c1a52876 dhcp: use correct leasefile location on Mandriva 2009-11-15 22:42:16 -08:00
Dan Williams
cfb2b72dc6 dnsmasq: VPN DNS fixes
Turn DHCP and DNS debugging on with NM_DNSMASQ_DEBUG.

Without --strict-order, dnsmasq will round-robin queries which in
the case of VPN connections may result in the query going to the
non-VPN nameserver.  Also, allow dnsmasq to poll resolv.conf for
nameserver updates so that when the default connection changes,
it knows about the new nameservers.
2009-11-14 14:42:58 -08:00
Dan Williams
50fdbabbcb system-settings: fix crash when deleting auto wired connections
Make it less magical and therefore actually work.
2009-11-14 11:26:38 -08:00
Dan Williams
92db663514 wifi: don't fail first scan after supplicant interface is ready
If the supplicant interface became ready but the device was still
UNAVAILABLE, requesting a scan before transitioning to DISCONNECTED
would just fail because can_scan() returns FALSE when the device's
state is not >= DISCONNECTED.  Change device state first so that
doesn't happen.
2009-11-11 16:34:15 -08:00
Dan Williams
972b7ed70a olpc-mesh: fix device added signal usage
The object to which the signal is connected is always the first arg.
2009-11-10 09:06:53 -08:00
Dan Williams
d53574d725 wifi: fix some immediate wifi connection failures when enabling wifi
Impact of this bug is likely limited to Ad-Hoc connections that don't
require a scan before activation since by the time the scan has finished,
the NMSupplicantInterface will be set up.  However, this shows a bug where
Ad-Hoc connections can be immediately activated even if they don't have
the latest timestamp, because a scan hasn't completed yet and thus we don't
know if there are any usable APs around.  Could be fixed by only letting
auto-activations happen after the first successful scan anyway.  But whatever...

Log messages look like this:

NetworkManager: <info>  Activation (wlan0/wireless): connection 'Wireless connection 1' requires no security.  No secrets needed.
NetworkManager: <info>  Config: added 'ssid' value 'foobar'
NetworkManager: <info>  Config: added 'mode' value '1'
NetworkManager: <info>  Config: added 'frequency' value '2412'
NetworkManager: <info>  Config: added 'key_mgmt' value 'NONE'
(NetworkManager:28239): GLib-GObject-CRITICAL **: g_object_ref: assertion `G_IS_OBJECT (object)' failed
(NetworkManager:28239): GLib-GObject-CRITICAL **: g_type_instance_get_private: assertion `instance != NULL && instance->g_class != NULL' failed
NetworkManager: dbus_g_proxy_begin_call: assertion `DBUS_IS_G_PROXY (proxy)' failed
NetworkManager: <WARN>  real_act_stage2_config(): Activation (wlan0/wireless): couldn't send wireless configuration to the supplicant.
NetworkManager: <info>  (wlan0): device state change: 5 -> 9 (reason 9)
NetworkManager: <info>  Activation (wlan0) failed for access point (foobar)
NetworkManager: <info>  Marking connection 'Wireless connection 1' invalid.

This happened because the nm_device_wifi_set_enabled() only checked for
the existence of the NMSupplicantInterface, but not whether the supplicant
interface was ready to be used.  The supplicant interface would be in the
middle of the getInterface or addInterface call and wouldn't have
initialized priv->iface_proxy yet, which is where that error message was
coming from.

So don't change device state from the wifi_enabled handler, just init
the supplicant interface (it should have been torn down already by
device_state_changed() when the device goes to UNAVAILABLE or UNMANAGED)
and wait for the supplicant interface state change to READY to change
the NMDeviceWifi state to DISCONNECTED in supplicant_iface_state_cb_handler().
2009-11-06 16:53:51 -08:00
Michael Biebl
9cb3877afa core: link against libdl for dladdr()
For stricter linkers like binutils-gold.
2009-11-06 13:40:44 -08:00
Michael Biebl
836cbe2d13 core: link against libm for pow()
Link against libm (using the LT_LIB_M macro and the $LIBM variable) as
we are using pow() and otherwise fail to build with stricter linkers like
binutils-gold.
2009-11-06 13:40:13 -08:00
Dan Williams
0d05bc9a63 core: don't leak 'device-type' into PropertiesChanged signal
The device type is set at object construction before the object is
ever exported, thus the first time a client gets the value it will
be correct, and the value should never change.  As such, the
property never needs to be part of PropertiesChanged signals.
2009-11-04 10:43:46 -08:00
Dan Williams
ea78b0af0e core: don't leak 'ifindex' into PropertiesChanged signal
It's not part of the D-Bus spec; so it shouldn't be exposed.
2009-11-03 17:40:36 -08:00
Jirka Klimes
02a77d2b63 core: validate pidfile and quit early if NM is already running (rh #517362)
Also, don't delete the pidfile if it wasn't written out in this run
of NM.  Cleanups and simplifications by dcbw.
2009-11-03 16:13:26 -08:00
Jirka Klimes
dccdf5e1f3 core: preserve wifi and networking enabled/disabled states (bgo #582447)
With modifications by dcbw to create the state file if it doesn't exist,
and a couple cleanups and formatting fixes.
2009-11-02 17:29:53 -08:00
Alexander Sack
82011dff04 ppp: allow update of ppp secrets in all ACTIVATING stages (lp:432205)
Previously, ppp code would flip device state to _NEED_AUTH before
asking for secrets update; this is not the case anymore after landing
of f28a0df4a66e8f6c98327691c9c90df0604bbd28; hence, we need to
allow update of secrets in all ACTIVATING stages.

This patch updates this behaviour for all device classes with ppp
support.
2009-10-30 19:58:30 +01:00
Dan Williams
06a40dcf73 core: move helper macro for activating state to general location 2009-10-30 11:39:19 -07:00
Dan Williams
294a5e3153 modem: substitute known-good nameservers if PPP doesn't return any (lp:434477)
Modem firmware PPP implementations suck.
2009-10-23 16:49:38 -07:00
Dan Williams
f8643cc072 system-settings: fix PK Authority object lifetimes
It's a singleton, but PolicyKit didn't increment the reference count
when returning from polkit_authority_get() like we expected (which has
since been fixed upstream).  So for now, just don't unref the authority
at all.

Since we don't do that, there's a chance that some PolicyKit calls could
be outstanding when either the NMSysconfigSettings object or one of the
NMSysconfigConnection objects are around, so we make sure we cancel any
PolicyKit calls when the object gets disposed.  This is tricky, because
canceling them from the dispose may mean that the callback gets called
after the object is actually destroyed, so we have to be careful not to
access any private object data from the callbacks in that situation.
2009-10-21 14:23:24 -07:00
Dan Williams
4b2c810b1b core: clear invalid tag on failed connections when sleeping
So they'll get tried again on wakeup/resume.
2009-10-20 15:25:04 -07:00
Dan Williams
5761e328b8 dns: honor resolv.conf symlinks (lp:324233)
Based on a patch from Alexander Sack, but hugely
modified by me to make use of allocated realpath results
instead of stack-based arrays, and to fix an omission in
the original patch that would still have used the
non-realpath-resolved path to /etc/resolv.conf when doing
the atomic rename of the tempfile to resolv.conf.
2009-10-20 15:03:12 -07:00
Dan Williams
4b73cf2421 ipv6: fix incorrect address config signal emission
device->want_signal was never set to TRUE when addrconf was started,
causing random netlink events (say for link-local address addition
or removal) to trigger the config-changed signal from
nm_ip6_device_sync_from_netlink() at the wrong time.  This would
cause IPv6 address configuration to look like it succeeded, when
in fact the config timeout was still in-force.  Thus device
activation would proceed if IPv4 was enabled, but a few seconds later
the device would be deactivated due to the still active IPv6
timeout.

So fix that and clarify when the events from the IPv6 manager happen,
and what the want_signal variable is really for.
2009-10-20 11:23:10 -07:00
Dan Williams
23fec8dc72 ip6: save the accept_ra value and re-set it when the device is deactivated 2009-10-19 15:38:21 -07:00
Dan Williams
442dc676ef ip6: use device's IP interface, not its physical interface 2009-10-19 14:05:36 -07:00
Dan Williams
8d65515435 manager: automatically pick a base connection for VPNs
If let callers pass "/" for the specific object, and NM will
automatically pick the default device.
2009-10-16 11:52:27 -07:00
Dan Williams
7f63b48854 system-settings: fix writing connections when an earlier plugin can't (bgo #581758)
The error object passed to the plugin's add-connection handler wasn't
getting properly cleared if an earlier plugin had failed to write
the connection and fell back to the current plugin.
2009-10-15 20:52:00 -07:00
Dan Williams
bc653d2225 vpn: clear secrets when the connection fails
NM previously only cleared secrets when the VPN service daemon quit,
and the service daemons are on a 10-second inactivity timer.  So if
the user tried to re-activate the failed VPN connection within 10
seconds the old secrets would get used, which clearly isn't what we
want.  Ensure that whenever the VPN connection fails or disconnects,
we ask the settings service for secrets again the next time.
2009-10-08 23:00:01 -07:00
Dan Williams
00f945e54e gsm: correct GSM band implementation and settings
NM didn't pass it to MM anyway, so it was mainly unused, but the band settings
were still wrong.  Fix that (and still preserve ABI) by adding a new property
for allowed bands that can actually hold all the bands instead of limiting
to 16-bits.  Clean up some of the deprecation stuff at the same time to make
it clearer what's deprecated and what to do about it.
2009-10-07 12:18:57 -07:00
Noel J. Bergman
59d89050f2 sharing: fix sharing after 715ddd2045 (lp:444756)
Commit 715ddd2045 broke sharing because
sometimes a multi-argument string gets passed in rule->rule.  Revert
most of that commit.  A bunch of cleanups by dcbw too.
2009-10-06 16:46:46 -07:00
Dan Williams
72a98c5b29 system-settings: fix crash saving default wired connections to backing storage (lp:430781)
Fix up refcounting, plus it turns out that we already have the MAC address
lying around as	a GObject data item, so	we don't need to go grab it
from the connection itself.
2009-10-05 17:46:16 -07:00
Dan Williams
1d28ad1aa5 ppp: add minimal debugging output to the ppp plugin 2009-10-05 12:23:03 -07:00
Frej Soya
e3ae3efc09 wired: fix build_supplicant_config for wired - bgo:594038 lp:422597 2009-10-05 11:22:20 +02:00
Dan Williams
85da54edd7 manager: fix use-after-free crash for cdc-ether modems
An ethernet device that's actually a component of a modem could get
added to the device list, but then destroyed without getting removed
from the device list.
2009-10-04 23:36:06 -07:00
Tambet Ingo
715ddd2045 core: Make iptables path configurable
On some systems, it's located in different path...
2009-10-01 14:31:09 +03:00
Dan Williams
963d055abf wired: defer carrier-off events while connected by a few seconds
Don't immediately tear down an active wired connection when the carrier
flips to off, but wait a few seconds for it to come back before breaking
the user's network.
2009-09-28 14:12:09 -07:00
Dan Williams
a2c1256215 wired: link_timeout_id -> supplicant_timeout_id 2009-09-28 12:57:18 -07:00
Dan Williams
0bbf8c5307 ethernet: make initial carrier check synchronous; require carrier for connection takeover (lp#417719) 2009-09-28 11:09:31 -07:00
Dan Williams
ddce707d67 netlink: add blocking function to get carrier state 2009-09-28 10:50:22 -07:00
Dan Williams
aa7bb93968 core: spacing fix 2009-09-28 10:49:55 -07:00
Dan Williams
cde6af87a8 Merge commit 'origin/master' into cert-paths 2009-09-19 07:01:49 -07:00
Dan Williams
e4ed9764b5 libnm-util: deprecate GSM PUK property
Unused anyway, and PUK is dangerous enough that it should be handled
by the client explicitly and not by NM.
2009-09-18 17:08:30 -07:00
Dan Williams
c134460c9f Merge commit 'origin/master' into cert-paths 2009-09-18 09:09:03 -07:00
Dan Williams
99fb844657 core: device disconnection cleanups
Return an error when trying to disconnect an already-disconnected
or deactivated device.
2009-09-18 09:05:11 -07:00
Alexander Sack
2be94b44c3 core: implement manual disconnect feature
In the past networkmanager did not allow to manually disconnect devices.

Manually disconnected devices will not be automatically reconnected until one
of the following events occur:
 1. user activates a connection for the currently disconnected device
 2. network manager awakes from hibernate/suspend
 3. network manager is restarted (e.g. reboot)

Add a Disconnect method to generic NMDevice dbus interface; set a new private
autoconnect_inhibit flag if Disconnect method is called through dbus.
Based on this auto activation for devices gets inhibited until one
of the above events occur.
2009-09-18 17:06:48 +02:00