blob: b43f40614edb13bfd7f1f246a81cc0b13fd7c9e6 [file] [log] [blame]
/*
* Copyright 2016 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.tetopology.management.api.link;
import org.onosproject.tetopology.management.api.EncodingType;
import org.onosproject.tetopology.management.api.SwitchingType;
import org.onosproject.tetopology.management.api.TeStatus;
import org.onosproject.tetopology.management.api.TeTopologyKey;
import java.util.BitSet;
import java.util.List;
/**
* Abstraction of a TE link.
*/
public interface TeLink {
/**
* Indicates that the TE link belongs to an abstract topology.
*/
public static final short BIT_ABSTRACT = 0;
/**
* Indicates that the underlay topology that supports this TE link
* is dynamically created as opposed to being created by provisioning.
*/
public static final short BIT_DYNAMIC = 1;
/**
* Indicates that the underlay topology is committed to service.
*/
public static final short BIT_COMMITTED = 2;
/**
* Indicates that the TE link connects 2 TE domains.
*/
public static final short BIT_ACCESS_INTERDOMAIN = 3;
/**
* Indicates that the TE link is not numbered.
*/
public static final short BIT_UNNUMBERED = 4;
/**
* Returns the TE link key.
*
* @return the TE link key
*/
TeLinkTpKey teLinkKey();
/**
* Returns the key of the bi-directional peer TE link.
*
* @return peer TE link key
*/
TeLinkTpKey peerTeLinkKey();
/**
* Returns the flags of this TE link.
*
* @return the flags
*/
BitSet flags();
/**
* Returns the network layer switching type for this link.
*
* @return the network layer switching type
*/
SwitchingType switchingLayer();
/**
* Returns the network layer encoding type for this link.
*
* @return the encoding type
*/
EncodingType encodingLayer();
/**
* Returns the external link.
*
* @return the external link
*/
ExternalLink externalLink();
/**
* Returns the underlay TE topology identifier for the link.
*
* @return the underlay TE topology id
*/
TeTopologyKey underlayTeTopologyId();
/**
* Returns the primary path.
*
* @return underlay primary path
*/
UnderlayPrimaryPath primaryPath();
/**
* Returns the backup paths.
*
* @return list of underlay backup paths
*/
List<UnderlayBackupPath> backupPaths();
/**
* Returns the supporting tunnel protection type.
*
* @return the tunnel protection type
*/
TunnelProtectionType tunnelProtectionType();
/**
* Returns the supporting tunnel's source tunnel termination point
* identifier.
*
* @return the source TTP id
*/
long sourceTtpId();
/**
* Returns the supporting tunnel's destination tunnel termination
* point identifier.
*
* @return the destination TTP id
*/
long destinationTtpId();
/**
* Returns the supporting tunnel identifier.
*
* @return the supporting tunnel id
*/
TeTunnelId teTunnelId();
/**
* Returns the supporting TE link identifier.
*
* @return the supporting TE link id
*/
TeLinkTpGlobalKey supportingTeLinkId();
/**
* Returns the source TE link identifier.
*
* @return the source link id
*/
TeLinkTpGlobalKey sourceTeLinkId();
/**
* Returns the link cost.
*
* @return the cost
*/
Long cost();
/**
* Returns the link delay.
*
* @return the delay
*/
Long delay();
/**
* Returns the link SRLG values.
*
* @return the srlgs
*/
List<Long> srlgs();
/**
* Returns the link administrative group.
*
* @return the adminGroup
*/
Long administrativeGroup();
/**
* Returns the supported inter-layer locks.
*
* @return the inter-layer locks
*/
List<Long> interLayerLocks();
/**
* Returns the maximum bandwidth at each priority level.
*
* @return a list of maximum bandwidths
*/
float[] maxBandwidth();
/**
* Returns the available bandwidth at each priority level.
*
* @return a list of available bandwidths
*/
float[] availBandwidth();
/**
* Returns the maximum available bandwidth for a LSP at each priority level.
*
* @return a list of maximum available bandwidths
*/
float[] maxAvailLspBandwidth();
/**
* Returns the minimum available bandwidth for a LSP at each priority level.
*
* @return a list of minimum available bandwidths
*/
float[] minAvailLspBandwidth();
/**
* Returns the administrative status of this TE link.
*
* @return the admin status
*/
TeStatus adminStatus();
/**
* Returns the operational status of this TE link.
*
* @return the operational status
*/
TeStatus opStatus();
/**
* Returns the link ODUk resources.
*
* @return the ODUk resources
*/
OduResource oduResource();
}