blob: efcb42686b63eaaf00fbed65d180bd668d274133 [file] [log] [blame]
Thomas Vachuska83e090e2014-10-22 14:25:35 -07001/*
Brian O'Connora09fe5b2017-08-03 21:12:30 -07002 * Copyright 2014-present Open Networking Foundation
Thomas Vachuska83e090e2014-10-22 14:25:35 -07003 *
Thomas Vachuska4f1a60c2014-10-28 13:39:07 -07004 * 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
Thomas Vachuska83e090e2014-10-22 14:25:35 -07007 *
Thomas Vachuska4f1a60c2014-10-28 13:39:07 -07008 * 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.
Thomas Vachuska83e090e2014-10-22 14:25:35 -070015 */
Brian O'Connorabafb502014-12-02 22:26:20 -080016package org.onosproject.net.flow;
tom0eb04ca2014-08-25 14:34:51 -070017
Srikanth Vavilapalli95810f52015-09-14 15:49:56 -070018import java.util.List;
19
Brian O'Connorabafb502014-12-02 22:26:20 -080020import org.onosproject.net.DeviceId;
21import org.onosproject.net.provider.ProviderService;
tom0eb04ca2014-08-25 14:34:51 -070022
23/**
tom8bb16062014-09-12 14:47:46 -070024 * Service through which flow rule providers can inject information into
tom0eb04ca2014-08-25 14:34:51 -070025 * the core.
26 */
tomd7356722014-08-26 01:07:39 -070027public interface FlowRuleProviderService extends ProviderService<FlowRuleProvider> {
tom0eb04ca2014-08-25 14:34:51 -070028
29 /**
tom8bb16062014-09-12 14:47:46 -070030 * Signals that a flow rule that was previously installed has been removed.
tom0eb04ca2014-08-25 14:34:51 -070031 *
Thomas Vachuska4b420772014-10-30 16:46:17 -070032 * @param flowEntry removed flow entry
tom0eb04ca2014-08-25 14:34:51 -070033 */
alshabib1c319ff2014-10-04 20:29:09 -070034 void flowRemoved(FlowEntry flowEntry);
tom0eb04ca2014-08-25 14:34:51 -070035
36 /**
alshabib5c370ff2014-09-18 10:12:14 -070037 * Pushes the collection of flow entries currently applied on the given
38 * device.
39 *
Yuta HIGUCHI5c947272014-11-03 21:39:21 -080040 * @param deviceId device identifier
Thomas Vachuska4b420772014-10-30 16:46:17 -070041 * @param flowEntries collection of flow rules
alshabib5c370ff2014-09-18 10:12:14 -070042 */
alshabib1c319ff2014-10-04 20:29:09 -070043 void pushFlowMetrics(DeviceId deviceId, Iterable<FlowEntry> flowEntries);
alshabib5c370ff2014-09-18 10:12:14 -070044
Brian O'Connor72cb19a2015-01-16 16:14:41 -080045 /**
ssyoon9030fbcd92015-08-17 10:42:07 +090046 * Pushes the collection of flow entries currently applied on the given
47 * device without flowMissing process.
48 *
49 * @param deviceId device identifier
50 * @param flowEntries collection of flow rules
51 */
52 void pushFlowMetricsWithoutFlowMissing(DeviceId deviceId, Iterable<FlowEntry> flowEntries);
53
54 /**
Srikanth Vavilapalli95810f52015-09-14 15:49:56 -070055 * Pushes the collection of table statistics entries currently extracted
56 * from the given device.
57 *
58 * @param deviceId device identifier
59 * @param tableStatsEntries collection of flow table statistics entries
60 */
61 void pushTableStatistics(DeviceId deviceId, List<TableStatisticsEntry> tableStatsEntries);
62
63 /**
Brian O'Connor72cb19a2015-01-16 16:14:41 -080064 * Indicates to the core that the requested batch operation has
65 * been completed.
66 *
67 * @param batchId the batch which was processed
68 * @param operation the resulting outcome of the operation
69 */
70 void batchOperationCompleted(long batchId, CompletedBatchOperation operation);
tom0eb04ca2014-08-25 14:34:51 -070071}