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
alshabib
2014-09-04 16:41:31 -0700
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
25c8eec8810dffee3497efd1c649f50aef5dd981
25c8eec8
1 parent
249829af
updating ports
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
41 additions
and
23 deletions
providers/of/device/src/main/java/org/onlab/onos/provider/of/device/impl/OpenFlowDeviceProvider.java
providers/of/device/src/main/java/org/onlab/onos/provider/of/device/impl/OpenFlowDeviceProvider.java
View file @
25c8eec
package
org
.
onlab
.
onos
.
provider
.
of
.
device
.
impl
;
import
static
org
.
onlab
.
onos
.
net
.
DeviceId
.
deviceId
;
import
static
org
.
slf4j
.
LoggerFactory
.
getLogger
;
import
java.net.URI
;
import
java.net.URISyntaxException
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.apache.felix.scr.annotations.Activate
;
import
org.apache.felix.scr.annotations.Component
;
import
org.apache.felix.scr.annotations.Deactivate
;
...
...
@@ -7,11 +15,14 @@ import org.apache.felix.scr.annotations.Reference;
import
org.apache.felix.scr.annotations.ReferenceCardinality
;
import
org.onlab.onos.net.Device
;
import
org.onlab.onos.net.MastershipRole
;
import
org.onlab.onos.net.PortNumber
;
import
org.onlab.onos.net.device.DefaultDeviceDescription
;
import
org.onlab.onos.net.device.DefaultPortDescription
;
import
org.onlab.onos.net.device.DeviceDescription
;
import
org.onlab.onos.net.device.DeviceProvider
;
import
org.onlab.onos.net.device.DeviceProviderRegistry
;
import
org.onlab.onos.net.device.DeviceProviderService
;
import
org.onlab.onos.net.device.PortDescription
;
import
org.onlab.onos.net.provider.AbstractProvider
;
import
org.onlab.onos.net.provider.ProviderId
;
import
org.onlab.onos.of.controller.Dpid
;
...
...
@@ -19,14 +30,9 @@ import org.onlab.onos.of.controller.OpenFlowController;
import
org.onlab.onos.of.controller.OpenFlowSwitch
;
import
org.onlab.onos.of.controller.OpenFlowSwitchListener
;
import
org.onlab.onos.of.controller.RoleState
;
import
org.projectfloodlight.openflow.protocol.OFPortDesc
;
import
org.slf4j.Logger
;
import
java.net.URI
;
import
java.net.URISyntaxException
;
import
static
org
.
onlab
.
onos
.
net
.
DeviceId
.
deviceId
;
import
static
org
.
slf4j
.
LoggerFactory
.
getLogger
;
/**
* Provider which uses an OpenFlow controller to detect network
* infrastructure devices.
...
...
@@ -73,19 +79,19 @@ public class OpenFlowDeviceProvider extends AbstractProvider implements DevicePr
@Override
public
void
roleChanged
(
Device
device
,
MastershipRole
newRole
)
{
switch
(
newRole
)
{
case
MASTER:
controller
.
setRole
(
new
Dpid
(
device
.
id
().
uri
().
getSchemeSpecificPart
()),
RoleState
.
MASTER
);
break
;
case
STANDBY:
controller
.
setRole
(
new
Dpid
(
device
.
id
().
uri
().
getSchemeSpecificPart
()),
RoleState
.
EQUAL
);
case
NONE:
controller
.
setRole
(
new
Dpid
(
device
.
id
().
uri
().
getSchemeSpecificPart
()),
RoleState
.
SLAVE
);
break
;
default
:
log
.
error
(
"Unknown Mastership state : {}"
,
newRole
);
case
MASTER:
controller
.
setRole
(
new
Dpid
(
device
.
id
().
uri
().
getSchemeSpecificPart
()),
RoleState
.
MASTER
);
break
;
case
STANDBY:
controller
.
setRole
(
new
Dpid
(
device
.
id
().
uri
().
getSchemeSpecificPart
()),
RoleState
.
EQUAL
);
case
NONE:
controller
.
setRole
(
new
Dpid
(
device
.
id
().
uri
().
getSchemeSpecificPart
()),
RoleState
.
SLAVE
);
break
;
default
:
log
.
error
(
"Unknown Mastership state : {}"
,
newRole
);
}
log
.
info
(
"Accepting mastership role change for device {}"
,
device
.
id
());
...
...
@@ -102,11 +108,23 @@ public class OpenFlowDeviceProvider extends AbstractProvider implements DevicePr
DeviceDescription
description
=
new
DefaultDeviceDescription
(
buildURI
(
dpid
),
Device
.
Type
.
SWITCH
,
sw
.
manfacturerDescription
(),
sw
.
hardwareDescription
(),
sw
.
softwareDescription
(),
sw
.
softwareDescription
());
sw
.
manfacturerDescription
(),
sw
.
hardwareDescription
(),
sw
.
softwareDescription
(),
sw
.
softwareDescription
());
providerService
.
deviceConnected
(
deviceId
(
uri
),
description
);
providerService
.
updatePorts
(
deviceId
(
uri
),
buildPortDescriptions
(
sw
.
getPorts
()));
}
private
List
<
PortDescription
>
buildPortDescriptions
(
List
<
OFPortDesc
>
ports
)
{
List
<
PortDescription
>
portDescs
=
new
ArrayList
<
PortDescription
>();
for
(
OFPortDesc
port
:
ports
)
{
PortNumber
portNo
=
PortNumber
.
portNumber
(
port
.
getPortNo
().
getPortNumber
());
portDescs
.
add
(
new
DefaultPortDescription
(
portNo
,
port
.
getState
()));
}
}
@Override
...
...
Please
register
or
login
to post a comment