zephyr/samples/net/vlan
Marc Herbert 2cd51a33ce samples: make find_package(Zephyr...) REQUIRED
This provides a better error message when building with CMake and
forgetting ZEPHYR_BASE or not registering Zephyr in the CMake package
registry. See parent commit for more details (split from parent for
better readability).

Signed-off-by: Marc Herbert <marc.herbert@intel.com>
2020-05-29 10:47:25 +02:00
..
src samples: net: Convert to use generic logging macros 2018-12-07 12:00:04 +02:00
CMakeLists.txt samples: make find_package(Zephyr...) REQUIRED 2020-05-29 10:47:25 +02:00
Kconfig kconfig: Clean up header comments and make them consistent 2019-11-04 17:31:27 -05:00
prj.conf samples: net: Remove net-app based sample applications 2019-02-01 12:29:21 +02:00
README.rst doc: net: Fix VLAN documentation in doc and in sample 2019-03-07 20:31:04 -05:00
sample.yaml samples: add test identifier 2019-03-29 17:44:11 -04:00
vlan-setup-linux.sh samples: net: vlan: Simple app for setting virtual lan settings 2018-04-05 08:54:19 -04:00

.. _vlan-sample:

Virtual LAN Sample Application
##############################

Overview
********

The VLAN sample application for Zephyr will setup two virtual LAN networks.
The application sample enables net-shell and allows users to view VLAN settings.

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

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

- :ref:`networking_with_host`

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

A good way to run this VLAN application is with QEMU as described in
:ref:`networking_with_eth_qemu`. You can use *zeth-vlan.conf* configuration
file when running *net-setup.sh* script in Linux like this:

.. code-block:: console

    ./net-setup.sh -c zeth-vlan.conf

Note that VLAN is only supported for boards that have an ethernet port or
that support USB networking.

Follow these steps to build the VLAN sample application:

.. zephyr-app-commands::
   :zephyr-app: samples/net/vlan
   :board: <board to use>
   :conf: prj.conf
   :goals: build
   :compact:

The default configuration file prj.conf creates two virtual LAN networks
with these settings:

- VLAN tag 100: IPv4 198.51.100.1 and IPv6 2001:db8:100::1
- VLAN tag 200: IPv4 203.0.113.1 and IPv6 2001:db8:200::1

Setting up Linux Host
=====================

The :zephyr_file:`samples/net/vlan/vlan-setup-linux.sh` provides a script that
can be executed on the Linux host. It creates two VLAN interfaces *vlan.100*
and *vlan.200* on the Linux host and creates routes to Zephyr.

If everything is configured correctly, you will be able to successfully execute
the following commands on the Linux host.

.. code-block:: console

    ping -c 1 2001:db8:100::1
    ping -c 1 198.51.100.1
    ping -c 1 2001:db8:200::1
    ping -c 1 203.0.113.1

The network packets to *2001:db8:100::1* or *198.51.100.1* will have VLAN
tag 100 set to them. The vlan tag 200 will be set to network packets to
*2001:db8:200::1* or *203.0.113.1*.