Re: [openflowjava-dev] [openflowplugin-dev] BUG 1020 - Multiple OUPUT actions in the action list of apply-action instruction


Luis Gomez
 

Chris from Integration is also waiting this merge, please prioritize this patch.

On May 20, 2014, at 1:29 PM, Madhu Venugopal <mavenugo@...> wrote:


Thanks folks. Shall we get this fix merged ASAP ?

Our Neutron integration is blocked by these issues and we need to get to a stable version sooner.
With many moving parts across all the projects, identifying such a stable version is getting challenging :-)

-Madhu

On 5/20/14, 1:15 PM, Hsin-Yi Shen wrote:
HI,
I update the openflowplugin and patch the bug fix. This fixes the flow mod issue in testprovider and ovsdb project.
I will mark BUG 1020 as duplicate of bug 275.
Thanks a lot for your help in debugging.

Hsin-Yi

----- Original Message -----
From: "Luis Gomez" <ecelgp@...>
To: "Abhijit Kumbhare" <abhijitkoss@...>
Cc: "Kamal Rameshan (kramesha)" <kramesha@...>, "openflowjava-dev" <openflowjava-dev@...>, "Flavio Fernandes" <ffernand@...>, "Madhu Venugopal" <vmadhu@...>, openflowplugin-dev@..., "Hsin-Yi Shen" <hshen@...>
Sent: Monday, May 19, 2014 9:31:34 PM
Subject: Re: [openflowplugin-dev] [openflowjava-dev] BUG 1020 - Multiple OUPUT actions in the action list of apply-action instruction


I see this one in the bug: https://git.opendaylight.org/gerrit/#/c/7099/


On May 19, 2014, at 5:42 PM, Abhijit Kumbhare <abhijitkoss@...> wrote:

What is the gerrit number?

On May 19, 2014 5:27 PM, "Kamal Rameshan (kramesha)" <kramesha@...> wrote:
This might be related to Bug : 275 :
https://bugs.opendaylight.org/show_bug.cgi?id=275

This defect solves flow modify.

A gerrit for this is wating to be reviewed

Thanks
Kamal

On 5/19/14 5:20 PM, "Hsin-Yi Shen" <hshen@...> wrote:

Hello all,
After debugging, we find the issue is in flow modify and we are able to
reproduce same issue in test provider.

The behaviour for test case and ovsdb OF13 is as following:
1. First time we write flow with apply-action instruction. The
instruction has actions list: POP_VLAN, OUTPUT=25
2. In second time, we get the action list from original flow, copy and
write new action list to: POP_VLAN, OUPUT=25, OUTPUT=26, allocate a new
apply-action instruction with new action list, and write flow with new
instruction.
3. In third time, we get the action list from original flow, copy and
write new action list to: POP_VLAN, OUPUT=25, OUTPUT=26, OUTPUT=27,
allocate a new apply-action instruction with new action list, and write
flow with new instruction.
And so on...

