platform/upstream/connman.git
11 years agoTODO: systemd no longer log twice to syslog
Jukka Rissanen [Wed, 31 Oct 2012 09:05:58 +0000 (11:05 +0200)]
TODO: systemd no longer log twice to syslog

Fixed by 295cc8b57ce12257a9e90ea2e15e0d610e072e0a

11 years agosession_policy_ivi: Implement policy load function
Daniel Wagner [Tue, 13 Nov 2012 16:28:15 +0000 (17:28 +0100)]
session_policy_ivi: Implement policy load function

If config file should also be parsed and the values then stored in
the config object.

11 years agosession_policy_ivi: Watch for changes on policy files
Daniel Wagner [Wed, 14 Nov 2012 16:16:39 +0000 (17:16 +0100)]
session_policy_ivi: Watch for changes on policy files

Monitor changes on the config files. Either create, modify or destroy
them according the events we get from the inotify interface.

11 years agosession_policy_ivi: Add hash table to track idents
Daniel Wagner [Fri, 2 Nov 2012 16:26:22 +0000 (17:26 +0100)]
session_policy_ivi: Add hash table to track idents

Introduce the second hash table which tracks the config object lifetime
based on the file existens. The parsing of the file and creation of the
config object is part of the next patch.

11 years agosession_policy_ivi: Create session config
Daniel Wagner [Fri, 2 Nov 2012 16:26:21 +0000 (17:26 +0100)]
session_policy_ivi: Create session config

The policy data object is refcounted because the policy data
object can be created either through the session core or
from the file based policy. In order to avoid complex logic
which tries to figure out when to is safe to destroy the object
we just fall back to refcountig.

polich_hash is the owner of the policy object. When a object is
created it is stored there. The key is the identitfier. Since the
session core does not know about the identifier we introduce
an additional hash table which maps from session pointer to the policy
object.

11 years agosession_policy_ivi: Get SELinux context of session owner
Daniel Wagner [Fri, 2 Nov 2012 16:26:20 +0000 (17:26 +0100)]
session_policy_ivi: Get SELinux context of session owner

11 years agosession_policy_ivi: Add policy plugin for IVI
Daniel Wagner [Fri, 2 Nov 2012 16:26:19 +0000 (17:26 +0100)]
session_policy_ivi: Add policy plugin for IVI

Add only the empty 'framework'. In the following patches we add
step by step the implementation.

11 years agosession: Don't filter match all out
Daniel Wagner [Fri, 2 Nov 2012 16:26:18 +0000 (17:26 +0100)]
session: Don't filter match all out

If the user provides the match all rule we should add the policy
bearer to the result.

11 years agosession: Store user AllowedBearers configuration
Daniel Wagner [Fri, 2 Nov 2012 16:26:17 +0000 (17:26 +0100)]
session: Store user AllowedBearers configuration

Don't overwrite the user provided AllowedBearers
configuration. Instead just store it at session level. So we always
will apply the bearer filter on the user input.

Obviously, this might need some more improvements on how we want
to handle the AllowedBearers behavior when the policy plugin and
the application provide a configuration. For exmaple should
we update the AllowedBearers if the policy changes or just always
show only the user input. This patch is not perfect but it
improves the situation clearly.

11 years agosession: Factor out set default config helper
Daniel Wagner [Tue, 13 Nov 2012 08:01:48 +0000 (09:01 +0100)]
session: Factor out set default config helper

Whenever a configuration gets invalid (e.g. a configuration
is removed) then we need to be able to drop back to the
default configutation.

11 years agosession: Export session parsing functions
Daniel Wagner [Fri, 2 Nov 2012 16:26:16 +0000 (17:26 +0100)]
session: Export session parsing functions

We want to reuse these functions.

11 years agosession: Add getter for session owner
Daniel Wagner [Fri, 2 Nov 2012 16:26:15 +0000 (17:26 +0100)]
session: Add getter for session owner

11 years agosession: Add destroy function for plugins
Daniel Wagner [Wed, 14 Nov 2012 13:48:57 +0000 (14:48 +0100)]
session: Add destroy function for plugins

