# Release 0.71

:material-calendar: 2025-10-10 · :material-list-status: [Full Changelog](https://github.com/srl-labs/containerlab/releases)

## SR-SIM enhancements

For multi component nodes, the config to provision the CPMs, Line cards and MDAs will be [added automatically](../manual/kinds/sros.md#configuration-for-components). This massively simplifies the cognitive load as you no longer need to worry about the essential config to bring up the cards and modules and focus on the actual service configs. Thanks @kaelemc #2827

Another improvement touched the logging part where now if you made an error in your SR-SIM configuration file, the error will be fetched from the container logs and displayed to you in the CLI. This should help you to debug your config issues faster. Thanks #2874

## Env vars for all

In this release we added comprehensive support for the env vars-based configuration. Every containerlab CLI flag of every command now comes with a [corresponding env var](../manual/topo-def-file.md#environment-variables).

All command line arguments can be also provided via environment variables (CLI flags take precedence). The environment variable names are constructed by prepending `CLAB_` to the flag name, then adding the command path and ending with the flag name in its full form, all in uppercase and with hyphens replaced by underscores.

For example, the `--max-workers` flag for the `deploy` command can be set via `CLAB_DEPLOY_MAX_WORKERS` environment variable.  
Or `CLAB_INSPECT_ALL=1` to set `--all` flag for the `inspect` command.  
Or `CLAB_TOPO=srlinux.dev/clab-srl clab dep -c` to deploy a lab with the topology passed via environment variable.

## Cisco SD-WAN nodes

Thanks to @torbbang, Containerlab got support for Cisco SD-WAN components (vManage, vSmart, vBond). Check [cisco_sdwan kind docs](../manual/kinds/cisco_sdwan.md) for more details. #2877

## IP addressing new home

In 0.70 we toyed with the idea of assigning IP addresses on the links automatically based on the user input under the `links` section. Originally we put the `ipv4` and `ipv6` keys under the `.links.vars` section, however, IP is such an essential part of the link definition, that it makes sense to move it up and make it a property of the link itself.

Here is how it looks now in the brief format:

```diff
  links:
    - endpoints: ["srl1:e1-1", "srl2:e1-1"]
-       vars:
-         ipv4: ["192.168.0.1/24", "192.168.0.2/24"]
-         ipv6: ["2001:db8::1/64", "2001:db8::2/64"]
+     ipv4: ["192.168.0.1/24", "192.168.0.2/24"]
+     ipv6: ["2001:db8::1/64", "2001:db8::2/64"]
```

And the extended format is even more expressive:

```diff
       endpoints:
         - node: srl1
           interface: e1-2
-          vars:
-            ipv4: 192.168.0.1/24
-            ipv6: 2001:db8::1/64
+          ipv4: 192.168.0.1/24
+          ipv6: 2001:db8::1/64

         - node: srl2
           interface: e1-2
-          vars:
-            ipv4: 192.168.0.2/24
-            ipv6: 2001:db8::2/64
+          ipv4: 192.168.0.2/24
+          ipv6: 2001:db8::2/64
```

## Topology data export file

A few tools have been built around the [topology data export file](../manual/inventory.md#topology-data) that Containerlab generates. With the introduction of link IP addressing, we revisited the topology data and its `links` sections in particular. Apparently, the default export template was not adhering to the [extended link format](../manual/topo-def-file.md#extended-format) that we have, so it felt like a good time to fix it.

Now the topology data export will change the `links` section to feature endpoints, and link vars and IP addresses will be properly represented there. #2882

Here is an example of the links section when the default (auto.tmpl) template is used:

```json
  "links": [
    {
      "endpoints": {
        "a": {
          "node": "srl1",
          "interface": "e1-2",
          "mac": "aa:c1:ab:56:36:28",
          "vars": {
            "srl1ep1var1": "val1",
            "srl1ep1var2": {
              "a": "b",
              "c": "d"
            }
          },
          "peer": "z"
        },
        "z": {
          "node": "srl2",
          "interface": "e1-2",
          "mac": "aa:c1:ab:09:2f:ea",
          "vars": {
            "srl2ep1var1": "val2",
            "srl2ep1var2": {
              "x": "y",
              "z": "a"
            }
          },
          "peer": "a"
        }
      }
    }
  ]
```

## Miscellaneous

* an alias for the `version upgrade` command has been added - `version update`. #2844
* improved error message when subnet override is detected #2845
* added integer division function for templates #2854
* [documented](../manual/topo-def-file.md#magic-variables) all magic variables and their usage #2839
* `clab graph` will show now all routable addresses to reach the web server serving the topo image #2838

## Patches

### 0.71.1

* topo file backup missing for the deploy command #2893
* added cEOS docs around the forwarding engine modes #2896
* qemu_cpu set to qemu64 for panos #2911
* SR Linux to honor env vars when running the srlinux process #2913