When we apply this to some foo node, the addMDFlow log looks ok:
First time we write the flow with action list: POP_VLAN, OUTPUT=25
2014-05-19 20:08:05.114 EDT [pool-13-thread-2] INFO
o.o.o.t.OpenflowpluginTestServiceProvider - addFlow - AddFlowInput
[_flowRef=FlowRef [_value=KeyedInstanceIdentifier{targetType=interface
org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tab
les.table.Flow,
path=[org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.No
des,
org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.No
de[key=NodeKey [_id=Uri [_value=foo:node:1]]],
org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.Flo
wCapableNode,
org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tab
les.Table[key=TableKey [_id=2]],
org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tab
les.table.Flow[key=FlowKey [_id=Uri [_value=206]]]]}],
_flowTable=FlowTableRef
[_value=KeyedInstanceIdentifier{targetType=interface
org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tab
les.Table,
path=[org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.No
des,
org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.No
de[key=NodeKey [_id=Uri [_value=foo:node:1]]],
org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.Flo
wCapableNode,
org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tab
les.Table[key=TableKey [_id=2]]]}], _barrier=false,
_cookieMask=FlowCookie [_value=10], _flags=FlowModFlags
[_cHECKOVERLAP=false, _rESETCOUNTS=false, _nOPKTCOUNTS=false,
_nOBYTCOUNTS=false, _sENDFLOWREM=true], _flowName=FooXf83,
_installHw=false, _instructions=Instructions [_instruction=[Instruction
[_order=0, _key=InstructionKey [_order=0], _instruction=ApplyActionsCase
[_applyActions=ApplyActions [_action=[Action [_order=0, _key=ActionKey
[_order=0], _action=PopVlanActionCase [_popVlanAction=PopVlanAction
[augmentation=[]], augmentation=[]], augmentation=[]], Action [_order=1,
_key=ActionKey [_order=1], _action=OutputActionCase
[_outputAction=OutputAction [_outputNodeConnector=Uri
[_value=openflow:65500:25], augmentation=[]], augmentation=[]],
augmentation=[]]], augmentation=[]], augmentation=[]], augmentation=[]]],
augmentation=[]], _match=Match [_ethernetMatch=EthernetMatch
[_ethernetDestination=EthernetDestination [_address=MacAddress
[_value=01:00:00:00:00:00], _mask=MacAddress [_value=01:00:00:00:00:00],
augmentation=[]], augmentation=[]], _vlanMatch=VlanMatch [_vlanId=VlanId
[_vlanId=VlanId [_value=2000], _vlanIdPresent=true, augmentation=[]],
augmentation=[]], augmentation=[]], _strict=false, _cookie=FlowCookie
[_value=10], _hardTimeout=0, _idleTimeout=0, _priority=2, _tableId=2,
_node=NodeRef [_value=KeyedInstanceIdentifier{targetType=interface
org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.No
de,
path=[org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.No
des,
org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.No
de[key=NodeKey [_id=Uri [_value=foo:node:1]]]]}], _transactionUri=Uri
[_value=DOM-0], augmentation=[]]