The error handling can get easily get pretty hairy, e.g.
reallocating memory for allowed_bearers. If we hit this situation
we allow the plugin to shutdown the session. That is consistent
with what we do when there is a problem while creating a new
session.

11 years agosession: Add sessions config update function
Daniel Wagner [Fri, 2 Nov 2012 16:26:14 +0000 (17:26 +0100)]
session: Add sessions config update function

Give a policy plugin a way to inform the session core that
some of the config values have changed.

This could be done in a more clever way, e.g. figure out only
to update the necessary info entries but we keep it for now
as simple and assume everthing has changed.

11 years agodbus: Add SELinux support
Daniel Wagner [Fri, 2 Nov 2012 16:26:13 +0000 (17:26 +0100)]
dbus: Add SELinux support

ConnMan needs to identify application in a secure way when they are
using the Session API. The current D-Bus server implemention supports
two types of LSM, POSIX and SELinux. In order to support SMACK or
TOMOYO the D-Bus code base needs to be patch. This is the initial work
to support at least POSIX and SELinux. Maybe in the future we are able
to support also the other LSMs.

The idea behind gsec is to keep the LSM related code together in one
directory. The API introduces in this patch is not any way final. It
will need some more time figuring out how are able to intregrate this
in a nice way.

The current API introduces g_sec_get_selinux_label() which will return
the SELinux context. The function will issuing a
GetConnectionSELinuxSecurityContext method call.

Note, that this function is not documented in the D-Bus
specification. See for more details the source code dbus/bus/drivers.c
and dbus/bus/selinux.c in the D-Bus reference implementation.

11 years agoinotify: Watch out for files moved to/from watched dirs
Daniel Wagner [Tue, 13 Nov 2012 12:50:03 +0000 (13:50 +0100)]
inotify: Watch out for files moved to/from watched dirs

When we do not watch watch for IN_MOVED_TO or IN_MOVED_FROM we can
easily inconsistent. The user creates a file and moves it then
from the watched directory. We wouldn't see this change and therefore
keep the configuration. That is a rather anoying behavoir
for the policy plugin.

11 years agoinotify: Move inotify code into its own file
Daniel Wagner [Fri, 2 Nov 2012 16:26:12 +0000 (17:26 +0100)]
inotify: Move inotify code into its own file

The inotify code will be used by the core (config.c) and the session
policy plugin. We introduce a new API for file modifcation
notifcation.

We move the factored out code part from the last patch into a new file
and also change the inotify code so that it allows to monitor not only
STORAGEDIR. When registering a new observer, the callee has to tell
which directory should be watched. inotify.c will group the observers
together.

11 years agoconfig: Factor out config inotify handler
Daniel Wagner [Fri, 2 Nov 2012 16:26:11 +0000 (17:26 +0100)]
config: Factor out config inotify handler

The inotify code can be reused. So before we introduce a new generic
inotify API, let's factor out in order to simplify the review process.

11 years agobuild: No FORTIFY flags when building without optimization
Daniel Wagner [Fri, 2 Nov 2012 16:26:10 +0000 (17:26 +0100)]
build: No FORTIFY flags when building without optimization

When building with --disable-optimiziation we need to make
sure the compiler flags do not include -O0 and FORTITFY when compiling
the resolv.h header file.

11 years agoprovider: Set the state properly when removing provider
Jukka Rissanen [Fri, 23 Nov 2012 11:41:22 +0000 (13:41 +0200)]
provider: Set the state properly when removing provider

We need to set the provider into idle state when removing,
otherwise the default route will not be set properly after
provider removal.

Fixes BMC#25658

11 years agoopenvpn-script: Removed extra empty line
Jukka Rissanen [Fri, 23 Nov 2012 11:39:33 +0000 (13:39 +0200)]
openvpn-script: Removed extra empty line

11 years agodoc: Clarify UserRoutes and ServerRoutes documentation
Jukka Rissanen [Fri, 23 Nov 2012 11:39:32 +0000 (13:39 +0200)]
doc: Clarify UserRoutes and ServerRoutes documentation

As the UserRoutes is to be set by the user, then tell that
in the documentation.
Clarify also what the ServerRoutes mean.

