zephyr/samples/net/echo_server
Ravi kumar Veeramally 6cadd380b7 samples: net: Fix echo_server reply packet preparation
If the incoming packet fragments doesn't have any link layer
header then build_reply_pkt() will set reply packet fragment's link
layer header space to zero. Which is causing issue in case of IPv4.
ARP layer is trying to fill Ethernet headers, but fragments
ll header length is set to zero.

Just use net_pkt_copy_all() to copy payload. That should be enough.

Fixes #6564

Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
2018-05-16 16:40:27 +03:00
..
src samples: net: Fix echo_server reply packet preparation 2018-05-16 16:40:27 +03:00
CMakeLists.txt cmake: Ported mbedTLS to use Zephyr interface libraries 2018-01-02 22:09:01 -05:00
README.rst sample: net: echo-server: Cleanup config files 2018-03-28 09:41:05 +03:00
prj.conf sample: net: echo-server: Cleanup config files 2018-03-28 09:41:05 +03:00
prj_arduino_101.conf
prj_bt.conf net: samples: Remove CONFIG_NET_L2_BT_ZEP1656 2017-11-16 10:41:07 +02:00
prj_cc2520.conf samples: echo_server: Update prj_cc2520 configuration 2018-04-25 07:17:42 +05:30
prj_frdm_k64f_cc2520.conf
prj_frdm_k64f_mcr20a.conf
prj_frdm_kw41z.conf debug: fix RTT console Kconfig 2018-03-19 15:37:26 -04:00
prj_frdm_kw41z_ot.conf samples/echo_server: Increased stack sizes for testing OT on kw41z 2018-05-11 16:39:47 +03:00
prj_netusb.conf usb: Rename SYS_LOG_USB to SYS_LOG_USB_DEVICE 2018-01-17 18:53:05 -05:00
prj_nrf5.conf
prj_nrf52840_ot.conf drivers: flash: nrf: Rename nrf5 to nrf 2018-03-20 20:07:09 +01:00
prj_qemu_802154.conf
prj_qemu_x86_tls.conf
sample.yaml openthread: kw41z: Adding echo/server project config files for KW41Z OT 2018-04-11 16:57:12 +03:00

README.rst

.. _echo-server-sample:

Echo Server
###########

Overview
********

The echo-server sample application for Zephyr implements a UDP/TCP server
that complements the echo-client sample application: the echo-server listens
for incoming IPv4 or IPv6 packets (sent by the echo client) and simply sends
them back.

The source code for this sample application can be found at:
:file:`samples/net/echo_server`.

Requirements
************

- :ref:`networking_with_qemu`

Building and Running
********************

There are multiple ways to use this application. One of the most common
usage scenario is to run echo-server application inside QEMU. This is
described in :ref:`networking_with_qemu`.

There are configuration files for different boards and setups in the
echo-server directory:

- :file:`prj.conf`
  Generic config file, normally you should use this.

- :file:`prj_arduino_101.conf`
  Use this for Arduino 101 with external enc28j60 ethernet board.

- :file:`prj_bt.conf`
  Use this for Bluetooth IPSP connectivity.

- :file:`prj_cc2520.conf`
  Use this for devices that have support for IEEE 802.15.4 cc2520 chip.

- :file:`prj_frdm_k64f_cc2520.conf`
  Use this for FRDM-K64F board with external IEEE 802.15.4 cc2520 board.

- :file:`prj_frdm_k64f_mcr20a.conf`
  Use this for FRDM-K64F board with IEEE 802.15.4 mcr20a board.

- :file:`prj_qemu_802154.conf`
  Use this when simulating IEEE 802.15.4 network using two QEMU's that
  are connected together.

- :file:`prj_netusb.conf`
  Use this for Ethernet over USB setup with supported boards. The setup is
  described in :ref:`usb_device_networking_setup`.

Build echo-server sample application like this:

.. zephyr-app-commands::
   :zephyr-app: samples/net/echo_server
   :board: <board to use>
   :conf: <config file to use>
   :goals: build
   :compact:

Make can select the default configuration file based on the BOARD you've
specified automatically so you might not always need to mention it.

Running echo-client in Linux Host
=================================

There is one useful testing scenario that can be used with Linux host.
Here echo-server is run in QEMU and echo-client is run in Linux host.

To use QEMU for testing, follow the :ref:`networking_with_qemu` guide.

Run echo-server application in QEMU:

.. zephyr-app-commands::
   :zephyr-app: samples/net/echo_server
   :host-os: unix
   :board: qemu_x86
   :goals: run
   :compact:

In a terminal window:

.. code-block:: console

    $ sudo ./echo-client -i tap0 2001:db8::1

Note that echo-server must be running in QEMU before you start the
echo-client application in host terminal window.