framework/connectivity/connman.git
13 years agogsupplicant: Call select_network callback
Samuel Ortiz [Mon, 31 Jan 2011 17:55:35 +0000 (18:55 +0100)]
gsupplicant: Call select_network callback

13 years agogsupplicant: Add network scan ssid setting
Samuel Ortiz [Sat, 15 Jan 2011 00:43:41 +0000 (01:43 +0100)]
gsupplicant: Add network scan ssid setting

13 years agogsupplicant: Add network channel setting
Samuel Ortiz [Sat, 15 Jan 2011 00:38:00 +0000 (01:38 +0100)]
gsupplicant: Add network channel setting

13 years agogsupplicant: Add interface mode capability getter
Samuel Ortiz [Mon, 31 Jan 2011 15:38:48 +0000 (16:38 +0100)]
gsupplicant: Add interface mode capability getter

13 years agowifi: Track interfaces
Samuel Ortiz [Fri, 14 Jan 2011 17:36:35 +0000 (18:36 +0100)]
wifi: Track interfaces

13 years agogsupplicant: Add network mode support
Samuel Ortiz [Fri, 14 Jan 2011 17:59:11 +0000 (18:59 +0100)]
gsupplicant: Add network mode support

13 years agotest: Handle new tethering properties
Samuel Ortiz [Wed, 2 Feb 2011 17:35:36 +0000 (18:35 +0100)]
test: Handle new tethering properties

13 years agodoc: Update documentation regarding tethering properties
Samuel Ortiz [Wed, 2 Feb 2011 17:35:08 +0000 (18:35 +0100)]
doc: Update documentation regarding tethering properties

13 years agotethering: Add a tethering property per technology
Samuel Ortiz [Wed, 2 Feb 2011 17:33:09 +0000 (18:33 +0100)]
tethering: Add a tethering property per technology

The manager tethering property is now gone.

13 years agodnsproxy: Fallback to resolv.conf if dnsproxy fails
Daniel Wagner [Thu, 27 Jan 2011 14:31:36 +0000 (15:31 +0100)]
dnsproxy: Fallback to resolv.conf if dnsproxy fails

In case dnsproxy can't create the socket listener we
should fall back to resolv.conf.

Reported by Kalle Valo <kalle.valo@canonical.com>

13 years agostats: Fix double free error
Grant Erickson [Mon, 31 Jan 2011 14:56:54 +0000 (15:56 +0100)]
stats: Fix double free error

The error appears when stats_file_remap() fails.

13 years agoRelease 0.68
Marcel Holtmann [Fri, 28 Jan 2011 23:07:44 +0000 (00:07 +0100)]
Release 0.68

13 years agowifi: Remove legacy plugin
Samuel Ortiz [Fri, 28 Jan 2011 15:25:59 +0000 (16:25 +0100)]
wifi: Remove legacy plugin

13 years agonmcompat: D-Bus configuration file
Kalle Valo [Fri, 28 Jan 2011 15:02:49 +0000 (17:02 +0200)]
nmcompat: D-Bus configuration file

Add separate dbus configuration file for nmcompat plugin. It will
installed only when the plugin is enabled.

13 years agonmcompat: Support nm dbus properties
Kalle Valo [Fri, 28 Jan 2011 15:02:43 +0000 (17:02 +0200)]
nmcompat: Support nm dbus properties

After some investigation I found that network-manager also provides
the network state through properties and libnm-glib library uses this
instead of the GetState() method.

Add Get() method call retrieve the property and a PropertyChanged signal
to notify state changes. Now empathy, which uses libnm-glib, properly
detects network state changes.

I deliberately omitted GetAll() method because libnm-glib doesn't seem
to need it.

13 years agonmcompat: Add plugin
Kalle Valo [Fri, 28 Jan 2011 15:02:36 +0000 (17:02 +0200)]
nmcompat: Add plugin

Add plugin which provides network-manager state interface to applications.
This is a direct copy of what was in src/manager.c, just copied all into
a plugin.

13 years agomanager: Remove network-manager compatibility code
Kalle Valo [Fri, 28 Jan 2011 15:02:30 +0000 (17:02 +0200)]
manager: Remove network-manager compatibility code

Remove the network-manager compatibility code from src/manager.c so that all
this can be implemented as a plugin.

