| /* |
| * Copyright 2017-present Open Networking Laboratory |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.onosproject.ofagent.api; |
| |
| import io.netty.channel.Channel; |
| import org.onosproject.net.Port; |
| import org.onosproject.net.flow.FlowRule; |
| import org.onosproject.net.packet.InboundPacket; |
| import org.projectfloodlight.openflow.protocol.OFMessage; |
| |
| /** |
| * Service providing OpenFlow switch operations. |
| */ |
| public interface OFSwitchService { |
| |
| /** |
| * Handles the switch starts. |
| */ |
| void started(); |
| |
| /** |
| * Handles the switch stops. |
| */ |
| void stopped(); |
| |
| /** |
| * Processes a new port of the switch. |
| * It sends out FEATURE_REPLY message to the controllers. |
| * |
| * @param port virtual port |
| */ |
| void processPortAdded(Port port); |
| |
| /** |
| * Processes port link down. |
| * It sends out PORT_STATUS asynchronous message to the controllers. |
| * |
| * @param port virtual port |
| */ |
| void processPortDown(Port port); |
| |
| /** |
| * Processes port link down. |
| * It sends out PORT_STATUS asynchronous message to the controllers. |
| * |
| * @param port virtual port |
| */ |
| void processPortUp(Port port); |
| |
| /** |
| * Processes flow removed. |
| * It sends out FLOW_REMOVED asynchronous message to the controllers. |
| * |
| * @param flowRule removed flow rule |
| */ |
| void processFlowRemoved(FlowRule flowRule); |
| |
| /** |
| * Processes packet in. |
| * It sends out PACKET_IN asynchronous message to the controllers. |
| * |
| * @param packet inbound packet |
| */ |
| void processPacketIn(InboundPacket packet); |
| |
| /** |
| * Processes commands from the controllers that modify the state of the switch. |
| * Possible message types include PACKET_OUT, FLOW_MOD, GROUP_MOD, |
| * PORT_MOD, TABLE_MOD. These types of messages can be denied based on a |
| * role of the request controller. |
| * |
| * @param channel received channel |
| * @param msg command message received |
| */ |
| void processControllerCommand(Channel channel, OFMessage msg); |
| |
| /** |
| * Processes a stats request from the controllers. |
| * Targeted message type is MULTIPART_REQUEST with FLOW, PORT, GROUP, |
| * GROUP_DESC subtypes. |
| * |
| * @param channel received channel |
| * @param msg stats request message received |
| */ |
| void processStatsRequest(Channel channel, OFMessage msg); |
| |
| /** |
| * Processes a role request from the controllers. |
| * Targeted message type is ROLE_REQUEST. |
| * |
| * @param channel received channel |
| * @param msg role request message received |
| */ |
| void processRoleRequest(Channel channel, OFMessage msg); |
| |
| /** |
| * Processes a features request from the controllers. |
| * |
| * @param channel received channel |
| * @param msg received features request |
| */ |
| void processFeaturesRequest(Channel channel, OFMessage msg); |
| |
| /** |
| * Processes LLDP packets from the controller. |
| * |
| * @param channel received channel |
| * @param msg packet out message with lldp |
| */ |
| void processLldp(Channel channel, OFMessage msg); |
| } |