Second time we write the flow with action list: POP_VLAN, OUTPUT=25,
OUTPUT=26
osgi> addMDFlow foo:node:1 f83
Status of Flow Data Loaded Transaction: COMMITED
osgi> 2014-05-19 20:09:16.778 EDT [pool-13-thread-2] INFO
o.o.o.t.OpenflowpluginTestServiceProvider - updateFlow - UpdateFlowInput
[_flowRef=FlowRef [_value=KeyedInstanceIdentifier{targetType=interface
org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tab
les.table.Flow,
path=[org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.No
des,
org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.No
de[key=NodeKey [_id=Uri [_value=foo:node:1]]],
org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.Flo
wCapableNode,
org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tab
les.Table[key=TableKey [_id=2]],
org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tab
les.table.Flow[key=FlowKey [_id=Uri [_value=206]]]]}],
_transactionUri=Uri [_value=DOM-1], _originalFlow=OriginalFlow
[_barrier=false, _cookieMask=FlowCookie [_value=10], _flags=FlowModFlags
[_cHECKOVERLAP=false, _rESETCOUNTS=false, _nOPKTCOUNTS=false,
_nOBYTCOUNTS=false, _sENDFLOWREM=true], _flowName=FooXf83,
_installHw=false, _instructions=Instructions [_instruction=[Instruction
[_order=0, _key=InstructionKey [_order=0], _instruction=ApplyActionsCase
[_applyActions=ApplyActions [_action=[Action [_order=0, _key=ActionKey
[_order=0], _action=PopVlanActionCase [_popVlanAction=PopVlanAction
[augmentation=[]], augmentation=[]], augmentation=[]], Action [_order=1,
_key=ActionKey [_order=1], _action=OutputActionCase
[_outputAction=OutputAction [_outputNodeConnector=Uri
[_value=openflow:65500:25], augmentation=[]], augmentation=[]],
augmentation=[]]], augmentation=[]], augmentation=[]], augmentation=[]]],
augmentation=[]], _match=Match [_ethernetMatch=EthernetMatch
[_ethernetDestination=EthernetDestination [_address=MacAddress
[_value=01:00:00:00:00:00], _mask=MacAddress [_value=01:00:00:00:00:00],
augmentation=[]], augmentation=[]], _vlanMatch=VlanMatch [_vlanId=VlanId
[_vlanId=VlanId [_value=2000], _vlanIdPresent=true, augmentation=[]],
augmentation=[]], augmentation=[]], _strict=false, _cookie=FlowCookie
[_value=10], _hardTimeout=0, _idleTimeout=0, _priority=2, _tableId=2,
augmentation=[]], _updatedFlow=UpdatedFlow [_barrier=false,
_cookieMask=FlowCookie [_value=10], _flags=FlowModFlags
[_cHECKOVERLAP=false, _rESETCOUNTS=false, _nOPKTCOUNTS=false,
_nOBYTCOUNTS=false, _sENDFLOWREM=true], _flowName=FooXf83,
_installHw=false, _instructions=Instructions [_instruction=[Instruction
[_order=0, _key=InstructionKey [_order=0], _instruction=ApplyActionsCase
[_applyActions=ApplyActions [_action=[Action [_order=0, _key=ActionKey
[_order=0], _action=PopVlanActionCase [_popVlanAction=PopVlanAction
[augmentation=[]], augmentation=[]], augmentation=[]], Action [_order=1,
_key=ActionKey [_order=1], _action=OutputActionCase
[_outputAction=OutputAction [_outputNodeConnector=Uri
[_value=openflow:65500:25], augmentation=[]], augmentation=[]],
augmentation=[]], Action [_order=2, _key=ActionKey [_order=2],
_action=OutputActionCase [_outputAction=OutputAction
[_outputNodeConnector=Uri [_value=openflow:65500:26], augmentation=[]],
augmentation=[]], augmentation=[]]], augmentation=[]], augmentation=[]],
augmentation=[]]], augmentation=[]], _match=Match
[_ethernetMatch=EthernetMatch [_ethernetDestination=EthernetDestination
[_address=MacAddress [_value=01:00:00:00:00:00], _mask=MacAddress
[_value=01:00:00:00:00:00], augmentation=[]], augmentation=[]],
_vlanMatch=VlanMatch [_vlanId=VlanId [_vlanId=VlanId [_value=2000],
_vlanIdPresent=true, augmentation=[]], augmentation=[]],
augmentation=[]], _strict=false, _cookie=FlowCookie [_value=10],
_hardTimeout=0, _idleTimeout=0, _priority=2, _tableId=2,
augmentation=[]], _node=NodeRef
[_value=KeyedInstanceIdentifier{targetType=interface
org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.No
de,
path=[org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.No
des,
org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.No
de[key=NodeKey [_id=Uri [_value=foo:node:1]]]]}], augmentation=[]

But this has issue when we write flow to real ovs node:
1st time we write flow with action list: POP_VLAN, OUTPUT=27
osgi> addMDFlow openflow:266832637728842 f83
Status of Flow Data Loaded Transaction: COMMITED
osgi> 2014-05-19 20:12:48.347 EDT [md-sal-binding-notification-12] INFO
o.o.o.t.FlowEventListenerLoggingImpl - flow to be
added..........................FlowAdded [_flowRef=FlowRef
[_value=KeyedInstanceIdentifier{targetType=interface
org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tab
les.table.Flow,
path=[org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.No
des,
org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.No
de[key=NodeKey [_id=Uri [_value=openflow:266832637728842]]],
org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.Flo
wCapableNode,
org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tab
les.Table[key=TableKey [_id=2]],
org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tab
les.table.Flow[key=FlowKey [_id=Uri [_value=206]]]]}], _barrier=false,
_cookieMask=FlowCookie [_value=10], _flags=FlowModFlags
[_cHECKOVERLAP=false, _rESETCOUNTS=false, _nOPKTCOUNTS=false,
_nOBYTCOUNTS=false, _sENDFLOWREM=true], _flowName=FooXf83,
_installHw=false, _instructions=Instructions [_instruction=[Instruction
[_order=0, _key=InstructionKey [_order=0], _instruction=ApplyActionsCase
[_applyActions=ApplyActions [_action=[Action [_order=0, _key=ActionKey
[_order=0], _action=PopVlanActionCase [_popVlanAction=PopVlanAction
[augmentation=[]], augmentation=[]], augmentation=[]], Action [_order=1,
_key=ActionKey [_order=1], _action=OutputActionCase
[_outputAction=OutputAction [_outputNodeConnector=Uri
[_value=openflow:65500:27], augmentation=[]], augmentation=[]],
augmentation=[]]], augmentation=[]], augmentation=[]], augmentation=[]]],
augmentation=[]], _match=Match [_ethernetMatch=EthernetMatch
[_ethernetDestination=EthernetDestination [_address=MacAddress
[_value=01:00:00:00:00:00], _mask=MacAddress [_value=01:00:00:00:00:00],
augmentation=[]], augmentation=[]], _vlanMatch=VlanMatch [_vlanId=VlanId
[_vlanId=VlanId [_value=2000], _vlanIdPresent=true, augmentation=[]],
augmentation=[]], augmentation=[]], _strict=false, _cookie=FlowCookie
[_value=10], _hardTimeout=0, _idleTimeout=0, _priority=2, _tableId=2,
_transactionId=TransactionId [_value=3], augmentation=[]]
And the ovs show command confirms the result:
[hshen@hshen logs]$ sudo ovs-ofctl dump-flows br-int -O OpenFlow13
OFPST_FLOW reply (OF1.3) (xid=0x2):
cookie=0xa, duration=113.573s, table=2, n_packets=0, n_bytes=0,
send_flow_rem
priority=2,dl_vlan=2000,dl_dst=01:00:00:00:00:00/01:00:00:00:00:00
actions=strip_vlan,output:27

However, the log looks weird in the 2nd time and 3rd time:
osgi> addMDFlow openflow:266832637728842 f83
Status of Flow Data Loaded Transaction: COMMITED
osgi> addMDFlow openflow:266832637728842 f83
Status of Flow Data Loaded Transaction: COMMITED

We only get one line log for COMMITED status. And flow is not modified at
ovs node:
[hshen@hshen logs]$ sudo ovs-ofctl dump-flows br-int -O OpenFlow13
OFPST_FLOW reply (OF1.3) (xid=0x2):
cookie=0xa, duration=245.054s, table=2, n_packets=0, n_bytes=0,
send_flow_rem
priority=2,dl_vlan=2000,dl_dst=01:00:00:00:00:00/01:00:00:00:00:00
actions=strip_vlan,output:27

It looks like the flow mod message is not even sent to ovs node.
Is there any change in Openflowplugin for modifying the flow?
Please advise hoe we can solve this issue or debug further.

Thanks a lot for your help.

Hsin-Yi


----- Original Message -----
From: "Flavio Fernandes" <ffernand@...>
To: "Hsin-Yi Shen" <hshen@...>
Cc: "Michal Polkoráb" <michal.polkorab@...>, "Abhijit Kumbhare"
<abhijitkoss@...>, "openflowjava-dev"
<openflowjava-dev@...>, "Madhu Venugopal"
<vmadhu@...>, openflowplugin-dev@...
Sent: Friday, May 16, 2014 8:40:20 PM
Subject: Re: [openflowjava-dev] [openflowplugin-dev] BUG 1020 - Multiple
OUPUT actions in the action list of apply-action instruction

Hi Hsin-Yi,

You are right. This is using the test provider. I don¹t really know how
to do it thru openstack-ovsdbŠ. yet. :)

