blob: e44c7d1d862d3f1451b9beaeb86b24a042886bd1 [file] [log] [blame]
/*
* Copyright 2016-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.tetunnel.api.lsp;
import org.onosproject.tetopology.management.api.node.TeNodeKey;
import org.onosproject.tetopology.management.api.node.TtpKey;
import org.onosproject.tetunnel.api.tunnel.TeTunnel;
import org.onosproject.tetunnel.api.tunnel.TeTunnelKey;
import org.onosproject.tetunnel.api.tunnel.path.TeRouteSubobject;
import java.util.List;
/**
* Representation of a TE LSP.
*/
public interface TeLsp {
/**
* Protection roles of TE LSP.
*/
enum LspProtectionRole {
/**
* Designates a working LSP.
*/
WORKING,
/**
* Designates a protection LSP.
*/
PROTECTION
}
/**
* Origin type of LSP relative to the location of the local switch in the
* path.
*/
enum OriginType {
INGRESS,
EGRESS,
TRANSIT
}
/**
* Returns key of this TE LSP.
*
* @return key of this TE LSP
*/
TeLspKey teLspKey();
/**
* Returns source TE node of this tunnel.
*
* @return source TE node key
*/
TeNodeKey srcNode();
/**
* Returns source TE termination point of this tunnel.
*
* @return source TE termination point key
*/
TtpKey srcTp();
/**
* Returns destination TE node of this tunnel.
*
* @return destination TE node key
*/
TeNodeKey dstNode();
/**
* Returns destination TE termination point of this tunnel.
*
* @return destination TE termination point key
*/
TtpKey dstTp();
/**
* Returns the TE tunnel used in the SESSION that remains constant over
* the life of the tunnel.
*
* @return TE tunnel key
*/
TeTunnelKey teTunnelKey();
/**
* Returns corresponding tunnel type.
*
* @return TE tunnel type
*/
TeTunnel.Type tunnelType();
/**
* Returns operational status of the LSP.
*
* @return operational status
*/
TeTunnel.State operStatus();
/**
* Returns protection role of the LSP.
*
* @return protection role
*/
LspProtectionRole lspProtectionRole();
/**
* Return origin type of the LSP.
*
* @return origin type
*/
OriginType originType();
/**
* Returns route of this LSP.
*
* @return list of TeRouteSubobject
*/
List<TeRouteSubobject> lspRecordRoutes();
//TODO add more attributes here.
}