net: app: Split code for configuring network to a separate lib, "config"

net_app library consisted of 2 disjoint parts: a) library to
setup/configure networking on the application startup; b) library
to setup client and server connections.

As the configuration library is universally useful and is a generic
Zephyr networking component, split it out to a seperate top-level
networking library under net/lib/config/.

Fixes: #7658

Signed-off-by: Paul Sokolovsky <paul.sokolovsky@linaro.org>
This commit is contained in:
Paul Sokolovsky 2018-06-18 20:57:23 +03:00 committed by Jukka Rissanen
parent 546d19a7cf
commit c60df13110
11 changed files with 224 additions and 197 deletions

View file

@ -3,7 +3,8 @@ add_subdirectory_if_kconfig(lwm2m)
add_subdirectory_if_kconfig(sntp) add_subdirectory_if_kconfig(sntp)
add_subdirectory_ifdef(CONFIG_DNS_RESOLVER dns) add_subdirectory_ifdef(CONFIG_DNS_RESOLVER dns)
add_subdirectory_ifdef(CONFIG_MQTT_LIB mqtt) add_subdirectory_ifdef(CONFIG_MQTT_LIB mqtt)
add_subdirectory_ifdef(CONFIG_NET_APP_SETTINGS app) add_subdirectory_ifdef(CONFIG_NET_APP app)
add_subdirectory_ifdef(CONFIG_NET_APP_SETTINGS config)
add_subdirectory_ifdef(CONFIG_NET_SOCKETS sockets) add_subdirectory_ifdef(CONFIG_NET_SOCKETS sockets)
add_subdirectory_ifdef(CONFIG_WEBSOCKET websocket) add_subdirectory_ifdef(CONFIG_WEBSOCKET websocket)

View file

@ -22,7 +22,9 @@ source "subsys/net/lib/websocket/Kconfig"
endmenu endmenu
menu "Network Application Support" menu "Network Libraries"
source "subsys/net/lib/config/Kconfig"
source "subsys/net/lib/app/Kconfig" source "subsys/net/lib/app/Kconfig"

View file

@ -3,18 +3,8 @@ zephyr_library_compile_definitions_ifdef(
CONFIG_NEWLIB_LIBC __LINUX_ERRNO_EXTENSIONS__ CONFIG_NEWLIB_LIBC __LINUX_ERRNO_EXTENSIONS__
) )
zephyr_library_sources_ifdef(CONFIG_NET_APP init.c)
zephyr_library_sources_ifdef(CONFIG_NET_APP_SERVER net_app.c server.c) zephyr_library_sources_ifdef(CONFIG_NET_APP_SERVER net_app.c server.c)
zephyr_library_sources_ifdef(CONFIG_NET_APP_CLIENT net_app.c client.c) zephyr_library_sources_ifdef(CONFIG_NET_APP_CLIENT net_app.c client.c)
if(CONFIG_NET_APP_SETTINGS)
zephyr_library_sources_ifdef(
CONFIG_NET_L2_IEEE802154
ieee802154_settings.c
)
zephyr_library_sources_ifdef(CONFIG_NET_L2_BT bt_settings.c)
endif()
zephyr_link_interface_ifdef(CONFIG_MBEDTLS mbedTLS) zephyr_link_interface_ifdef(CONFIG_MBEDTLS mbedTLS)
zephyr_library_link_libraries_ifdef(CONFIG_MBEDTLS mbedTLS) zephyr_library_link_libraries_ifdef(CONFIG_MBEDTLS mbedTLS)

View file

