func (o *OgoInstance) EchoReply(dpid net.HardwareAddr) { // Wait three seconds then send an echo_reply message. go func() { <-time.After(time.Second * 3) if sw, ok := Switch(dpid); ok { res := ofp10.NewEchoRequest() sw.Send(res) } }() }
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) }