Sure I can, here we go...

>From e442dea1f9ae2ce0fe31698e3e5b226041b8c2a0 Mon Sep 17 00:00:00 2001
From: Aeschlimann Philipp <[email protected]>
Date: Fri, 17 May 2013 11:18:44 +0200
Subject: [PATCH] Fix for OFPQueueGetConfigReply/Request in OFP13

Signed-off-by: Philipp Aeschlimann <[email protected]>
---
 ryu/ofproto/ofproto_v1_3_parser.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/ryu/ofproto/ofproto_v1_3_parser.py
b/ryu/ofproto/ofproto_v1_3_parser.py
index 2f36859..80a777d 100644
--- a/ryu/ofproto/ofproto_v1_3_parser.py
+++ b/ryu/ofproto/ofproto_v1_3_parser.py
@@ -2739,7 +2739,7 @@ class OFPPacketQueue(MsgBase):
     @classmethod
     def parser(cls, buf, offset):
         (msg.queue_id, msg.port, msg.len) = struct.unpack_from(
-            ofproto_v1_3.OFP_PACKET_QUEUE_PACK_STR, buf, offset)
+            ofproto_v1_3.OFP_PACKET_QUEUE_PACK_STR, msg.buf, offset)

         length = ofproto_v1_3.OFP_PACKET_QUEUE_SIZE
         offset += ofproto_v1_3.OFP_PACKET_QUEUE_SIZE
@@ -2771,7 +2771,7 @@ class OFPQueueGetConfigReply(MsgBase):

         msg.queues = []
         offset += ofproto_v1_3.OFP_QUEUE_GET_CONFIG_REPLY_SIZE
-        while offset < msg.length:
+        while offset < msg_len:
             queue = OFPPacketQueue.parser(buf, offset)
             msg.queues.append(queue)
             offset += queue.len
--
1.8.2.3

g *pae

