blob: cd1955ae12a0ac8b6e4c9da6bc02e0b402e550c5 [file] [log] [blame]
Hyunsun Moon90163ba2016-10-12 13:35:14 -07001/*
Brian O'Connora09fe5b2017-08-03 21:12:30 -07002 * Copyright 2017-present Open Networking Foundation
Hyunsun Moon90163ba2016-10-12 13:35:14 -07003 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package org.onosproject.ofagent.api;
17
Daniel Parkbe6b6732016-11-11 15:52:19 +090018import org.projectfloodlight.openflow.protocol.OFCapabilities;
19
20import java.util.Set;
21
Hyunsun Moon90163ba2016-10-12 13:35:14 -070022/**
23 * Representation of capabilities of a virtual OpenFlow switch.
24 */
25public interface OFSwitchCapabilities {
26
Daniel Parkbe6b6732016-11-11 15:52:19 +090027 /**
28 * Returns the capabilities of the switch.
29 *
30 * @return capabilities
31 */
32 Set<OFCapabilities> ofSwitchCapabilities();
33
34 interface Builder {
35
36 /**
37 * Builds a OFSwitchCapabilities object.
38 *
39 * @return OFSwitchCapabilities
40 */
41 OFSwitchCapabilities build();
42
43 /**
44 * Enable OFPC_FLOW_STATS capability.
45 *
46 * @return Builder object
47 */
48 Builder flowStats();
49
50 /**
51 * Enable OFPC_TABLE_STATS capability.
52 *
53 * @return Builder object
54 */
55 Builder tableStats();
56
57 /**
58 * Enable OFPC_PORT_STATS capability.
59 *
60 * @return Builder object
61 */
62 Builder portStats();
63
64 /**
65 * Enable OFPC_GROUP_STATS capability.
66 *
67 * @return Builder object
68 */
69 Builder groupStats();
70
71 /**
72 * Enable OFPC_IP_REASM capability.
73 *
74 * @return Builder object
75 */
76 Builder ipReasm();
77
78 /**
79 * Enable OFPC_QUEUE_STATS capability.
80 *
81 * @return Builder object
82 */
83 Builder queueStats();
84
85 /**
86 * Enable OFPC_PORT_BLOCKED capability.
87 *
88 * @return Builder object
89 */
90 Builder portBlocked();
91 }
92
Hyunsun Moon90163ba2016-10-12 13:35:14 -070093}