Toggle navigation
Toggle navigation
This project
Loading...
Sign in
홍길동
/
onos
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
Priyanka B
2015-11-14 17:29:06 +0530
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
e412a85cb7a7c3617d626a97231d3eab97a31a3e
e412a85c
1 parent
4832784e
[ONOS-2602]Implement Link NLRI
Change-Id: Ia17868c0a2f701a88d82171943c52fe7b7880fba
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
213 additions
and
3 deletions
bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpLinkLsNlri.java
bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpLinkLsNlriVer4.java
bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpLinkLsNlri.java
View file @
e412a85
...
...
@@ -29,19 +29,19 @@ public interface BgpLinkLsNlri extends BGPLSNlri {
*
* @return local node descriptors
*/
NodeDescriptors
getL
ocalNodeDescriptors
();
NodeDescriptors
l
ocalNodeDescriptors
();
/**
* Returns remote node descriptors.
*
* @return remote node descriptors
*/
NodeDescriptors
getR
emoteNodeDescriptors
();
NodeDescriptors
r
emoteNodeDescriptors
();
/**
* Returns link descriptors.
*
* @return link descriptors
*/
List
<
BGPValueType
>
getL
inkDescriptors
();
List
<
BGPValueType
>
l
inkDescriptors
();
}
\ No newline at end of file
...
...
bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpLinkLsNlriVer4.java
0 → 100755
View file @
e412a85
/*
* Copyright 2015 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
.
bgpio
.
protocol
.
linkstate
;
import
java.util.List
;
import
org.jboss.netty.buffer.ChannelBuffer
;
import
org.onosproject.bgpio.exceptions.BGPParseException
;
import
org.onosproject.bgpio.protocol.BgpLinkLsNlri
;
import
org.onosproject.bgpio.protocol.NlriType
;
import
org.onosproject.bgpio.protocol.linkstate.BGPNodeLSNlriVer4.PROTOCOLTYPE
;
import
org.onosproject.bgpio.types.BGPErrorType
;
import
org.onosproject.bgpio.types.BGPValueType
;
import
org.onosproject.bgpio.types.RouteDistinguisher
;
import
org.onosproject.bgpio.util.Constants
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
com.google.common.base.MoreObjects
;
/**
* Implementation of Link LS NLRI.
*/
public
class
BgpLinkLsNlriVer4
implements
BgpLinkLsNlri
{
/*
* REFERENCE : draft-ietf-idr-ls-distribution-11
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+
| Protocol-ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identifier |
| (64 bits) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// Local Node Descriptors (variable) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// Remote Node Descriptors (variable) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// Link Descriptors (variable) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure : The Link NLRI format
*/
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
BgpLinkLsNlriVer4
.
class
);
public
static
final
int
LINK_NLRITYPE
=
2
;
private
BGPLinkLSIdentifier
linkLSIdentifier
;
private
byte
protocolId
;
private
long
identifier
;
private
RouteDistinguisher
routeDistinguisher
;
private
boolean
isVpn
;
/**
* Initialize fields.
*/
public
BgpLinkLsNlriVer4
()
{
this
.
protocolId
=
0
;
this
.
identifier
=
0
;
this
.
linkLSIdentifier
=
null
;
this
.
routeDistinguisher
=
null
;
this
.
isVpn
=
false
;
}
/**
* Constructor to initialize parameters for BGP LinkLSNlri.
*
* @param protocolId protocol Id
* @param identifier field in BGP LinkLSNlri
* @param linkLSIdentifier link LS identifier
* @param routeDistinguisher route distinguisher from message
* @param isVpn vpn info availability in message
*/
public
BgpLinkLsNlriVer4
(
byte
protocolId
,
long
identifier
,
BGPLinkLSIdentifier
linkLSIdentifier
,
RouteDistinguisher
routeDistinguisher
,
boolean
isVpn
)
{
this
.
protocolId
=
protocolId
;
this
.
identifier
=
identifier
;
this
.
linkLSIdentifier
=
linkLSIdentifier
;
this
.
routeDistinguisher
=
routeDistinguisher
;
this
.
isVpn
=
isVpn
;
}
/**
* Reads from channelBuffer and parses Link LS Nlri.
*
* @param cb ChannelBuffer
* @param afi Address Family Identifier
* @param safi Subsequent Address Family Identifier
* @return object of this class
* @throws BGPParseException while parsing Link LS NLRI
*/
public
static
BgpLinkLsNlriVer4
read
(
ChannelBuffer
cb
,
short
afi
,
byte
safi
)
throws
BGPParseException
{
boolean
isVpn
=
false
;
RouteDistinguisher
routeDistinguisher
=
null
;
if
((
afi
==
Constants
.
AFI_VALUE
)
&&
(
safi
==
Constants
.
VPN_SAFI_VALUE
))
{
routeDistinguisher
=
new
RouteDistinguisher
();
routeDistinguisher
=
RouteDistinguisher
.
read
(
cb
);
isVpn
=
true
;
}
else
{
isVpn
=
false
;
}
byte
protocolId
=
cb
.
readByte
();
long
identifier
=
cb
.
readLong
();
BGPLinkLSIdentifier
linkLSIdentifier
=
new
BGPLinkLSIdentifier
();
linkLSIdentifier
=
BGPLinkLSIdentifier
.
parseLinkIdendifier
(
cb
,
protocolId
);
return
new
BgpLinkLsNlriVer4
(
protocolId
,
identifier
,
linkLSIdentifier
,
routeDistinguisher
,
isVpn
);
}
@Override
public
NlriType
getNlriType
()
{
return
NlriType
.
LINK
;
}
@Override
public
long
getIdentifier
()
{
return
this
.
identifier
;
}
/**
* Set the link LS identifier.
*
* @param linkLSIdentifier link LS identifier to set
*/
public
void
setLinkLSIdentifier
(
BGPLinkLSIdentifier
linkLSIdentifier
)
{
this
.
linkLSIdentifier
=
linkLSIdentifier
;
}
@Override
public
PROTOCOLTYPE
getProtocolId
()
throws
BGPParseException
{
switch
(
protocolId
)
{
case
Constants
.
ISIS_LEVELONE
:
return
PROTOCOLTYPE
.
ISIS_LevelOne
;
case
Constants
.
ISIS_LEVELTWO
:
return
PROTOCOLTYPE
.
ISIS_LevelTwo
;
case
Constants
.
OSPFV2
:
return
PROTOCOLTYPE
.
OSPFv2
;
case
Constants
.
DIRECT
:
return
PROTOCOLTYPE
.
Direct
;
case
Constants
.
STATIC_CONFIGURATION
:
return
PROTOCOLTYPE
.
Static_Configuration
;
case
Constants
.
OSPFV3
:
return
PROTOCOLTYPE
.
OSPFv3
;
default
:
throw
new
BGPParseException
(
BGPErrorType
.
UPDATE_MESSAGE_ERROR
,
(
byte
)
0
,
null
);
}
}
@Override
public
NodeDescriptors
localNodeDescriptors
()
{
return
this
.
linkLSIdentifier
.
localNodeDescriptors
();
}
@Override
public
NodeDescriptors
remoteNodeDescriptors
()
{
return
this
.
linkLSIdentifier
.
remoteNodeDescriptors
();
}
/**
* Returns whether VPN is present or not.
*
* @return whether VPN is present or not
*/
public
boolean
isVpnPresent
()
{
return
this
.
isVpn
;
}
@Override
public
RouteDistinguisher
getRouteDistinguisher
()
{
return
this
.
routeDistinguisher
;
}
/**
* Returns link identifier.
*
* @return link identifier
*/
public
BGPLinkLSIdentifier
getLinkIdentifier
()
{
return
this
.
linkLSIdentifier
;
}
@Override
public
List
<
BGPValueType
>
linkDescriptors
()
{
return
this
.
linkLSIdentifier
.
linkDescriptors
();
}
@Override
public
String
toString
()
{
return
MoreObjects
.
toStringHelper
(
getClass
())
.
omitNullValues
()
.
add
(
"protocolId"
,
protocolId
)
.
add
(
"identifier"
,
identifier
)
.
add
(
"RouteDistinguisher "
,
routeDistinguisher
)
.
add
(
"linkLSIdentifier"
,
linkLSIdentifier
)
.
toString
();
}
}
\ No newline at end of file
Please
register
or
login
to post a comment