From 70bcebc451e774e01d70e865fb970352f465cd3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20Walstr=C3=B6m?= Date: Thu, 23 Jan 2025 16:10:53 +0100 Subject: [PATCH] yanger: Add oprational information about vxlan interfaces --- src/statd/python/yanger/ietf_interfaces/link.py | 5 +++++ src/statd/python/yanger/ietf_interfaces/tun.py | 17 +++++++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/statd/python/yanger/ietf_interfaces/link.py b/src/statd/python/yanger/ietf_interfaces/link.py index 955d9e08..05a9a5a2 100644 --- a/src/statd/python/yanger/ietf_interfaces/link.py +++ b/src/statd/python/yanger/ietf_interfaces/link.py @@ -45,6 +45,8 @@ def iplink2yang_type(iplink): return "infix-if-type:dummy" case "gretap"|"ip6gretap": return "infix-if-type:gretap" + case "vxlan": + return "infix-if-type:vxlan" case "veth": return "infix-if-type:veth" case "vlan": @@ -121,6 +123,9 @@ def interface(iplink, ipaddr): case "infix-if-type:ethernet": if eth := ethernet.ethernet(iplink): interface["ieee802-ethernet-interface:ethernet"] = eth + case "infix-if-type:vxlan": + if vxlan := tun.vxlan(iplink): + interface["infix-interfaces:vxlan"] = vxlan case "infix-if-type:gre"|"infix-if-type:gretap": if gre := tun.gre(iplink): interface["infix-interfaces:gre"] = gre diff --git a/src/statd/python/yanger/ietf_interfaces/tun.py b/src/statd/python/yanger/ietf_interfaces/tun.py index 93378f60..55df5398 100644 --- a/src/statd/python/yanger/ietf_interfaces/tun.py +++ b/src/statd/python/yanger/ietf_interfaces/tun.py @@ -1,7 +1,16 @@ +def _get_local_remote(info): + return { + "local": info.get("local") or info.get("local6"), + "remote": info.get("remote") or info.get("remote6"), + } def gre(iplink): info=iplink.get("linkinfo", {}).get("info_data", {}) - return { - "local": info["local"], - "remote": info["remote"], - } + return _get_local_remote(info) + +def vxlan(iplink): + info=iplink.get("linkinfo", {}).get("info_data", {}) + data=_get_local_remote(info) + data.update({"vni": info["id"]}) + + return data