79e6b0e0f6
As of today <zephyr/zephyr.h> is 100% equivalent to <zephyr/kernel.h>. This patch proposes to then include <zephyr/kernel.h> instead of <zephyr/zephyr.h> since it is more clear that you are including the Kernel APIs and (probably) nothing else. <zephyr/zephyr.h> sounds like a catch-all header that may be confusing. Most applications need to include a bunch of other things to compile, e.g. driver headers or subsystem headers like BT, logging, etc. The idea of a catch-all header in Zephyr is probably not feasible anyway. Reason is that Zephyr is not a library, like it could be for example `libpython`. Zephyr provides many utilities nowadays: a kernel, drivers, subsystems, etc and things will likely grow. A catch-all header would be massive, difficult to keep up-to-date. It is also likely that an application will only build a small subset. Note that subsystem-level headers may use a catch-all approach to make things easier, though. NOTE: This patch is **NOT** removing the header, just removing its usage in-tree. I'd advocate for its deprecation (add a #warning on it), but I understand many people will have concerns. Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no> |
||
---|---|---|
.. | ||
src | ||
CMakeLists.txt | ||
prj.conf | ||
README.rst | ||
sample.yaml |
.. _dns-resolve-sample: DNS Resolve Application ####################### Overview ******** This application will setup IP address for the device, and then try to resolve various hostnames according to how the user has configured the system. - If IPv4 is enabled, then A record for ``www.zephyrproject.org`` is resolved. - If IPv6 is enabled, then AAAA record for ``www.zephyrproject.org`` is resolved. - If mDNS is enabled, then ``zephyr.local`` name is resolved. Requirements ************ - :ref:`networking_with_host` - screen terminal emulator or equivalent. - For most boards without ethernet, the ENC28J60 Ethernet module is required. - dnsmasq application. The dnsmasq version used in this sample is: .. code-block:: console dnsmasq -v Dnsmasq version 2.76 Copyright (c) 2000-2016 Simon Kelley Building and Running ******************** Network Configuration ===================== Open the project configuration file for your platform, for example: :file:`prj_frdm_k64f.conf` is the configuration file for the :ref:`frdm_k64f` board. In this sample application, both static or DHCPv4 IP addresses are supported. Static IP addresses are specified in the project configuration file, for example: .. code-block:: console CONFIG_NET_CONFIG_MY_IPV6_ADDR="2001:db8::1" CONFIG_NET_CONFIG_PEER_IPV6_ADDR="2001:db8::2" are the IPv6 addresses for the DNS client running Zephyr and the DNS server, respectively. DNS server ========== The dnsmasq tool may be used for testing purposes. Sample dnsmasq start script can be downloaded from the zephyrproject-rtos/net-tools project area: https://github.com/zephyrproject-rtos/net-tools Open a terminal window and type: .. code-block:: console $ cd net-tools $ sudo ./dnsmasq.sh The default project configurations settings for this sample uses the public Google DNS servers. In order to use the local dnsmasq server, please edit the appropriate 'prj.conf' file and update the DNS server addresses. For instance, if using the usual IP addresses assigned to testing, update them to the following values: .. code-block:: console CONFIG_DNS_SERVER1="192.0.2.2:5353" CONFIG_DNS_SERVER2="[2001:db8::2]:5353" .. note:: DNS uses port 53 by default, but the dnsmasq.conf file provided by net-tools uses port 5353 to allow executing the daemon without superuser privileges. If dnsmasq fails to start with an error like this: .. code-block:: console dnsmasq: failed to create listening socket for port 5353: Address already in use Open a terminal window and type: .. code-block:: console $ killall -s KILL dnsmasq Try to launch the dnsmasq application again. For testing mDNS, use Avahi script in net-tools project: .. code-block:: console $ cd net-tools $ ./avahi-daemon.sh LLMNR Responder =============== If you want Zephyr to respond to a LLMNR DNS request that Windows host is sending, then following config options could be set: .. code-block:: console CONFIG_NET_HOSTNAME_ENABLE=y CONFIG_NET_HOSTNAME="zephyr-device" CONFIG_DNS_RESOLVER=y CONFIG_LLMNR_RESPONDER=y A Zephyr host needs a hostname assigned to it so that it can respond to a DNS query. Note that the hostname should not have any dots in it. QEMU x86 ======== To use QEMU for testing, follow the :ref:`networking_with_qemu` guide. FRDM K64F ========= Open a terminal window and type: .. zephyr-app-commands:: :zephyr-app: samples/net/dns_resolve :board: frdm_k64f :goals: build flash :compact: See :ref:`Freedom-K64F board documentation <frdm_k64f>` for more information about this board. Open a terminal window and type: .. code-block:: console $ screen /dev/ttyACM0 115200 Use 'dmesg' to find the right USB device. Once the binary is loaded into the FRDM board, press the RESET button.