Commit Graph

7207 Commits

Author SHA1 Message Date
Pat Suwalski
db3f91deae system-settings: allow glob (*) in no-auto-default config file option
When * is used instead of MAC addresses' list, no-auto-default option
is valid for all interfaces.
2010-09-27 11:08:03 +02:00
Jiří Klimeš
facf6b176f core: add Version property to org.freedesktop.NetworkManager interface 2010-09-27 10:34:56 +02:00
Jiří Klimeš
358261ccd9 core: read initial MAC address on startup; reset to this MAC when disconnecting
Previously, NM reset permanent MAC to an interface while disconnecting. That
basically ignored MAC addresses set before NM started managing the interface.
Now, the initial MAC address is remembered and set back to the interface when
disconnecting.
2010-09-27 09:53:51 +02:00
Dan Williams
b80f31e191 trivial: typo fixes
Sent by a Debian user to Michael Biebl.  No other attribution
information available.  Thanks Debian user!
2010-09-25 00:34:10 -05:00
Dan Williams
9e2ec0b7a1 system-settings: fix use-after-free causing crashes when hostname is empty
Should be returning NULL here since the actual hostname is returned in the
for() loop if the plugin supports hostnames.  But if the plugin for some
reason returns an empty string (which they aren't supposed to do) then
hostname would be left assigned to an already-freed value, which was then
returned to higher layers.

==12331== Invalid free() / delete / delete[]
==12331==    at 0x4024B3A: free (vg_replace_malloc.c:366)
==12331==    by 0x448BFC5: g_free (gmem.c:191)
==12331==    by 0x43E0E05: value_free_string (gvaluetypes.c:268)
==12331==    by 0x43DC587: g_value_unset (gvalue.c:276)
==12331==    by 0x80B297F: notify (nm-sysconfig-settings.c:229)
==12331==    by 0x43C64E7: g_cclosure_marshal_VOID__PARAM (gmarshal.c:531)
==12331==    by 0x43B78B8: g_type_class_meta_marshal (gclosure.c:878)
==12331==    by 0x43B9251: g_closure_invoke (gclosure.c:767)
==12331==    by 0x43CD239: signal_emit_unlocked_R (gsignal.c:3178)
==12331==    by 0x43CEDB3: g_signal_emit_valist (gsignal.c:2981)
==12331==    by 0x43CF255: g_signal_emit (gsignal.c:3038)
==12331==    by 0x43BD630: g_object_dispatch_properties_changed (gobject.c:801)
==12331==  Address 0x479f208 is 0 bytes inside a block of size 1 free'd
==12331==    at 0x4024B3A: free (vg_replace_malloc.c:366)
==12331==    by 0x448BFC5: g_free (gmem.c:191)
==12331==    by 0x80B1A08: nm_sysconfig_settings_get_hostname (nm-sysconfig-settings.c:280)
==12331==    by 0x80B27C7: get_property (nm-sysconfig-settings.c:1415)
==12331==    by 0x43BC707: g_object_get_property (gobject.c:935)
==12331==    by 0x80B288D: notify (nm-sysconfig-settings.c:225)
==12331==    by 0x43C64E7: g_cclosure_marshal_VOID__PARAM (gmarshal.c:531)
==12331==    by 0x43B78B8: g_type_class_meta_marshal (gclosure.c:878)
==12331==    by 0x43B9251: g_closure_invoke (gclosure.c:767)
==12331==    by 0x43CD239: signal_emit_unlocked_R (gsignal.c:3178)
==12331==    by 0x43CEDB3: g_signal_emit_valist (gsignal.c:2981)
==12331==    by 0x43CF255: g_signal_emit (gsignal.c:3038)
2010-09-24 18:25:45 -05:00
Dan Williams
596cf1a232 wifi: use PMKSA caching with PEAP-GTC (rh #615032) (rh #636877)
We don't want to require a full 802.1x reauth when using OTP tokens
and roaming between APs in the same ESS, since that takes a long time
(user has to find the token and type in the code).
2010-09-24 14:12:58 -05:00
Dan Williams
8199c7275b dns: warn that the BIND plugin is experimental
It's still got a bunch of issues that need debugging, like when VPN
nameservers exist but no domain and thus not doing split DNS, sometimes
hosts outside the VPN don't resolve correctly, which was previously
masked by having the non-VPN nameservers in /etc/resolv.conf where
glibc would erroneously use them instead of asking BIND.  To be fixed
in a subsequent patch.

The dnsmasq plugin seems to work great though.
2010-09-22 16:32:00 -05:00
Dan Williams
a211fadce0 Merge remote branch 'origin/cachingdns'
Caching DNS with dnsmasq works well enough to merge for now.  THere
are still some issues with the BIND plugin because BIND is god-awful
unecessarily complex so we'll disable that in a further commit.
2010-09-22 16:19:28 -05:00
Dan Williams
06bd99f617 dns: write only 127.0.0.1 to resolv.conf when caching
If all nameservers are listed in resolv.conf, glibc apparently
tries them all (even if 'options rotate' isn't specified??).  Leading
to queries for internet hosts being directed to VPN-specific DNS
servers in split-DNS situations.  I've verified this with wireshark;
I see queries going out over the tunnel to VPN nameservers for
non-internal addresses, while BIND itself never logs anything about
queries to VPN nameservers for that same address.  Thus the only
thing left is to blame glibc...
2010-09-21 00:18:15 -05:00
Dan Williams
20acb482c5 dns: allow random source ports for BIND caching DNS
Despite most guides saying that without restricting to port 53 queries
won't get through a firewall, I cannot make it work with this option.
DNS queries through a WRT54G just time out even when the WRT54G isn't
caching anything itself (ie, explicit upstream nameservers are the
forwarders in the bind config).
2010-09-21 00:08:01 -05:00
Dan Williams
14a358f604 core: be more robust to config file syntax issues
Clearly we should be stripping spaces off plugin names if that's what
the user happened to type.
2010-09-20 14:27:06 -05:00
Dan Williams
6e287e4179 Merge remote branch 'origin/master' into rm-userset 2010-09-16 17:10:49 -05:00
Dan Williams
e0a2aeaa7c dns: add BIND9 local caching nameserver support
For some reason split DNS doesn't work yet (all queries are directed
to the VPN nameserver if a VPN is active) but it otherwise works.
2010-09-16 15:31:47 -05:00
Dan Williams
1e33d1e906 dns: remove unused Chromium bits
This was supposed to hook up to the bits Adam Langley did last year
for his local-dns-cache DBus service, but I misunderstood the
architecture.  It was a separate service, not Chromium itself.  But
it's unclear what happened to his local-dns-cache since the project
doesn't seem to have any commits in a year and I'm unsure if it's
actually being used.  So remove this stuff for now.
2010-09-15 10:25:11 -05:00
Dan Williams
1da4a11ce5 dns: (dnsmasq) fix handling of multiple DNS servers in non-split configs 2010-09-14 23:55:41 -05:00
Dan Williams
57f6feb102 dns: only write out new DNS config if it really changed
Use a pseudo-hash to quickly check whether the DNS config has really
changed or not.  This is certainly better than the 500 line patch I
did then scrapped in favor of this approach... yay.  This helps ensure
that we don't kill then respawn caching DNS servers more often than
we have to.
2010-09-14 23:41:33 -05:00
Dan Williams
958024cb68 bluetooth: requery default adapter when Bluez actually starts 2010-09-13 11:02:26 -05:00
Dan Williams
9d0775448c dns: use VPN nameservers first even if no domain was given
If the VPN client didn't provide a domain we still want to use the
VPN nameservers first, we just can't do split DNS.  Also use
--strict-order to ensure VPN nameservers are always chosen first.
2010-09-12 23:16:25 -05:00
Dan Williams
a2982b5f7b dns: hook plugins into DNS updates and make dnsmasq plugin actually work 2010-09-12 22:25:30 -05:00
Dan Williams
4da443dc69 dns: first cut of a dnsmasq local caching plugin 2010-09-10 18:02:40 -05:00
Dan Williams
64b6cd1ebc core: add DNS plugin config options 2010-09-09 17:14:20 -05:00
Dan Williams
9b2b809aae core: rename NMNamedManager -> NMDnsManager 2010-09-07 22:08:18 -05:00
Dan Williams
e86ef05d84 wifi: ensure Enabled state is preserved regardless of rfkill (bgo #624479)
Previously the "Enable Wireless" state was somewhat tied to rfkill state,
in that when NM started up, rfkill state would take precedence over what
was listed in the state file, and if you rmmodded your wifi driver and
then modprobed it again after disabling wifi from the menu, wifi would
magically become re-enabled becuase rfkill state changed.

Fix that by creating a third wifi/wwan enable state that tracks the
actual user preference instead of just the rfkill state so that when
the user disables wifi it stays disabled, regardless of what happens
with rfkill.
2010-09-01 17:09:59 -05:00
Dan Williams
d9c2755cfc core: clean up avahi-autiopd D-Bus proxy on exit 2010-08-31 15:47:16 -05:00
Dan Williams
a33843ac3d core: listen to UPower for suspend/resume signals
This means you don't need pm-utils anymore, and that gnome-power-manager
doesn't need to poke NM explicitly for suspend/resume operations.
The old explicit sleep/wake request is still around for pm-utils or
gpm to use, but NM will listen for UPower events and act on them
regardless of what pm-utils or gpm do.
2010-08-31 15:45:55 -05:00
Dan Williams
4f2266de64 settings: simplify NMSysconfigConnection disposal
Use GHashTableIters again.
2010-08-27 12:49:01 -05:00
Dan Williams
25a59910b9 settings: simplify nm_sysconfig_connection_get_session_access_list()
Clearer and fewer LOC to use GHashTableIter here.
2010-08-27 12:44:57 -05:00
Dan Williams
4c23ac3c6c settings: remove some unused code
priv->access_list is allocated during object initialization and
only destroyed when the object is destroyed, so it will always
be valid over the lifetime of the object.  Thus no need to check
if it exists or not.
2010-08-27 12:39:47 -05:00
Dan Williams
c5e06c16ce settings: fix memory leak
The GSList returned by nm_session_manager_get_sessions() must be
freed by the caller.  s/connection/self to make it clear what
object is actually being handled here too.
2010-08-27 12:36:35 -05:00
Dan Williams
423a319af0 trivial: whitespace & style fixes 2010-08-27 12:20:04 -05:00
Dan Williams
e40511d2e9 trivial: style fix 2010-08-27 12:17:31 -05:00
Dan Williams
b2fdf36d8d trivial: add modelines to session tracker files 2010-08-27 12:16:03 -05:00
Dan Williams
cdcf74da89 settings: simplify initial CK session retrieval
Get rid of the InitInfo struct since it's so small and just store
that information in the main object's private data; less complicated.
Also fix an edge-case where the init-done signal would not get
emitted if CK wasn't tracking any sessions at the time.
2010-08-27 12:13:41 -05:00
Dan Williams
3697aa7d75 trivial: whitespace cleanup 2010-08-27 11:51:19 -05:00
Dan Williams
26327e7646 settings: simplify settings object registration
And fix a leak of the D-Bus manager too.
2010-08-26 18:11:46 -05:00
Dan Williams
e5c5622626 core: flatten connection listing from the settings service
While it may not reduce the LOC it saves a few memory allocations
and is somewhat less error prone since callers don't need to free
the returned lists.
2010-08-26 18:05:33 -05:00
Patrik Martinsson
9b54cb1ec6 dispatcher: add dhcp4-change and dhcp6-change events (bgo #563654)
New dispatcher events on DHCP lease changes.
2010-08-26 17:39:44 -05:00
Dan Williams
3945f75bda core: consolidate all permissions checking into main D-Bus interface
Moves the system settings permissions checking into the core service's
permissions checking, which at the same time enables 3-way permission
reporting (yes, no, auth) instead of the old yes/no that we had for
system settings permissions before.  This allows UI to show a lock
icon or such when the user could authenticate to gain the permission.

It also moves the wifi-create permissions' namespace to the main
namespace (not .settings) since they really should be checked before
starting a shared wifi connection, rather than having anything to do
with the settings service.
2010-08-26 14:26:12 -05:00
Dan Williams
022d8e665c Merge remote branch 'origin/master' into gsoc 2010-08-26 09:18:37 -05:00
Dan Williams
f917852de3 core: validate Enable/Disable WiFi and WWAN requests (rh #626337)
Since these were properties they are harder to validate the caller as
dbus-glib doesn't have any hooks before the property is set.  So we
install a low-level dbus filter function to catch property Set
requests before they get to dbus-glib and handle the property access
there.
2010-08-25 15:12:32 -05:00
Dan Williams
46afadc02c vpn: handle VPN service installation/removal dynamically (rh #489114) (lp:458595)
Use inotify to watch /etc/NetworkManager/VPN for new .name files and handle
their installation and removal on-the-fly instead of just at startup.
2010-08-17 15:05:00 -05:00
Dan Williams
c4db66c7ed vpn: fix refcounting of the VPN manager 2010-08-17 15:04:54 -05:00
Dan Williams
a5c15a2ca3 vpn: don't try to do stuff with a VPN connection that may not exist
If the activation of the VPN connection failed (like if its service
was not installed), it'll be NULL here.  Don't try to use it.
2010-08-17 15:04:50 -05:00
Dan Williams
6e7f9b4670 core: really fix polkit >= 0.97 this time 2010-08-17 09:36:14 -05:00
Daniel Gnoutcheff
6ebc201636 WIP: NMSysconfig: enforce access controls 2010-08-15 03:25:58 -04:00
Dan Williams
f0e8055cf9 core: fix builds with polkit >= 0.97
polkit_authority_get() is deprecated, should use
polkit_authority_get_sync() instead.
2010-08-13 13:18:58 -05:00
Zephaniah E. Loss-Cutler-Hull
d5468c8527 vpn: let plugins forbid VPN connections from getting the default route (bgo #621698)
Minor fixes and cleanups by dcbw.
2010-08-12 23:53:42 -05:00
Daniel Gnoutcheff
b0fb908e18 WIP: Adding ConsoleKit session tracking framework 2010-08-12 21:54:56 -04:00
Mathieu Trudel-Lapierre
d39fda7722 dhcp: don't fail with dhclient v3 2010-08-12 17:52:20 -05:00
Dan Williams
37c578a2a2 core: fix unmanaging of devices when quitting
When NM quits, we don't want to unmanage a device that has
an active connection and can take that connection over again when
NM starts back up.  This makes '/etc/init.d/NetworkManager restart'
work seamlessly.  All other devices get unmanaged so their
connection (and any dependent VPN connections or wpa_supplicant
processes) get terminated.  This bug caused active VPN connections
over wifi to be left running even when they didn't have IP
connectivity.

There were two bugs:

1) the NMDevice class implemented connection_match_config() for
all device subclasses, but only Ethernet devices can assume
connections at startup.  Thus the quit-time check passed for
active wifi devices too, and they weren't properly cleaned up

2) The logic for figuring out which devices to clean up after when
quitting was somewhat flawed; we want to default to unmanaging
devices and then skip that step for ones that meet specific
criteria.  Instead the code defaulted to leaving all devices active
at shutdown.
2010-08-11 17:31:25 -05:00