示例#1
0
文件: graph.go 项目: mestery/skydive
func (gfe *GraphFlowEnhancer) Enhance(f *flow.Flow) {
	if f.IfSrcGraphPath == "" {
		f.IfSrcGraphPath = gfe.getPath(f.GetStatistics().Endpoints[flow.FlowEndpointType_ETHERNET.Value()].AB.Value)
	}
	if f.IfDstGraphPath == "" {
		f.IfDstGraphPath = gfe.getPath(f.GetStatistics().Endpoints[flow.FlowEndpointType_ETHERNET.Value()].BA.Value)
	}
}
示例#2
0
func (s *TestStorage) CheckFlow(t *testing.T, f *flow.Flow, trace *flowsTraceInfo) bool {
	eth := f.GetStatistics().Endpoints[flow.FlowEndpointType_ETHERNET.Value()]

	for _, fi := range trace.flowStat {
		if fi.Path == f.LayersPath {
			if (fi.ABPackets == eth.AB.Packets) && (fi.ABBytes == eth.AB.Bytes) && (fi.BAPackets == eth.BA.Packets) && (fi.BABytes == eth.BA.Bytes) {
				fi.Checked = true
				return true
			}
		}
	}

	return false
}
示例#3
0
func flow2OldFlow(f *flow.Flow) OldFlow {
	fs := f.GetStatistics()
	eth := fs.Endpoints[flow.FlowEndpointType_ETHERNET.Value()]
	ip := fs.Endpoints[flow.FlowEndpointType_IPV4.Value()]
	port := fs.Endpoints[flow.FlowEndpointType_TCPPORT.Value()]
	if port != nil {
		port = fs.Endpoints[flow.FlowEndpointType_UDPPORT.Value()]
		if port != nil {
			port = fs.Endpoints[flow.FlowEndpointType_SCTPPORT.Value()]
		}
	}

	of := OldFlow{}
	of.UUID = f.UUID
	of.LayersPath = f.LayersPath
	of.EtherSrc = eth.AB.Value
	of.EtherDst = eth.BA.Value
	of.Ipv4Src = ""
	of.Ipv4Dst = ""
	of.PortSrc = 0
	of.PortDst = 0
	if ip != nil {
		of.Ipv4Src = ip.AB.Value
		of.Ipv4Dst = ip.BA.Value
	}
	if port != nil {
		portInt, _ := strconv.Atoi(port.AB.Value)
		of.PortSrc = uint32(portInt)
		portInt, _ = strconv.Atoi(port.BA.Value)
		of.PortDst = uint32(portInt)
	}
	of.ID = 0
	of.Timestamp = uint64(fs.Start)

	of.ProbeGraphPath = f.ProbeGraphPath

	of.IfSrcName = ""
	of.IfSrcType = ""
	of.IfSrcGraphPath = ""
	of.IfSrcTenantID = ""
	of.IfSrcVNI = 0

	of.IfDstName = ""
	of.IfDstType = ""
	of.IfDstGraphPath = ""
	of.IfDstTenantID = ""
	of.IfDstVNI = 0
	return of
}
示例#4
0
文件: ovs.go 项目: lebauce/skydive
func (gfe *OvsFlowEnhancer) Enhance(f *flow.Flow) {
	var eth *flow.FlowEndpointsStatistics
	if f.IfSrcGraphPath == "" || f.IfDstGraphPath == "" {
		eth = f.GetStatistics().GetEndpointsType(flow.FlowEndpointType_ETHERNET)
		if eth == nil {
			return
		}
	}
	if f.IfSrcGraphPath == "" {
		f.IfSrcGraphPath = gfe.getPath(eth.AB.Value)
	}
	if f.IfDstGraphPath == "" {
		f.IfDstGraphPath = gfe.getPath(eth.BA.Value)
	}
}
示例#5
0
func pcapTraceCheckFlow(t *testing.T, f *flow.Flow, trace *flowsTraceInfo) bool {
	eth := f.GetStatistics().GetEndpointsType(flow.FlowEndpointType_ETHERNET)
	if eth == nil {
		t.Fail()
	}

	for _, fi := range trace.flowStat {
		if fi.Path == f.LayersPath {
			if (fi.ABPackets == eth.AB.Packets) && (fi.ABBytes == eth.AB.Bytes) && (fi.BAPackets == eth.BA.Packets) && (fi.BABytes == eth.BA.Bytes) {
				fi.Checked = true
				return true
			}
		}
	}

	return false
}