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 | ||
overlay-e1000.conf | ||
prj.conf | ||
README.rst | ||
sample.yaml |
.. _dhcpv4-client-sample: Sample DHCPv4 client application ################################ Overview ******** This application starts a DHCPv4 client, gets an IPv4 address from the DHCPv4 server, and prints address, lease time, netmask and router information to a serial console. Requirements ************ - :ref:`networking_with_host` Building and Running ******************** Running DHCPv4 client in Linux Host =================================== These are instructions for how to use this sample application using QEMU on a Linux host to negotiate IP address from DHCPv4 server running on Linux host. To use QEMU for testing, follow the :ref:`networking_with_qemu` guide. Here's a sample server configuration file '/etc/dhcp/dhcpd.conf' used to configure the DHCPv4 server: .. code-block:: console log-facility local7; default-lease-time 600; max-lease-time 7200; subnet 192.0.2.0 netmask 255.255.255.0 { range 192.0.2.10 192.0.2.100; } Use another terminal window to start up a DHCPv4 server on the Linux host, using this conf file: .. code-block:: console $ sudo dhcpd -d -4 -cf /etc/dhcp/dhcpd.conf -lf /var/lib/dhcp/dhcpd.leases tap0 Run Zephyr samples/net/dhcpv4_client application in QEMU: .. zephyr-app-commands:: :zephyr-app: samples/net/dhcpv4_client :host-os: unix :board: qemu_x86 :goals: run :compact: Once DHCPv4 client address negotiation completed with server, details are shown like this: .. code-block:: console [dhcpv4] [INF] main: In main [dhcpv4] [INF] main_thread: Run dhcpv4 client [dhcpv4] [INF] handler: Your address: 192.0.2.10 [dhcpv4] [INF] handler: Lease time: 600 [dhcpv4] [INF] handler: Subnet: 255.255.255.0 [dhcpv4] [INF] handler: Router: 0.0.0.0 To verify the Zephyr application client is running and has received an ip address by typing: .. code-block:: console $ ping -I tap0 192.0.2.10 FRDM_K64F ========= These are instructions for how to use this sample application running on :ref:`frdm_k64f` board to negotiate IP address from DHCPv4 server running on Linux host. Connect ethernet cable from :ref:`Freedom-K64F board <frdm_k64f>` to Linux host machine and check for new interfaces: .. code-block:: console $ ifconfig Add ip address and routing information to interface: .. code-block:: console $ sudo ip addr add 192.0.2.2 dev eth1 $ sudo ip route add 192.0.2.0/24 dev eth1 Here's a sample server configuration file '/etc/dhcpd/dhcp.conf' used to configure the DHCPv4 server: .. code-block:: console log-facility local7; default-lease-time 600; max-lease-time 7200; subnet 192.0.2.0 netmask 255.255.255.0 { range 192.0.2.10 192.0.2.100; } Use another terminal window to start up a DHCPv4 server on the Linux host, using this conf file: .. code-block:: console $ sudo dhcpd -d -4 -cf /etc/dhcp/dhcpd.conf -lf /var/lib/dhcp/dhcpd.leases eth1 Build Zephyr samples/net/dhcpv4_client application: .. zephyr-app-commands:: :zephyr-app: samples/net/dhcpv4_client :host-os: unix :board: frdm_k64f :goals: build flash :compact: Once DHCPv4 client address negotiation completed with server, details are shown like this: .. code-block:: console $ sudo screen /dev/ttyACM0 115200 [dhcpv4] [INF] main: In main [dhcpv4] [INF] main_thread: Run dhcpv4 client [dhcpv4] [INF] handler: Your address: 192.0.2.10 [dhcpv4] [INF] handler: Lease time: 600 [dhcpv4] [INF] handler: Subnet: 255.255.255.0 [dhcpv4] [INF] handler: Router: 0.0.0.0 To verify the Zephyr application client is running and has received an ip address by typing: .. code-block:: console $ ping -I eth1 192.0.2.10