blob: 8130c0acf367ea4182a0a92eebc13032c52ff0fa [file] [log] [blame]
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -08001/**
Ray Milkey269ffb92014-04-03 14:43:30 -07002 * Copyright 2011, Big Switch Networks, Inc.
3 * Originally created by David Erickson, Stanford University
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License"); you may
6 * not use this file except in compliance with the License. You may obtain
7 * a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 * License for the specific language governing permissions and limitations
15 * under the License.
16 **/
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -080017
18package net.floodlightcontroller.core.internal;
19
20/**
21 * Wrapper class to hold state for the OpenFlow switch connection
Ray Milkey269ffb92014-04-03 14:43:30 -070022 *
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -080023 * @author readams
24 */
25class OFChannelState {
26
27 /**
28 * State for handling the switch handshake
29 */
30 protected enum HandshakeState {
31 /**
32 * Beginning state
33 */
34 START,
35
36 /**
37 * Received HELLO from switch
38 */
39 HELLO,
40
41 /**
42 * We've received the features reply
43 * Waiting for Config and Description reply
44 */
45 FEATURES_REPLY,
46
47 /**
48 * Switch is ready for processing messages
49 */
50 READY
51
52 }
53
54 protected volatile HandshakeState hsState = HandshakeState.START;
55 protected boolean hasGetConfigReply = false;
56 protected boolean hasDescription = false;
Ray Milkey269ffb92014-04-03 14:43:30 -070057
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -080058 // The firstRoleReplyRecevied flag indicates if we have received the
59 // first role reply message on this connection (in response to the
60 // role request sent after the handshake). If role support is disabled
61 // on the controller we also set this flag to true.
62 // The flag is used to decide if the flow table should be wiped
63 // @see Controller.handleRoleReplyMessage()
64 protected boolean firstRoleReplyReceived = false;
65}