blob: 21535936017887c68767a7c31c6981d02549bae5 [file] [log] [blame]
Thomas Vachuska4f1a60c2014-10-28 13:39:07 -07001/*
2 * Copyright 2014 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 */
tomb36046e2014-08-27 00:22:24 -070016package org.onlab.onos.net;
17
Jonathan Hartb79d6412014-09-19 11:24:06 -070018
tomb36046e2014-08-27 00:22:24 -070019/**
20 * Abstraction of a network port.
21 */
tom3ea11252014-10-02 04:32:26 -070022public interface Port extends Annotated {
tomb36046e2014-08-27 00:22:24 -070023
Thomas Vachuskad16ce182014-10-29 17:25:29 -070024 /** Represents coarse port type classification. */
25 public enum Type {
26 /**
27 * Signifies copper-based connectivity.
28 */
29 COPPER,
30
31 /**
32 * Signifies optical fiber-based connectivity.
33 */
34 FIBER
35 }
36
37 /**
38 * Returns the parent network element to which this port belongs.
39 *
40 * @return parent network element
41 */
42 Element element();
43
tomca20e0c2014-09-03 23:22:24 -070044 /**
tomb36046e2014-08-27 00:22:24 -070045 * Returns the port number.
46 *
47 * @return port number
48 */
49 PortNumber number();
50
51 /**
tomca20e0c2014-09-03 23:22:24 -070052 * Indicates whether or not the port is currently up and active.
53 *
54 * @return true if the port is operational
55 */
56 boolean isEnabled();
57
58 /**
Thomas Vachuskad16ce182014-10-29 17:25:29 -070059 * Returns the port type.
tomb36046e2014-08-27 00:22:24 -070060 *
Thomas Vachuskad16ce182014-10-29 17:25:29 -070061 * @return port type
tomb36046e2014-08-27 00:22:24 -070062 */
Thomas Vachuskad16ce182014-10-29 17:25:29 -070063 Type type();
tomb36046e2014-08-27 00:22:24 -070064
Thomas Vachuskad16ce182014-10-29 17:25:29 -070065 /**
66 * Returns the current port speed in Mbps.
67 *
68 * @return current port speed
69 */
70 long portSpeed();
tomb36046e2014-08-27 00:22:24 -070071
Thomas Vachuskad16ce182014-10-29 17:25:29 -070072 // TODO: more attributes?
tomb36046e2014-08-27 00:22:24 -070073}