-c command line switch is still left but marked as obsole to avoid breaking
current start scripts. By removing the switch connman would not start at
all if -c is used.

13 years agobuild: Fix checks for systemd unit directory
Marcel Holtmann [Fri, 28 Jan 2011 12:46:58 +0000 (13:46 +0100)]
build: Fix checks for systemd unit directory

13 years agobuild: Remove deprecated --enable-dnsproxy option
Marcel Holtmann [Fri, 28 Jan 2011 12:14:09 +0000 (13:14 +0100)]
build: Remove deprecated --enable-dnsproxy option

13 years agoTODO: Remove DNS Proxy entry
Daniel Wagner [Fri, 28 Jan 2011 08:48:26 +0000 (09:48 +0100)]
TODO: Remove DNS Proxy entry

13 years agodhcp: Move plugins/dhcp in to core
Daniel Wagner [Thu, 27 Jan 2011 12:34:51 +0000 (13:34 +0100)]
dhcp: Move plugins/dhcp in to core

13 years agoopenconnect: error_code implementation
Mohamed Abbas [Fri, 28 Jan 2011 04:55:36 +0000 (20:55 -0800)]
openconnect: error_code implementation

13 years agovpnc: error_code implementation
Mohamed Abbas [Fri, 28 Jan 2011 04:55:35 +0000 (20:55 -0800)]
vpnc: error_code implementation

13 years agovpn: Allow plugins to report error code
Mohamed Abbas [Fri, 28 Jan 2011 11:36:53 +0000 (12:36 +0100)]
vpn: Allow plugins to report error code

13 years agoprovider: Report VPN error code
Mohamed Abbas [Fri, 28 Jan 2011 04:55:33 +0000 (20:55 -0800)]
provider: Report VPN error code

13 years agotask: Pass exit code to the exit callback
Mohamed Abbas [Fri, 28 Jan 2011 11:31:30 +0000 (12:31 +0100)]
task: Pass exit code to the exit callback

13 years agovpn: Fix vpn_died prototype
Samuel Ortiz [Fri, 28 Jan 2011 00:26:24 +0000 (01:26 +0100)]
vpn: Fix vpn_died prototype

13 years agoopenvpn: Use parser table instead of open coding
Daniel Wagner [Thu, 27 Jan 2011 15:54:23 +0000 (16:54 +0100)]
openvpn: Use parser table instead of open coding

Use the same approach as in VPNC for passing
arguments from the provider to OpenVPN client.

13 years agoservice: Check for WPS support only in the WiFi case
Samuel Ortiz [Thu, 27 Jan 2011 15:26:44 +0000 (16:26 +0100)]
service: Check for WPS support only in the WiFi case

13 years agoprovider: route_env_parse should depend on type not name
Daniel Wagner [Thu, 27 Jan 2011 13:11:19 +0000 (14:11 +0100)]
provider: route_env_parse should depend on type not name

13 years agoopenvpn: Fix typo in routing prefix check
Daniel Wagner [Thu, 27 Jan 2011 13:11:18 +0000 (14:11 +0100)]
openvpn: Fix typo in routing prefix check

13 years agoTODO: Removing WPS related part
Tomasz Bursztyka [Wed, 26 Jan 2011 08:09:45 +0000 (10:09 +0200)]
TODO: Removing WPS related part

13 years agogsupplicant: Disconnect request might not need to go through RemoveNetwork call
Tomasz Bursztyka [Wed, 26 Jan 2011 08:09:44 +0000 (10:09 +0200)]
gsupplicant: Disconnect request might not need to go through RemoveNetwork call

13 years agotest: WPS input added in agent test script
Tomasz Bursztyka [Wed, 26 Jan 2011 08:09:43 +0000 (10:09 +0200)]
test: WPS input added in agent test script

13 years agoservice: WPS connection logic
Tomasz Bursztyka [Wed, 26 Jan 2011 08:09:42 +0000 (10:09 +0200)]
service: WPS connection logic

13 years agoagent: WPS input request logic
Tomasz Bursztyka [Wed, 26 Jan 2011 08:09:41 +0000 (10:09 +0200)]
agent: WPS input request logic