@ -17,55 +17,6 @@ menuconfig NET_APP
if NET_APP if NET_APP
config NET_APP_AUTO_INIT
bool "Init networking support automatically during device startup"
default y
help
If this option is set, then the net_app API is automatically
initialized when the device is started. If you do not wish to do
this, then disable this and call net_app_init() in your application.
config NET_APP_INIT_PRIO
int "Startup priority for the network application init"
default 95
depends on NET_APP_AUTO_INIT
config NET_APP_INIT_TIMEOUT
int "How long to wait for networking to be ready and available"
default 30
depends on NET_APP_AUTO_INIT
help
The value is in seconds. If for example IPv4 address from DHCPv4 is not
received within this limit, then the net_app_init() call will fail
during the device startup.
config NET_APP_NEED_IPV6
bool "This application wants IPv6 support"
depends on NET_APP_AUTO_INIT
select NET_IPV6
help
The network application needs IPv6 support to function properly.
This option makes sure the network application is initialized properly
in order to use IPv6.
config NET_APP_NEED_IPV6_ROUTER
bool "This application wants IPv6 router to exists"
depends on NET_APP_AUTO_INIT
depends on NET_IPV6
help
The network application needs IPv6 router to exists before continuing.
What this means that the application wants to wait until it receives
IPv6 router advertisement message before continuing.
config NET_APP_NEED_IPV4
bool "This application wants IPv4 support"
depends on NET_APP_AUTO_INIT
select NET_IPV4
help
The network application needs IPv4 support to function properly.
This option makes sure the network application is initialized properly
in order to use IPv4.
config NET_DEBUG_APP config NET_DEBUG_APP
bool "Debug net app library" bool "Debug net app library"
default n default n
@ -127,139 +78,3 @@ config NET_APP_TLS_STACK_SIZE
thus it is by default very large. thus it is by default very large.
endif # NET_APP endif # NET_APP
menuconfig NET_APP_SETTINGS
bool "Set network settings for applications"
default n
depends on NET_APP
help
Allow IP addresses to be set in config file for
networking client/server sample applications, or
some link-layer dedicated settings like the channel.
Beware this is not meant to be used for proper
provisioning but quick sampling/testing.
if NET_APP_SETTINGS
if NET_IPV6
config NET_APP_MY_IPV6_ADDR
string "My IPv6 address"
help
Use 2001:db8::1 here if uncertain.
config NET_APP_PEER_IPV6_ADDR
string "Peer IPv6 address"
help
This is only applicable in client side applications that try
to establish a connection to peer host.
Use 2001:db8::2 here if uncertain.
endif # NET_IPV6
if NET_IPV4
config NET_APP_MY_IPV4_ADDR
string "My IPv4 address"
help
Use 192.0.2.1 here if uncertain.
config NET_APP_MY_IPV4_NETMASK
string "My IPv4 netmask"
default "255.255.255.0"
help
Static netmask to use if not overridden by DHCP. Use empty value to
skip setting static value.
config NET_APP_MY_IPV4_GW
string "My IPv4 gateway"
help
Static gateway to use if not overridden by DHCP. Use empty value to
skip setting static value.
config NET_APP_PEER_IPV4_ADDR
string "Peer IPv4 address"
help
This is only applicable in client side applications that try
to establish a connection to peer host.
Use 192.0.2.2 here if uncertain.
endif # NET_IPV4
if NET_L2_IEEE802154 || IEEE802154_RAW_MODE || NET_L2_OPENTHREAD
config NET_APP_IEEE802154_DEV_NAME
string "IEEE 802.15.4 device name"
help
The device name to get bindings from in the sample application.
endif # NET_L2_IEEE802154 || IEEE802154_RAW_MODE || NET_L2_OPENTHREAD
if NET_L2_IEEE802154 || IEEE802154_RAW_MODE
config NET_APP_IEEE802154_PAN_ID
hex "IEEE 802.15.4 PAN ID"
default 0xabcd
help
The PAN ID to use by default in the sample.
config NET_APP_IEEE802154_CHANNEL
int "IEEE 802.15.4 channel"
default 26
help
The channel to use by default in the sample application.
config NET_APP_IEEE802154_RADIO_TX_POWER
int "IEEE 802.15.4 TX power in dbm"
default 0
help
The TX power to use by default in the sample application.
See NET_L2_IEEE802154_RADIO_DFLT_TX_POWER for more info.
config NET_APP_IEEE802154_SECURITY_KEY
string "IEEE 802.15.4 security key"
default "moooh!"
depends on NET_L2_IEEE802154_SECURITY
help
The key string to use for the link-layer security part.
config NET_APP_IEEE802154_SECURITY_KEY_MODE
int "IEEE 802.15.4 security key mode"
default 0
range 0 0
depends on NET_L2_IEEE802154_SECURITY
help
The key mode to use for the link-layer security part.
Only implicit mode is supported, thus 0.
config NET_APP_IEEE802154_SECURITY_LEVEL
int "IEEE 802.15.4 security level (0-7)"
default 0
range 0 7
depends on NET_L2_IEEE802154_SECURITY
help
The security level to use for the link-layer security part.
0 means no security
1 authentication only with a 4 bytes length tag
2 authentication only with a 8 bytes length tag
3 authentication only with a 16 bytes length tag
4 encryption only
5 encryption/authentication with a 4 bytes length tag
6 encryption/authentication with a 8 bytes length tag
7 encryption/authentication with a 16 bytes length tag
endif # NET_L2_IEEE802154 || IEEE802154_RAW_MODE
if NET_L2_BT
config NET_APP_BT_NODE
bool "Enable Bluetooth node support"
default n
select NET_L2_BT_MGMT
help
Enables application to operate in node mode which requires GATT
service to be registered and start advertising as peripheral.
endif # NET_L2_BT
endif # NET_APP_SETTINGS

