# Release 0.16
:material-calendar: 2021-08-03

!!!warning
    This release adds a new way of writing containerlab hosts information into the `/etc/hosts` file.

    Before upgrading to this release destroy all labs and ensure no stale entries are present in the `/etc/hosts` file, then do the upgrade.

## Improved interfaces detection for vr-based nodes
With the enhancements made by [@carlmontanari](https://github.com/carlmontanari) in vrnetlab and [@networkop](https://github.com/carlmontanari) in containerlab we improved the way vr-based nodes boot.

The improvements are related to the way VMs inside the containers detect the presence of the dataplane interfaces. Starting with `hellt/vrnetlab v0.5.0` and `containerlab v0.16.0` the nodes will know exactly how many interfaces a user defined in the lab file, and therefore will wait for those interfaces to appear before booting the qemu VM.

## Non-sequential interfaces for vr-based nodes
Thanks to [@carlmontanari](https://github.com/carlmontanari) work in [vrnetlab#55](https://github.com/hellt/vrnetlab/pull/55) it is now possible to define node's interfaces in a non-sequential way. This means, that a user now can define the links as follows:

```yaml
topology:
  nodes:
    sr1:
      kind: vr-sros
      image: vr-sros:21.5.R2

    sr2:
      kind: vr-sros
      image: vr-sros:21.5.R2

  links:
    # sr1 port 3 is connected to sr2 port 5
    - endpoints: ["sr1:eth3", "sr2:eth5"]
```

## New DNS entries format
Containerlab [creates nodes DNS entries](../manual/network.md#dns) when the lab is deployed. In this release we improved the visual layout of those entries so they can be introspected easier.

## Ansible inventory improvements
A user can now specify an [extra ansible group](../manual/inventory.md#user-defined-groups) the node should be part of in addition to the default grouping by kind.

Another change is that we now create an empty ansible inventory file when the deployment starts and write data to it once it is available. This approach makes it possible to create a clab file that mounts the `ansible-inventory.yml` file that will be created during the deploy command.

```yaml
# mounting the ansible inventory file to a node of a lab
binds:
  - clab-demo/ansible-inventory.yml:/tmp/inv
```

## New node kinds
[@carlmontanari](https://github.com/carlmontanari) added support for [Cisco Nexus 9000v](../manual/kinds/vr-n9kv.md) and [Palo Alto PAN](../manual/kinds/vr-pan.md) nodes.

## Miscellaneous
* IPv6 LLA is now enabled on veth interfaces [#551](https://github.com/srl-labs/containerlab/issues/551)
* SR Linux bind mounts were refined and now only config.json and topology.yml files are mounted [#564](https://github.com/srl-labs/containerlab/issues/564)
* SR Linux default type has changed from IXR-6 to IXR-D2 to support EVPN services by default

## New contributors
Welcome [@carlmontanari](https://github.com/carlmontanari), [@sc68cal](https://github.com/sc68cal) and thank you for your contributions to containerlab!

## Patches

### 0.16.1
- Fixed mysocketio integration [#574](https://github.com/srl-labs/containerlab/issues/574)

### 0.16.2
- @karimra added another cool addition to containerlab: it is possible to customize the lab prefix or remove it entirely. Read more about it [here](../manual/topo-def-file.md#prefix).
- We had to bring back directory based mounts for SR Linux nodes for the reasons explained in [#579](https://github.com/srl-labs/containerlab/issues/579)