blob: f7bb52628419532abd3abf69169848c7af8c67f3 [file] [log] [blame]
/*
* Copyright 2017-present Open Networking Foundation
*
* 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.routing.bgp;
import org.onlab.packet.Ip4Address;
import java.net.SocketAddress;
/**
* Class for keeping information about a BGP session.
*
* There are two instances per each BGP peer session: one to keep the local
* information about the BGP session, and another to keep information about
* the remote BGP peer.
*/
public class BgpSessionInfo {
private SocketAddress address; // IP addr/port
private Ip4Address ip4Address; // IPv4 address
private int bgpVersion; // 1 octet
private long asNumber; // AS number: 2 octets
private long as4Number; // AS4 number: 4 octets
private long holdtime; // 2 octets
private Ip4Address bgpId; // 4 octets -> IPv4 address
private boolean mpExtensions; // Multiprotocol Extensions
// enabled: RFC 4760
private boolean ipv4Unicast; // IPv4/UNICAST AFI/SAFI
private boolean ipv4Multicast; // IPv4/MULTICAST AFI/SAFI
private boolean ipv6Unicast; // IPv6/UNICAST AFI/SAFI
private boolean ipv6Multicast; // IPv6/MULTICAST AFI/SAFI
private boolean as4OctetCapability; // AS 4 octet path capability
/**
* Gets the BGP session address: local or remote.
*
* @return the BGP session address
*/
public SocketAddress address() {
return this.address;
}
/**
* Sets the BGP session address: local or remote.
*
* @param address the BGP session address to set
*/
public void setAddress(SocketAddress address) {
this.address = address;
}
/**
* Gets the BGP session IPv4 address: local or remote.
*
* @return the BGP session IPv4 address
*/
public Ip4Address ip4Address() {
return this.ip4Address;
}
/**
* Sets the BGP session IPv4 address: local or remote.
*
* @param ip4Address the BGP session IPv4 address to set
*/
public void setIp4Address(Ip4Address ip4Address) {
this.ip4Address = ip4Address;
}
/**
* Gets the BGP session BGP version: local or remote.
*
* @return the BGP session BGP version
*/
public int bgpVersion() {
return this.bgpVersion;
}
/**
* Sets the BGP session BGP version: local or remote.
*
* @param bgpVersion the BGP session BGP version to set
*/
public void setBgpVersion(int bgpVersion) {
this.bgpVersion = bgpVersion;
}
/**
* Gets the BGP session AS number: local or remote.
*
* @return the BGP session AS number
*/
public long asNumber() {
return this.asNumber;
}
/**
* Sets the BGP session AS number: local or remote.
*
* @param asNumber the BGP session AS number to set
*/
public void setAsNumber(long asNumber) {
this.asNumber = asNumber;
}
/**
* Gets the BGP session AS4 number: local or remote.
*
* @return the BGP session AS4 number
*/
public long as4Number() {
return this.as4Number;
}
/**
* Sets the BGP session AS4 number: local or remote.
*
* @param as4Number the BGP session AS4 number to set
*/
public void setAs4Number(long as4Number) {
this.as4Number = as4Number;
}
/**
* Gets the BGP session holdtime: local or remote.
*
* @return the BGP session holdtime
*/
public long holdtime() {
return this.holdtime;
}
/**
* Sets the BGP session holdtime: local or remote.
*
* @param holdtime the BGP session holdtime to set
*/
public void setHoldtime(long holdtime) {
this.holdtime = holdtime;
}
/**
* Gets the BGP session BGP Identifier as an IPv4 address: local or remote.
*
* @return the BGP session BGP Identifier as an IPv4 address
*/
public Ip4Address bgpId() {
return this.bgpId;
}
/**
* Sets the BGP session BGP Identifier as an IPv4 address: local or remote.
*
* @param bgpId the BGP session BGP Identifier to set
*/
public void setBgpId(Ip4Address bgpId) {
this.bgpId = bgpId;
}
/**
* Gets the BGP Multiprotocol Extensions: local or remote.
*
* @return true if the BGP Multiprotocol Extensions are enabled, otherwise
* false
*/
public boolean mpExtensions() {
return this.mpExtensions;
}
/**
* Gets the BGP session AFI/SAFI configuration for IPv4 unicast: local or
* remote.
*
* @return the BGP session AFI/SAFI configuration for IPv4 unicast
*/
public boolean ipv4Unicast() {
return ipv4Unicast;
}
/**
* Sets the BGP session AFI/SAFI configuration for IPv4 unicast: local or
* remote.
*/
public void setIpv4Unicast() {
this.mpExtensions = true;
this.ipv4Unicast = true;
}
/**
* Gets the BGP session AFI/SAFI configuration for IPv4 multicast: local or
* remote.
*
* @return the BGP session AFI/SAFI configuration for IPv4 multicast
*/
public boolean ipv4Multicast() {
return ipv4Multicast;
}
/**
* Sets the BGP session AFI/SAFI configuration for IPv4 multicast: local or
* remote.
*/
public void setIpv4Multicast() {
this.mpExtensions = true;
this.ipv4Multicast = true;
}
/**
* Gets the BGP session AFI/SAFI configuration for IPv6 unicast: local or
* remote.
*
* @return the BGP session AFI/SAFI configuration for IPv6 unicast
*/
public boolean ipv6Unicast() {
return ipv6Unicast;
}
/**
* Sets the BGP session AFI/SAFI configuration for IPv6 unicast: local or
* remote.
*/
void setIpv6Unicast() {
this.mpExtensions = true;
this.ipv6Unicast = true;
}
/**
* Gets the BGP session AFI/SAFI configuration for IPv6 multicast: local or
* remote.
*
* @return the BGP session AFI/SAFI configuration for IPv6 multicast
*/
public boolean ipv6Multicast() {
return ipv6Multicast;
}
/**
* Sets the BGP session AFI/SAFI configuration for IPv6 multicast: local or
* remote.
*/
public void setIpv6Multicast() {
this.mpExtensions = true;
this.ipv6Multicast = true;
}
/**
* Gets the BGP session 4 octet AS path capability: local or remote.
*
* @return true when the BGP session has 4 octet AS path capability
*/
public boolean as4OctetCapability() {
return this.as4OctetCapability;
}
/**
* Sets the BGP session 4 octet AS path capability.
*/
public void setAs4OctetCapability() {
this.as4OctetCapability = true;
}
}