11 years agoopenvpn: Set default options if user has not supplied a config file
Jukka Rissanen [Thu, 22 Nov 2012 12:05:19 +0000 (14:05 +0200)]
openvpn: Set default options if user has not supplied a config file

If the user is using config file option, then do not set the optional
default options. All the mandatory options needed for connman and
openvpn interaction are still set in command line.

11 years agoopenvpn: Allow configuration via user supplied config file
Jukka Rissanen [Thu, 22 Nov 2012 12:05:18 +0000 (14:05 +0200)]
openvpn: Allow configuration via user supplied config file

Fixes BMC#25866

11 years agoopenvpn: Remove obsolete --tls-client option
Jukka Rissanen [Thu, 22 Nov 2012 12:05:17 +0000 (14:05 +0200)]
openvpn: Remove obsolete --tls-client option

The --client option activates the --tls-client option
so we can remove the useless one.

11 years agodevice: Include stdlib.h
Daniel Wagner [Fri, 23 Nov 2012 12:16:25 +0000 (13:16 +0100)]
device: Include stdlib.h

gcc complains about missing definition for malloc.

11 years agovpn: Remove unused variable
Daniel Wagner [Fri, 23 Nov 2012 12:15:38 +0000 (13:15 +0100)]
vpn: Remove unused variable

11 years agoipconfig: Do not check device if interface name is not set
Jukka Rissanen [Thu, 22 Nov 2012 13:02:55 +0000 (15:02 +0200)]
ipconfig: Do not check device if interface name is not set

If the interface name is not set, then it is no use
checking if the interface would be ignored.

The interface name is not set if the interface is being
taken down and we get NEWLINK message with NULL interface.

Fixes BMC#25865

11 years agoselinux: Add Type Enforcement rule compilation
Jukka Rissanen [Mon, 12 Nov 2012 12:07:58 +0000 (14:07 +0200)]
selinux: Add Type Enforcement rule compilation

The SELinux rules are needed for VPN. They allow various vpn
clients to send notifications to connman-vpnd via net.connman.Task
dbus interface if the connman processes are run under systemd
and the system is in enforcing mode.

11 years agomain: Plugin and provider cleanup order fixed
Jukka Rissanen [Mon, 12 Nov 2012 12:07:57 +0000 (14:07 +0200)]
main: Plugin and provider cleanup order fixed

We must cleanup the plugin first before cleaning up the provider
because the vpn plugin needs providers from provider hash.

11 years agovpn: Go to failure state if vpn information cannot be found
Jukka Rissanen [Mon, 12 Nov 2012 12:07:56 +0000 (14:07 +0200)]
vpn: Go to failure state if vpn information cannot be found

11 years agoopenconnect-script: Print errors to syslog instead of stderr
Jukka Rissanen [Mon, 12 Nov 2012 12:07:55 +0000 (14:07 +0200)]
openconnect-script: Print errors to syslog instead of stderr

Use syslog for error printing because normally the stderr
goes to /dev/null and we do not see the errors.

11 years agoopenvpn-script: Print errors to syslog instead of stderr
Jukka Rissanen [Mon, 12 Nov 2012 12:07:54 +0000 (14:07 +0200)]
openvpn-script: Print errors to syslog instead of stderr

Use syslog for error printing because normally the stderr
goes to /dev/null and we do not see the errors.

11 years agovpnd: Quit if no VPN configurations are found
Jukka Rissanen [Mon, 12 Nov 2012 12:07:53 +0000 (14:07 +0200)]
vpnd: Quit if no VPN configurations are found

11 years agovpnd: Add function that quits vpnd if no VPN configurations are found
Jukka Rissanen [Mon, 12 Nov 2012 12:07:52 +0000 (14:07 +0200)]
vpnd: Add function that quits vpnd if no VPN configurations are found

11 years agovpn-plugin: Set state correctly if vpn client process cannot be started
Jukka Rissanen [Mon, 12 Nov 2012 12:07:51 +0000 (14:07 +0200)]
vpn-plugin: Set state correctly if vpn client process cannot be started

