func (v *VppL3Route) UnmarshalJSON(data []byte) error {
	v.Route = &vpp_l3.Route{}
	return jsonpb.UnmarshalString(string(data), v.Route)
}
UnmarshalJSON uses un-marshaller from jsonpb.
package telemetrymodel
import (
	"github.com/golang/protobuf/jsonpb"
	"github.com/contiv/vpp/plugins/ipnet/restapi"
	"github.com/golang/protobuf/proto"
	"go.ligato.io/cn-infra/v2/health/statuscheck/model/status"
	linux_ifaceidx "go.ligato.io/vpp-agent/v3/plugins/linux/ifplugin/ifaceidx"
	"go.ligato.io/vpp-agent/v3/plugins/vpp/ifplugin/ifaceidx"
	"go.ligato.io/vpp-agent/v3/pkg/idxvpp"
	linux_interfaces "go.ligato.io/vpp-agent/v3/proto/ligato/linux/interfaces"
	vpp_interfaces "go.ligato.io/vpp-agent/v3/proto/ligato/vpp/interfaces"
	vpp_l2 "go.ligato.io/vpp-agent/v3/proto/ligato/vpp/l2"
	vpp_l3 "go.ligato.io/vpp-agent/v3/proto/ligato/vpp/l3"
)
type Reports map[string][]string
func (r Reports) DeepCopy() (out Reports) {
	out = make(Reports, len(r))
	for key, val := range r {
		var outVal []string
		if val == nil {
			out[key] = nil
		} else {
			in, out := &val, &outVal
			*out = make([]string, len(*in))
			copy(*out, *in)
		}
		out[key] = outVal
	}
	return out
}
type NodeInfo struct {
	ID        uint32
	IPAddr    string
	ManIPAddr string  
	Name      string
}
type Node struct {
	*NodeInfo
	NodeLiveness  *status.AgentStatus
	NodeTelemetry map[string]NodeTelemetry
	NodeInterfaces    NodeInterfaceMap
	NodeBridgeDomains NodeBridgeDomains
	NodeL2Fibs        NodeL2FibTable
	NodeIPArp         NodeIPArpTable
	NodeStaticRoutes  NodeStaticRoutes
	NodeIPam          *restapi.NodeIPAMInfo
	LinuxInterfaces   LinuxInterfaces
	PodMap map[string]*Pod
}
type NodeInterfaceMap map[uint32]NodeInterface
func (m NodeInterfaceMap) GetByName(name string) (iface NodeInterface, exists bool) {
	for _, iface = range m {
		if iface.Value.Name == name {
			return iface, true
		}
	}
	return iface, false
}
type NodeInterfaces []NodeInterface
type NodeInterface struct {
	Key      string
	Value    *vpp_interfaces.Interface
	Metadata ifaceidx.IfaceMetadata
}
type LinuxInterfaces []LinuxInterface
type LinuxInterface struct {
	Key      string
	Value    *linux_interfaces.Interface
	Metadata linux_ifaceidx.LinuxIfMetadata
}
type NodeBridgeDomains []NodeBridgeDomain
type NodeBridgeDomain struct {
	Key      string
	Value    VppBridgeDomain
	Metadata idxvpp.OnlyIndex
}
type VppBridgeDomain struct {
	*vpp_l2.BridgeDomain
}
func (v *VppBridgeDomain) UnmarshalJSON(data []byte) error {
	v.BridgeDomain = &vpp_l2.BridgeDomain{}
	return jsonpb.UnmarshalString(string(data), v.BridgeDomain)
}
type NodeL2FibTable []NodeL2FibEntry
type NodeL2FibEntry struct {
	Key   string
	Value VppL2FIB
}
type VppL2FIB struct {
	*vpp_l2.FIBEntry
}
func (v *VppL2FIB) UnmarshalJSON(data []byte) error {
	v.FIBEntry = &vpp_l2.FIBEntry{}
	return jsonpb.UnmarshalString(string(data), v.FIBEntry)
}
type NodeIPArpTable []NodeIPArpEntry
type NodeIPArpEntry struct {
	Key   string
	Value VppARP
}
type VppARP struct {
	*vpp_l3.ARPEntry
}
func (v *VppARP) UnmarshalJSON(data []byte) error {
	v.ARPEntry = &vpp_l3.ARPEntry{}
	return jsonpb.UnmarshalString(string(data), v.ARPEntry)
}
type NodeStaticRoutes []NodeIPRoute
type NodeIPRoute struct {
	Key   string
	Value VppL3Route
}
func (r NodeIPRoute) DeepCopy() (out NodeIPRoute) {
	out = NodeIPRoute{
		Key: r.Key,
		Value: VppL3Route{
			Route: proto.Clone(r.Value.Route).(*vpp_l3.Route),
		},
	}
	return
}
type VppL3Route struct {
	*vpp_l3.Route
}