From 24899e2264dd187e7e452e0ffad9d2df1d490927 Mon Sep 17 00:00:00 2001 From: MyungJoo Ham Date: Wed, 30 Nov 2016 20:37:10 +0900 Subject: [PATCH] Remove Profile Build Dependency (1/2): do it at runtime - This is for Tizen 4.0. : Tizen 4.0 Configurability and Build Blocks require to remove all profile-depending build options in spec files. (No More profile macros) - It is recommended to distinguish features/profiles at runtime. unless it incurs too much overhead, which requires you to create multiple binaries and subpackages. - Now it reads if it is TV based on the /etc/ conf file. Change-Id: Id9d2f6e9db7814ab06f5d166ef2299a1a8aacb51 Signed-off-by: MyungJoo Ham --- packaging/connman.spec | 3 -- src/connman.h | 9 ++++ src/main.c | 12 +++++ src/main_tv.conf | 116 +++++++++++++++++++++++++++++++++++++++++++++++++ src/rtnl.c | 4 +- src/service.c | 103 ++++++++++++++++++++++++------------------- 6 files changed, 197 insertions(+), 50 deletions(-) create mode 100755 src/main_tv.conf diff --git a/packaging/connman.spec b/packaging/connman.spec index 5db54f0..8185438 100755 --- a/packaging/connman.spec +++ b/packaging/connman.spec @@ -97,9 +97,6 @@ Header files and development files for connman. %build CFLAGS+=" -DTIZEN_EXT -lsmack -Werror" CFLAGS+=" -DTIZEN_SYS_CA_BUNDLE=\"%TZ_SYS_RO_CA_BUNDLE\"" -%if "%{profile}" == "tv" -CFLAGS+=" -DTIZEN_TV_EXT" -%endif %if %{with connman_vpnd} VPN_CFLAGS+=" -DTIZEN_EXT -lsmack -Werror" diff --git a/src/connman.h b/src/connman.h index 56f9dd9..2217cc4 100755 --- a/src/connman.h +++ b/src/connman.h @@ -1067,3 +1067,12 @@ void __connman_machine_cleanup(void); int __connman_util_get_random(uint64_t *val); int __connman_util_init(void); void __connman_util_cleanup(void); + +#ifdef TIZEN_EXT +__attribute__ ((unused)) static int __tizentvextension = -1; +#define TIZEN_TV_EXT (__builtin_expect(__tizentvextension != -1, 1) ? \ + __tizentvextension : \ + (__tizentvextension = connman_setting_get_bool("TizenTVExtension"))) +#else /* TIZEN_EXT */ +#define TIZEN_TV_EXT (0) /* Always False */ +#endif /* TIZEN_EXT */ diff --git a/src/main.c b/src/main.c index f622d8f..28e3edb 100755 --- a/src/main.c +++ b/src/main.c @@ -78,6 +78,7 @@ static struct { bool enable_6to4; #if defined TIZEN_EXT char **cellular_interfaces; + bool tizen_tv_extension; #endif } connman_settings = { .bg_scan = true, @@ -95,6 +96,7 @@ static struct { .enable_6to4 = false, #if defined TIZEN_EXT .cellular_interfaces = NULL, + .tizen_tv_extension = false, #endif }; @@ -113,6 +115,7 @@ static struct { #define CONF_ENABLE_6TO4 "Enable6to4" #if defined TIZEN_EXT #define CONF_CELLULAR_INTERFACE "NetworkCellularInterfaceList" +#define CONF_TIZEN_TV_EXT "TizenTVExtension" #endif static const char *supported_options[] = { @@ -131,6 +134,7 @@ static const char *supported_options[] = { CONF_ENABLE_6TO4, #if defined TIZEN_EXT CONF_CELLULAR_INTERFACE, + CONF_TIZEN_TV_EXT, #endif NULL }; @@ -251,6 +255,7 @@ static void check_Tizen_configuration(GKeyFile *config) { GError *error = NULL; char **cellular_interfaces; + bool boolean; gsize len; cellular_interfaces = g_key_file_get_string_list(config, "General", @@ -260,6 +265,13 @@ static void check_Tizen_configuration(GKeyFile *config) connman_settings.cellular_interfaces = cellular_interfaces; g_clear_error(&error); + + boolean = __connman_config_get_bool(config, "General", + CONF_TIZEN_TV_EXT, &error); + if (!error) + connman_settings.tizen_tv_extension = boolean; + + g_clear_error(&error); } static void set_nofile_inc(void) diff --git a/src/main_tv.conf b/src/main_tv.conf new file mode 100755 index 0000000..fd3afc9 --- /dev/null +++ b/src/main_tv.conf @@ -0,0 +1,116 @@ +[General] + +# Set input request timeout. Default is 120 seconds +# The request for inputs like passphrase will timeout +# after certain amount of time. Use this setting to +# increase the value in case of different user +# interface designs. +# InputRequestTimeout = 120 + +# Set browser launch timeout. Default is 300 seconds +# The request for launching a browser for portal pages +# will timeout after certain amount of time. Use this +# setting to increase the value in case of different +# user interface designs. +# BrowserLaunchTimeout = 300 + +# Enable background scanning. Default is true. +# Background scanning will start every 5 minutes unless +# the scan list is empty. In that case, a simple backoff +# mechanism starting from 10s up to 5 minutes will run. +# BackgroundScanning = true +BackgroundScanning = false + +# List of Fallback timeservers separated by ",". +# These timeservers are used for NTP sync when there are +# no timeserver set by the user or by the service. +# These can contain mixed combination of fully qualified +# domain names, IPv4 and IPv6 addresses. +# FallbackTimeservers = +#FallbackTimeservers = pool.ntp.org + +# List of fallback nameservers separated by "," used if no +# nameservers are otherwise provided by the service. The +# nameserver entries must be in numeric format, host +# names are ignored. +# FallbackNameservers = + +# List of technologies that are marked autoconnectable +# by default, separated by commas ",". The default value +# for this entry when empty is ethernet,wifi,cellular. +# Services that are automatically connected must have been +# set up and saved to storage beforehand. +# DefaultAutoConnectTechnologies = + +# List of preferred technologies from the most preferred +# one to the least preferred one separated by commas ",". +# Services of the listed technology type will be tried one +# by one in the order given, until one of them gets connected +# or they are all tried. A service of a preferred technology +# type in state 'ready' will get the default route when +# compared to another preferred type further down the list +# with state 'ready' or with a non-preferred type; a service +# of a preferred technology type in state 'online' will get +# the default route when compared to either a non-preferred +# type or a preferred type further down in the list. +# PreferredTechnologies = +PreferredTechnologies = wifi, ethernet + +# List of blacklisted network interfaces separated by ",". +# Found interfaces will be compared to the list and will +# not be handled by connman, if their first characters +# match any of the list entries. Default value is +# vmnet,vboxnet,virbr,ifb. +# NetworkInterfaceBlacklist = vmnet,vboxnet,virbr,ifb +NetworkInterfaceBlacklist = veth, vmnet,vboxnet,virbr,usb,rndis,rmnet,rev_rmnet,dummy,seth_td,seth_w + +# Allow connman to change the system hostname. This can +# happen for example if we receive DHCP hostname option. +# Default value is true. +# AllowHostnameUpdates = true + +# Keep only a single connected technology at any time. When a new +# service is connected by the user or a better one is found according +# to PreferredTechnologies, the new service is kept connected and all +# the other previously connected services are disconnected. With this +# setting it does not matter whether the previously connected services +# are in 'online' or 'ready' states, the newly connected service is +# the only one that will be kept connected. A service connected by the +# user will be used until going out of network coverage. With this +# setting enabled applications will notice more network breaks than +# normal. Default value is false. +# SingleConnectedTechnology = false +SingleConnectedTechnology = true + +# List of technologies for which tethering is allowed separated by ",". +# The default value is wifi,bluetooth,gadget. Only those technologies +# listed here are used for tethering. If ethernet tethering is desired, +# then ethernet should be added to the list. The technologies listed here +# have to support tethering, currently tethering is implemented for wifi, +# bluetooth, gadget and ethernet. +# NOTE that if ethernet tethering is enabled, then a DHCP server is +# started on all ethernet interfaces. Tethered ethernet should +# never be connected to corporate or home network as it will disrupt +# normal operation of these networks. Due to this ethernet is not +# tethered by default. Do not activate ethernet tethering unless you +# really know what you are doing. +# TetheringTechnologies = wifi,bluetooth,gadget + +# Restore earlier tethering status when returning from offline mode, +# re-enabling a technology, and after restarts and reboots. +# Default value is false. +# PersistentTetheringMode = false + +# Automatically enable Anycast 6to4 if possible. This is not recommended, as +# the use of 6to4 will generally lead to a severe degradation of connection +# quality. See RFC6343. Default value is false (as recommended by RFC6343 +# section 4.1). +# Enable6to4 = false + +NetworkCellularInterfaceList = pdp,rmnet,seth_td,seth_w + + + +# Enable Tizen TV Profile Features +TizenTVExtension = true + diff --git a/src/rtnl.c b/src/rtnl.c index 684668b..42ebd4a 100755 --- a/src/rtnl.c +++ b/src/rtnl.c @@ -489,8 +489,8 @@ static void process_newlink(unsigned short type, int index, unsigned flags, return; } -#if defined TIZEN_TV_EXT - if (g_strcmp0(ident, "eeeeeeeeeeee") == 0) { +#ifdef TIZEN_EXT + if (TIZEN_TV_EXT && g_strcmp0(ident, "eeeeeeeeeeee") == 0) { DBG("Newlink event with Dummy MAC. Ignored!"); return; } diff --git a/src/service.c b/src/service.c index 001c1f8..f24f491 100755 --- a/src/service.c +++ b/src/service.c @@ -77,7 +77,7 @@ struct connman_service_user { uid_t current_user; }; -#if defined TIZEN_TV_EXT +#ifdef TIZEN_EXT enum connman_dnsconfig_method { CONNMAN_DNSCONFIG_METHOD_UNKNOWN = 0, CONNMAN_DNSCONFIG_METHOD_MANUAL = 1, @@ -165,7 +165,7 @@ struct connman_service { char *keymgmt_type; int disconnect_reason; #endif -#if defined TIZEN_TV_EXT +#ifdef TIZEN_EXT enum connman_dnsconfig_method dns_config_method; #endif }; @@ -445,7 +445,7 @@ static enum connman_service_proxy_method string2proxymethod(const char *method) return CONNMAN_SERVICE_PROXY_METHOD_UNKNOWN; } -#if defined TIZEN_TV_EXT +#ifdef TIZEN_EXT static const char *__connman_dnsconfig_method2string(enum connman_dnsconfig_method method) { switch (method) { @@ -752,11 +752,13 @@ static int service_load(struct connman_service *service) service->nameservers_config = NULL; } -#if defined TIZEN_TV_EXT +#ifdef TIZEN_EXT char *dns_method; - dns_method = g_key_file_get_string(keyfile, service->identifier, - "Nameservers.method", NULL); - service->dns_config_method = __connman_dnsconfig_string2method(dns_method); + if (TIZEN_TV_EXT) { + dns_method = g_key_file_get_string(keyfile, service->identifier, + "Nameservers.method", NULL); + service->dns_config_method = __connman_dnsconfig_string2method(dns_method); + } #endif service->timeservers_config = g_key_file_get_string_list(keyfile, @@ -995,16 +997,18 @@ static int service_save(struct connman_service *service) g_key_file_remove_key(keyfile, service->identifier, "Nameservers", NULL); -#if defined TIZEN_TV_EXT - if(service->dns_config_method != 0) { - const char *method; - method = __connman_dnsconfig_method2string( - service->dns_config_method); - g_key_file_set_string(keyfile, service->identifier, - "Nameservers.method", method); - } else - g_key_file_remove_key(keyfile, service->identifier, - "Nameservers.method", NULL); +#ifdef TIZEN_EXT + if (TIZEN_TV_EXT) { + if(service->dns_config_method != 0) { + const char *method; + method = __connman_dnsconfig_method2string( + service->dns_config_method); + g_key_file_set_string(keyfile, service->identifier, + "Nameservers.method", method); + } else + g_key_file_remove_key(keyfile, service->identifier, + "Nameservers.method", NULL); + } #endif if (service->timeservers_config) { @@ -1491,8 +1495,9 @@ int __connman_service_nameserver_append(struct connman_service *service, nameservers[len + 1] = NULL; -#if defined TIZEN_TV_EXT - if(service->dns_config_method == CONNMAN_DNSCONFIG_METHOD_UNKNOWN) +#ifdef TIZEN_EXT + if(TIZEN_TV_EXT && + service->dns_config_method == CONNMAN_DNSCONFIG_METHOD_UNKNOWN) service->dns_config_method = CONNMAN_DNSCONFIG_METHOD_DHCP; #endif @@ -2112,13 +2117,15 @@ static void append_dns(DBusMessageIter *iter, void *user_data) if (!is_connected(service)) return; -#if defined TIZEN_TV_EXT - /* Append DNS Config Type */ +#ifdef TIZEN_EXT const char *str; - str = __connman_dnsconfig_method2string(service->dns_config_method); - if(str != NULL) - dbus_message_iter_append_basic(iter, - DBUS_TYPE_STRING, &str); + if (TIZEN_TV_EXT) { + /* Append DNS Config Type */ + str = __connman_dnsconfig_method2string(service->dns_config_method); + if(str != NULL) + dbus_message_iter_append_basic(iter, + DBUS_TYPE_STRING, &str); + } #endif if (service->nameservers_config) { @@ -2149,13 +2156,15 @@ static void append_dnsconfig(DBusMessageIter *iter, void *user_data) { struct connman_service *service = user_data; -#if defined TIZEN_TV_EXT +#ifdef TIZEN_EXT /* Append DNS Config Type */ const char *str; - str = __connman_dnsconfig_method2string(service->dns_config_method); - if(str != NULL) - dbus_message_iter_append_basic(iter, - DBUS_TYPE_STRING, &str); + if (TIZEN_TV_EXT) { + str = __connman_dnsconfig_method2string(service->dns_config_method); + if(str != NULL) + dbus_message_iter_append_basic(iter, + DBUS_TYPE_STRING, &str); + } #endif if (!service->nameservers_config) @@ -2794,11 +2803,13 @@ static void append_properties(DBusMessageIter *dict, dbus_bool_t limited, connman_dbus_dict_append_basic(dict, "State", DBUS_TYPE_STRING, &str); -#if defined TIZEN_TV_EXT - str = state2string(service->state_ipv6); - if (str != NULL) - connman_dbus_dict_append_basic(dict, "StateIPv6", - DBUS_TYPE_STRING, &str); +#ifdef TIZEN_EXT + if (TIZEN_TV_EXT) { + str = state2string(service->state_ipv6); + if (str != NULL) + connman_dbus_dict_append_basic(dict, "StateIPv6", + DBUS_TYPE_STRING, &str); + } #endif str = error2string(service->error); @@ -3854,16 +3865,18 @@ static DBusMessage *set_property(DBusConnection *conn, const char *val; dbus_message_iter_get_basic(&entry, &val); dbus_message_iter_next(&entry); -#if defined TIZEN_TV_EXT - /* First unpack the DNS Config Method */ - if(g_strcmp0(val, "manual") == 0) { - service->dns_config_method = - CONNMAN_DNSCONFIG_METHOD_MANUAL; - continue; - } else if(g_strcmp0(val, "dhcp") == 0) { - service->dns_config_method = - CONNMAN_DNSCONFIG_METHOD_DHCP; - continue; +#ifdef TIZEN_EXT + if (TIZEN_TV_EXT) { + /* First unpack the DNS Config Method */ + if(g_strcmp0(val, "manual") == 0) { + service->dns_config_method = + CONNMAN_DNSCONFIG_METHOD_MANUAL; + continue; + } else if(g_strcmp0(val, "dhcp") == 0) { + service->dns_config_method = + CONNMAN_DNSCONFIG_METHOD_DHCP; + continue; + } } #endif if (connman_inet_check_ipaddress(val) > 0) { -- 2.7.4