11 years agovpnd: Make sure provider is taken to ready state
Jukka Rissanen [Mon, 12 Nov 2012 12:07:50 +0000 (14:07 +0200)]
vpnd: Make sure provider is taken to ready state

If the connman_inet_ifup() says the interface is already UP,
then it is possible that we might not get a call to vpn_newlink().
That would be really bad as the provider would then never go to
ready state. So in this case we manually call vpn_newlink() to
take the interface UP. If the newlink was called before our call,
then our manual call will be ignored.

11 years agopptp: Remember the connection password
Jukka Rissanen [Mon, 12 Nov 2012 12:07:49 +0000 (14:07 +0200)]
pptp: Remember the connection password

11 years agol2tp: Remember the connection password
Jukka Rissanen [Mon, 12 Nov 2012 12:07:48 +0000 (14:07 +0200)]
l2tp: Remember the connection password

11 years agovpn-provider: Remove vpn provider from storage when needed
Jukka Rissanen [Mon, 12 Nov 2012 12:07:47 +0000 (14:07 +0200)]
vpn-provider: Remove vpn provider from storage when needed

11 years agovpn-provider: Send ConnectionRemoved signal when needed
Jukka Rissanen [Mon, 12 Nov 2012 12:07:46 +0000 (14:07 +0200)]
vpn-provider: Send ConnectionRemoved signal when needed

11 years agoprovider: Do not remove the provider as it would remove it from storage
Jukka Rissanen [Mon, 12 Nov 2012 12:07:45 +0000 (14:07 +0200)]
provider: Do not remove the provider as it would remove it from storage

11 years agostorage: Add function to remove provider files
Jukka Rissanen [Mon, 12 Nov 2012 12:07:44 +0000 (14:07 +0200)]
storage: Add function to remove provider files

11 years agoprovider: Add callback when creating vpn provider
Jukka Rissanen [Mon, 12 Nov 2012 12:07:43 +0000 (14:07 +0200)]
provider: Add callback when creating vpn provider

Because the vpnd Create() in manager API only creates and does
not connect the vpn, we must do the connect part after the
vpn is created. This requires a callback which is called when
the connection is established. Eventually this patch becomes
obsolete because the CreateProvider() connman API is deprecated.

11 years agovpn-provider: Send ConnectionAdded signal when needed
Jukka Rissanen [Mon, 12 Nov 2012 12:07:42 +0000 (14:07 +0200)]
vpn-provider: Send ConnectionAdded signal when needed

11 years agoprovider: Removed the connect part from the create() function
Jukka Rissanen [Mon, 12 Nov 2012 12:07:41 +0000 (14:07 +0200)]
provider: Removed the connect part from the create() function

The connect operation is done separately from create operation
in connman-vpnd so change the function to reflect that.

11 years agovpn: Free allocated ipconfig struct
Jukka Rissanen [Mon, 12 Nov 2012 12:07:40 +0000 (14:07 +0200)]
vpn: Free allocated ipconfig struct

11 years agoipconfig: Add ipconfig unref function
Jukka Rissanen [Mon, 12 Nov 2012 12:07:39 +0000 (14:07 +0200)]
ipconfig: Add ipconfig unref function

11 years agomanager: Deprecating connect/remove provider API
Jukka Rissanen [Mon, 12 Nov 2012 12:07:38 +0000 (14:07 +0200)]
manager: Deprecating connect/remove provider API

The VPN configuration API is provided by connman-vpnd instead
of connmand.

11 years agovpn: Add preliminary agent support
Jukka Rissanen [Mon, 12 Nov 2012 12:07:37 +0000 (14:07 +0200)]
vpn: Add preliminary agent support

11 years agoagent: Split agent code into generic and service specific parts
Jukka Rissanen [Mon, 12 Nov 2012 12:07:36 +0000 (14:07 +0200)]
agent: Split agent code into generic and service specific parts

11 years agovpn: Introduce config file for vpnd
Jukka Rissanen [Mon, 12 Nov 2012 12:07:35 +0000 (14:07 +0200)]
vpn: Introduce config file for vpnd