13 years agoservice: WPS enabled getter
Tomasz Bursztyka [Wed, 26 Jan 2011 08:09:40 +0000 (10:09 +0200)]
service: WPS enabled getter

13 years agodoc: WPS method input documentation added to agent-api.txt
Tomasz Bursztyka [Wed, 26 Jan 2011 08:09:39 +0000 (10:09 +0200)]
doc: WPS method input documentation added to agent-api.txt

13 years agotest: WPS property support
Tomasz Bursztyka [Wed, 26 Jan 2011 08:09:38 +0000 (10:09 +0200)]
test: WPS property support

13 years agodoc: Add service WPS attribute to service-api.txt
Tomasz Bursztyka [Wed, 26 Jan 2011 08:09:37 +0000 (10:09 +0200)]
doc: Add service WPS attribute to service-api.txt

13 years agoservice: WPS support
Tomasz Bursztyka [Wed, 26 Jan 2011 08:09:36 +0000 (10:09 +0200)]
service: WPS support

13 years agowifi: WPS support
Tomasz Bursztyka [Wed, 26 Jan 2011 08:09:35 +0000 (10:09 +0200)]
wifi: WPS support

13 years agonetwork: WPS support
Tomasz Bursztyka [Wed, 26 Jan 2011 08:09:34 +0000 (10:09 +0200)]
network: WPS support

13 years agogsupplicant: WPS start() method implementation
Tomasz Bursztyka [Wed, 26 Jan 2011 08:09:33 +0000 (10:09 +0200)]
gsupplicant: WPS start() method implementation

13 years agogsupplicant: WPS event signal support
Tomasz Bursztyka [Wed, 26 Jan 2011 08:09:32 +0000 (10:09 +0200)]
gsupplicant: WPS event signal support

13 years agogsupplicant: WPS credentials signal support
Tomasz Bursztyka [Wed, 26 Jan 2011 08:09:31 +0000 (10:09 +0200)]
gsupplicant: WPS credentials signal support

13 years agogsupplicant: bss/network wps enabled support
Tomasz Bursztyka [Wed, 26 Jan 2011 08:09:30 +0000 (10:09 +0200)]
gsupplicant: bss/network wps enabled support

13 years agoofono: be proactive with registration status
Pekka Pessi [Wed, 26 Jan 2011 14:50:40 +0000 (16:50 +0200)]
ofono: be proactive with registration status

Return error immediately if connection attempts are known to fail.

13 years agoofono: be proactive when connecting
Pekka Pessi [Wed, 26 Jan 2011 14:50:39 +0000 (16:50 +0200)]
ofono: be proactive when connecting

Return error immediately if connection attempts are known to fail.

13 years agoservice: Mark service as failed if connect fails
Pekka Pessi [Wed, 26 Jan 2011 14:50:38 +0000 (16:50 +0200)]
service: Mark service as failed if connect fails

The connman_network/provider_connect() could fail in two different ways,
returning an error code or setting the service state to failed.

Ethernet, WiMax, Bluetooth, VPN, Cellular and WiFi services now get
marked as failed if connect() fails with error code, too. This makes
connman_service_clear_error() and the autoconnect procedure to behave in
consistent manner.

13 years agoofono: Retry autoconnect when gprs gets attached
Pekka Pessi [Wed, 26 Jan 2011 14:50:37 +0000 (16:50 +0200)]
ofono: Retry autoconnect when gprs gets attached

13 years agonetwork: Add connman_network_clear_error()
Pekka Pessi [Wed, 26 Jan 2011 14:50:36 +0000 (16:50 +0200)]
network: Add connman_network_clear_error()

Clear the error on corresponding service (and set reconnect) in order to
retry autoconnecting.

13 years agoMakefile: Add build suppport for the vpnc plugin
Mohamed Abbas [Thu, 27 Jan 2011 07:55:28 +0000 (23:55 -0800)]
Makefile: Add build suppport for the vpnc plugin

13 years agoplugins: Initial vpnc support
Mohamed Abbas [Thu, 27 Jan 2011 09:49:46 +0000 (10:49 +0100)]
plugins: Initial vpnc support

13 years agodnsproxy: Fix public server support
Samuel Ortiz [Wed, 26 Jan 2011 23:46:36 +0000 (00:46 +0100)]
dnsproxy: Fix public server support

