| /* |
| * Copyright 2015-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.bgp.controller; |
| |
| import java.util.TreeMap; |
| |
| /** |
| * Abstraction of an BGP configuration. Manages the BGP configuration from CLI to the BGP controller. |
| */ |
| public interface BgpCfg { |
| |
| enum State { |
| /** |
| * Signifies that its just created. |
| */ |
| INIT, |
| |
| /** |
| * Signifies that only IP Address is configured. |
| */ |
| IP_CONFIGURED, |
| |
| /** |
| * Signifies that only Autonomous System is configured. |
| */ |
| AS_CONFIGURED, |
| |
| /** |
| * Signifies that both IP and Autonomous System is configured. |
| */ |
| IP_AS_CONFIGURED |
| } |
| |
| enum FlowSpec { |
| |
| /** |
| * Signifies that peer support IPV4 flow specification. |
| */ |
| IPV4, |
| |
| /** |
| * Signifies that peer support VPNV4 flow specification. |
| */ |
| VPNV4, |
| |
| /** |
| * Signifies that peer support IPV4 and VPNV4 flow specification. |
| */ |
| IPV4_VPNV4, |
| |
| /** |
| * Signifies that peer flow specification capability disabled. |
| */ |
| NONE |
| } |
| |
| /** |
| * Returns the status of the configuration based on this state certain operations like connection is handled. |
| * |
| * @return State of the configuration |
| */ |
| State getState(); |
| |
| /** |
| * To set the current state of the configuration. |
| * |
| * @param state Configuration State enum |
| */ |
| void setState(State state); |
| |
| /** |
| * Get the status of the link state support for this BGP speaker. |
| * |
| * @return true if the link state is supported else false |
| */ |
| boolean getLsCapability(); |
| |
| /** |
| * Set the link state support to this BGP speaker. |
| * |
| * @param lscapability true value if link state is supported else false |
| */ |
| void setLsCapability(boolean lscapability); |
| |
| /** |
| * Get the status of the 32 bit AS support for this BGP speaker. |
| * |
| * @return true if the 32 bit AS number is supported else false |
| */ |
| boolean getLargeASCapability(); |
| |
| /** |
| * Set the 32 bit AS support capability to this BGP speaker. |
| * |
| * @param largeAs true value if the 32 bit AS is supported else false |
| */ |
| void setLargeASCapability(boolean largeAs); |
| |
| /** |
| * Set the AS number to which this BGP speaker belongs. |
| * |
| * @param localAs 16 or 32 bit AS number, length is dependent on the capability |
| */ |
| void setAsNumber(int localAs); |
| |
| /** |
| * Get the AS number to which this BGP speaker belongs. |
| * |
| * @return 16 or 32 bit AS number, length is dependent on the capability |
| */ |
| int getAsNumber(); |
| |
| /** |
| * Get the connection retry count number. |
| * |
| * @return connection retry count if there is a connection error |
| */ |
| int getMaxConnRetryCount(); |
| |
| /** |
| * Set the connection retry count. |
| * |
| * @param retryCount number of times to try to connect if there is any error |
| */ |
| void setMaxConnRetryCout(int retryCount); |
| |
| /** |
| * Get the connection retry time in seconds. |
| * |
| * @return connection retry time in seconds |
| */ |
| int getMaxConnRetryTime(); |
| |
| /** |
| * Set the connection retry time in seconds. |
| * |
| * @param retryTime connection retry times in seconds |
| */ |
| void setMaxConnRetryTime(int retryTime); |
| |
| /** |
| * Set the keep alive timer for the connection. |
| * |
| * @param holdTime connection hold timer in seconds |
| */ |
| void setHoldTime(short holdTime); |
| |
| /** |
| * Returns the connection hold timer in seconds. |
| * |
| * @return connection hold timer in seconds |
| */ |
| short getHoldTime(); |
| |
| /** |
| * Returns the maximum number of session supported. |
| * |
| * @return maximum number of session supported |
| */ |
| int getMaxSession(); |
| |
| /** |
| * Set the maximum number of sessions to support. |
| * |
| * @param maxsession maximum number of session |
| */ |
| void setMaxSession(int maxsession); |
| |
| /** |
| * Returns the Router ID of this BGP speaker. |
| * |
| * @return IP address in string format |
| */ |
| String getRouterId(); |
| |
| /** |
| * Set the Router ID of this BGP speaker. |
| * |
| * @param routerid IP address in string format |
| */ |
| void setRouterId(String routerid); |
| |
| /** |
| * Add the BGP peer IP address and the AS number to which it belongs. |
| * |
| * @param routerid IP address in string format |
| * @param remoteAs AS number to which it belongs |
| * |
| * @return true if added successfully else false |
| */ |
| boolean addPeer(String routerid, int remoteAs); |
| |
| /** |
| * Add the BGP peer IP address and the keep alive time. |
| * |
| * @param routerid IP address in string format |
| * @param holdTime keep alive time for the connection |
| * |
| * @return true if added successfully else false |
| */ |
| boolean addPeer(String routerid, short holdTime); |
| |
| /** |
| * Add the BGP peer IP address, the AS number to which it belongs and keep alive time. |
| * |
| * @param routerid IP address in string format |
| * @param remoteAs AS number to which it belongs |
| * @param holdTime keep alive time for the connection |
| * |
| * @return true if added successfully else false |
| */ |
| boolean addPeer(String routerid, int remoteAs, short holdTime); |
| |
| /** |
| * Remove the BGP peer with this IP address. |
| * |
| * @param routerid router IP address |
| * |
| * @return true if removed successfully else false |
| */ |
| boolean removePeer(String routerid); |
| |
| /** |
| * Connect to BGP peer with this IP address. |
| * |
| * @param routerid router IP address |
| * |
| * @return true of the configuration is found and able to connect else false |
| */ |
| boolean connectPeer(String routerid); |
| |
| /** |
| * Disconnect this BGP peer with this IP address. |
| * |
| * @param routerid router IP address in string format |
| * |
| * @return true if the configuration is found and able to disconnect else false |
| */ |
| boolean disconnectPeer(String routerid); |
| |
| /** |
| * Returns the peer tree information. |
| * |
| * @return return the tree map with IP as key and BGPPeerCfg as object |
| */ |
| TreeMap<String, BgpPeerCfg> displayPeers(); |
| |
| /** |
| * Return the BGP Peer information with this matching IP. |
| * |
| * @param routerid router IP address in string format |
| * |
| * @return BGPPeerCfg object |
| */ |
| BgpPeerCfg displayPeers(String routerid); |
| |
| /** |
| * Check if this BGP peer is configured. |
| * |
| * @param routerid router IP address in string format |
| * |
| * @return true if configured exists else false |
| */ |
| boolean isPeerConfigured(String routerid); |
| |
| /** |
| * Check if this BGP speaker is having connection with the peer. |
| * |
| * @param routerid router IP address in string format |
| * |
| * @return true if the connection exists else false |
| */ |
| boolean isPeerConnected(String routerid); |
| |
| /** |
| * Return the peer tree map. |
| * |
| * @return return the tree map with IP as key and BGPPeerCfg as object |
| */ |
| TreeMap<String, BgpPeerCfg> getPeerTree(); |
| |
| /** |
| * Set the current connection state information. |
| * |
| * @param routerid router IP address in string format |
| * @param state state information |
| */ |
| void setPeerConnState(String routerid, BgpPeerCfg.State state); |
| |
| /** |
| * Check if the peer can be connected or not. |
| * |
| * @param routerid router IP address in string format |
| * |
| * @return true if the peer can be connected else false |
| */ |
| boolean isPeerConnectable(String routerid); |
| |
| /** |
| * Get the current peer connection state information. |
| * |
| * @param routerid router IP address in string format |
| * |
| * @return state information |
| */ |
| BgpPeerCfg.State getPeerConnState(String routerid); |
| |
| /** |
| * Gets the flow specification capability. |
| * |
| * @return flow specification capability |
| */ |
| FlowSpec flowSpecCapability(); |
| |
| /** |
| * Sets the flow specification capability. |
| * |
| * @param flowSpec flow specification capability |
| */ |
| void setFlowSpecCapability(FlowSpec flowSpec); |
| |
| /** |
| * Returns the flow specification route policy distribution capability. |
| * |
| * @return RDP flow specification capability |
| */ |
| boolean flowSpecRpdCapability(); |
| |
| /** |
| * Sets the flow specification route policy distribution capability. |
| * |
| * @param rpdCapability flow specification RPD capability |
| */ |
| void setFlowSpecRpdCapability(boolean rpdCapability); |
| } |