2013/5/17 Isaku Yamahata <[email protected]>:
> Can you please send the revised patch for OFPQueueGetConfigRequest
> with your signed-off-by?
>
> On Wed, May 15, 2013 at 01:47:52PM +0200, Philipp Aeschlimann wrote:
>> Great, exactly the answer I was looking for, THX...
>>
>> g *pae
>>
>> 2013/5/15 Isaku Yamahata <[email protected]>:
>> > On Wed, May 15, 2013 at 12:03:26PM +0200, Philipp Aeschlimann wrote:
>> >> Hey
>> >>
>> >> I'm using the following script to create the bridge (OVS). As you can
>> >> see, I'm using
>> >>
>> >> ovs-vsctl set bridge $NAME protocols=OpenFlow13
>> >>
>> >> To set the version of OFP. Is there any other place where I have to
>> >> configure this?
>> >
>> > This is correct way to configure OVS.
>> >
>> >> Because my app won't work anyways with OVS, here's the
>> >> version I'm using:
>> >
>> > Because OVS doesn't support OFPQueueGetConfigRequest yet.
>> > Not due to mis-configuration or ryu side issue.
>> > The only way is to add the feature to OVS upstream.
>> >
>> > thanks,
>> >
>> >> clt-mob-p-1093:/home/staff/aepp/unix # ovs-vsctl --version
>> >> ovs-vsctl (Open vSwitch) 1.10.0
>> >> Compiled May  6 2013 11:47:07
>> >> clt-mob-p-1093:/home/staff/aepp/unix #
>> >>
>> >> usage()
>> >> {
>> >> cat << EOF
>> >> usage: $0 options
>> >>
>> >> This script creates or deletes an Open vSwitch.
>> >>
>> >> OPTIONS:
>> >>    -h      Show this message
>> >>    -o      Can be 'add' or 'del'
>> >>    -n      The name of the bridge
>> >>    -p      Amount of port numbers
>> >>    -v      Verbose
>> >>
>> >> EXAMPLE:
>> >>    # $0 -o add -n lan0 -p 5
>> >>    # $0 -o del -n lan0 -p 5
>> >> EOF
>> >> }
>> >>
>> >> NAME=
>> >> PORTS=
>> >> OP=
>> >> VERBOSE=0
>> >> while getopts "h:o:n:p:v" OPTION
>> >> do
>> >>   case $OPTION in
>> >>     h)
>> >>       usage
>> >>       exit 1
>> >>       ;;
>> >>     n)
>> >>       NAME=$OPTARG
>> >>       ;;
>> >>     p)
>> >>       PORTS=$OPTARG
>> >>       ;;
>> >>     o)
>> >>       OP=$OPTARG
>> >>       ;;
>> >>     v)
>> >>       VERBOSE=1
>> >>       ;;
>> >>     ?)
>> >>       usage
>> >>       exit
>> >>       ;;
>> >>   esac
>> >> done
>> >>
>> >> if [[ -z $NAME ]] || [[ -z $PORTS ]] || [[ -z $OP ]]
>> >> then
>> >>   usage
>> >>   exit 1
>> >> fi
>> >>
>> >> if [ "$OP" == "add" ]
>> >> then
>> >>   # create the bridge
>> >>   ovs-vsctl add-br $NAME
>> >>
>> >>   # use OFP13
>> >>   ovs-vsctl set bridge $NAME protocols=OpenFlow13
>> >>
>> >>   for tap in `seq 0 $PORTS`; do
>> >>     ip tuntap add mode tap ${NAME}p$tap
>> >>   done;
>> >>
>> >>   # check if the ifaces, only in verbose
>> >>   if [ "$VERBOSE" == "1" ]
>> >>     then
>> >>     echo "Output of: #ip tuntap list"
>> >>     ip tuntap list
>> >>   fi
>> >>
>> >>   for tap in `seq 0 $PORTS`; do
>> >>     ip link set ${NAME}p$tap up
>> >>   done;
>> >>
>> >>   # check state of the ifaces, only in verbose
>> >>   if [ "$VERBOSE" == "1" ]
>> >>   then
>> >>     echo "Output of: #ip link"
>> >>     ip link
>> >>   fi
>> >>
>> >>   for tap in `seq 0 $PORTS`; do
>> >>     ovs-vsctl add-port $NAME ${NAME}p$tap
>> >>   done;
>> >>
>> >>   # list all ports by ovs-vsctl to check, if taps are there
>> >>   if [ "$VERBOSE" == "1" ]
>> >>     then
>> >>     echo "Output of: #ip ovs-vsctl list-ports $NAME"
>> >>     ovs-vsctl list-ports $NAME
>> >>   fi
>> >>
>> >>   # set the controller to localhost
>> >>   # TODO: make this variable
>> >>   ovs-vsctl set-controller $NAME tcp:0.0.0.0:6633
>> >>
>> >> # TODO: be more verbose
>> >> elif [ "$OP" == "del" ]
>> >> then
>> >>   # remove the bridge
>> >>   ovs-vsctl del-br $NAME
>> >>
>> >>   # remove all taps
>> >>   for tap in `seq 0 $PORTS`; do
>> >>     ip tuntap del ${NAME}p$tap mode tap
>> >>   done;
>> >>
>> >> else
>> >>   usage
>> >>   exit 1
>> >> fi
>> >>
>> >> THX in advance, Philipp - g *pae
>> >>
>> >> 2013/5/15 Isaku Yamahata <[email protected]>:
>> >> > On Tue, May 14, 2013 at 04:10:46PM +0200, Philipp Aeschlimann wrote:
>> >> >> Hey there
>> >> >>
>> >> >> I'm trying some things with QoS and therefore i wrote a simple
>> >> >> test-app here (click download in the upper right corner):
>> >> >>
>> >> >> https://owncloud.engineering.zhaw.ch/public.php?service=files&t=f6f7e645b0d67b3c9a0cc537f8b38dfb
>> >> >>
>> >> >> It sends OFPQueueGetConfigRequest and tries to receive an
>> >> >> OFPQueueGetConfigReply. But with the appliance from here
>> >> >> https://github.com/osrg/ryu/wiki/OpenFlow_Tutorial I get this error:
>> >> >>
>> >> >> error msg ev version: 0x1 msg_type 0x1 xid 0xa6425c5e type 1 code 1
>> >> >> data _???B\^unsupported version 0x1. If possible, set the switch type
>> >> >> 0x1 code 0x1
>> >> >> unsupported version 0x1. If possible, set the switch to use one of the
>> >> >> versions [4]
>> >> >
>> >> > You have to configure OVS to use OF 1.3 instead of OF1.0.
>> >> > By default OVS uses OF1.0.
>> >> >
>> >> >> And with OVS 1.10.0 (installed localy) I get:
>> >> >>
>> >> >> error msg ev version: 0x4 msg_type 0x1 xid 0xd49cfa2a type 1 code 1
>> >> >> data ?????* type 0x1 code 0x1
>> >> >
>> >> > Althouh you set OVS to use OF1.3 somehow, OVS doesn't support
>> >> > OFPQueueGetConfigRequest yet. OVS returns an error message in respond to
>> >> > the request.
>> >> > type 0x1 = error
>> >> > code 0x1 = bad request
>> >> >
>> >> >
>> >> >> But with the following changes and the softswitch from here:
>> >> >> https://github.com/CPqD/ofsoftswitch13 everything works as expected
>> >> >>
>> >> >> diff --git a/ryu/ofproto/ofproto_v1_3_parser.py
>> >> >> b/ryu/ofproto/ofproto_v1_3_parser.py
>> >> >> index 3f2d020..cace1aa 100644
>> >> >> --- a/ryu/ofproto/ofproto_v1_3_parser.py
>> >> >> +++ b/ryu/ofproto/ofproto_v1_3_parser.py
>> >> >> @@ -2734,7 +2734,7 @@ class OFPPacketQueue(MsgBase):
>> >> >>      @classmethod
>> >> >>      def parser(cls, buf, offset):
>> >> >>          (msg.queue_id, msg.port, msg.len) = struct.unpack_from(
>> >> >> -            ofproto_v1_3.OFP_PACKET_QUEUE_PACK_STR, buf, offset)
>> >> >> +            ofproto_v1_3.OFP_PACKET_QUEUE_PACK_STR, buffer(buf), 
>> >> >> offset)
>> >> >>
>> >> >>          length = ofproto_v1_3.OFP_PACKET_QUEUE_SIZE
>> >> >>          offset += ofproto_v1_3.OFP_PACKET_QUEUE_SIZE
>> >> >
>> >> > See below.
>> >> >
>> >> >
>> >> >> @@ -2766,7 +2766,7 @@ class OFPQueueGetConfigReply(MsgBase):
>> >> >>
>> >> >>          msg.queues = []
>> >> >>          offset += ofproto_v1_3.OFP_QUEUE_GET_CONFIG_REPLY_SIZE
>> >> >> -        while offset < msg.length:
>> >> >> +        while offset < msg_len:
>> >> >
>> >> > This line looks good.
>> >> >
>> >> >>              queue = OFPPacketQueue.parser(buf, offset)
>> >> >
>> >> > msg.buf should be passed. Then first hunk can be dropped.
>> >> >
>> >> > thanks,
>> >> >
>> >> >>              msg.queues.append(queue)
>> >> >>              offset += queue.len
>> >> >>
>> >> >> The above errors from OVS are showing up anyways. THX in advance...
>> >> >>
>> >> >> g *pae
>> >> >>
>> >> >> --
>> >> >> ZHAW - Zurich University of Applied Sciences
>> >> >> Institute of Applied Information Technology InIT
>> >> >> InIT Cloud Computing Laboratory ICCLab
>> >> >>
>> >> >> Philipp Aeschlimann
>> >> >> Obere Kirchgasse 2
>> >> >> CH-8401 Winterthur
>> >> >>
>> >> >> Tel. +41 58 934 6964 (intern 6964)
>> >> >> mailto:[email protected]
>> >> >> www.zhaw.ch
>> >> >> www.cloudcomp.ch
>> >> >>
>> >> >> GPG IDKey: 647E122E
>> >> >> Fingerprint: 47B7 8D8A 98D1 E91D 4B7C E261 D88C BE9E 647E 122E
>> >> >>
>> >> >> ------------------------------------------------------------------------------
>> >> >> AlienVault Unified Security Management (USM) platform delivers complete
>> >> >> security visibility with the essential security capabilities. Easily 
>> >> >> and
>> >> >> efficiently configure, manage, and operate all of your security 
>> >> >> controls
>> >> >> from a single console and one unified framework. Download a free trial.
>> >> >> http://p.sf.net/sfu/alienvault_d2d
>> >> >> _______________________________________________
>> >> >> Ryu-devel mailing list
>> >> >> [email protected]
>> >> >> https://lists.sourceforge.net/lists/listinfo/ryu-devel
>> >> >
>> >> > --
>> >> > yamahata
>> >>
>> >> ------------------------------------------------------------------------------
>> >> AlienVault Unified Security Management (USM) platform delivers complete
>> >> security visibility with the essential security capabilities. Easily and
>> >> efficiently configure, manage, and operate all of your security controls
>> >> from a single console and one unified framework. Download a free trial.
>> >> http://p.sf.net/sfu/alienvault_d2d
>> >> _______________________________________________
>> >> Ryu-devel mailing list
>> >> [email protected]
>> >> https://lists.sourceforge.net/lists/listinfo/ryu-devel
>> >>
>> >
>> > --
>> > yamahata
>>
>
> --
> yamahata

------------------------------------------------------------------------------
AlienVault Unified Security Management (USM) platform delivers complete
security visibility with the essential security capabilities. Easily and
efficiently configure, manage, and operate all of your security controls
from a single console and one unified framework. Download a free trial.
http://p.sf.net/sfu/alienvault_d2d
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to