blob: a666a1b81b52e9ecd63a392e799c14462a7440f9 [file] [log] [blame]
/*
* Copyright 2015-present Open Networking Foundation
*
* 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.inbandtelemetry.api;
import com.google.common.annotations.Beta;
import org.onosproject.net.DeviceId;
import java.util.Set;
/**
* Service for controlling INT-capable pipelines.
*/
@Beta
public interface IntService {
/**
* Represents the role of INT-capable devices.
*/
enum IntDeviceRole {
/**
* Intermediate device to add its own INT metadata to an INT packet by
* following the INT instruction in the INT header.
*/
TRANSIT,
/**
* A device that creates, inserts INT headers into the packet, and
* extracts the INT headers.
*/
SOURCE_SINK
}
/**
* Starts the INT functionalities in all INT-capable devices.
* This will include populating tables to process INT packets.
*/
void startInt();
/**
* Starts the INT functionalities in specified set of INT transit devices.
* <p>
* Note: this is an experimental API, which can be either changed or removed.
*
* @param transitDevices set of devices to start INT functionalities
*/
void startInt(Set<DeviceId> transitDevices);
/**
* Stops the INT functionalities in all INT-capable devices.
*/
void stopInt();
/**
* Stops the INT functionalities in specified set of INT transit devices.
* <p>
* Note: this is an experimental API, which can be either changed or removed.
*
* @param transitDevices set of devices to stop INT functionalities
*/
void stopInt(Set<DeviceId> transitDevices);
/**
* Configures all INT-capable devices with given configuration.
*
* @param cfg configuration to set up
*/
void setConfig(IntConfig cfg);
/**
* Retrieves the INT configuration.
*
* @return configuration
*/
IntConfig getConfig();
/**
* Installs an IntIntent to devices.
*
* @param intIntent an IntIntent
* @return an ID corresponding to given intIntent
*/
int installIntIntent(IntIntent intIntent);
/**
* Removes an IntIntent from devices.
*
* @param intentId ID of the intIntent to remove
*/
void removeIntIntent(int intentId);
/**
* Returns an intIntent for given intent ID.
*
* @param intentId id of the intIntent to retrieve
* @return an IntIntent
*/
IntIntent getIntIntent(int intentId);
//TODO: [ONOS-7616] Design IntEvent and related APIs
}