From 0089e89092373333d78b18a3c91a4e7753d6a698 Mon Sep 17 00:00:00 2001 From: Malte Bauch <malte.bauch@extern.h-da.de> Date: Tue, 21 Jun 2022 16:13:39 +0200 Subject: [PATCH] Remove direct access of addresses --- os_clients/ubuntu/supportedPaths.go | 33 +++++++++++++++++------------ os_clients/ubuntu/ubuntu.go | 1 + 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/os_clients/ubuntu/supportedPaths.go b/os_clients/ubuntu/supportedPaths.go index 3467882..6965a5a 100644 --- a/os_clients/ubuntu/supportedPaths.go +++ b/os_clients/ubuntu/supportedPaths.go @@ -155,25 +155,30 @@ func generateSubinterface(subintf *gnmitargetygot.OpenconfigInterfaces_Interface } errs := make([]error, 0) - for _, addr := range subintf.Ipv4.Addresses.Address { - if !util.IsValueNil(addr.Config.Ip) && !util.IsValueNil(addr.Config.PrefixLength) { - netlinkAddr := &netlink.Addr{ - IPNet: &net.IPNet{ - IP: net.ParseIP(*addr.Config.Ip), - Mask: net.CIDRMask(int(*addr.Config.PrefixLength), 32), - }, + if ipv4s := subintf.GetIpv4(); ipv4s != nil { + if addresses := ipv4s.GetAddresses(); addresses != nil { + for _, addr := range subintf.Ipv4.Addresses.Address { + if !util.IsValueNil(addr.Config.Ip) && !util.IsValueNil(addr.Config.PrefixLength) { + netlinkAddr := &netlink.Addr{ + IPNet: &net.IPNet{ + IP: net.ParseIP(*addr.Config.Ip), + Mask: net.CIDRMask(int(*addr.Config.PrefixLength), 32), + }, + } + if err := netlink.AddrReplace(link, netlinkAddr); err != nil { + errs = append(errs, err) + } + } } - if err := netlink.AddrReplace(link, netlinkAddr); err != nil { - errs = append(errs, err) + if len(errs) != 0 { + return fmt.Errorf("encountered %v errors during address adding \n%v", len(errs), errs) } + return nil } } - if len(errs) != 0 { - return fmt.Errorf("encountered %v errors during address adding \n%v", len(errs), errs) - } - - return nil + errs = append(errs, fmt.Errorf("no ipv4 addresses found")) + return fmt.Errorf("encountered %v errors during address adding \n%v", len(errs), errs) } func generateProtocol(protocol *gnmitargetygot.OpenconfigNetworkInstance_NetworkInstances_NetworkInstance_Protocols_Protocol) error { diff --git a/os_clients/ubuntu/ubuntu.go b/os_clients/ubuntu/ubuntu.go index e109199..d1bcee1 100644 --- a/os_clients/ubuntu/ubuntu.go +++ b/os_clients/ubuntu/ubuntu.go @@ -46,6 +46,7 @@ func (ou *OsclientUbuntu) GetConfig() *gnmitargetygot.Gnmitarget { log.WithFields(log.Fields{}).Error(err) } for _, localIface := range localIfaces { + log.Println("Creating Interface with name: ", localIface.Attrs().Name) ou.createInterfaces(localIface, ou.gt) } -- GitLab