Age | Commit message (Collapse) | Author | Files | Lines |
|
The hash table is now the owner of the service entry instead of
the service list.
|
|
When a new session is created we need to get the initial list
of services which match the session AllowedBearers criteria. As soon
the session is running add or removed services are tracked via the
notifier interface.
We concluded that exposing all the services is not really necessary
and therefore we are using currently two callbacks to get the initial
list. That exposes implementation details from session to service, that
is GSequence. We also need to expose the type 'struct service_entry'.
Instead doing so we are using an iterator and keep all the
implementation details in session.c.
|
|
tech_data is allocated on the stack and is therefore not initilized
with NULL.
|
|
Register an empty Release callback so that the message will be sent.
|
|
The session core needs to the know which kind of session
identification method has been selected in the plugin in order
to use the right iptables rules etc.
|
|
When removing the entry clear all references towards it.
|
|
Remember which session this struct service_entry belongs to when
removing the entries again.
|
|
The current situation is that a failed timeserver name resolution
removes the timeserver immediately from the list of used timeservers
and failing to connect to the nameserver IP address removes the
timeserver after a 2 second delay. Currently no mechanism exists to
re-create the list of nameservers once the list has been exhausted or
the more preferred timeservers have been removed from it.
This implementation combats both problems where less used timeservers
further away end up being used despite a more optimal closer one
becoming available as well as the problem of exhausting the
nameserver list. This is done by periodially waking up and checking
the timeserver in use. If the timeserver in use is not the most
preferred one or the list of timeservers is empty, the timeserver
list is recreated and the timeserver polling procedure is restarted.
|
|
xtables_find_match() returns two different kind of pointers.
The first type is pointing to the function pointer table loaded
via dlopen(). The second type is a copy (via plain malloc) of the
first type. xtables_find_match() marks the copies/clones with
m == m->next. So we need to free the struct xtables_match which
point back to themself.
Also fix the issue that we didn't handle multple match instances
at the same time.
The memory leak is only visible when having more than one match
of a kind.
|
|
The code was relevant only for Manager.ProvisionService method call
which was removed a long time ago.
|
|
Domains property was not updated when Domains.Configuration was changed.
If Domains.Configuration is for example set to empty when using DHCP,
the Domains property is to be updated with the value configured via DHCP.
Fixes BMC#26010
|
|
For VPNs, the index is available from provider, for other services from
network.
Fixes BMC#26009
|
|
Addresses and gateway for the service IPv4 property being used in the
system are available from ipconfig->system when the property is set to
'manual'.
|
|
|
|
When timeservers are set, recreate timeserver polling list only if the
service is the the default one.
|
|
Load and save TimeUpdates and TimezoneUpdates Clock API properties.
Clock API Timeservers property is already handled by the timeserver
code.
Fixes BMC#25988
|
|
If the time update method is manual, no NTP time servers are returned.
|
|
|
|
|
|
See RFC 3315 Chapter 18.1.2. Creation and Transmission of Confirm
Messages for details
|
|
This is required so that we can decide whether to send CONFIRM
or SOLICITATION message to server.
|
|
This is needed when implementing CONFIRM message decision logic.
|
|
MRD (Maximum Retransmission Duration) is the total duration of
of retransmission of the message. This will be used when sending
Confirm message.
|
|
|
|
If tethering is active when device is removed, then shutdown
tethering cleanly so that tether interface and bridge are
properly removed.
|
|
Currently tethering does not support IPv6 so its listener is
not created and is null. This will cause following output
connmand[18363]: src/dnsproxy.c:destroy_tcp_listener() index 31
(connmand:18363): GLib-CRITICAL **: g_io_channel_unref: assertion `channel != NULL' failed
connmand[18363]: src/dnsproxy.c:destroy_udp_listener() index 31
(connmand:18363): GLib-CRITICAL **: g_io_channel_unref: assertion `channel != NULL' failed
|
|
|
|
This came from Daniel when running ConnMan using valgrind
==20635== Conditional jump or move depends on uninitialised value(s)
==20635== at 0x49ECF4: get_name (dnsproxy.c:867)
==20635== by 0x49F3F7: parse_response (dnsproxy.c:1096)
==20635== by 0x49FD40: cache_update (dnsproxy.c:1410)
==20635== by 0x4A0FF3: forward_dns_reply (dnsproxy.c:1803)
==20635== by 0x4A15D9: udp_server_event (dnsproxy.c:1912)
==20635== by 0x3331E47A54: g_main_context_dispatch (gmain.c:2715)
==20635== by 0x3331E47D87: g_main_context_iterate.isra.24 (gmain.c:3290)
==20635== by 0x3331E48181: g_main_loop_run (gmain.c:3484)
==20635== by 0x44B600: main (main.c:670)
|
|
The received IP address was not freed.
|
|
Make sure we do not create a new transaction id for a message
when it needs to be retransmitted.
|
|
|
|
|
|
|
|
If user has disabled dnsproxy with -r option, then fallback to
user specified nameservers instead of using the Google one.
|
|
The listener_table can be NULL if we have started connman with -r
option. Because we return < 0 value to caller in this case,
the caller, e.g. the tethering code, has a possibility to change
its functionality, e.g. the tethering code can fall back to some
other DNS servers.
|
|
If the user has enabled persistent tethering mode in main.conf, then
try to activate tethering when technology is re-enabled, or we are
returning from offline mode, or after the device has rebooted.
|
|
|
|
|
|
|
|
The __connman_technology_add_interface() needs to be called
after we have created the technology which is done by rtnl->newlink()
callback. If this is done the old way, the ethernet devices
will not get their interfaces set properly.
|
|
|
|
|
|
|
|
The UID is fetched via org.freedesktop.DBus.GetConnectionUnixUser D-Bus
method call.
|
|
The helper struct will be used by a new dbus function which uses
a different callback signature. Therefore, we need to use a
void pointer for storing the callback.
|
|
Do not handle the small alloc failures because glib will abort
when memory is tight anyway.
|
|
Streamline the callback typedefs with the rest of the code.
|
|
Match all is expressed via CONNMAN_SERVICE_TYPE_UNKNOWN. An empty
list means no match.
|
|
Make sure we never try to cleanup when the hash table has
been destroyed. In this case all resources have been
freed already.
|
|
By calling __connman_session_cleanup() before __connman_plugin_cleanup()
we make sure all resources allocated can released in the correct order.
The code assumes after an successful allocation, free will always work
and therefore we double free allocated memory.
|