.. zephyr:code-sample:: vlan :name: Virtual LAN :relevant-api: vlan_api net_l2 net_if Setup two virtual LAN networks and use net-shell to view the networks' settings. 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: :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*.