11 years agodoc: Example configuration file for vpnd
Jukka Rissanen [Mon, 12 Nov 2012 12:07:34 +0000 (14:07 +0200)]
doc: Example configuration file for vpnd

11 years agovpn: Hash provider data using the ident instead of path
Jukka Rissanen [Mon, 12 Nov 2012 12:07:33 +0000 (14:07 +0200)]
vpn: Hash provider data using the ident instead of path

Needed as sometimes we do not know the path but know the ident.

11 years agovpnd: Add -r option which enables route handling in vpnd
Jukka Rissanen [Mon, 12 Nov 2012 12:07:32 +0000 (14:07 +0200)]
vpnd: Add -r option which enables route handling in vpnd

By default routes are handled by connman daemon.

11 years agovpn: Resolve vpn hostname if necessary
Jukka Rissanen [Mon, 12 Nov 2012 12:07:31 +0000 (14:07 +0200)]
vpn: Resolve vpn hostname if necessary

11 years agoprovider: Refactor server and user route handling
Jukka Rissanen [Mon, 12 Nov 2012 12:07:30 +0000 (14:07 +0200)]
provider: Refactor server and user route handling

The server and user route handling is refactored in order to
reflect the vpn dbus API changes. The routes are now array of
dicts in dbus API.

11 years agoprovider: Initially provider ipconfigs are now OFF
Jukka Rissanen [Mon, 12 Nov 2012 12:07:29 +0000 (14:07 +0200)]
provider: Initially provider ipconfigs are now OFF

The ipconfig is marked as fixed when IP address is set to
that ipconfig.

11 years agoplugin: Add VPN plugin that will interact with vpnd
Jukka Rissanen [Mon, 12 Nov 2012 12:07:28 +0000 (14:07 +0200)]
plugin: Add VPN plugin that will interact with vpnd

11 years agoprovider: Support functions added
Jukka Rissanen [Mon, 12 Nov 2012 12:07:27 +0000 (14:07 +0200)]
provider: Support functions added

11 years agoprovider: Remove functionality that is no longer used
Jukka Rissanen [Mon, 12 Nov 2012 12:07:26 +0000 (14:07 +0200)]
provider: Remove functionality that is no longer used

The VPN support functionality is moved into connman-vpnd.

11 years agoprovider: Add more driver interface functions needed by vpnd plugin
Jukka Rissanen [Mon, 12 Nov 2012 12:07:25 +0000 (14:07 +0200)]
provider: Add more driver interface functions needed by vpnd plugin

11 years agoprovider: Provider disconnect function made available to plugin
Jukka Rissanen [Mon, 12 Nov 2012 12:07:24 +0000 (14:07 +0200)]
provider: Provider disconnect function made available to plugin

The VPN needs to be able to call the provider disconnect.

11 years agotest: New VPN test script that connect to connman-vpnd
Jukka Rissanen [Mon, 12 Nov 2012 12:07:23 +0000 (14:07 +0200)]
test: New VPN test script that connect to connman-vpnd

11 years agotest: Renamed old VPN scripts
Jukka Rissanen [Mon, 12 Nov 2012 12:07:22 +0000 (14:07 +0200)]
test: Renamed old VPN scripts

Renamed connect-vpn to connect-provider and
disconnect-vpn to remove-provider

In order to not confuse the user, change the name of the old
vpn connect/disconnect script. Now the name of the script
reflects the name of the manager dbus api.
The connect-provider will use the old ConnectProvider
manager dbus interface instead of directly connecting
to connman-vpnd.

11 years agovpn: New vpn daemon that handles vpn connections and clients
Jukka Rissanen [Mon, 12 Nov 2012 12:07:21 +0000 (14:07 +0200)]
vpn: New vpn daemon that handles vpn connections and clients

11 years agolog: Give program name and version in log init
Jukka Rissanen [Mon, 12 Nov 2012 12:07:20 +0000 (14:07 +0200)]
log: Give program name and version in log init

This allows the correct output when the log functions
are used from separate vpn daemon.

11 years agodevice: Move device creation func into device.c
Jukka Rissanen [Mon, 12 Nov 2012 12:07:19 +0000 (14:07 +0200)]
device: Move device creation func into device.c