13 years agoprovider: Factorize VPN routing environment variables parsing
Samuel Ortiz [Wed, 26 Jan 2011 23:05:10 +0000 (00:05 +0100)]
provider: Factorize VPN routing environment variables parsing

13 years agoprovider: Set service pointer for provider_set_nameservers
Samuel Ortiz [Wed, 26 Jan 2011 20:23:28 +0000 (21:23 +0100)]
provider: Set service pointer for provider_set_nameservers

13 years agoprovider: Implement IPv6 route setting
Samuel Ortiz [Wed, 26 Jan 2011 16:03:12 +0000 (17:03 +0100)]
provider: Implement IPv6 route setting

13 years agoinet: IPv6 network route setting API
Samuel Ortiz [Wed, 26 Jan 2011 14:46:44 +0000 (15:46 +0100)]
inet: IPv6 network route setting API

13 years agoprovider: Handle empty nameservers
Daniel Wagner [Wed, 26 Jan 2011 08:22:06 +0000 (09:22 +0100)]
provider: Handle empty nameservers

If the VPN server doesn't set any DNS entries provider->nameservers is NULL.
When we change the state of the provider to CONNMAN_PROVIDER_STATE_READY
we shouldn't do any string operations on the NULL pointer namerservers.

(gdb) bt full
No symbol table info available.
        type = CONNMAN_ELEMENT_TYPE_IPV4
        nameservers = 0x0
        value = 0x0
        list = 0x1 = {<error reading variable list (Cannot access memory at address 0x1)>
        err = 0
        element = 0x6a5110
        name = 0x6a5550 "vpn0"
        second_ns = 0x69f1c0 "\004"
        service = 0x6a2630
No locals.

Fixes BMC#12508

Reported by Jeff Zheng <jeff.zheng@intel.com>

13 years agoondemand: Remove ondemand.c
Daniel Wagner [Wed, 26 Jan 2011 08:50:32 +0000 (09:50 +0100)]
ondemand: Remove ondemand.c

13 years agoresolver: Only support resolv.conf and dnsproxy
Daniel Wagner [Wed, 26 Jan 2011 08:50:33 +0000 (09:50 +0100)]
resolver: Only support resolv.conf and dnsproxy

Remove resolver module support.

13 years agodnsproxy: Add command line switch
Daniel Wagner [Wed, 26 Jan 2011 08:50:31 +0000 (09:50 +0100)]
dnsproxy: Add command line switch

Command line switch to disable dnsproxy.

13 years agodnsproxy: Fix checkpatch warnings
Daniel Wagner [Wed, 26 Jan 2011 08:50:30 +0000 (09:50 +0100)]
dnsproxy: Fix checkpatch warnings

13 years agodnsproxy: Move from plugins to core
Daniel Wagner [Wed, 26 Jan 2011 08:50:29 +0000 (09:50 +0100)]
dnsproxy: Move from plugins to core

13 years agoconfigure: Do not fail when systemd is not installed
Lucas De Marchi [Wed, 26 Jan 2011 00:23:13 +0000 (01:23 +0100)]
configure: Do not fail when systemd is not installed

Use --with-systemdsystemunitdir instead of --enabled-systemd so it's
possible to enable systemd even if systemd is not installed.

13 years agogweb: Check GString pointers before freeing them
Mohamed Abbas [Tue, 25 Jan 2011 22:17:37 +0000 (14:17 -0800)]
gweb: Check GString pointers before freeing them

Fixes BMC#12452

13 years agowifi: Balance scanning states
Mohamed Abbas [Tue, 25 Jan 2011 23:31:54 +0000 (00:31 +0100)]
wifi: Balance scanning states

By setting the scan state to TRUE from wifi_scan() and setting it back
to FALSE in the callback, the wifi device scanning state is consistent.

Fixes BMC#12104

13 years agoSmall coding style fixup for bridge enabling
Marcel Holtmann [Mon, 24 Jan 2011 16:41:30 +0000 (17:41 +0100)]
Small coding style fixup for bridge enabling

13 years agoInstall polkit policy file as net.connman.policy
Robert Piasek [Fri, 21 Jan 2011 16:19:28 +0000 (16:19 +0000)]
Install polkit policy file as net.connman.policy

13 years agoAdd debug info
Li Jian [Thu, 20 Jan 2011 07:40:57 +0000 (15:40 +0800)]
Add debug info

Some init/clean functions lack DBG("") which affects logs readability.

13 years agomanager: Send network-manager state change signals
Kalle Valo [Tue, 18 Jan 2011 13:01:15 +0000 (15:01 +0200)]
manager: Send network-manager state change signals

When using network-manager compatibility mode in connman applications,
for example pidgin and firefox, didn't notice when connman changed states
from offline to online (and vice versa) and applications would notice the
new state only after restarting them.

The problem was that connman wasn't sending StateChanged signals. After
adding them pidgin and firefox will notice the new states immeadiately.

13 years agoopenvpn: Remove double reason parsing
Daniel Wagner [Tue, 18 Jan 2011 10:05:05 +0000 (11:05 +0100)]
openvpn: Remove double reason parsing

Fix a copy/paste error.

Reported by Mohamed Abbas <mohamed.abbas@intel.com>

13 years agoRelease 0.67
Marcel Holtmann [Thu, 20 Jan 2011 06:24:35 +0000 (07:24 +0100)]
Release 0.67

13 years agoofono: Use dbus_bool_t instead of gboolean
Marcel Holtmann [Thu, 20 Jan 2011 06:19:39 +0000 (07:19 +0100)]
ofono: Use dbus_bool_t instead of gboolean

13 years agogdbus: Remove root node 'name' attribute in introspection
Daniel Wagner [Fri, 14 Jan 2011 15:14:21 +0000 (16:14 +0100)]
gdbus: Remove root node 'name' attribute in introspection

generate_introspection_xml generates the root <node> tags with a
'name' attribute. This seems to be a valid attribute but it is not
consistent with the way the D-Bus daemon generates empty nodes.

For example if we register "/foo/bar", D-Bus daemon will generate for
"/foo" a introspection which looks like this:

<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node>
  <node name="bar"/>
</node>

and generate_introspection_xml generates for "/foo/bar":

<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node name="/foo/bar">
</node>

Just don't add the 'name' attribute to the root node.  The GLib
binding for D-Bus does it the same way.

13 years agogdbus: invaldate_parent_data: walk the whole path down
Daniel Wagner [Fri, 14 Jan 2011 15:14:20 +0000 (16:14 +0100)]
gdbus: invaldate_parent_data: walk the whole path down

Assume there is only one object registerd at "/". If we add a new
object at "/foo/bar" the introspection of "/" has to be updated. A new
node has to be added at "/".

invalidate_parent_data stops invaldating the whole path because the
boolean return value of dbus_connection_get_object_path_data is used
wrong.

If we get a TRUE just go on down in the path, if FALSE is return
dbus_connection_get_object_path_data has run out of memory.

13 years agoSet GIOChannel to no encoding and no buffering
Marcel Holtmann [Tue, 18 Jan 2011 20:21:57 +0000 (21:21 +0100)]
Set GIOChannel to no encoding and no buffering

13 years agoofono: avoid extra SetProperty("Online") calls
Pekka Pessi [Tue, 18 Jan 2011 15:13:51 +0000 (17:13 +0200)]
ofono: avoid extra SetProperty("Online") calls

Do not request SetProperty("Online") if the modem is already in desired
Online state.

13 years agoUse g_io_channel_read_chars instead of g_io_channel_read
Marcel Holtmann [Tue, 18 Jan 2011 14:07:15 +0000 (15:07 +0100)]
Use g_io_channel_read_chars instead of g_io_channel_read

13 years agoRemove pointless variable initialization
Marcel Holtmann [Tue, 18 Jan 2011 14:04:16 +0000 (15:04 +0100)]
Remove pointless variable initialization

13 years agoUse -DG_DISABLE_DEPRECATED compiler define
Marcel Holtmann [Tue, 18 Jan 2011 13:57:00 +0000 (14:57 +0100)]
Use -DG_DISABLE_DEPRECATED compiler define

13 years agoFixed comparison with "AutoConnect" in service
Pekka Pessi [Mon, 17 Jan 2011 21:45:45 +0000 (23:45 +0200)]
Fixed comparison with "AutoConnect" in service

13 years agoRemove MCC and MNC from Service doc
Pekka Pessi [Mon, 17 Jan 2011 21:45:44 +0000 (23:45 +0200)]
Remove MCC and MNC from Service doc

13 years agoRemove MCC and MNC from Service
Pekka Pessi [Mon, 17 Jan 2011 21:45:43 +0000 (23:45 +0200)]
Remove MCC and MNC from Service

MCC and MNC are not set by oFono plugin.

13 years agoClarify relation between AutoConnect and Roaming.
Pekka Pessi [Mon, 17 Jan 2011 21:45:42 +0000 (23:45 +0200)]
Clarify relation between AutoConnect and Roaming.

13 years agoRelease 0.66
Marcel Holtmann [Mon, 17 Jan 2011 17:04:17 +0000 (18:04 +0100)]
Release 0.66

13 years agoelement: Assign element name
Li Jian [Wed, 12 Jan 2011 03:19:01 +0000 (11:19 +0800)]
element: Assign element name

13 years agoservice: Do not reconnect to an already connected service
Samuel Ortiz [Thu, 13 Jan 2011 14:36:23 +0000 (15:36 +0100)]
service: Do not reconnect to an already connected service

Fixes BMC#11879

13 years agoservice: Proxy changes notifications
Samuel Ortiz [Wed, 12 Jan 2011 23:17:59 +0000 (00:17 +0100)]
service: Proxy changes notifications

notifier listening for proxy changes will get a heads up from WPAD or
from DHCP.

13 years agopacrunner: Implement proxy_changed hook
Samuel Ortiz [Wed, 12 Jan 2011 23:15:39 +0000 (00:15 +0100)]
pacrunner: Implement proxy_changed hook

When the default service proxy changes, a new configuration is pushed
to PACRunner.

13 years agonotifier: Add proxy changed hook
Samuel Ortiz [Wed, 12 Jan 2011 22:56:58 +0000 (23:56 +0100)]
notifier: Add proxy changed hook

With asynchronous WPAD operations, the proxy_changed notifier hook will
allow for a proper pacrunner configuration to be created.

13 years agoservice: Return DIRECT proxy if wpad_start fails
Samuel Ortiz [Wed, 12 Jan 2011 22:40:30 +0000 (23:40 +0100)]
service: Return DIRECT proxy if wpad_start fails

13 years agoservice: Return service proxy is configured PAC URL is not set
Samuel Ortiz [Wed, 12 Jan 2011 22:37:42 +0000 (23:37 +0100)]
service: Return service proxy is configured PAC URL is not set

If the proxy configured method is AUTO but the PAC URL is not set yet,
returning service->proxy will give the correct method when WPAD failed.

13 years agowpad: Set proxy method to DIRECT if WPAD name resolution failed
Samuel Ortiz [Wed, 12 Jan 2011 01:07:03 +0000 (02:07 +0100)]
wpad: Set proxy method to DIRECT if WPAD name resolution failed

13 years agoservice: Start WPAD if DHCP failed to provide a PAC URL
Samuel Ortiz [Wed, 12 Jan 2011 19:51:28 +0000 (20:51 +0100)]
service: Start WPAD if DHCP failed to provide a PAC URL

13 years agoservice: Start WPAD if proxy is not manually configured
Samuel Ortiz [Wed, 12 Jan 2011 19:09:23 +0000 (20:09 +0100)]
service: Start WPAD if proxy is not manually configured

WPAD starts also when the proxy method is configured to AUTO but
it's missing a PAC URL.

13 years agoservice: Add proxy_config for storing configured proxy method
Samuel Ortiz [Wed, 12 Jan 2011 23:36:34 +0000 (00:36 +0100)]
service: Add proxy_config for storing configured proxy method

If service->proxy_config is set, WPAD will not be started unless
proxy_config is AUTO but without a PAC URL.

13 years agoservice: Define proxy setting helper
Samuel Ortiz [Wed, 12 Jan 2011 00:39:10 +0000 (01:39 +0100)]
service: Define proxy setting helper

13 years agoservice: Set proxy to DIRECT if unknown
Samuel Ortiz [Tue, 11 Jan 2011 16:18:56 +0000 (17:18 +0100)]
service: Set proxy to DIRECT if unknown