| .. 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 :file:`zeth-vlan.conf` configuration |
| file when running :file:`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 :zephyr_file:`samples/net/vlan/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``. |