The device creation function should be part of device.c and
not inet.c. After this change the inet.c can be used by
separate vpn daemon.

11 years agoipconfig: Move IP address API into separate ipaddress.c file
Jukka Rissanen [Mon, 12 Nov 2012 12:07:18 +0000 (14:07 +0200)]
ipconfig: Move IP address API into separate ipaddress.c file

Done so that connman_ipaddress_* functions can be used from
separate vpn daemon.

11 years agodoc: VPN daemon API descriptions
Jukka Rissanen [Mon, 12 Nov 2012 12:07:17 +0000 (14:07 +0200)]
doc: VPN daemon API descriptions

11 years agocore: Use interface index instead of interface name
Patrik Flykt [Wed, 21 Nov 2012 14:25:11 +0000 (16:25 +0200)]
core: Use interface index instead of interface name

Service and network code use only interface indexes. Convert the rest of
the code using interface names to use interface indexes instead. The files
affected are:
   include/resolver.h
   src/connman.h
   src/dnsproxy.c
   src/resolver.c
   src/rtnl.c
   src/service.c
   src/tethering.c

As the network and service code used interface indexes, the interface
name had to be looked up via a SIOCGIFNAME ioctl when needed. If a service
was removed due to the interface and network being taken down, the lookup
wouldn't work. This caused DNS servers to be left behind with broken sockets
since removing the DNS servers was done using the interface name.

11 years agoTODO: Add WiFi plugin data struct handling task
Patrik Flykt [Fri, 16 Nov 2012 13:15:44 +0000 (15:15 +0200)]
TODO: Add WiFi plugin data struct handling task

11 years agodnsproxy: Use TCP connections only for the intended request
Patrik Flykt [Fri, 16 Nov 2012 12:32:58 +0000 (14:32 +0200)]
dnsproxy: Use TCP connections only for the intended request

The DNS proxy code creates and uses a TCP connection only for a single
request at a time. A TCP DNS proxy is added to the end of the server
list, but should not be used for generic requests as the connection
will be closed down after the response to the initial request. Any
other requests sent over the connection will silently disappear.

Add a check to ignore TCP DNS servers for generic lookups.

11 years agodnsproxy: Check the result of socket creation when resolving
Patrik Flykt [Mon, 19 Nov 2012 08:21:00 +0000 (10:21 +0200)]
dnsproxy: Check the result of socket creation when resolving

If the socket creation failed, continue with the next server.

11 years agodnsproxy: Check GIO channel for NULL before use
Patrik Flykt [Fri, 16 Nov 2012 12:12:46 +0000 (14:12 +0200)]
dnsproxy: Check GIO channel for NULL before use

Check GIO channel for NULL before using it. Also shut down the GIO channel
so that already pending input will not use the free'd structure.

12 years agodnsproxy: Close the UDP socket on error condition.
Forest Bond [Thu, 15 Nov 2012 15:23:50 +0000 (10:23 -0500)]
dnsproxy: Close the UDP socket on error condition.

The socket is created again on the next request.

Previously, an error condition only caused the event watch to be removed
and then added again on the next request to avoid processing spurious
error events.  But in some network environments, the error condition is
caused by an overly aggressive firewall that rejects our UDP packets and
sends an ICMP error packet indicating an unreachable host and/or port.
In some of these cases we can recover by using a different UDP source
port for outgoing requests (i.e. by closing and re-opening the socket).

12 years agoofono: Remove network if GPRS context is removed
Daniel Wagner [Thu, 15 Nov 2012 09:50:15 +0000 (10:50 +0100)]
ofono: Remove network if GPRS context is removed

Whenever the GPRS contextext is removed we need also to remove
the network object. Following sequence was observed:

  cm_update_attached() /huawei_1 Attached 1
  modem_changed() /huawei_1 Interfaces 0x07

Plugin creates network object and registers it at core

   cm_update_attached() /huawei_1 Attached 0
   service.c:run_auto_connect()
   set_property() /huawei_1 path /huawei_1/context1 org.ofono.ConnectionContext.Active

