Patrik Flykt [Wed, 24 Apr 2013 10:24:16 +0000 (13:24 +0300)]
client: Add command mode and agent mode helper functions
In command mode remember history and do command completion, in agent mode
do neither. Enable saving and restoring of the readline prompt and add
the GIOChannel watch also for non-interactive mode.
Patrik Flykt [Wed, 24 Apr 2013 10:25:45 +0000 (13:25 +0300)]
client: Add agent command
Patrik Flykt [Thu, 25 Apr 2013 12:29:56 +0000 (15:29 +0300)]
client: Add support for registering and unregistering an agent
Add agent .h and .c files containing registering and unregistering functionality.
Patrik Flykt [Thu, 25 Apr 2013 13:49:16 +0000 (16:49 +0300)]
client: Enable method call return to exit or continue running
Enable a client method call return function to exit or continue running when
in non-interactive mode. When a connmanctl_dbus_method_return_func_t returns
-EINPROGRESS in non-interactive mode, the command line client is kept running
even after the method call has been processed.
The command line client needs to keep running after a successful Agent
registration in order to process Agent method calls. Also enabling tethering
in non-interactive mode needs the client executing until SSID, passphrase and
tethering mode have been set.
Patrik Flykt [Fri, 3 May 2013 09:53:52 +0000 (12:53 +0300)]
client: Make dbus helper function variable const char *
Jukka Rissanen [Mon, 29 Apr 2013 09:39:11 +0000 (12:39 +0300)]
dhcpv6: Add elapsed time option to sent messages
A mandatory elapsed time option was missing from the sent
DHCPv6 messages. See RFC 3315 chapter 22.9 for details.
Jukka Rissanen [Fri, 26 Apr 2013 12:51:33 +0000 (15:51 +0300)]
technology: Disable tethering when device disappears
If tethering is active when device is removed, then shutdown
tethering cleanly so that tether interface and bridge are
properly removed.
Jukka Rissanen [Fri, 26 Apr 2013 12:51:16 +0000 (15:51 +0300)]
dnsproxy: Do not unref g_io_channel if we know it is null
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
Patrik Flykt [Fri, 26 Apr 2013 10:57:39 +0000 (13:57 +0300)]
client: Fix up wrongly included typedef
Patrik Flykt [Fri, 26 Apr 2013 10:57:38 +0000 (13:57 +0300)]
client: Remove unneeded members from structs
Remove now obsolete memebers from the option struct and instead add a description
field. Also remove the now unnecessary include.
Patrik Flykt [Fri, 26 Apr 2013 10:57:37 +0000 (13:57 +0300)]
client: Move commands around to more logical places in the table
Marcel Holtmann [Sun, 28 Apr 2013 22:11:58 +0000 (15:11 -0700)]
core: Print timezone information if available from server
Jukka Rissanen [Fri, 26 Apr 2013 10:12:52 +0000 (13:12 +0300)]
dnsproxy: Conditional jump depends on uninitialized value
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)
Jukka Rissanen [Fri, 26 Apr 2013 09:54:25 +0000 (12:54 +0300)]
build: Install connmand and connman.conf manual pages
Jukka Rissanen [Fri, 26 Apr 2013 09:54:24 +0000 (12:54 +0300)]
man: Update connman.conf.5 manual page
Updated PreferredTechnologies description.
Added SingleConnectedTechnology, AllowedTetheringTechnologies and
PersistentTetheringMode descriptions.
Jukka Rissanen [Tue, 23 Apr 2013 10:06:31 +0000 (13:06 +0300)]
make: Add main.conf example file into dist tar ball
Jukka Rissanen [Fri, 26 Apr 2013 06:51:33 +0000 (09:51 +0300)]
dhcpv6: Fix memory leak
The received IP address was not freed.
Jukka Rissanen [Fri, 26 Apr 2013 06:51:32 +0000 (09:51 +0300)]
gdhcp: The last option in a message was not parsed correctly
If the desired option was last one in the message, then it was
lost because the remaining data calculation was wrong.
Jukka Rissanen [Fri, 26 Apr 2013 06:51:31 +0000 (09:51 +0300)]
dhcpv6: Retransmit a message with same transaction id
Make sure we do not create a new transaction id for a message
when it needs to be retransmitted.
Jukka Rissanen [Fri, 26 Apr 2013 06:51:30 +0000 (09:51 +0300)]
gdhcp: Do not change the transaction id if retransmitting
As requested in RFC 3315 chapter 15.1, a client MUST leave
the transaction id unchanged in retransmissions of a message.
Jukka Rissanen [Fri, 26 Apr 2013 06:51:29 +0000 (09:51 +0300)]
gdhcp: Add helper functions for message retransmission
Jukka Rissanen [Fri, 26 Apr 2013 06:51:28 +0000 (09:51 +0300)]
gdhcp: Add debug print for transaction id
Print transaction id of sent and received messages so that it is
easier to match the packets.
Patrik Flykt [Tue, 23 Apr 2013 10:05:33 +0000 (13:05 +0300)]
TODO: Update type definitions cleanup task
Patrik Flykt [Tue, 23 Apr 2013 10:05:32 +0000 (13:05 +0300)]
include: Remove definition for connman_uint16_t
Patrik Flykt [Tue, 23 Apr 2013 10:05:31 +0000 (13:05 +0300)]
network: Replace connman_uint16_t with uint16_t
Patrik Flykt [Tue, 23 Apr 2013 10:05:30 +0000 (13:05 +0300)]
include: Remove definition for connman_uint8_t
Patrik Flykt [Tue, 23 Apr 2013 10:05:29 +0000 (13:05 +0300)]
network: Replace connman_uint8_t with uint8_t
Patrik Flykt [Tue, 23 Apr 2013 10:05:28 +0000 (13:05 +0300)]
service: Replace connman_uint8_t with uint8_t
Jukka Rissanen [Tue, 23 Apr 2013 15:38:34 +0000 (18:38 +0300)]
tethering: Use fallback nameservers if dnsproxy is not in use
If user has disabled dnsproxy with -r option, then fallback to
user specified nameservers instead of using the Google one.
Jukka Rissanen [Tue, 23 Apr 2013 15:38:33 +0000 (18:38 +0300)]
dnsproxy: Return proper return code if listener_table is missing
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.
Jukka Rissanen [Thu, 25 Apr 2013 13:24:57 +0000 (16:24 +0300)]
technology: Auto start tethering if enabled and configured
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.
Jukka Rissanen [Thu, 25 Apr 2013 13:24:56 +0000 (16:24 +0300)]
main: Add support for PersistentTetheringMode configuration variable
Jukka Rissanen [Thu, 25 Apr 2013 13:24:55 +0000 (16:24 +0300)]
conf: Add description of PersistentTetheringMode
Jukka Rissanen [Thu, 25 Apr 2013 11:47:51 +0000 (14:47 +0300)]
ethernet: Add tethering support
Jukka Rissanen [Thu, 25 Apr 2013 11:47:50 +0000 (14:47 +0300)]
rtnl: Interface was added to technology too early
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.
Jukka Rissanen [Thu, 25 Apr 2013 11:47:49 +0000 (14:47 +0300)]
device: Add support functions needed by ethernet tethering
Jukka Rissanen [Thu, 25 Apr 2013 11:47:48 +0000 (14:47 +0300)]
main: Add support for AllowedTetheringTechnologies configuration variable
Jukka Rissanen [Thu, 25 Apr 2013 11:47:47 +0000 (14:47 +0300)]
conf: Add description of AllowedTetheringTechnologies
Patrik Flykt [Thu, 18 Apr 2013 12:28:22 +0000 (15:28 +0300)]
client: Trim off spaces from user input
After splitting the input string into components, create a new array holding
the non-zero substrings as input for the commands. Thus the input can start
and end as well as divide its separate parts by any number spaces.
Patrik Flykt [Thu, 18 Apr 2013 12:28:21 +0000 (15:28 +0300)]
client: Add command completion
Add completion support for connmanctl commands.
Patrik Flykt [Thu, 18 Apr 2013 07:00:00 +0000 (10:00 +0300)]
client: Follow coding style
Follow coding style and use __connmanctl prefix for the commands() function.
Patrik Flykt [Thu, 18 Apr 2013 06:39:17 +0000 (09:39 +0300)]
client: Add support for tethering
Add tethering support. For WiFi also set the SSID and passphrase if they
have been specified on the command line. Check that setting both SSID and
passphrase succeed before trying to enable tethering.
After successfully setting SSID and passphrase for WiFi, use the boolean
value parsing helper function return value to decide whether WiFi tethering
is to be enabled, disabled or not modified.
Fixes BMC#25886
Daniel Wagner [Thu, 18 Apr 2013 07:07:27 +0000 (09:07 +0200)]
dbus: Add connman_dbus_get_connnection_unix_user()
The UID is fetched via org.freedesktop.DBus.GetConnectionUnixUser D-Bus
method call.
Daniel Wagner [Thu, 18 Apr 2013 07:07:26 +0000 (09:07 +0200)]
dbus: Refactor callback helper struct
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.
Daniel Wagner [Thu, 18 Apr 2013 07:07:25 +0000 (09:07 +0200)]
session: Do not fail when creating default policy configuration
Do not handle the small alloc failures because glib will abort
when memory is tight anyway.
Daniel Wagner [Thu, 18 Apr 2013 07:07:24 +0000 (09:07 +0200)]
session: Change to "func_t" postfix to callback typedef
Streamline the callback typedefs with the rest of the code.
Daniel Wagner [Thu, 18 Apr 2013 07:07:23 +0000 (09:07 +0200)]
session_policy_local: Use callback helpers
Use the generic callback helpers to encapsulate struct create_data.
In a later patch we will add some more data elemets to struct
create_data. That is the reason why it is not remove here.
Daniel Wagner [Tue, 9 Apr 2013 16:13:13 +0000 (18:13 +0200)]
session_policy_local: Load policy when a new file is added
When a file is added (not modified) we need to parse it as well
Daniel Wagner [Tue, 9 Apr 2013 16:13:12 +0000 (18:13 +0200)]
session_policy_local: Do not free policy on load error
We should not unref the policy on parsing errors becase the policy
lifetime is attached to the lifetime of the file. When the file
is removed we remove it from the hash table.
Daniel Wagner [Tue, 9 Apr 2013 16:13:11 +0000 (18:13 +0200)]
session_policy_local: Empty policy list indicated no match all
Match all is expressed via CONNMAN_SERVICE_TYPE_UNKNOWN. An empty
list means no match.
Daniel Wagner [Tue, 9 Apr 2013 16:13:10 +0000 (18:13 +0200)]
session_policy_local: Set default policy using common code
Use connman_sessoin_set_default_config() instead of open coded
version.
This prepars the next fix.
Daniel Wagner [Tue, 9 Apr 2013 16:13:09 +0000 (18:13 +0200)]
session: Empty policy list indicated no match all
Match all is expressed via CONNMAN_SERVICE_TYPE_UNKNOWN. An empty
list means no match.
Daniel Wagner [Tue, 9 Apr 2013 16:13:08 +0000 (18:13 +0200)]
session: Do not try to access already removed hash
Make sure we never try to cleanup when the hash table has
been destroyed. In this case all resources have been
freed already.
Daniel Wagner [Tue, 9 Apr 2013 16:13:07 +0000 (18:13 +0200)]
session: Reorder shutdown sequence
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.
Grant Erickson [Fri, 12 Apr 2013 19:06:06 +0000 (12:06 -0700)]
wifi: improve fix to avoid device double release on disable
Per MEEGO-25999 <https://bugs.meego.com/show_bug.cgi?id=25999>, there
exists a race between scan_callback and wifi_disable such that a care-
fully-timed deassertion of the technology Powered property between
throw_wifi_scan and scan_callback will lead to a device reference
count underflow. A second Powered property false -> true -> false
transition will then deallocate the device and Wi-Fi will no longer
function until connman or the system is restarted.
This patch improves upon and revises the prior patch to address this
issue by recognizing that hidden networks involve a slightly different
code path and timing and that both this and the prior case can be
addressed by tracking the device scanning state and only releasing the
device when the state is asserted.
Jukka Rissanen [Wed, 10 Apr 2013 07:32:38 +0000 (10:32 +0300)]
tools: Rename dnsproxy-unit to dnsproxy-test
Rename the dnsproxy file as it is more of a test tool than a unit test.
Jukka Rissanen [Wed, 10 Apr 2013 07:32:37 +0000 (10:32 +0300)]
tools: Make message buffers static
Jukka Rissanen [Wed, 10 Apr 2013 08:01:47 +0000 (11:01 +0300)]
service: Set state properly after disconnecting the associating service
This is related to fix
d7d8f8bdb7c1ddae098893e10608fcb42034a9ff
We did not set the state to idle after disconnecting the
associating service.
Fixes BMC#25981
Grant Erickson [Thu, 11 Apr 2013 07:28:11 +0000 (00:28 -0700)]
wifi: avoid device double release on disable
Per MEEGO-25999 <https://bugs.meego.com/show_bug.cgi?id=25999>, there
exists a race between scan_callback and wifi_disable such that a care-
fully-timed deassertion of the technology Powered property between
throw_wifi_scan and scan_callback will lead to a device reference
count underflow. A second Powered property false -> true -> false
transition will then deallocate the device and Wi-Fi will no longer
function until connman or the system is restarted.
This patch addresses that race by tracking and observing the disabling
state such that scan_callback ad wifi_disable can effectively negotiate
which has performed the device release, thereby avoiding the double
release and resulting underflow.
Marcel Holtmann [Tue, 9 Apr 2013 03:59:40 +0000 (20:59 -0700)]
Release 1.13
Marcel Holtmann [Tue, 9 Apr 2013 03:54:08 +0000 (20:54 -0700)]
build: Add dnsproxy-unit to .gitignore
Luiz Augusto von Dentz [Wed, 27 Feb 2013 12:00:23 +0000 (14:00 +0200)]
gdbus: Fix not calling property_changed callback
In case a property did not appear by the time proxy_added was called
property_changed has to be called if it appear latter otherwise the
application will be unaware of it.
Lucas De Marchi [Mon, 8 Apr 2013 20:56:18 +0000 (17:56 -0300)]
gdbus: Use gcc builtin instead of g_atomic
g_atomic_* end up using G_STATIC_ASSERT, causing gcc 4.8 to yell due to
-Wunused-local-typedefs.
gdbus/client.c: In function ‘g_dbus_client_ref’:
/usr/include/glib-2.0/glib/gmacros.h:162:53: error: typedef ‘_GStaticAssertCompileTimeAssertion_2’ locally defined but not used [-Werror=unused-local-typedefs]
#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1]
Jukka Rissanen [Sun, 7 Apr 2013 14:53:49 +0000 (17:53 +0300)]
vpn: Host IP address was not freed
The host ip address field is only used if user has given vpn
server as a host name instead of host ip address.
Jukka Rissanen [Sun, 7 Apr 2013 14:54:23 +0000 (17:54 +0300)]
vpn: Free ip address before allocating a new one
Possible memory leak here as we might have ip address allocated
already.
Jukka Rissanen [Sun, 7 Apr 2013 14:52:37 +0000 (17:52 +0300)]
dnsproxy: Fix cached message length correctly
We must copy the response buffer before fixing the packet length.
Otherwise the packet length will go wrong if the request contained
EDNS0 data.
Patrik Flykt [Sat, 6 Apr 2013 20:10:18 +0000 (23:10 +0300)]
client: Add --help, -h options
Jukka Rissanen [Fri, 5 Apr 2013 09:33:09 +0000 (12:33 +0300)]
tools: Add unit test for dnsproxy
Jukka Rissanen [Fri, 5 Apr 2013 09:33:08 +0000 (12:33 +0300)]
dnsproxy: Handle partial TCP messages from client
We were not handling client sent partial TCP messages correctly.
This meant that ConnMan would block if the client using TCP would
not send full DNS request.
When a new TCP client connects in tcp_listener_event(), a new
TCP channel is created to handle a partial client message if
all of the message is not already available. The partial TCP
message is patched together in tcp_client_event(). When all of
the TCP message has been received, the message is processed in
read_tcp_data(). The client has to send the DNS request within two
seconds before the connection is closed by ConnMan.
Daniel Wagner [Thu, 4 Apr 2013 15:09:04 +0000 (17:09 +0200)]
service: Drop unused argument in preferred_tech_list_get()
Patrik Flykt [Fri, 5 Apr 2013 09:28:44 +0000 (12:28 +0300)]
client: Fix help text, IPv4 setting uses netmask
Jukka Rissanen [Thu, 4 Apr 2013 11:44:56 +0000 (14:44 +0300)]
dnsproxy: Create cache if it is missing when doing lookup
Jukka Rissanen [Thu, 4 Apr 2013 11:44:55 +0000 (14:44 +0300)]
dnsproxy: Fix memory leak when request timeouts
Jukka Rissanen [Thu, 4 Apr 2013 11:44:54 +0000 (14:44 +0300)]
dnsproxy: Avoid null pointer access
Jukka Rissanen [Thu, 4 Apr 2013 11:44:53 +0000 (14:44 +0300)]
dnsproxy: Do not add or remove ::1 server
Jukka Rissanen [Thu, 4 Apr 2013 11:44:52 +0000 (14:44 +0300)]
dnsproxy: Use ::1 when refreshing because of the address family
Jukka Rissanen [Thu, 4 Apr 2013 11:44:51 +0000 (14:44 +0300)]
dnsproxy: Add or remove ::1 to/from resolv.conf when necessary
We add IPv6 loopback address to resolv.conf if we have created
an IPv6 listening socket to port 53. Also remove ::1 from resolv.conf
when deleting the proxy.
Jukka Rissanen [Thu, 4 Apr 2013 11:44:50 +0000 (14:44 +0300)]
dnsproxy: Listen only on needed addresses
Do not bind to ANY address so that other DNS server applications
can be used on the same host for interfaces that are not managed
by ConnMan. This means that we only create DNS listeners on loopback
and tethering interfaces.
Jukka Rissanen [Thu, 4 Apr 2013 11:44:49 +0000 (14:44 +0300)]
inet: Get an address from a given interface and address family
The returned address is used when we need to have a listening
socket tied to specific interface and address, and do not want to
bind to any address.
Patrik Flykt [Wed, 27 Mar 2013 11:54:09 +0000 (13:54 +0200)]
client: Move boolean parsing helper function to commands file
The helper function is not used elsewhere, thus move it.
Patrik Flykt [Wed, 27 Mar 2013 11:54:08 +0000 (13:54 +0200)]
client: Remove now obsolete functions and files
Remove now obsolete files from services. Remove data_manager, dbus and
technology .h and .c files. Update Makefile.am accordingly.
Patrik Flykt [Wed, 27 Mar 2013 11:54:07 +0000 (13:54 +0200)]
client: Remove now obsolete function
Patrik Flykt [Wed, 27 Mar 2013 11:54:06 +0000 (13:54 +0200)]
client: Use D-Bus helper functions when setting proxy
Append proxy server and exclude information in the callback functions.
Patrik Flykt [Wed, 27 Mar 2013 11:54:05 +0000 (13:54 +0200)]
client: Use helper functions for setting domains, nameservers and timeservers
Patrik Flykt [Wed, 27 Mar 2013 11:54:04 +0000 (13:54 +0200)]
client: Use helper functions for IP, autoconnect and removal
Use D-Bus helper functions for service remove, autoconnect and IP
configuration.
Create a common callback for all configuration properties. Count also
the number of appended items and add it to the current index when done.
Patrik Flykt [Wed, 27 Mar 2013 11:54:03 +0000 (13:54 +0200)]
client: Use D-Bus helper function to implement services command
Fixes BMC#25953 BMC#25974
Patrik Flykt [Wed, 27 Mar 2013 11:54:02 +0000 (13:54 +0200)]
client: Use D-Bus helper functions for Technology enabling/disabling
Patrik Flykt [Wed, 27 Mar 2013 11:54:01 +0000 (13:54 +0200)]
client: Add support functions for setting properties
Add support functions for setting basic, dictionary and array properties.
Patrik Flykt [Wed, 27 Mar 2013 11:54:00 +0000 (13:54 +0200)]
client: Use D-Bus helpers for Technology Scan method call
Patrik Flykt [Wed, 27 Mar 2013 11:53:59 +0000 (13:53 +0200)]
client: Use D-Bus helpers for Technology GetTechnologies method call
Patrik Flykt [Wed, 27 Mar 2013 11:53:58 +0000 (13:53 +0200)]
client: Use D-Bus helper functions for service connect and disconnect
Patrik Flykt [Wed, 27 Mar 2013 11:53:57 +0000 (13:53 +0200)]
client: Use D-Bus helper functions for state method call
Patrik Flykt [Wed, 27 Mar 2013 11:53:56 +0000 (13:53 +0200)]
client: Print out help header if non-interactive
Patrik Flykt [Wed, 27 Mar 2013 11:53:55 +0000 (13:53 +0200)]
client: Add calls to save and redraw input prompt
Patrik Flykt [Wed, 27 Mar 2013 11:53:54 +0000 (13:53 +0200)]
client: Remove now obsolete client/interactive.[hc] files
Patrik Flykt [Wed, 27 Mar 2013 11:53:53 +0000 (13:53 +0200)]
client: Remove readline handling from main.c
Patrik Flykt [Wed, 27 Mar 2013 11:53:52 +0000 (13:53 +0200)]
client: Handle exit and inprogress values
When exiting, return 1, when D-Bus method call is in progress return
-EINPROGRESS. When exiting successfully return 0, when an error is
encountered return the error value.
Patrik Flykt [Wed, 27 Mar 2013 11:53:51 +0000 (13:53 +0200)]
client: Delete the now obsolete monitor.[hc] files
Patrik Flykt [Wed, 27 Mar 2013 11:53:50 +0000 (13:53 +0200)]
client: Reimplement monitor command
Use generic D-Bus printing function to print the signals
Patrik Flykt [Wed, 27 Mar 2013 11:53:49 +0000 (13:53 +0200)]
client: Add input handling
Set up readline command line input handling. Add helper functions to
save and redraw the command line when output needs to be printed to the
screen.