‹ flavio


On May 16, 2014, at 8:37 PM, Hsin-Yi Shen <hshen@...> wrote:

Flavio,
Looks like you tried test provider. Do you try wireshark with
openstack-ovsdb integreation?

Hsin-Yi

----- Original Message -----
From: "Flavio Fernandes" <ffernand@...>
To: "Michal Polkoráb" <michal.polkorab@...>
Cc: "Hsin-Yi Shen" <hshen@...>, "Abhijit Kumbhare"
<abhijitkoss@...>, "openflowjava-dev"
<openflowjava-dev@...>, "Madhu Venugopal"
<vmadhu@...>, openflowplugin-dev@...
Sent: Friday, May 16, 2014 8:28:38 PM
Subject: Re: [openflowjava-dev] [openflowplugin-dev] BUG 1020 -
Multiple OUPUT actions in the action list of apply-action instruction


Hi folks,

It took me a little playing with, but I did manage to capture the flow
mod packet!


https://www.dropbox.com/s/uumgiccue6ksuhi/Screenshot%202014-05-16%2020.25
.48.png

From the capture, it is packet #7. You need wireshark 1.11 to see the
of 1.3 packets.
From the wireshark output, I see the instruction and the actions as you
expected, Hsin-Yi.




‹ flavio


On May 16, 2014, at 3:17 PM, Michal Polkoráb
<michal.polkorab@...> wrote:

