Example #1
0
File: core.go Project: 3d0c/ogo
func (o *OgoInstance) EchoReply(dpid net.HardwareAddr) {
	// Wait three seconds then send an echo_request message.
	go func() {
		<-time.After(time.Second * 3)
		if sw, ok := Switch(dpid); ok {
			res := ofp10.NewEchoRequest()
			sw.Send(res)
		}
	}()
}
Example #2
0
File: core.go Project: 3d0c/ogo
func (o *OgoInstance) ConnectionUp(dpid net.HardwareAddr) {
	dropMod := ofp10.NewFlowMod()
	dropMod.Priority = 1

	arpFmod := ofp10.NewFlowMod()
	arpFmod.Priority = 2
	arpFmod.Match.DLType = 0x0806 // ARP Messages
	arpFmod.AddAction(ofp10.NewActionOutput(ofp10.P_CONTROLLER))

	// dscFmod := ofp10.NewFlowMod()
	// dscFmod.Priority = 0xffff
	// dscFmod.Match.DLType = 0xa0f1 // Link Discovery Messages
	// dscFmod.AddAction(ofp10.NewActionOutput(ofp10.P_CONTROLLER))

	if sw, ok := Switch(dpid); ok {
		sw.Send(ofp10.NewFeaturesRequest())
		// sw.Send(dropMod)
		// sw.Send(arpFmod)
		// sw.Send(dscFmod)
		sw.Send(ofp10.NewEchoRequest())
	}
	// go o.linkDiscoveryLoop(dpid)
}