Obviously, the context is not attached at this point so we get an

   Failed to change property: /huawei_1/context1 org.ofono.ConnectionContext.Active: org.ofono.Error.NotAttached GPRS is not
attached

Fixes BMC#25725

12 years agoiptables: A file descriptor cannot be a nagative integer
Danny Jeongseok Seo [Tue, 13 Nov 2012 01:44:26 +0000 (10:44 +0900)]
iptables: A file descriptor cannot be a nagative integer

When a socket() has failed and a negative file descriptor has been set,
close() cannot accept a negative number as a parameter.

12 years agomanager: Fix negative error code
Danny Jeongseok Seo [Mon, 12 Nov 2012 11:34:42 +0000 (20:34 +0900)]
manager: Fix negative error code

Fix error code for __connman_error_failed

12 years agowifi: Handle D-Bus method call failure
Patrik Flykt [Fri, 9 Nov 2012 08:54:21 +0000 (10:54 +0200)]
wifi: Handle D-Bus method call failure

If -ECONNABORTED is received from the gsupplicant network disconnect
callback, it's an indication that the interface has already been
removed from wpa_supplicant side. This can happen due to a race condition
between rtnl and wpa_supplicant interface removal when a USB WiFi dongle
is pulled out.

The pointers given to the callback can no longer be trusted, don't touch
them in the callback. The have been removed by other code at this point.

12 years agosupplicant: Handle race condition on WiFi dongle removal
Patrik Flykt [Fri, 9 Nov 2012 08:54:20 +0000 (10:54 +0200)]
supplicant: Handle race condition on WiFi dongle removal

When a WiFi USB dongle is removed, both rtnl and wpa_supplicant will
be telling that the device is gone. While disconnecting and removing
an interface via gsupplicant, check that D-Bus doesn't give us an
error indicating the interface is already unregistered from D-Bus.

The gdb output looks like:
 (gdb) where
 #0  0x0042247c in network_connect (network=0x2) at plugins/wifi.c:1197
 #1  0x004228f0 in disconnect_callback (result=<value optimized out>,
 interface=0x0, user_data=0x99) at plugins/wifi.c:1254
 #2  0x0042b910 in network_remove_result (error=0x4d5458
 "org.freedesktop.DBus.Error.UnknownMethod", iter=<value optimized
 out>,
     user_data=<value optimized out>) at gsupplicant/supplicant.c:3593
 #3  0x0042ede0 in method_call_reply (call=0x4c6fd0,
 user_data=0x4d3be8) at gsupplicant/dbus.c:386
 #4  0x2abfddb4 in complete_pending_call_and_unlock () from
 /usr/lib/libdbus-1.so.3

Also don't call the same callback twice.

12 years agobridge: Close socket on error
Patrik Flykt [Tue, 13 Nov 2012 12:11:18 +0000 (14:11 +0200)]
bridge: Close socket on error

12 years agogdhcp: Fix resource leak
Danny Jeongseok Seo [Fri, 9 Nov 2012 08:21:24 +0000 (17:21 +0900)]
gdhcp: Fix resource leak

The socket was not closed when the sendto failed.

12 years agogweb: Check null before reference
Danny Jeongseok Seo [Fri, 9 Nov 2012 05:44:12 +0000 (14:44 +0900)]
gweb: Check null before reference

12 years agoinet: Fix resource leak
Danny Jeongseok Seo [Fri, 9 Nov 2012 05:46:27 +0000 (14:46 +0900)]
inet: Fix resource leak

The socket was not closed when err < 0 is true.

12 years agowifi: Skip service if there is error while loading its settings
Jukka Rissanen [Wed, 7 Nov 2012 08:14:05 +0000 (10:14 +0200)]
wifi: Skip service if there is error while loading its settings

If service settings cannot be loaded, then skip that service.
Thanks for Felipe Tonello for reporting the issue.

12 years agoREADME: Add information about network interface clearing at startup
Jukka Rissanen [Thu, 1 Nov 2012 12:41:55 +0000 (14:41 +0200)]
README: Add information about network interface clearing at startup

