mohamed rahil
Committed by Gerrit Code Review

ONOS-4082:ISIS protocol API changes

Change-Id: I4cdd4a4811ec0ab0aba51d7d8085a3eac9b34b2c
Showing 19 changed files with 1198 additions and 17 deletions
......@@ -15,6 +15,8 @@
*/
package org.onosproject.isis.controller;
import org.onosproject.isis.controller.topology.IsisRouterListener;
import java.util.List;
/**
......@@ -25,14 +27,14 @@ public interface IsisController {
/**
* Registers a listener for router meta events.
*
* @param isisRouterListener isis router listener instance
* @param isisRouterListener ISIS router listener instance
*/
void addRouterListener(IsisRouterListener isisRouterListener);
/**
* Unregisters a router listener.
*
* @param isisRouterListener isis router listener instance
* @param isisRouterListener ISIS router listener instance
*/
void removeRouterListener(IsisRouterListener isisRouterListener);
......@@ -47,7 +49,8 @@ public interface IsisController {
* Deletes configuration parameters.
*
* @param processes list of process instance
* @param attribute attribute to delete
* @param attribute string key which deletes the particular node or element
* from the controller
*/
void deleteConfig(List<IsisProcess> processes, String attribute);
......
......@@ -15,12 +15,25 @@
*/
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
......@@ -28,6 +41,48 @@ public interface IsisInterface {
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
......@@ -35,6 +90,13 @@ public interface IsisInterface {
void setIntermediateSystemName(String intermediateSystemName);
/**
* Returns system ID.
*
* @return systemID system ID
*/
String systemId();
/**
* Sets system ID.
*
* @param systemId system ID
......@@ -42,11 +104,32 @@ public interface IsisInterface {
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 setLanId(String lanId);
void setL2LanId(String lanId);
/**
* Sets ID length.
......@@ -63,6 +146,13 @@ public interface IsisInterface {
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
......@@ -70,11 +160,25 @@ public interface IsisInterface {
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 p2p point to point
* @param networkType point to point
*/
void setP2p(int p2p);
void setNetworkType(IsisNetworkType networkType);
/**
* Returns area address.
*
* @return area address
*/
String areaAddress();
/**
* Sets area address.
......@@ -98,6 +202,13 @@ public interface IsisInterface {
void setLspId(String lspId);
/**
* Returns holding time.
*
* @return holding time
*/
int holdingTime();
/**
* Sets holding time.
*
* @param holdingTime holding time
......@@ -105,6 +216,13 @@ public interface IsisInterface {
void setHoldingTime(int holdingTime);
/**
* Returns priority.
*
* @return priority
*/
int priority();
/**
* Sets priority.
*
* @param priority priority
......@@ -117,4 +235,70 @@ public interface IsisInterface {
* @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);
/**
* 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);
}
......
/*
* 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 java.util.EnumSet;
import java.util.HashMap;
import java.util.Map;
/**
* Enum represents ISIS Interface state.
*/
public enum IsisInterfaceState {
/**
* Represents interface is in "up" state.
*/
UP(0),
/**
* Represents interface is in "initial" state.
*/
INITIAL(1),
/**
* Represents interface is in "down" state.
*/
DOWN(2);
// Reverse lookup table
private static final Map<Integer, IsisInterfaceState> LOOKUP = new HashMap<>();
// Populate the lookup table on loading time
static {
for (IsisInterfaceState isisInterfaceState : EnumSet.allOf(IsisInterfaceState.class)) {
LOOKUP.put(isisInterfaceState.value(), isisInterfaceState);
}
}
private int value;
/**
* Creates an instance of ISIS interface type.
*
* @param value represents ISIS interface type
*/
private IsisInterfaceState(int value) {
this.value = value;
}
/**
* Gets the enum instance from type value - reverse lookup purpose.
*
* @param interfaceStateTypeValue interface state type value
* @return ISIS interface state type instance
*/
public static IsisInterfaceState get(int interfaceStateTypeValue) {
return LOOKUP.get(interfaceStateTypeValue);
}
/**
* Gets the value representing interface state type.
*
* @return value represents interface state type
*/
public int value() {
return value;
}
}
\ No newline at end of file
......@@ -13,18 +13,84 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.onosproject.isis.controller;
import java.util.List;
/**
* Representation of an ISIS link state database.
*/
public interface IsisLsdb {
/**
* Gets the ISIS LSDB.
* Returns the ISIS LSDB.
*
* @return ISIS LSDB
*/
IsisLsdb isisLsdb();
/**
* Initializes LSDB.
*/
void initializeDb();
/**
* Returns the LSDB LSP key.
*
* @param systemId system ID
* @return LSP key
*/
String lspKey(String systemId);
/**
* Returns the sequence number.
*
* @param lspType L1 or L2 LSP
* @return sequence number
*/
int lsSequenceNumber(IsisPduType lspType);
/**
* Finds the LSP from LSDB.
*
* @param pduType L1 or L2 LSP
* @param lspId LSP ID
* @return LSP wrapper object
*/
LspWrapper findLsp(IsisPduType pduType, String lspId);
/**
* Installs a new self-originated LSA in LSDB.
* Return true if installing was successful else false.
*
* @param lsPdu PDU instance
* @param isSelfOriginated true if self originated else false
* @param isisInterface ISIS interface instance
* @return true if successfully added
*/
boolean addLsp(IsisMessage lsPdu, boolean isSelfOriginated, IsisInterface isisInterface);
/**
* Checks received LSP is latest, same or old.
*
* @param receivedLsp received LSP
* @param lspFromDb existing LSP
* @return "latest", "old" or "same"
*/
String isNewerOrSameLsp(IsisMessage receivedLsp, IsisMessage lspFromDb);
/**
* Returns all LSPs (L1 and L2).
*
* @param excludeMaxAgeLsp exclude the max age LSPs
* @return List of LSPs
*/
List<LspWrapper> allLspHeaders(boolean excludeMaxAgeLsp);
/**
* Deletes the given LSP.
*
* @param lsp LSP instance
*/
void deleteLsp(IsisMessage lsp);
}
......
/*
* 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;
/**
* Representation of an ISIS link state database aging.
*/
public interface IsisLsdbAge {
/**
* Starts the aging timer thread which gets invokes every second.
*/
void startDbAging();
/**
* Returns the age counter.
*
* @return age counter
*/
int ageCounter();
/**
* Returns the age counter rollover.
*
* @return age counter rollover
*/
int ageCounterRollOver();
/**
* Returns the bin number.
*
* @param x can be either age or ageCounter
* @return bin number
*/
int age2Bin(int x);
/**
* Returns the LSP bin instance.
*
* @param binKey key to search
* @return LSP bin instance
*/
IsisLspBin getLspBin(int binKey);
/**
* Adds LSP to bin.
*
* @param binNumber key to store in bin
* @param lspBin LSP bin instance
*/
void addLspBin(int binNumber, IsisLspBin lspBin);
/**
* Removes LSP from bin.
*
* @param lspWrapper LSP wrapper instance
*/
void removeLspFromBin(LspWrapper lspWrapper);
}
/*
* 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 java.util.Map;
/**
* Representation of an ISIS LSP bin which is part of LSP aging process.
*/
public interface IsisLspBin {
/**
* Returns all the LSPs in the bin.
*
* @return all LSPs in the bin
*/
Map<String, LspWrapper> listOfLsp();
/**
* Adds LSP to bin for aging.
*
* @param lspKey key to add the LSP
* @param lspWrapper LSP wrapper instance
*/
void addIsisLsp(String lspKey, LspWrapper lspWrapper);
/**
* Removes LSP from bin.
*
* @param lspKey LSP key
* @param lspWrapper LSP wrapper instance
*/
void removeIsisLsp(String lspKey, LspWrapper lspWrapper);
}
......@@ -13,18 +13,76 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.onosproject.isis.controller;
import org.jboss.netty.buffer.ChannelBuffer;
import org.onlab.packet.MacAddress;
/**
* Representation of an ISIS Message.
*/
public interface IsisMessage {
/**
* Gets the type of ISIS PDU.
* Returns the interface index on which the message received.
*
* @return interface index on which the message received
*/
int interfaceIndex();
/**
* Sets the interface index on which the message received.
*
* @param interfaceIndex interface index on which the message received
*/
void setInterfaceIndex(int interfaceIndex);
/**
* Returns the interface mac address on which the message received.
*
* @return interface mac address on which the message received
*/
MacAddress interfaceMac();
/**
* Sets the interface mac address on which the message received.
*
* @param interfaceMac mac address on which the message received
*/
void setInterfaceMac(MacAddress interfaceMac);
/**
* Returns the mac address of the message sender.
*
* @return mac address of the message sender
*/
MacAddress sourceMac();
/**
* Sets the mac address of the message sender.
*
* @param sourceMac mac address of the message sender
*/
void setSourceMac(MacAddress sourceMac);
/**
* Returns the type of ISIS PDU.
*
* @return ISIS PDU type instance
*/
IsisPduType isisPduType();
/**
* Reads from channel buffer and initializes the type of PDU.
*
* @param channelBuffer channel buffer instance
*/
void readFrom(ChannelBuffer channelBuffer);
/**
* Returns IsisMessage as byte array.
*
* @return ISIS message as bytes
*/
byte[] asBytes();
}
......
/*
* 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.onlab.packet.MacAddress;
/**
* Representation of an ISIS neighbor.
*/
public interface IsisNeighbor {
/**
* Returns the MAC address of neighbor.
*
* @return MAC address of neighbor
*/
MacAddress neighborMacAddress();
/**
* Returns the neighbor interface state.
*
* @return neighbor interface state
*/
IsisInterfaceState interfaceState();
/**
* Sets the neighbor interface state.
*
* @param interfaceState the neighbor interface state
*/
void setNeighborState(IsisInterfaceState interfaceState);
/**
* Sets the LAN ID.
*
* @param l1LanId LAN ID
*/
void setL1LanId(String l1LanId);
/**
* Sets the LAN ID.
*
* @param l2LanId LAN ID
*/
void setL2LanId(String l2LanId);
/**
* Returns neighbor system ID.
*
* @return neighbor system ID
*/
String neighborSystemId();
/**
* Returns neighbor circuit ID.
*
* @return neighbor circuit ID
*/
byte localCircuitId();
/**
* Returns neighbor extended circuit ID.
*
* @return neighbor extended circuit ID
*/
int localExtendedCircuitId();
/**
* Sets neighbor extended circuit ID.
*
* @param localExtendedCircuitId neighbor extended circuit ID
*/
void setLocalExtendedCircuitId(int localExtendedCircuitId);
}
/*
* 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 java.util.EnumSet;
import java.util.HashMap;
import java.util.Map;
/**
* Represents ISIS network types.
*/
public enum IsisNetworkType {
/**
* Represents point-to-point network.
*/
P2P(1),
/**
* Represents broadcast network.
*/
BROADCAST(2);
// Reverse lookup table
private static final Map<Integer, IsisNetworkType> LOOKUP = new HashMap<>();
// Populate the lookup table on loading time
static {
for (IsisNetworkType isisNetworkType : EnumSet.allOf(IsisNetworkType.class)) {
LOOKUP.put(isisNetworkType.value(), isisNetworkType);
}
}
private int value;
/**
* Creates an instance of ISIS network type.
*
* @param value represents ISIS network type
*/
private IsisNetworkType(int value) {
this.value = value;
}
/**
* Gets the enum instance from type value - reverse lookup purpose.
*
* @param isisNetworkTypeValue interface network type value
* @return ISIS interface network type instance
*/
public static IsisNetworkType get(int isisNetworkTypeValue) {
return LOOKUP.get(isisNetworkTypeValue);
}
/**
* Gets the value representing network type.
*
* @return value represents network type
*/
public int value() {
return value;
}
}
\ No newline at end of file
......@@ -13,9 +13,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.onosproject.isis.controller;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.Map;
/**
* Representation of ISIS PDU types.
*/
......@@ -58,8 +61,17 @@ public enum IsisPduType {
*/
L2PSNP(27);
private int value;
// Reverse lookup table
private static final Map<Integer, IsisPduType> LOOKUP = new HashMap<>();
// Populate the lookup table on loading time
static {
for (IsisPduType isisPduType : EnumSet.allOf(IsisPduType.class)) {
LOOKUP.put(isisPduType.value(), isisPduType);
}
}
private int value;
/**
* Creates an instance of ISIS PDU type.
......@@ -71,6 +83,16 @@ public enum IsisPduType {
}
/**
* Gets the enum instance from type value - reverse lookup purpose.
*
* @param pduTypeValue PDU type value
* @return ISIS PDU type instance
*/
public static IsisPduType get(int pduTypeValue) {
return LOOKUP.get(pduTypeValue);
}
/**
* Gets the value representing PDU type.
*
* @return value represents PDU type
......
......@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.onosproject.isis.controller;
import java.util.List;
......@@ -36,4 +35,11 @@ public interface IsisProcess {
* @param isisInterfaceList list of ISIS interface details
*/
void setIsisInterfaceList(List<IsisInterface> isisInterfaceList);
/**
* Returns list of ISIS interface details.
*
* @return list of ISIS interface details
*/
List<IsisInterface> isisInterfaceList();
}
......
/*
* 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 java.util.EnumSet;
import java.util.HashMap;
import java.util.Map;
/**
* Representation of ISIS router types.
*/
public enum IsisRouterType {
/**
* Represents ISIS L1 router.
*/
L1(1),
/**
* Represents ISIS L2 router.
*/
L2(2),
/**
* Represents ISIS L1/L2 router.
*/
L1L2(3);
// Reverse lookup table
private static final Map<Integer, IsisRouterType> LOOKUP = new HashMap<>();
// Populate the lookup table on loading time
static {
for (IsisRouterType isisRouterType : EnumSet.allOf(IsisRouterType.class)) {
LOOKUP.put(isisRouterType.value(), isisRouterType);
}
}
private int value;
/**
* Creates an instance of ISIS router type.
*
* @param value represents ISIS router type
*/
private IsisRouterType(int value) {
this.value = value;
}
/**
* Gets the enum instance from type value - reverse lookup purpose.
*
* @param routerTypeValue router type value
* @return ISIS router type instance
*/
public static IsisRouterType get(int routerTypeValue) {
return LOOKUP.get(routerTypeValue);
}
/**
* Gets the value representing router type.
*
* @return value represents router type
*/
public int value() {
return value;
}
}
\ No newline at end of file
/*
* 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;
/**
* Representation of a LSP wrapper.
*/
public interface LspWrapper {
/**
* Returns bin number into which the LSP wrapper is put for aging process.
*
* @return bin number
*/
int binNumber();
/**
* Sets bin number into which the LSP wrapper is put for aging process.
*
* @param binNumber bin number
*/
void setBinNumber(int binNumber);
/**
* Checks the contained LSP is self originated or not.
*
* @return true if self originated else false
*/
boolean isSelfOriginated();
/**
* Sets the contained LSP is self originated or not.
*
* @param selfOriginated true if self originated else false
*/
void setSelfOriginated(boolean selfOriginated);
/**
* Returns the LSP type.
*
* @return LSP type
*/
IsisPduType lspType();
/**
* Returns the LSPs remaining life time.
*
* @return LSPs remaining life time.
*/
int remainingLifetime();
/**
* Returns the age counter value when LSP was received.
*
* @return age counter value when LSP was received
*/
int ageCounterWhenReceived();
/**
* Returns the age counter roll over value when LSP was added to wrapper instance.
*
* @return age counter roll over value when LSP was added to wrapper instance
*/
int ageCounterRollOverWhenAdded();
/**
* Returns the LSP instance stored in wrapper.
*
* @return LSP instance stored in wrapper
*/
IsisMessage lsPdu();
/**
* Sets LSPs remaining life time.
*
* @param remainingLifetime LSPs remaining life time
*/
void setRemainingLifetime(int remainingLifetime);
/**
* Returns the age of LSP when received.
*
* @return age of LSP when received
*/
int lspAgeReceived();
/**
* Returns the LSP processing string.
*
* @return lsp processing value for switch case
*/
String lspProcessing();
/**
* Returns ISIS interface instance.
*
* @return ISIS interface instance
*/
IsisInterface isisInterface();
/**
* Returns the current LSP age.
*
* @return LSP age
*/
int currentAge();
/**
* Sets the LSP processing string based on LSP to process.
*
* @param lspProcessing "refreshLsp" or "maxageLsp" based on LSP to process
*/
void setLspProcessing(String lspProcessing);
}
/*
* 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.topology;
import org.onlab.packet.IpAddress;
import java.util.List;
/**
* Abstraction of an ISIS Link.
*/
public interface IsisLink {
/**
* Returns IP address of the Router.
*
* @return IP address of router
*/
IpAddress remoteRouterId();
/**
* Returns the area ID for this device.
*
* @return the area ID
*/
int areaIdOfInterface();
/**
* Returns IP address of the interface.
*
* @return IP address of the interface
*/
IpAddress interfaceIp();
/**
* Returns the list of link TED details.
*
* @return linkTed list of link TED
*/
List<IsisLinkTed> linkTed();
/**
* Sets IP address of the router.
*
* @param routerIp router's IP address
*/
void setRouterIp(IpAddress routerIp);
/**
* Sets the area ID for this device.
*
* @param areaIdOfInterface area ID
*/
void setAreaIdOfInterface(int areaIdOfInterface);
/**
* Sets IP address of the interface.
*
* @param interfaceIp IP address of the interface
*/
void setInterfaceIp(IpAddress interfaceIp);
/**
* Sets the list of link TED.
*
* @param linkTed list of link TED
*/
void setLinkTed(List<IsisLinkTed> linkTed);
}
/*
* 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.topology;
/**
* Abstraction of an ISIS link listener.
*/
public interface IsisLinkListener {
/**
* Notifies that we got a link from network.
*
* @param isisRouter router instance
* @param isisLinkTed link TED information of router
*/
void addLink(IsisRouter isisRouter, IsisLinkTed isisLinkTed);
/**
* Notifies that a link got removed from network.
*
* @param isisRouter router instance
* @param isisLinkTed isis link ted infromation
*/
void deleteLink(IsisRouter isisRouter, IsisLinkTed isisLinkTed);
}
\ No newline at end of file
/*
* 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.topology;
import org.onlab.packet.Ip4Address;
import org.onlab.packet.Ip6Address;
import org.onlab.util.Bandwidth;
import java.util.List;
/**
* Representation of ISIS link traffic engineering parameters.
*/
public interface IsisLinkTed {
/**
* Provides maximum bandwidth can be used on the link.
*
* @return maximum bandwidth
*/
Bandwidth maximumLink();
/**
* Sets maximum band width.
*
* @param bandwidth maximum bandwidth
*/
void setMaximumLink(Bandwidth bandwidth);
/**
* Amount of bandwidth reservable on the link.
*
* @return unreserved bandwidth
*/
List<Bandwidth> maxUnResBandwidth();
/**
* Sets max bandwidth that is not reserved on the link.
*
* @param bandwidth max bandwidth that is not reserved on the link
*/
void setMaxUnResBandwidth(Bandwidth bandwidth);
/**
* Provides max bandwidth that can be reserved on the link.
*
* @return max bandwidth reserved
*/
Bandwidth maxReserved();
/**
* Sets max bandwidth that can be reserved on the link.
*
* @param bandwidth max bandwidth that can be reserved on the link
*/
void setMaxReserved(Bandwidth bandwidth);
/**
* Provides Traffic Engineering metric for the link.
*
* @return Traffic Engineering metric
*/
int teMetric();
/**
* Sets Traffic Engineering metric for the link.
*
* @param teMetric Traffic Engineering metric for the link
*/
void setTeMetric(int teMetric);
/**
* Provides IPv4 router-Id of local node.
*
* @return IPv4 router-Id of local node
*/
List<Ip4Address> ipv4LocRouterId();
/**
* Sets IPv4 router-Id of local node.
*
* @param routerIds IPv4 router-Id of local node
*/
void setIpv4LocRouterId(List<Ip4Address> routerIds);
/**
* Provides IPv6 router-Id of local node.
*
* @return IPv6 router-Id of local node
*/
List<Ip6Address> ipv6LocRouterId();
/**
* Sets IPv6 router-Id of local node.
*
* @param routerIds IPv6 router-Id of local node
*/
void setIpv6LocRouterId(List<Ip6Address> routerIds);
/**
* Provides IPv4 router-Id of remote node.
*
* @return IPv4 router-Id of remote node
*/
List<Ip4Address> ipv4RemRouterId();
/**
* Sets IPv4 router-Id of remote node.
*
* @param routerIds IPv4 router-Id of remote node
*/
void setIpv4RemRouterId(List<Ip4Address> routerIds);
/**
* Provides IPv6 router-Id of remote node.
*
* @return IPv6 router-Id of remote node
*/
List<Ip6Address> ipv6RemRouterId();
/**
* Sets IPv6 router-Id of remote node.
*
* @param routerIds IPv6 router-Id of remote node
*/
void setIpv6RemRouterId(List<Ip6Address> routerIds);
}
\ No newline at end of file
......@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.onosproject.isis.controller;
package org.onosproject.isis.controller.topology;
import org.onlab.packet.Ip4Address;
......@@ -23,14 +23,14 @@ import org.onlab.packet.Ip4Address;
public interface IsisRouter {
/**
* Gets IP address of the router.
* Returns IP address of the router.
*
* @return IP address of the router
*/
Ip4Address routerIp();
/**
* Gets IP address of the interface.
* Returns IP address of the interface.
*
* @return IP address of the interface
*/
......
......@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.onosproject.isis.controller;
package org.onosproject.isis.controller.topology;
/**
* Abstraction of an ISIS Router Listener.
......
/*
* 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.
*/
/**
* Implementation of the ISIS topology provider.
*/
package org.onosproject.isis.controller.topology;
\ No newline at end of file