/* * Copyright 2016-present Open Networking Laboratory * * 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.isis.controller; import org.jboss.netty.channel.Channel; import org.onlab.packet.Ip4Address; import org.onlab.packet.MacAddress; import java.util.Set; /** * Representation of an ISIS interface. */ public interface IsisInterface { /** * Returns interface index. * * @return interface index */ int interfaceIndex(); /** * Sets interface index. * * @param interfaceIndex interface index */ void setInterfaceIndex(int interfaceIndex); /** * Returns the interface IP address. * * @return interface IP address */ Ip4Address interfaceIpAddress(); /** * Sets the interface IP address. * * @param interfaceIpAddress interface IP address interface IP address */ void setInterfaceIpAddress(Ip4Address interfaceIpAddress); /** * Returns the network mask. * * @return network mask */ byte[] networkMask(); /** * Sets the network mask. * * @param networkMask network mask */ void setNetworkMask(byte[] networkMask); /** * Sets the interface MAC address. * * @param interfaceMacAddress interface MAC address */ void setInterfaceMacAddress(MacAddress interfaceMacAddress); /** * Returns the neighbors list. * * @return neighbors list */ Set<MacAddress> neighbors(); /** * Sets intermediate system name. * * @param intermediateSystemName intermediate system name */ void setIntermediateSystemName(String intermediateSystemName); /** * Returns system ID. * * @return systemID system ID */ String systemId(); /** * Sets system ID. * * @param systemId system ID */ void setSystemId(String systemId); /** * Returns LAN ID. * * @return LAN ID */ String l1LanId(); /** * Sets LAN ID. * * @param lanId LAN ID */ void setL1LanId(String lanId); /** * Returns LAN ID. * * @return LAN ID */ String l2LanId(); /** * Sets LAN ID. * * @param lanId LAN ID */ void setL2LanId(String lanId); /** * Sets ID length. * * @param idLength ID length */ void setIdLength(int idLength); /** * Sets max area addresses. * * @param maxAreaAddresses max area addresses */ void setMaxAreaAddresses(int maxAreaAddresses); /** * Returns reserved packet circuit type. * * @return reserved packet circuit type */ int reservedPacketCircuitType(); /** * Sets reserved packet circuit type. * * @param reservedPacketCircuitType reserved packet circuit type */ void setReservedPacketCircuitType(int reservedPacketCircuitType); /** * Returns point to point or broadcast. * * @return 1 if point to point, 2 broadcast */ IsisNetworkType networkType(); /** * Sets point to point. * * @param networkType point to point */ void setNetworkType(IsisNetworkType networkType); /** * Returns area address. * * @return area address */ String areaAddress(); /** * Sets area address. * * @param areaAddress area address */ void setAreaAddress(String areaAddress); /** * Sets area length. * * @param areaLength area length */ void setAreaLength(int areaLength); /** * Returns holding time. * * @return holding time */ int holdingTime(); /** * Sets holding time. * * @param holdingTime holding time */ void setHoldingTime(int holdingTime); /** * Returns priority. * * @return priority */ int priority(); /** * Sets priority. * * @param priority priority */ void setPriority(int priority); /** * Returns hello interval. * * @return hello interval */ public int helloInterval(); /** * Sets hello interval. * * @param helloInterval hello interval */ void setHelloInterval(int helloInterval); /** * Starts the hello timer which sends hello packet every configured seconds. * * @param channel netty channel instance */ void startHelloSender(Channel channel); /** * Stops the hello timer which sends hello packet every configured seconds. */ void stopHelloSender(); /** * Processes an ISIS message which is received on this interface. * * @param isisMessage ISIS message instance * @param isisLsdb ISIS LSDB instance * @param channel channel instance */ void processIsisMessage(IsisMessage isisMessage, IsisLsdb isisLsdb, Channel channel); /** * Returns the interface state. * * @return interface state */ IsisInterfaceState interfaceState(); /** * Sets the interface state. * * @param interfaceState the interface state */ void setInterfaceState(IsisInterfaceState interfaceState); /** * Returns the LSDB instance. * * @return LSDB instance */ IsisLsdb isisLsdb(); /** * Returns intermediate system name. * * @return intermediate system name */ String intermediateSystemName(); /** * Returns the ISIS neighbor instance if exists. * * @param isisNeighborMac mac address of the neighbor router * @return ISIS neighbor instance if exists else null */ IsisNeighbor lookup(MacAddress isisNeighborMac); /** * Returns circuit ID. * * @return circuit ID */ String circuitId(); /** * Sets circuit ID. * * @param circuitId circuit ID */ void setCircuitId(String circuitId); /** * Removes neighbor from the interface neighbor map. * * @param isisNeighbor ISIS neighbor instance */ void removeNeighbor(IsisNeighbor isisNeighbor); /** * Removes all the neighbors. */ void removeNeighbors(); }