Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
The VPN support functionality is moved into connman-vpnd.
|
|
|
|
The VPN needs to be able to call the provider disconnect.
|
|
|
|
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.
|
|
|
|
This allows the correct output when the log functions
are used from separate vpn daemon.
|
|
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.
|
|
Done so that connman_ipaddress_* functions can be used from
separate vpn daemon.
|
|
|
|
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.
|
|
|
|
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.
|
|
If the socket creation failed, continue with the next server.
|
|
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.
|
|
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).
|
|
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
|
|
When a socket() has failed and a negative file descriptor has been set,
close() cannot accept a negative number as a parameter.
|
|
Fix error code for __connman_error_failed
|
|
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.
|
|
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.
|
|
|
|
The socket was not closed when the sendto failed.
|
|
|
|
The socket was not closed when err < 0 is true.
|
|
If service settings cannot be loaded, then skip that service.
Thanks for Felipe Tonello for reporting the issue.
|
|
|
|
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.
|
|
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.
|
|
Instead start using enum connman_service_type directly.
|
|
|
|
|
|
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.
|
|
The match_all will be expressed through CONNMAN_SESSION_TYPE_UNKNOWN.
The 'no match' case happens when allowed_bearers is NULL.
|
|
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.
|
|
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.
|
|
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.
|
|
There is no point in iterating over the list when we always
pick the first element in the list.
|
|
We want to reuse this code snippet for the error case in
__connman_session_create() too.
|
|
The CreateSession D-Bus call should be marked as async call in order
to allow the session core to defer the response.
|
|
|
|
This is needed if manually configured addresses were used and later
DHCP was taken into use. If the manually configured IP information
(address, netmask and gateway) and the information given by DHCP is the
same, DHCP will not set the IP address to the interface.
|
|
|
|
Connman OpenVPN
OpenVPN.TLSAuth --tls-auth <file> [<direction>]
OpenVPN.TLSAuthDir optional <direction> argument to '--tls-auth'
Since 'OpenVPN.TLSAuthDir' contains the optional <direction> argument for
'OpenVPN.TLSAuth', handle them separately. The special handling is
identified by setting openvpn command line argument to NULL.
|
|
Connman OpenVPN
OpenVPN.NSCertType --ns-cert-type <client|server>
OpenVPN.AskPass --askpass <file>
OpenVPN.AuthNoCache --auth-nocache
|
|
|
|
Fixes BMC#25846
|
|
By default, both stdout and syslog messages go to the systemd journal,
which results in duplicate messages being logged.
Thanks to Vinicius Costa Gomes for pointing out this problem.
|