blob: 8e1461dcebd9017fdcbc26f5b8a7e117507a4d74 [file] [log] [blame]
mohamed rahil8ea09d42016-04-19 20:47:21 +05301/*
Brian O'Connora09fe5b2017-08-03 21:12:30 -07002 * Copyright 2016-present Open Networking Foundation
mohamed rahil8ea09d42016-04-19 20:47:21 +05303 *
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.isis.controller.topology;
17
18import org.onlab.packet.Ip4Address;
mohamed rahil8ea09d42016-04-19 20:47:21 +053019import org.onlab.util.Bandwidth;
20
21import java.util.List;
22
23/**
24 * Representation of ISIS link traffic engineering parameters.
25 */
26public interface IsisLinkTed {
27
28 /**
sunish vk7bdf4d42016-06-24 12:29:43 +053029 * Gets the administrative group.
mohamed rahil8ea09d42016-04-19 20:47:21 +053030 *
sunish vk7bdf4d42016-06-24 12:29:43 +053031 * @return administrative group
mohamed rahil8ea09d42016-04-19 20:47:21 +053032 */
sunish vk7bdf4d42016-06-24 12:29:43 +053033 int administrativeGroup();
mohamed rahil8ea09d42016-04-19 20:47:21 +053034
35 /**
sunish vk7bdf4d42016-06-24 12:29:43 +053036 * Sets the administrative group.
mohamed rahil8ea09d42016-04-19 20:47:21 +053037 *
sunish vk7bdf4d42016-06-24 12:29:43 +053038 * @param administrativeGroup administrative group
mohamed rahil8ea09d42016-04-19 20:47:21 +053039 */
sunish vk7bdf4d42016-06-24 12:29:43 +053040 void setAdministrativeGroup(int administrativeGroup);
mohamed rahil8ea09d42016-04-19 20:47:21 +053041
42 /**
sunish vk7bdf4d42016-06-24 12:29:43 +053043 * Provides the IPv4 interface address.
44 *
45 * @return IPv4 interface address
46 */
47 Ip4Address ipv4InterfaceAddress();
48
49 /**
50 * Sets the IPv4 interface address.
51 *
52 * @param interfaceAddress IPv4 interface address
53 */
54 void setIpv4InterfaceAddress(Ip4Address interfaceAddress);
55
56 /**
57 * Provides the IPv4 neighbor address.
58 *
59 * @return IPv4 neighbor address
60 */
61 Ip4Address ipv4NeighborAddress();
62
63 /**
64 * Sets the IPv4 neighbor address.
65 *
66 * @param neighborAddress IPv4 neighbor address
67 */
68 void setIpv4NeighborAddress(Ip4Address neighborAddress);
69
70 /**
71 * Gets the maximum link bandwidth.
72 *
73 * @return maximum link bandwidth
74 */
75 Bandwidth maximumLinkBandwidth();
76
77 /**
78 * Sets the maximum link bandwidth.
79 *
80 * @param bandwidth maximum link bandwidth
81 */
82 void setMaximumLinkBandwidth(Bandwidth bandwidth);
83
84 /**
85 * Provides max bandwidth that can be reservable on the link.
86 *
87 * @return max bandwidth reservable
88 */
89 Bandwidth maximumReservableLinkBandwidth();
90
91 /**
92 * Sets max bandwidth that can be reservable on the link.
93 *
94 * @param bandwidth max bandwidth that can be reservable on the link
95 */
96 void setMaximumReservableLinkBandwidth(Bandwidth bandwidth);
97
98 /**
99 * Amount of bandwidth unreserved on the link.
mohamed rahil8ea09d42016-04-19 20:47:21 +0530100 *
101 * @return unreserved bandwidth
102 */
sunish vk7bdf4d42016-06-24 12:29:43 +0530103 List<Bandwidth> unreservedBandwidth();
mohamed rahil8ea09d42016-04-19 20:47:21 +0530104
105 /**
sunish vk7bdf4d42016-06-24 12:29:43 +0530106 * Sets the bandwidth unreserved on the link.
mohamed rahil8ea09d42016-04-19 20:47:21 +0530107 *
sunish vk7bdf4d42016-06-24 12:29:43 +0530108 * @param bandwidth bandwidth unreserved
mohamed rahil8ea09d42016-04-19 20:47:21 +0530109 */
sunish vk7bdf4d42016-06-24 12:29:43 +0530110 void setUnreservedBandwidth(List<Bandwidth> bandwidth);
mohamed rahil8ea09d42016-04-19 20:47:21 +0530111
112 /**
113 * Provides Traffic Engineering metric for the link.
114 *
sunish vk7bdf4d42016-06-24 12:29:43 +0530115 * @return Traffic Engineering Default metric
mohamed rahil8ea09d42016-04-19 20:47:21 +0530116 */
sunish vk7bdf4d42016-06-24 12:29:43 +0530117 long teDefaultMetric();
mohamed rahil8ea09d42016-04-19 20:47:21 +0530118
119 /**
120 * Sets Traffic Engineering metric for the link.
121 *
sunish vk7bdf4d42016-06-24 12:29:43 +0530122 * @param teMetric Traffic Engineering Default metric for the link
mohamed rahil8ea09d42016-04-19 20:47:21 +0530123 */
sunish vk7bdf4d42016-06-24 12:29:43 +0530124 void setTeDefaultMetric(long teMetric);
mohamed rahil8ea09d42016-04-19 20:47:21 +0530125}