First I would try using wireshark to check the data written to the
wire. This way you will know if there is some problem with the device
or with the controller.

I would also try to put a Log message into:
- OF13OutputActionSerializer in openflowjava
- ActionConvertor in openflowplugin (in output action case)
and rebuilding the code. When running the distribution there should be
three logs for mentioned ApplyActions Instruction.
If there are six log messages, then this should be an issue somewhere
out of openflowplugin translation.
If there is less than three messages the bug should be in the
openflowplugin, 3-5 messages should be a bug in openflowjava.

Michal
________________________________________
From: Hsin-Yi Shen <hshen@...>
Sent: 16 May 2014 20:24
To: Michal Polkoráb; Flavio Fernandes
Cc: Abhijit Kumbhare; openflowjava-dev; Madhu Venugopal;
openflowplugin-dev@...
Subject: Re: [openflowjava-dev] [openflowplugin-dev] BUG 1020 -
Multiple OUPUT actions in the action list of apply-action instruction

Hi Michal,
Thanks for testing the openflowjava. After fixing the test provider
code, we now see multiple actions of same type in applyActions
Instruction.

But we still see same issue in our OVSDB project using OF 1.3.
While ovsdb code write flows with multiple actions of OUTPUT type,
2014-05-16 18:04:06.147 EDT [pool-18-thread-1] DEBUG
o.o.o.n.p.OF13ProviderManager - createOutputPortInstructions() :
applyAction ApplyActions [_action=[Action [_order=0, _key=ActionKey
[_order=0], _action=PopVlanActionCase [_popVlanAction=PopVlanAction
[augmentation=[]], augmentation=[]], augmentation=[]], Action
[_order=1, _key=ActionKey [_order=1], _action=OutputActionCase
[_outputAction=OutputAction [_outputNodeConnector=Uri
[_value=openflow:112312004696131:1], augmentation=[]],
augmentation=[]], augmentation=[]], Action [_order=2, _key=ActionKey
[_order=2], _action=OutputActionCase [_outputAction=OutputAction
[_outputNodeConnector=Uri [_value=openflow:112312004696131:3],
augmentation=[]], augmentation=[]], augmentation=[]], Action [_order=3,
_key=ActionKey [_order=3], _action=OutputActionCase
[_outputAction=OutputAction [_outputNodeConnector=Uri
[_value=openflow:112312004696131:4], augmentation=[]],
augmentation=[]], augmentation=[]]], augmentation=[]]
We only see one output action is actually installed:
[root@control-node logs(keystone_admin)]# ovs-ofctl dump-flows br-int
-O OpenFlow13
OFPST_FLOW reply (OF1.3) (xid=0x2):
....
cookie=0x0, duration=1246.988s, table=20, n_packets=26, n_bytes=2644,
send_flow_rem
priority=16384,dl_vlan=2400,dl_dst=01:00:00:00:00:00/01:00:00:00:00:00
actions=strip_vlan,output:1