View file

@ -0,0 +1,18 @@
zephyr_library()
zephyr_library_compile_definitions_ifdef(
CONFIG_NEWLIB_LIBC __LINUX_ERRNO_EXTENSIONS__
)
zephyr_library_sources_ifdef(CONFIG_NET_APP_SETTINGS init.c)
if(CONFIG_NET_APP_SETTINGS)
zephyr_library_sources_ifdef(
CONFIG_NET_L2_IEEE802154
ieee802154_settings.c
)
zephyr_library_sources_ifdef(
CONFIG_NET_L2_BT
bt_settings.c
)
endif()

View file

@ -0,0 +1,201 @@
# Kconfig - Options for networking configuration
#
# Copyright (c) 2017 Intel Corporation.
#
# SPDX-License-Identifier: Apache-2.0
#
config NET_APP_AUTO_INIT
bool "Init networking support automatically during device startup"
default y
help
If this option is set, then the net_app API is automatically
initialized when the device is started. If you do not wish to do
this, then disable this and call net_app_init() in your application.
config NET_APP_INIT_PRIO
int "Startup priority for the network application init"
default 95
depends on NET_APP_AUTO_INIT
config NET_APP_INIT_TIMEOUT
int "How long to wait for networking to be ready and available"
default 30
depends on NET_APP_AUTO_INIT
help
The value is in seconds. If for example IPv4 address from DHCPv4 is not
received within this limit, then the net_app_init() call will fail
during the device startup.
config NET_APP_NEED_IPV6
bool "This application wants IPv6 support"
depends on NET_APP_AUTO_INIT
select NET_IPV6
help
The network application needs IPv6 support to function properly.
This option makes sure the network application is initialized properly
in order to use IPv6.
config NET_APP_NEED_IPV6_ROUTER
bool "This application wants IPv6 router to exists"
depends on NET_APP_AUTO_INIT
depends on NET_IPV6
help
The network application needs IPv6 router to exists before continuing.
What this means that the application wants to wait until it receives
IPv6 router advertisement message before continuing.
config NET_APP_NEED_IPV4
bool "This application wants IPv4 support"
depends on NET_APP_AUTO_INIT
select NET_IPV4
help
The network application needs IPv4 support to function properly.
This option makes sure the network application is initialized properly
in order to use IPv4.
config NET_DEBUG_CONFIG
bool "Debug net config library"
default n
default y if NET_LOG_GLOBAL
help
Enables net config library to output debug messages
menuconfig NET_APP_SETTINGS
bool "Set network settings for applications"
default n
depends on NET_APP
select NET_MGMT
select NET_MGMT_EVENT
help
Allow IP addresses to be set in config file for
networking client/server sample applications, or
some link-layer dedicated settings like the channel.
Beware this is not meant to be used for proper
provisioning but quick sampling/testing.
if NET_APP_SETTINGS
if NET_IPV6
config NET_APP_MY_IPV6_ADDR
string "My IPv6 address"
help
Use 2001:db8::1 here if uncertain.
config NET_APP_PEER_IPV6_ADDR
string "Peer IPv6 address"
help
This is only applicable in client side applications that try
to establish a connection to peer host.
Use 2001:db8::2 here if uncertain.
endif # NET_IPV6
if NET_IPV4
config NET_APP_MY_IPV4_ADDR
string "My IPv4 address"
help
Use 192.0.2.1 here if uncertain.
config NET_APP_MY_IPV4_NETMASK
string "My IPv4 netmask"
default "255.255.255.0"
help
Static netmask to use if not overridden by DHCP. Use empty value to
skip setting static value.
config NET_APP_MY_IPV4_GW
string "My IPv4 gateway"
help
Static gateway to use if not overridden by DHCP. Use empty value to
skip setting static value.
config NET_APP_PEER_IPV4_ADDR
string "Peer IPv4 address"
help
This is only applicable in client side applications that try
to establish a connection to peer host.
Use 192.0.2.2 here if uncertain.
endif # NET_IPV4
if NET_L2_IEEE802154 || IEEE802154_RAW_MODE || NET_L2_OPENTHREAD
config NET_APP_IEEE802154_DEV_NAME
string "IEEE 802.15.4 device name"
help
The device name to get bindings from in the sample application.
endif # NET_L2_IEEE802154 || IEEE802154_RAW_MODE || NET_L2_OPENTHREAD
if NET_L2_IEEE802154 || IEEE802154_RAW_MODE
config NET_APP_IEEE802154_PAN_ID
hex "IEEE 802.15.4 PAN ID"
default 0xabcd
help
The PAN ID to use by default in the sample.
config NET_APP_IEEE802154_CHANNEL
int "IEEE 802.15.4 channel"
default 26
help
The channel to use by default in the sample application.
config NET_APP_IEEE802154_RADIO_TX_POWER
int "IEEE 802.15.4 TX power in dbm"
default 0
help
The TX power to use by default in the sample application.
See NET_L2_IEEE802154_RADIO_DFLT_TX_POWER for more info.
config NET_APP_IEEE802154_SECURITY_KEY
string "IEEE 802.15.4 security key"
default "moooh!"
depends on NET_L2_IEEE802154_SECURITY
help
The key string to use for the link-layer security part.
config NET_APP_IEEE802154_SECURITY_KEY_MODE
int "IEEE 802.15.4 security key mode"
default 0
range 0 0
depends on NET_L2_IEEE802154_SECURITY
help
The key mode to use for the link-layer security part.
Only implicit mode is supported, thus 0.
config NET_APP_IEEE802154_SECURITY_LEVEL
int "IEEE 802.15.4 security level (0-7)"
default 0
range 0 7
depends on NET_L2_IEEE802154_SECURITY
help
The security level to use for the link-layer security part.
0 means no security
1 authentication only with a 4 bytes length tag
2 authentication only with a 8 bytes length tag
3 authentication only with a 16 bytes length tag
4 encryption only
5 encryption/authentication with a 4 bytes length tag
6 encryption/authentication with a 8 bytes length tag
7 encryption/authentication with a 16 bytes length tag
endif # NET_L2_IEEE802154 || IEEE802154_RAW_MODE
if NET_L2_BT
config NET_APP_BT_NODE
bool "Enable Bluetooth node support"
default n
select NET_L2_BT_MGMT
help
Enables application to operate in node mode which requires GATT
service to be registered and start advertising as peripheral.
endif # NET_L2_BT
endif # NET_APP_SETTINGS