blob: 690fcc7d34d39f125dd7b1d5137f87e91afdb398 [file] [log] [blame]
alshabib77b88482015-04-07 15:47:50 -07001/*
2 * Copyright 2015 Open Networking Laboratory
3 *
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.net.flowobjective;
17
18import org.onosproject.net.DeviceId;
19
alshabib77b88482015-04-07 15:47:50 -070020/**
Thomas Vachuskaca88bb72015-04-08 19:38:02 -070021 * Service for programming data plane flow rules in manner independent of
22 * specific device table pipeline configuration.
alshabib77b88482015-04-07 15:47:50 -070023 */
24public interface FlowObjectiveService {
25
Thomas Vachuskaca88bb72015-04-08 19:38:02 -070026 /**
27 * Installs the filtering rules onto the specified device.
28 *
29 * @param deviceId device identifier
alshabib2a441c62015-04-13 18:39:38 -070030 * @param filteringObjective the filtering objective
Thomas Vachuskaca88bb72015-04-08 19:38:02 -070031 */
alshabib2a441c62015-04-13 18:39:38 -070032 void filter(DeviceId deviceId, FilteringObjective filteringObjective);
alshabib77b88482015-04-07 15:47:50 -070033
Thomas Vachuskaca88bb72015-04-08 19:38:02 -070034 /**
35 * Installs the forwarding rules onto the specified device.
36 *
37 * @param deviceId device identifier
alshabib2a441c62015-04-13 18:39:38 -070038 * @param forwardingObjective the forwarding objective
Thomas Vachuskaca88bb72015-04-08 19:38:02 -070039 */
alshabib2a441c62015-04-13 18:39:38 -070040 void forward(DeviceId deviceId, ForwardingObjective forwardingObjective);
alshabib77b88482015-04-07 15:47:50 -070041
Thomas Vachuskaca88bb72015-04-08 19:38:02 -070042 /**
43 * Installs the next hop elements into the specified device.
44 *
45 * @param deviceId device identifier
alshabib2a441c62015-04-13 18:39:38 -070046 * @param nextObjective a next objective
Thomas Vachuskaca88bb72015-04-08 19:38:02 -070047 */
alshabib2a441c62015-04-13 18:39:38 -070048 void next(DeviceId deviceId, NextObjective nextObjective);
alshabib77b88482015-04-07 15:47:50 -070049
50}