12 years agosession: Register session after policy plugin returned config
Daniel Wagner [Wed, 31 Oct 2012 09:33:39 +0000 (10:33 +0100)]
session: Register session after policy plugin returned config

Move the configuration part of __connman_session_create() into
session_create_cb(). With this change the policy plugin is able
to do async work to retrieve a configuration.

12 years agosession: Factor out user settings in __connman_session_create()
Daniel Wagner [Wed, 31 Oct 2012 09:33:38 +0000 (10:33 +0100)]
session: Factor out user settings in __connman_session_create()

In order to be able to pass the user configuration provided through from
the D-Bus Manager.SessionCreate() call to the callback we need to store
the configuration into a local data data structure. This data structure
can then be passed into the callback introduced later on.

12 years agosession: Remove struct connman_session_bearer
Daniel Wagner [Wed, 31 Oct 2012 09:33:37 +0000 (10:33 +0100)]
session: Remove struct connman_session_bearer

Instead start using enum connman_service_type directly.

12 years agosession: Handle no match case in parse_bearers()
Daniel Wagner [Wed, 31 Oct 2012 09:33:36 +0000 (10:33 +0100)]
session: Handle no match case in parse_bearers()

12 years agosession: parse_bearers() should check for invalid types
Daniel Wagner [Wed, 31 Oct 2012 09:33:35 +0000 (10:33 +0100)]
session: parse_bearers() should check for invalid types

12 years agosession: Rename session_parse_allowed_bearers() to parse_bearers()
Daniel Wagner [Wed, 31 Oct 2012 09:33:34 +0000 (10:33 +0100)]
session: Rename session_parse_allowed_bearers() to parse_bearers()

This function name was a source of confusion because in a later patch
we introduce connman_session_parse_allowed_bearers() which will
call parse_bearers(). With this change it should be more readable.

12 years agosession: Remove match_all from connman_session_bearer
Daniel Wagner [Wed, 31 Oct 2012 09:33:33 +0000 (10:33 +0100)]
session: Remove match_all from connman_session_bearer

The match_all will be expressed through CONNMAN_SESSION_TYPE_UNKNOWN.
The 'no match' case happens when allowed_bearers is NULL.

12 years agosession: Remove name variable from connman_session_bearer
Daniel Wagner [Wed, 31 Oct 2012 09:33:32 +0000 (10:33 +0100)]
session: Remove name variable from connman_session_bearer

The string is only used when appending the bearer to the D-Bus
message in append_allowed_bearers(). Let's use
__connman_session_type2string() in append_allowed_bearers(). This
saves a bit of memory.

12 years agosession: Add callback to policy create()
Daniel Wagner [Wed, 31 Oct 2012 09:33:31 +0000 (10:33 +0100)]
session: Add callback to policy create()

Instead returning directly a config when create() is called
in policy plugin, use a callback function for handing over a valid
configuration from the plugin to the session core. This prepares
support for asynchronous create call.

12 years agosession: Policy register should check callback existence
Daniel Wagner [Wed, 31 Oct 2012 09:33:30 +0000 (10:33 +0100)]
session: Policy register should check callback existence

Let's ensure that the policy plugin has all necessary callbacks
installed when connman_session_policy_register() is called. The rest
of the code expects that the create() and destroy() callbacks exist
whenever a plugin is used.

12 years agosession: Pick directly first policy in list
Daniel Wagner [Wed, 31 Oct 2012 09:33:29 +0000 (10:33 +0100)]
session: Pick directly first policy in list

There is no point in iterating over the list when we always
pick the first element in the list.

12 years agosession: Factor out memory release part of cleanup_session
Daniel Wagner [Wed, 31 Oct 2012 09:33:28 +0000 (10:33 +0100)]
session: Factor out memory release part of cleanup_session

We want to reuse this code snippet for the error case in
__connman_session_create() too.

12 years agomanager: Allow async CreateSession method call
Daniel Wagner [Wed, 31 Oct 2012 09:33:27 +0000 (10:33 +0100)]
manager: Allow async CreateSession method call

The CreateSession D-Bus call should be marked as async call in order
to allow the session core to defer the response.