Other output actions just silently disappear.
Could you suggest where we should check for debugging?
Thanks.

Hsin-Yi

----- Original Message -----
From: "Michal Polkoráb" <michal.polkorab@...>
To: "Abhijit Kumbhare" <abhijitkoss@...>, "Hsin-Yi Shen"
<hshen@...>
Cc: "openflowjava-dev" <openflowjava-dev@...>,
"Madhu Venugopal" <vmadhu@...>,
openflowplugin-dev@...
Sent: Friday, May 16, 2014 3:38:04 AM
Subject: RE: [openflowjava-dev] [openflowplugin-dev] BUG 1020 -
Multiple OUPUT actions in the action list of apply-action instruction

Hi,


I have tested openflowjava and it supports multiple actions of same
type in ApplyActions Instruction. However, it looks like the
OpenflowpluginTestServiceProvider receives wrong object - as it already
contains only one Output action (judging on the description provided in
the bug 1020).


Regards

Michal Polkorab

________________________________
From: Abhijit Kumbhare <abhijitkoss@...>
Sent: 15 May 2014 23:16
To: Hsin-Yi Shen
Cc: openflowjava-dev; Madhu Venugopal;
openflowplugin-dev@...
Subject: Re: [openflowjava-dev] [openflowplugin-dev] BUG 1020 -
Multiple OUPUT actions in the action list of apply-action instruction

Thanks Hsin-Yi.


On Thu, May 15, 2014 at 1:37 PM, Hsin-Yi Shen
<hshen@...<mailto:hshen@...>> wrote:
Hi,
We work on the ovsdb project and we find in latest build multiple
OUPUT actions are no longer allowed in the action list of apply-action
instruction in OF 1.3.
This breaks the broadcast in ovsdb. Although we are not sure the issue
is in openflowplugin or openflowjava, we need this bug to be fixed.
We have filed bug 1020 in bugzilla
https://bugs.opendaylight.org/show_bug.cgi?id=1020
Could someone in openflowplugin or openflowjava help fix this bug?
Thanks.

Hsin-Yi
_______________________________________________
openflowplugin-dev mailing list

openflowplugin-dev@...<mailto:openflowplugin-dev@list
s.opendaylight.org>
https://lists.opendaylight.org/mailman/listinfo/openflowplugin-dev

MichalPolkoráb
Software Developer

Mlynské Nivy 56 / 821 05 Bratislava / Slovakia
+421 918 378 907 / michal.polkorab@...
reception: +421 2 206 65 111 / www.pantheon.sk
[logo]
MichalPolkoráb
Software Developer

Mlynské Nivy 56 / 821 05 Bratislava / Slovakia
+421 918 378 907 / michal.polkorab@...
reception: +421 2 206 65 111 / www.pantheon.sk
[logo]
_______________________________________________
openflowplugin-dev mailing list
openflowplugin-dev@...
https://lists.opendaylight.org/mailman/listinfo/openflowplugin-dev
_______________________________________________
openflowplugin-dev mailing list
openflowplugin-dev@...
https://lists.opendaylight.org/mailman/listinfo/openflowplugin-dev
_______________________________________________
openflowplugin-dev mailing list
openflowplugin-dev@...
https://lists.opendaylight.org/mailman/listinfo/openflowplugin-dev
_______________________________________________
openflowjava-dev mailing list
openflowjava-dev@...
https://lists.opendaylight.org/mailman/listinfo/openflowjava-dev

Join {integration-dev@lists.opendaylight.org to automatically receive all group messages.